mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Process read-symbol-shorthands from longest to shortest (bug#67390)
This ensures that overlapping shorthands are handled correctly and consistently even if specified out-of-order by the user. * doc/lispref/symbols.texi (Shorthands): Describe shorthand sort order. * lisp/files.el (hack-local-variables--find-variables): Specially handle read-symbol-shorthands.
This commit is contained in:
parent
5e4a0a29fa
commit
c2aaa8f15a
2 changed files with 24 additions and 0 deletions
|
|
@ -761,6 +761,23 @@ instead of @code{snu-}.
|
||||||
;; End:
|
;; End:
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
Note that if you have two shorthands in the same file where one is the
|
||||||
|
prefix of the other, the longer shorthand will be attempted first.
|
||||||
|
This happens regardless of the order you specify shorthands in the
|
||||||
|
local variables section of your file.
|
||||||
|
|
||||||
|
@example
|
||||||
|
'(
|
||||||
|
t//foo ; reads to 'my-tricks--foo', not 'my-tricks-/foo'
|
||||||
|
t/foo ; reads to 'my-tricks-foo'
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Local Variables:
|
||||||
|
;; read-symbol-shorthands: (("t/" . "my-tricks-")
|
||||||
|
;; ("t//" . "my-tricks--")
|
||||||
|
;; End:
|
||||||
|
@end example
|
||||||
|
|
||||||
@subsection Exceptions
|
@subsection Exceptions
|
||||||
|
|
||||||
There are two exceptions to rules governing Shorthand transformations:
|
There are two exceptions to rules governing Shorthand transformations:
|
||||||
|
|
|
||||||
|
|
@ -4191,6 +4191,13 @@ major-mode."
|
||||||
;; to use 'thisbuf's name in the
|
;; to use 'thisbuf's name in the
|
||||||
;; warning message.
|
;; warning message.
|
||||||
(or (buffer-file-name thisbuf) ""))))))
|
(or (buffer-file-name thisbuf) ""))))))
|
||||||
|
((eq var 'read-symbol-shorthands)
|
||||||
|
;; Sort automatically by shorthand length
|
||||||
|
;; descending
|
||||||
|
(setq val (sort val
|
||||||
|
(lambda (sh1 sh2) (> (length (car sh1))
|
||||||
|
(length (car sh2))))))
|
||||||
|
(push (cons 'read-symbol-shorthands val) result))
|
||||||
((and (eq var 'mode) handle-mode))
|
((and (eq var 'mode) handle-mode))
|
||||||
(t
|
(t
|
||||||
(ignore-errors
|
(ignore-errors
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue