mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-03 11:33:37 +00:00
(require-final-newline): Allow visit' and
visit-save'.
(mode-require-final-newline): New option. (after-find-file): Handle require-final-newline with new values. (basic-save-buffer): Handle new values of require-final-newline.
This commit is contained in:
parent
a10e1fb7da
commit
f4206092a2
@ -273,14 +273,40 @@ Includes the new backup. Must be > 0"
|
||||
:group 'backup)
|
||||
|
||||
(defcustom require-final-newline nil
|
||||
"*Value of t says silently ensure a file ends in a newline when it is saved.
|
||||
Non-nil but not t says ask user whether to add a newline when there isn't one.
|
||||
nil means don't add newlines."
|
||||
:type '(choice (const :tag "Off" nil)
|
||||
(const :tag "Add" t)
|
||||
"*Whether to add a newline automatically at the end of the file.
|
||||
|
||||
A value of t means do this only when the file is about to be saved.
|
||||
A value of `visit' means do this right after the file is visited.
|
||||
A value of `visit-save' means do it at both of those times.
|
||||
Any other non-nil value means ask user whether to add a newline, when saving.
|
||||
nil means don't add newlines.
|
||||
|
||||
Certain major modes set this locally to the value obtained
|
||||
from `mode-require-final-newline'."
|
||||
:type '(choice (const :tag "When visiting" visit)
|
||||
(const :tag "When saving" t)
|
||||
(const :tag "When visiting or saving" visit-save)
|
||||
(const :tag "Never" nil)
|
||||
(other :tag "Ask" ask))
|
||||
:group 'editing-basics)
|
||||
|
||||
(defcustom mode-require-final-newline t
|
||||
"*Whether to add a newline at the end of the file, in certain major modes.
|
||||
Those modes set `require-final-newline' to this value when you enable them.
|
||||
They do so because they are used for files that are supposed
|
||||
to end in newlines, and the question is how to arrange that.
|
||||
|
||||
A value of t means do this only when the file is about to be saved.
|
||||
A value of `visit' means do this right after the file is visited.
|
||||
A value of `visit-save' means do it at both of those times.
|
||||
Any other non-nil value means ask user whether to add a newline, when saving."
|
||||
:type '(choice (const :tag "When visiting" visit)
|
||||
(const :tag "When saving" t)
|
||||
(const :tag "When visiting or saving" visit-save)
|
||||
(other :tag "Ask" ask))
|
||||
:group 'editing-basics
|
||||
:version "21.4")
|
||||
|
||||
(defcustom auto-save-default t
|
||||
"*Non-nil says by default do auto-saving of every file-visiting buffer."
|
||||
:type 'boolean
|
||||
@ -1627,6 +1653,15 @@ unless NOMODES is non-nil."
|
||||
(when (and view-read-only view-mode)
|
||||
(view-mode-disable))
|
||||
(normal-mode t)
|
||||
;; If requested, add a newline at the end of the file.
|
||||
(and (memq require-final-newline '(visit visit-save))
|
||||
(> (point-max) (point-min))
|
||||
(/= (char-after (1- (point-max))) ?\n)
|
||||
(not (and (eq selective-display t)
|
||||
(= (char-after (1- (point-max))) ?\r)))
|
||||
(save-excursion
|
||||
(goto-char (point-max))
|
||||
(insert "\n")))
|
||||
(when (and buffer-read-only
|
||||
view-read-only
|
||||
(not (eq (get major-mode 'mode-class) 'special)))
|
||||
@ -3194,6 +3229,7 @@ Before and after saving the buffer, this function runs
|
||||
(not (and (eq selective-display t)
|
||||
(= (char-after (1- (point-max))) ?\r)))
|
||||
(or (eq require-final-newline t)
|
||||
(eq require-final-newline 'visit-save)
|
||||
(and require-final-newline
|
||||
(y-or-n-p
|
||||
(format "Buffer %s does not end in newline. Add one? "
|
||||
|
Loading…
Reference in New Issue
Block a user