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 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
|
||||
|
||||
There are two exceptions to rules governing Shorthand transformations:
|
||||
|
|
|
@ -4191,6 +4191,13 @@ major-mode."
|
|||
;; to use 'thisbuf's name in the
|
||||
;; warning message.
|
||||
(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))
|
||||
(t
|
||||
(ignore-errors
|
||||
|
|
Loading…
Add table
Reference in a new issue