GNU bug report logs -
#4030
forward-sexp parses character literal ?; as comment
Previous Next
Reported by: era+emacsbugs <at> iki.fi
Date: Tue, 4 Aug 2009 12:15:04 UTC
Severity: normal
Tags: wontfix
Found in version 23.1.50.1
Done: npostavs <at> users.sourceforge.net
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
This problem still exists in Emacs 25, and this was the last message in
the thread.
When I try this, though, I do at least see the issue pretty clearly due
to font-locking.
Does anyone have any further thoughts? It wasn't clear to me from this
discussion whether there was any consensus that this was actually a bug
or not.
martin rudalics <rudalics <at> gmx.at> writes:
>> Yes, but we need to do that even on chunks of code that have not yet
>> been (and may never be) displayed and in buffers where font-lock
>> is disabled. IOW I'm not talking about fontification but about parsing.
>
> Sure. But I was only talking about the possibility to highlight such
> instances just like we do with column 0 parens in strings already.
>
>> Pretty much, yes, tho the error message should give more info (the OP
>> complained about lack of info in the error message).
>
> That's what the ellipsis stands for. But what info? Guessing a good
> buffer position seems next to impossible. Where else can `forward-sexp'
> go astray when called from a top-level position?
>
>>> But do we really have to scan the buffer in the first place?
>>
>> Don't know. Maybe not, indeed. Maybe it's just to detect the "too many
>> closing parens" case as well (i.e. rather than silently ignore trailing
>> code).
>
> We could simply search for (concat "^(" (symbol-name symbol))) and do a
> `forward-sexp' over the form starting there as in the attached patch. I
> see no reason why we should try to handle an .emacs broken before or
> after that form.
>
> martin
>
> *** cus-edit.el.~1.364.~ 2009-07-27 08:09:05.997162900 +0200
> --- cus-edit.el 2009-08-11 10:51:21.812500000 +0200
> ***************
> *** 4338,4374 ****
>
> This function does not save the buffer."
> (goto-char (point-min))
> ! ;; Skip all whitespace and comments.
> ! (while (forward-comment 1))
> ! (or (eobp)
> ! (save-excursion (forward-sexp (buffer-size)))) ; Test for scan errors.
> ! (let (first)
> ! (catch 'found
> ! (while t ;; We exit this loop only via throw.
> ! ;; Skip all whitespace and comments.
> ! (while (forward-comment 1))
> ! (let ((start (point))
> ! (sexp (condition-case nil
> ! (read (current-buffer))
> ! (end-of-file (throw 'found nil)))))
> ! (when (and (listp sexp)
> ! (eq (car sexp) symbol))
> ! (delete-region start (point))
> ! (unless first
> ! (setq first (point)))))))
> ! (if first
> ! (goto-char first)
> ! ;; Move in front of local variables, otherwise long Custom
> ! ;; entries would make them ineffective.
> ! (let ((pos (point-max))
> ! (case-fold-search t))
> ! (save-excursion
> ! (goto-char (point-max))
> ! (search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
> ! 'move)
> ! (when (search-forward "Local Variables:" nil t)
> ! (setq pos (line-beginning-position))))
> ! (goto-char pos)))))
>
> (defun custom-save-variables ()
> "Save all customized variables in `custom-file'."
> --- 4338,4364 ----
>
> This function does not save the buffer."
> (goto-char (point-min))
> ! (if (re-search-forward (concat "^(" (symbol-name symbol)))
> ! (let ((from (goto-char (match-beginning 0)))
> ! (to (condition-case nil
> ! (progn
> ! (forward-sexp)
> ! (point))
> ! (error nil))))
> ! (if to
> ! (delete-region from to)
> ! (error "Malformed %s expression" symbol)))
> ! ;; Move in front of local variables, otherwise long Custom
> ! ;; entries would make them ineffective.
> ! (let ((pos (point-max))
> ! (case-fold-search t))
> ! (save-excursion
> ! (goto-char (point-max))
> ! (search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
> ! 'move)
> ! (when (search-forward "Local Variables:" nil t)
> ! (setq pos (line-beginning-position))))
> ! (goto-char pos))))
>
> (defun custom-save-variables ()
> "Save all customized variables in `custom-file'."
This bug report was last modified 8 years and 72 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.