Add lisp-data-mode for editing non-code Lisp data
Fixes: bug#40573 The new mode can be used stand-alone or inherited from by modes intended to edit programs. The existing emacs-lisp-mode and lisp-mode are examples. Thanks to Juri Linkov and Basil L. Contovounesios for researching some data files in Emacs that can be automatically set to use the new mode. * lisp/files.el (auto-mode-alist): Add entry for ".dir-locals" and ".dir-locals-2" * lisp/emacs-lisp/lisp-mode.el: (lisp-data-mode): New major mode. (lisp-mode): Inherit from lisp-data-mode. Set special lisp-mode stuff here. * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Inherit from lisp-data-mode. * lisp/bookmark.el (bookmark-insert-file-format-version-stamp): Use lisp-data-mode. * lisp/saveplace.el (save-place-alist-to-file): Use lisp-data-mode. * lisp/net/eww.el (eww-write-bookmarks): Use lisp-data-mode. * lisp/net/nsm.el (nsm-write-settings): Use lisp-data-mode. * lisp/net/tramp-cache.el (tramp-dump-connection-properties): Use lisp-data-mode. * etc/NEWS: Mention lisp-data-mode. * doc/lispref/modes.texi (Example Major Modes): Update example.
This commit is contained in:
parent
7fa3e754cb
commit
43fded12d5
10 changed files with 45 additions and 38 deletions
|
@ -611,6 +611,8 @@ Value for `adaptive-fill-function'."
|
|||
;; a single docstring. Let's fix it here.
|
||||
(if (looking-at "\\s-+\"[^\n\"]+\"\\s-*$") ""))
|
||||
|
||||
;; Maybe this should be discouraged/obsoleted and users should be
|
||||
;; encouraged to use `lisp-data-mode` instead.
|
||||
(defun lisp-mode-variables (&optional lisp-syntax keywords-case-insensitive
|
||||
elisp)
|
||||
"Common initialization routine for lisp modes.
|
||||
|
@ -658,6 +660,14 @@ font-lock keywords will not be case sensitive."
|
|||
(setq-local electric-pair-skip-whitespace 'chomp)
|
||||
(setq-local electric-pair-open-newline-between-pairs nil))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode lisp-data-mode prog-mode "Lisp-Data"
|
||||
"Major mode for buffers holding data written in Lisp syntax."
|
||||
:group 'lisp
|
||||
(lisp-mode-variables t t nil)
|
||||
(setq-local electric-quote-string t)
|
||||
(setq imenu-case-fold-search nil))
|
||||
|
||||
(defun lisp-outline-level ()
|
||||
"Lisp mode `outline-level' function."
|
||||
(let ((len (- (match-end 0) (match-beginning 0))))
|
||||
|
@ -737,7 +747,7 @@ font-lock keywords will not be case sensitive."
|
|||
"Keymap for ordinary Lisp mode.
|
||||
All commands in `lisp-mode-shared-map' are inherited by this map.")
|
||||
|
||||
(define-derived-mode lisp-mode prog-mode "Lisp"
|
||||
(define-derived-mode lisp-mode lisp-data-mode "Lisp"
|
||||
"Major mode for editing Lisp code for Lisps other than GNU Emacs Lisp.
|
||||
Commands:
|
||||
Delete converts tabs to spaces as it moves back.
|
||||
|
@ -746,7 +756,6 @@ Blank lines separate paragraphs. Semicolons start comments.
|
|||
\\{lisp-mode-map}
|
||||
Note that `run-lisp' may be used either to start an inferior Lisp job
|
||||
or to switch back to an existing one."
|
||||
(lisp-mode-variables nil t)
|
||||
(setq-local lisp-indent-function 'common-lisp-indent-function)
|
||||
(setq-local find-tag-default-function 'lisp-find-tag-default)
|
||||
(setq-local comment-start-skip
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue