all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Herbert Euler" <herberteuler@hotmail.com>
Cc: rms@gnu.org, monnier@iro.umontreal.ca
Subject: RE: Patch: Syntax and Hard Newlines
Date: Tue, 14 Nov 2006 19:38:31 +0800	[thread overview]
Message-ID: <BAY116-F26B954E067BBEFB4564731DAEB0@phx.gbl> (raw)
In-Reply-To: <BAY116-F19C46261364C742FE452A7DAEB0@phx.gbl>

Opps, I can't understand Emacs' output.  I added some code in syntax.c
and longlines.el:

--------------------------------------------------

*** syntax.c.orignal    Tue Nov 14 18:33:22 2006
--- syntax.c    Tue Nov 14 18:35:47 2006
*************** forw_comment (from, from_byte, stop, nes
*** 2147,2157 ****
        if (code == Sendcomment
          && SYNTAX_FLAGS_COMMENT_STYLE (syntax) == style
          && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ?
!             (nesting > 0 && --nesting == 0) : nesting < 0))
!       /* we have encountered a comment end of the same style
!          as the comment sequence which began this comment
!          section */
!       break;
        if (code == Scomment_fence
          && style == ST_COMMENT_STYLE)
        /* we have encountered a comment end of the same style
--- 2147,2164 ----
        if (code == Sendcomment
          && SYNTAX_FLAGS_COMMENT_STYLE (syntax) == style
          && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ?
!             (nesting > 0 && --nesting == 0) : nesting < 0))
!         {
!           message ("in `forw_comment': `syntax-table' property at point %d 
not nil: %d",
!                    from_byte,
!                    !NILP (Fget_text_property (make_number (from_byte),
!                                               intern ("syntax-table"),
!                                               Qnil)));
!           /* we have encountered a comment end of the same style
!              as the comment sequence which began this comment
!              section */
!           break;
!         }
        if (code == Scomment_fence
          && style == ST_COMMENT_STYLE)
        /* we have encountered a comment end of the same style
*************** forw_comment (from, from_byte, stop, nes
*** 2206,2211 ****
--- 2213,2219 ----
      }
    *charpos_ptr = from;
    *bytepos_ptr = from_byte;
+   message ("This comment stopped at %d", from_byte);
    return 1;
  }

*************** scan_sexps_forward (stateptr, from, from
*** 3120,3125 ****
--- 3128,3137 ----
        case Scomment:
          if (commentstop || boundary_stop) goto done;
        startincomment:
+           message ("in `scan_sexps_forward': `syntax-table' property at 
point 65 not nil: %d",
+                    !NILP (Fget_text_property (make_number (65),
+                                               intern ("syntax-table"),
+                                               Qnil)));
          /* The (from == BEGV) test was to enter the loop in the middle so
             that we find a 2-char comment ender even if we start in the
             middle of it.  We don't want to do that if we're just at the

--------------------------------------------------

*** longlines.el.orignal        Mon Nov 13 10:58:17 2006
--- longlines.el        Tue Nov 14 18:24:00 2006
***************
*** 243,248 ****
--- 243,255 ----
        (progn (insert-before-markers ?\n)
             (backward-char 1)
               (delete-char -1)
+            (add-text-properties (point)
+                                 (1+ (point))
+                                 '(syntax-table (14)))
+            (message (format "(in `longlines-wrap-line': char at point %d 
is `%c (%d)', `syntax-table' property: %s)"
+                             (point) (char-after (point))
+                             (char-after (point))
+                             (get-text-property (point) 'syntax-table)))
             (forward-char 1)
               nil)
      (if (longlines-merge-lines-p)

--------------------------------------------------

And I prepared another file:

--------------------------------------------------

$ cat a.el; echo
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.

(progn (longlines-mode)
       (sleep-for 1)
       (switch-to-buffer "*Messages*"))
$

--------------------------------------------------

Note that the position 65 in a.el is at the first line, after the word
`Lisp', i.e. before the space that before the word `evaluation'.  Then
I recompiled Emacs, and run `./emacs -Q a.el'.  I evaluated the
`progn' form, and read the output in the *Messages* buffer:

--------------------------------------------------

Loading /home/xgp/src/emacs/emacs/lisp/longlines.el (source)...done
(in `longlines-wrap-line': char at point 65 is `
(10)', `syntax-table' property: (14))
in `scan_sexps_forward': `syntax-table' property at point 65 not nil: 1
in `forw_comment': `syntax-table' property at point 65 not nil: 1
This comment stopped at 65
#<buffer *Messages*>

--------------------------------------------------

The syntax code 14 means "generic comment".  As documented in the
elisp manual, the parsing should use "generic comment", rather than
"comment stop" for the newline character at point 65.  Stefan's reply,

    Another way to fix it, local to longlines.el is to add a
    syntax-table property to soft-newlines so as to prevent them from
    being treated like an end-of-comment.

seems to mean the same thing.

But why "This comment stopped at 65"?  Does this indicate a bug in the
syntax implementation?

Regards,
Guanpeng Xu

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/

  reply	other threads:[~2006-11-14 11:38 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-13  5:24 Patch: Syntax and Hard Newlines Herbert Euler
2006-11-13  5:52 ` Herbert Euler
2006-11-13 10:12   ` Herbert Euler
2006-11-13 20:15   ` Richard Stallman
2006-11-14  1:35     ` Herbert Euler
2006-11-15  3:14       ` Richard Stallman
2006-11-13 19:43 ` Stefan Monnier
2006-11-14  1:19   ` Herbert Euler
2006-11-14  6:51     ` Stefan Monnier
2006-11-14  7:35       ` Herbert Euler
2006-11-14 15:00         ` Stefan Monnier
2006-11-15  1:32       ` Herbert Euler
2006-11-15  3:58         ` Stefan Monnier
2006-11-15  4:24           ` Herbert Euler
2006-11-16  6:22             ` Richard Stallman
2006-11-30  6:36               ` Herbert Euler
2006-11-30 14:52                 ` Stefan Monnier
2006-12-02 17:56                 ` Richard Stallman
2006-12-07 18:46                   ` Stefan Monnier
2006-12-08  5:04                     ` Richard Stallman
2006-12-08  7:44                       ` Stefan Monnier
2006-12-09  1:25                         ` Richard Stallman
2006-12-09  3:50                           ` Stefan Monnier
2006-12-09 18:25                             ` Richard Stallman
2006-11-15  4:37           ` Herbert Euler
2006-11-15  7:26             ` Miles Bader
2006-11-15 14:03             ` Stefan Monnier
2006-11-15 15:47               ` Johan Bockgård
2006-11-15 16:37                 ` Stefan Monnier
2006-11-16 15:01                 ` Richard Stallman
2006-11-16 15:01                 ` Richard Stallman
2006-11-23  9:33                   ` Johan Bockgård
2006-11-14 12:27   ` Richard Stallman
2006-11-14 15:08     ` Stefan Monnier
2006-11-15 22:58       ` Richard Stallman
2006-11-13 20:15 ` Richard Stallman
2006-11-14  1:42   ` Herbert Euler
2006-11-14  8:36 ` Herbert Euler
2006-11-14 11:38   ` Herbert Euler [this message]
2006-11-14 15:03     ` Stefan Monnier
2006-11-16  6:23 ` Herbert Euler
2006-11-16  8:42   ` martin rudalics
2006-11-16 10:47     ` Herbert Euler
2006-11-16 12:18       ` martin rudalics
2006-11-16 12:37         ` Herbert Euler
2006-11-16 12:57           ` martin rudalics
2006-11-16 15:12             ` Herbert Euler
2006-11-16 16:03               ` martin rudalics
2006-11-17  1:24                 ` Herbert Euler
2006-11-17  2:27                   ` Stefan Monnier
2006-11-17  1:36                 ` Herbert Euler
2006-11-16 14:22     ` Stefan Monnier
2006-11-17  6:30     ` Herbert Euler
2006-11-17 18:39       ` martin rudalics
2006-11-18  0:51         ` Herbert Euler
2006-11-18 14:34           ` martin rudalics
2006-11-18 15:21             ` Miles Bader
2006-11-19 11:11               ` martin rudalics
2006-11-19 18:14                 ` Stefan Monnier
2006-11-20  1:37                 ` Richard Stallman
2006-11-20  3:04                   ` Stefan Monnier
2006-11-20 23:57                     ` Richard Stallman
2006-11-21  0:03                       ` David Kastrup
2006-11-22 13:15                         ` Richard Stallman
2006-11-22 13:50                           ` David Kastrup
2006-11-24 22:49                             ` Richard Stallman
2006-11-26 11:42                               ` Kim F. Storm
2006-11-26 12:08                                 ` David Kastrup
2006-11-26 18:32                                   ` Kim F. Storm
2006-11-26 19:53                                     ` David Kastrup
2006-12-05 17:43                           ` David Reitter
2006-12-06 14:24                             ` Richard Stallman
2006-12-08  9:03                               ` David Reitter
2006-11-20  7:39                   ` martin rudalics
2006-11-20 10:13                   ` David Kastrup
2006-11-20  7:09                 ` Herbert Euler
2006-11-20  8:03                   ` martin rudalics
2006-11-19  0:58           ` Stefan Monnier
2006-11-19 12:47             ` Richard Stallman
2006-11-19 18:09               ` Stefan Monnier
2006-11-20 12:59                 ` Richard Stallman
2006-11-21  3:45                   ` Herbert Euler
2006-11-22 13:15                     ` Richard Stallman
2006-11-23  3:27                       ` Herbert Euler
2006-11-26  2:01                         ` Richard Stallman
2006-11-27  1:10                           ` Stefan Monnier
2006-11-29  4:06                             ` Herbert Euler
2006-11-29  4:08                               ` Herbert Euler
2006-11-29  4:57                               ` Stefan Monnier
2006-11-29  7:36                                 ` Herbert Euler
2006-11-29 11:28                                   ` Stefan Monnier
2006-11-30  3:20                                   ` Richard Stallman
2006-11-29  8:13                               ` David Kastrup
2006-11-19  7:59           ` 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

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

  git send-email \
    --in-reply-to=BAY116-F26B954E067BBEFB4564731DAEB0@phx.gbl \
    --to=herberteuler@hotmail.com \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@gnu.org \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.