unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Tak Ota <Takaaki.Ota@am.sony.com>
Cc: eliz@is.elta.co.il, lektu@terra.es, emacs-devel@gnu.org, andrewi@gnu.org
Subject: Re: lost argument and doc string
Date: Tue, 12 Feb 2002 11:48:25 -0800 (PST)	[thread overview]
Message-ID: <20020212.114825.01368903.Takaaki.Ota@am.sony.com> (raw)
In-Reply-To: <m3heomzfwp.fsf@nyaumo.btinternet.com>

12 Feb 2002 18:57:58 +0000: Jason Rumney <jasonr@gnu.org> wrote:

> There is a comment in make-docfile.c that says that docstrings in .el
> files must start with a backslash and newline immediately after the
> opening double quote.  The files listed above (should) have docstrings
> that comply with that requirement.
> 
> I tried running make-docfile on just simple.el, and only one docstring
> was produced (for previous-complete-history-element), which is
> consistent with that comment.

I've just finished reading make-docfile.c.  You are absolutely right.
I did the same experiment, running make-docfile manually on simple.el,
and got surprised.  And the source file is requesting the sequence
`dquote bslash newline' as the beginning of the valid doc string in
case of el files.  I don't think this is right.  Starting doc string
that way is only optional I believe.

Since read_c_string_or_comment takes care of line continuation
(bslash at the end of line) there is really no need of handling the
very first continuation in a special manner in the individual cases.

I propose the following patch.  It corrects the problem and the code
becomes cleaner too.

-Tak

*** lib-src/make-docfile.c.orig	Sat Jan  5 15:37:58 2002
--- lib-src/make-docfile.c	Tue Feb 12 11:28:01 2002
***************
*** 911,925 ****
  	  else
  	    while (c != ')')
  	      c = getc (infile);
- 	  skip_white (infile);
  
! 	  /* If the next three characters aren't `dquote bslash newline'
! 	     then we're not reading a docstring.
! 	   */
! 	  if ((c = getc (infile)) != '"'
! 	      || (c = getc (infile)) != '\\'
! 	      || ((c = getc (infile)) != '\n' && c != '\r'))
! 	    {
  #ifdef DEBUG
  	      fprintf (stderr, "## non-docstring in %s (%s)\n",
  		       buffer, filename);
--- 911,920 ----
  	  else
  	    while (c != ')')
  	      c = getc (infile);
  
! 	  skip_white (infile);
! 	  if ((c = getc (infile)) != '\"')
!             {
  #ifdef DEBUG
  	      fprintf (stderr, "## non-docstring in %s (%s)\n",
  		       buffer, filename);
***************
*** 931,954 ****
        else if (! strcmp (buffer, "defvar")
  	       || ! strcmp (buffer, "defconst"))
  	{
- 	  char c1 = 0, c2 = 0;
  	  type = 'V';
  	  read_lisp_symbol (infile, buffer);
  
  	  if (saved_string == 0)
  	    {
! 
! 	      /* Skip until the end of line; remember two previous chars.  */
! 	      while (c != '\n' && c != '\r' && c >= 0)
! 		{
! 		  c2 = c1;
! 		  c1 = c;
! 		  c = getc (infile);
! 		}
! 
! 	      /* If two previous characters were " and \,
! 		 this is a doc string.  Otherwise, there is none.  */
! 	      if (c2 != '"' || c1 != '\\')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
--- 926,938 ----
        else if (! strcmp (buffer, "defvar")
  	       || ! strcmp (buffer, "defconst"))
  	{
  	  type = 'V';
  	  read_lisp_symbol (infile, buffer);
  
  	  if (saved_string == 0)
  	    {
!               skip_white (infile);
!               if ((c = getc (infile)) != '\"')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
***************
*** 961,967 ****
  
        else if (! strcmp (buffer, "custom-declare-variable"))
  	{
- 	  char c1 = 0, c2 = 0;
  	  type = 'V';
  
  	  c = getc (infile);
--- 945,950 ----
***************
*** 997,1013 ****
  
  	  if (saved_string == 0)
  	    {
! 	      /* Skip to end of line; remember the two previous chars.  */
! 	      while (c != '\n' && c != '\r' && c >= 0)
! 		{
! 		  c2 = c1;
! 		  c1 = c;
! 		  c = getc (infile);
! 		}
! 
! 	      /* If two previous characters were " and \,
! 		 this is a doc string.  Otherwise, there is none.  */
! 	      if (c2 != '"' || c1 != '\\')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
--- 980,987 ----
  
  	  if (saved_string == 0)
  	    {
!               skip_white (infile);
!               if ((c = getc (infile)) != '\"')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
***************
*** 1020,1026 ****
  
        else if (! strcmp (buffer, "fset") || ! strcmp (buffer, "defalias"))
  	{
- 	  char c1 = 0, c2 = 0;
  	  type = 'F';
  
  	  c = getc (infile);
--- 994,999 ----
***************
*** 1054,1070 ****
  
  	  if (saved_string == 0)
  	    {
! 	      /* Skip to end of line; remember the two previous chars.  */
! 	      while (c != '\n' && c != '\r' && c >= 0)
! 		{
! 		  c2 = c1;
! 		  c1 = c;
! 		  c = getc (infile);
! 		}
! 
! 	      /* If two previous characters were " and \,
! 		 this is a doc string.  Otherwise, there is none.  */
! 	      if (c2 != '"' || c1 != '\\')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
--- 1027,1034 ----
  
  	  if (saved_string == 0)
  	    {
!               skip_white (infile);
!               if ((c = getc (infile)) != '\"')
  		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
***************
*** 1117,1129 ****
  	  skip_white (infile);
  
  	  if (saved_string == 0)
! 	    {
! 	      /* If the next three characters aren't `dquote bslash newline'
! 		 then we're not reading a docstring.  */
! 	      if ((c = getc (infile)) != '"'
! 		  || (c = getc (infile)) != '\\'
! 		  || ((c = getc (infile)) != '\n' && c != '\r'))
! 		{
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
  			   buffer, filename);
--- 1081,1090 ----
  	  skip_white (infile);
  
  	  if (saved_string == 0)
!             {
!               skip_white (infile);
!               if ((c = getc (infile)) != '\"')
!                 {
  #ifdef DEBUG
  		  fprintf (stderr, "## non-docstring in %s (%s)\n",
  			   buffer, filename);
***************
*** 1152,1159 ****
  	 dynamic doc string in saved_string
  	 or gobble a doc string from the input file.
  
! 	 In the latter case, the opening quote (and leading
! 	 backslash-newline) have already been read.  */
  
        putc (037, outfile);
        putc (type, outfile);
--- 1113,1120 ----
  	 dynamic doc string in saved_string
  	 or gobble a doc string from the input file.
  
! 	 In the latter case, the opening quote has already been
! 	 read.  */
  
        putc (037, outfile);
        putc (type, outfile);

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


  reply	other threads:[~2002-02-12 19:48 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-10  6:59 lost argument and doc string Tak Ota
2002-02-10 17:08 ` Eli Zaretskii
2002-02-10 17:32   ` Pavel Janík
2002-02-10 23:28     ` Tak Ota
2002-02-11  5:48       ` Pavel Janík
2002-02-11  5:48       ` Eli Zaretskii
2002-02-11 16:34         ` Juanma Barranquero
2002-02-11 19:37           ` Eli Zaretskii
2002-02-12  2:32             ` Tak Ota
2002-02-12  8:35               ` Eli Zaretskii
2002-02-12 14:23                 ` Tak Ota
2002-02-12 18:57                   ` Jason Rumney
2002-02-12 19:48                     ` Tak Ota [this message]
2002-02-13  5:43                       ` Eli Zaretskii
2002-02-13  6:01                         ` Tak Ota
2002-02-13 13:40                         ` Andreas Schwab
2002-02-13 14:23                           ` Eli Zaretskii
2002-02-13 19:50                       ` Jason Rumney
2002-02-13 20:22                         ` Tak Ota
2002-02-13 21:02                           ` Jason Rumney
2002-02-14  7:36                             ` Tak Ota
2002-02-15 10:36                               ` Richard Stallman
2002-02-15 20:36                                 ` Tak Ota
2002-02-13 21:00                         ` Tak Ota
2002-02-14  3:11                     ` Richard Stallman
2002-02-14 15:13                       ` Tak Ota
2002-02-13 15:37                 ` Richard Stallman
2002-02-11 18:48       ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020212.114825.01368903.Takaaki.Ota@am.sony.com \
    --to=takaaki.ota@am.sony.com \
    --cc=andrewi@gnu.org \
    --cc=eliz@is.elta.co.il \
    --cc=emacs-devel@gnu.org \
    --cc=lektu@terra.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).