* bug#24767: jgraph comments not recognized any more @ 2016-10-22 21:24 Stefan Monnier 2016-10-23 6:17 ` Eli Zaretskii 2016-10-24 19:34 ` Alan Mackenzie 0 siblings, 2 replies; 8+ messages in thread From: Stefan Monnier @ 2016-10-22 21:24 UTC (permalink / raw) To: 24767 Package: Emacs Try the following: % emacs -Q -l .../elpa/packages/jgraph-mode/jgraph-mode.el ~/foo.jgr (* hello *) The string "(* hello *)" should be highlighted as a comment, and is indeed correctly highlighted this way in Emacs-25 (and Emacs-24), but not in "master". The particularity of jgraph-mode's handling of (*...*) is that ?(, ?), and ?* are given "symbol" syntax, so I guess that src/syntax.c was modified in a way which makes it skip the whole (* as being a symbol. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-22 21:24 bug#24767: jgraph comments not recognized any more Stefan Monnier @ 2016-10-23 6:17 ` Eli Zaretskii 2016-10-23 15:34 ` Alan Mackenzie 2016-10-24 19:34 ` Alan Mackenzie 1 sibling, 1 reply; 8+ messages in thread From: Eli Zaretskii @ 2016-10-23 6:17 UTC (permalink / raw) To: Stefan Monnier, Alan Mackenzie; +Cc: 24767 > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sat, 22 Oct 2016 17:24:01 -0400 > > % emacs -Q -l .../elpa/packages/jgraph-mode/jgraph-mode.el ~/foo.jgr > (* hello *) > > The string "(* hello *)" should be highlighted as a comment, and is > indeed correctly highlighted this way in Emacs-25 (and Emacs-24), but > not in "master". > > The particularity of jgraph-mode's handling of (*...*) is that ?(, ?), > and ?* are given "symbol" syntax, so I guess that src/syntax.c was > modified in a way which makes it skip the whole (* as being a symbol. I suspect 9dcf599. Alan, could you please take a look? Stefan, I think it would be good to have a test for this in the test suite, even if for now it will fail. Thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-23 6:17 ` Eli Zaretskii @ 2016-10-23 15:34 ` Alan Mackenzie 0 siblings, 0 replies; 8+ messages in thread From: Alan Mackenzie @ 2016-10-23 15:34 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stefan Monnier, 24767 Hello, Eli. On Sun, Oct 23, 2016 at 09:17:19AM +0300, Eli Zaretskii wrote: > > From: Stefan Monnier <monnier@iro.umontreal.ca> > > Date: Sat, 22 Oct 2016 17:24:01 -0400 > > > > % emacs -Q -l .../elpa/packages/jgraph-mode/jgraph-mode.el ~/foo.jgr > > (* hello *) > > > > The string "(* hello *)" should be highlighted as a comment, and is > > indeed correctly highlighted this way in Emacs-25 (and Emacs-24), but > > not in "master". > > > > The particularity of jgraph-mode's handling of (*...*) is that ?(, ?), > > and ?* are given "symbol" syntax, so I guess that src/syntax.c was > > modified in a way which makes it skip the whole (* as being a symbol. > I suspect 9dcf599. Alan, could you please take a look? Yes, 9dcf599 is indeed where the bug was introduced. I'll be looking at it. > Stefan, I think it would be good to have a test for this in the test > suite, even if for now it will fail. > Thanks. -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-22 21:24 bug#24767: jgraph comments not recognized any more Stefan Monnier 2016-10-23 6:17 ` Eli Zaretskii @ 2016-10-24 19:34 ` Alan Mackenzie 2016-10-25 13:52 ` Stefan Monnier 1 sibling, 1 reply; 8+ messages in thread From: Alan Mackenzie @ 2016-10-24 19:34 UTC (permalink / raw) To: Stefan Monnier; +Cc: 24767 Hello, Stefan. On Sat, Oct 22, 2016 at 05:24:01PM -0400, Stefan Monnier wrote: > Package: Emacs > Try the following: > % emacs -Q -l .../elpa/packages/jgraph-mode/jgraph-mode.el ~/foo.jgr > (* hello *) > The string "(* hello *)" should be highlighted as a comment, and is > indeed correctly highlighted this way in Emacs-25 (and Emacs-24), but > not in "master". > The particularity of jgraph-mode's handling of (*...*) is that ?(, ?), > and ?* are given "symbol" syntax, so I guess that src/syntax.c was > modified in a way which makes it skip the whole (* as being a symbol. Suppose the jgraph buffer contains: he(*llo*) . Is this supposed to analyse as the symbol "he" followed by a comment, or should it be the symbol "he(*llo*)"? Currently, even Emacs-25 doesn't recognise the "(*llo*)" as a comment. It seems to me more likely that the comment should be recognised, but I don't know jgraph. To blame for this is the section of code in scan_sexps_forward (in Emacs-25) just after the label symstarted: where there is a subsidiary loop on "(from < end)" which doesn't do any checking on the comment flags. Maybe the solution (in master) would be to add the checking of the comment flags into this subsidiary loop. > Stefan -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-24 19:34 ` Alan Mackenzie @ 2016-10-25 13:52 ` Stefan Monnier 2016-10-29 11:02 ` Alan Mackenzie 0 siblings, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2016-10-25 13:52 UTC (permalink / raw) To: Alan Mackenzie; +Cc: 24767 > Suppose the jgraph buffer contains: > > he(*llo*) > > . Is this supposed to analyse as the symbol "he" followed by a comment, > or should it be the symbol "he(*llo*)"? Good question. To the extent that src/syntax.c shouldn't be specific to jgraph-mode, the answer shouldn't depend on the choice made by Jgraph's author. > Currently, even Emacs-25 doesn't recognise the "(*llo*)" as a comment. I think it's good enough to preserve backward compatibility, then. > It seems to me more likely that the comment should be recognised, but > I don't know jgraph. To choose which of the two behavior is desired, the major mode author can use syntax-propertize to catch this rare corner case anyway. > Maybe the solution (in master) would be to add the checking of the > comment flags into this subsidiary loop. Let's not worry about it. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-25 13:52 ` Stefan Monnier @ 2016-10-29 11:02 ` Alan Mackenzie 2016-10-29 15:12 ` Stefan Monnier 0 siblings, 1 reply; 8+ messages in thread From: Alan Mackenzie @ 2016-10-29 11:02 UTC (permalink / raw) To: Stefan Monnier; +Cc: 24767 Hello, Stefan. On Tue, Oct 25, 2016 at 09:52:28AM -0400, Stefan Monnier wrote: > > Suppose the jgraph buffer contains: > > > > he(*llo*) > > > > . Is this supposed to analyse as the symbol "he" followed by a comment, > > or should it be the symbol "he(*llo*)"? > Good question. To the extent that src/syntax.c shouldn't be specific to > jgraph-mode, the answer shouldn't depend on the choice made by > Jgraph's author. > > Currently, even Emacs-25 doesn't recognise the "(*llo*)" as a comment. > I think it's good enough to preserve backward compatibility, then. > > It seems to me more likely that the comment should be recognised, but > > I don't know jgraph. > To choose which of the two behavior is desired, the major mode author > can use syntax-propertize to catch this rare corner case anyway. > > Maybe the solution (in master) would be to add the checking of the > > comment flags into this subsidiary loop. > Let's not worry about it. In the end, that's what I've done. The fix was less tricky than I thought it would be. It recognises the comment in he(*llo*). Would you try out the following patch, please, and let me know whether there are still problems with it. Thanks. diff --git a/src/syntax.c b/src/syntax.c index 667de40..d463f7e 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -3124,6 +3124,7 @@ scan_sexps_forward (struct lisp_parse_state *state, ptrdiff_t prev_from; /* Keep one character before FROM. */ ptrdiff_t prev_from_byte; int prev_from_syntax, prev_prev_from_syntax; + int syntax; bool boundary_stop = commentstop == -1; bool nofence; bool found; @@ -3191,8 +3192,6 @@ do { prev_from = from; \ while (from < end) { - int syntax; - if (SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax) && (c1 = FETCH_CHAR (from_byte), syntax = SYNTAX_WITH_FLAGS (c1), @@ -3258,7 +3257,24 @@ do { prev_from = from; \ while (from < end) { int symchar = FETCH_CHAR_AS_MULTIBYTE (from_byte); - switch (SYNTAX (symchar)) + + if (SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax) + && (syntax = SYNTAX_WITH_FLAGS (symchar), + SYNTAX_FLAGS_COMSTART_SECOND (syntax))) + { + state->comstyle + = SYNTAX_FLAGS_COMMENT_STYLE (syntax, prev_from_syntax); + comnested = (SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax) + | SYNTAX_FLAGS_COMMENT_NESTED (syntax)); + state->incomment = comnested ? 1 : -1; + state->comstr_start = prev_from; + INC_FROM; + prev_from_syntax = Smax; + code = Scomment; + goto atcomment; + } + + switch (SYNTAX (symchar)) { case Scharquote: case Sescape: @@ -3280,6 +3296,7 @@ do { prev_from = from; \ case Scomment_fence: /* Can't happen because it's handled above. */ case Scomment: + atcomment: if (commentstop || boundary_stop) goto done; startincomment: /* The (from == BEGV) test was to enter the loop in the middle so > Stefan -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply related [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-29 11:02 ` Alan Mackenzie @ 2016-10-29 15:12 ` Stefan Monnier 2016-10-30 17:37 ` Alan Mackenzie 0 siblings, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2016-10-29 15:12 UTC (permalink / raw) To: Alan Mackenzie; +Cc: 24767 > Would you try out the following patch, please, and let me know whether > there are still problems with it. Thanks. I confirm it fixes my problems, thank you, Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#24767: jgraph comments not recognized any more 2016-10-29 15:12 ` Stefan Monnier @ 2016-10-30 17:37 ` Alan Mackenzie 0 siblings, 0 replies; 8+ messages in thread From: Alan Mackenzie @ 2016-10-30 17:37 UTC (permalink / raw) To: Stefan Monnier; +Cc: 24767-done Hello, Stefan. On Sat, Oct 29, 2016 at 11:12:51AM -0400, Stefan Monnier wrote: > > Would you try out the following patch, please, and let me know whether > > there are still problems with it. Thanks. > I confirm it fixes my problems, thank you, I've committed it, and am closing the bug. > Stefan -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-10-30 17:37 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-10-22 21:24 bug#24767: jgraph comments not recognized any more Stefan Monnier 2016-10-23 6:17 ` Eli Zaretskii 2016-10-23 15:34 ` Alan Mackenzie 2016-10-24 19:34 ` Alan Mackenzie 2016-10-25 13:52 ` Stefan Monnier 2016-10-29 11:02 ` Alan Mackenzie 2016-10-29 15:12 ` Stefan Monnier 2016-10-30 17:37 ` Alan Mackenzie
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.