[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text prope
From: |
Stefan Monnier |
Subject: |
Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.] |
Date: |
Thu, 10 Mar 2016 18:10:58 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
> Visit xdisp.c. Run the following function. It breaks:
> (defun test-break-0 ()
> (interactive)
> (goto-char (point-min))
> (or (forward-comment 2)
> (error "(forward-comment 2) failed"))
> (or (forward-comment -2)
> (error "(forward-comment -2) failed"))
> (message "(forward-comment -2) succeeded"))
Ah, sorry, the patch indeed is incomplete in that it doesn't make Emacs
ignore open-paren-in-column-0-is-defun-start.
So you can fix the above problem with
(setq open-paren-in-column-0-is-defun-start nil)
or replace my previous patch with this one below, which is almost
identical to the previous one, tho a bit cleaner and with a fix to make
comment-use-syntax-ppss override open-paren-in-column-0-is-defun-start,
as it should.
Stefan
diff --git a/src/syntax.c b/src/syntax.c
index 249d0d5..f2268da 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -597,6 +597,26 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte)
&& MODIFF == find_start_modiff)
return find_start_value;
+ if (!NILP (Vcomment_use_syntax_ppss))
+ {
+ EMACS_INT modiffs = CHARS_MODIFF;
+ Lisp_Object ppss = call1 (Qsyntax_ppss, make_number (pos));
+ if (modiffs != CHARS_MODIFF)
+ error ("syntax-ppss modified the buffer!");
+ TEMP_SET_PT_BOTH (opoint, opoint_byte);
+ Lisp_Object boc = Fnth (make_number (8), ppss);
+ if (NUMBERP (boc))
+ {
+ find_start_value = XINT (boc);
+ find_start_value_byte = CHAR_TO_BYTE (find_start_value);
+ }
+ else
+ {
+ find_start_value = pos;
+ find_start_value_byte = pos_byte;
+ }
+ goto found;
+ }
if (!open_paren_in_column_0_is_defun_start)
{
find_start_value = BEGV;
@@ -864,6 +884,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte,
ptrdiff_t stop,
case Sopen:
/* Assume a defun-start point is outside of strings. */
if (open_paren_in_column_0_is_defun_start
+ && NILP (Vcomment_use_syntax_ppss))
&& (from == stop
|| (temp_byte = dec_bytepos (from_byte),
FETCH_CHAR (temp_byte) == '\n')))
@@ -3647,6 +3668,11 @@ void
syms_of_syntax (void)
{
DEFSYM (Qsyntax_table_p, "syntax-table-p");
+ DEFSYM (Qsyntax_ppss, "syntax-ppss-for-syntax.c");
+ DEFVAR_LISP ("comment-use-syntax-ppss",
+ Vcomment_use_syntax_ppss,
+ doc: /* Non-nil means `forward-comment' can use `syntax-ppss'
internally. */);
+ Vcomment_use_syntax_ppss = Qt;
staticpro (&Vsyntax_code_object);
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], (continued)
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Clément Pit--Claudel, 2016/03/09
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/09
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/09
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.],
Stefan Monnier <=
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Alan Mackenzie, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Clément Pit--Claudel, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/11
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], John Wiegley, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Clément Pit--Claudel, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Stefan Monnier, 2016/03/10
- Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.], Andreas Röhler, 2016/03/11