Ответ 1
В этом примере первый аргумент имеет значение non-nil
- "[o] ptional аргумент (префикс) non-nil
означает сохранение всех без вопросов". Хотя это может быть просто старый t
, я решил составить более значимый символ, чтобы напомнить себе о том, что он выступает за - то есть 'no-confirm
. Если бы я хотел получить диалоговое окно подтверждения, вместо этого я использовал бы nil
для первого аргумента. См. Doc-строку - Mx describe-function RET save-some-buffers RET
- для получения дополнительной информации о том, как эта функция ведет себя в зависимости от того, является ли первый аргумент nil
или non-nil
.
В приведенном ниже примере используются save-some-buffers
с настраиваемой функцией аргументов нуля для второго аргумента, то есть PRED - для выбора того, какие буферы должны быть сохранены. В doc-строке для save-some-buffers
говорится, что второй аргумент - то есть PRED - может быть одной из трех возможностей - (1) Если PRED равно nil
, рассматриваются все буферы для просмотра файлов; (2) Если PRED - t
, то также будут рассмотрены некоторые нефайловые буферы; или (3) Если PRED - это функция с нулевым аргументом, она указывает для каждого буфера, следует ли это учитывать или нет при вызове с этим током буфера.
В этом примере используется сочетание клавиш f5
, но пользователь может вызвать эту пользовательскую функцию в интерактивном режиме - Mx my-save-some-buffers
- или назначить другую комбинацию клавиш. Существует несколько возможных совпадений, которые были жестко закодированы, и пользователь может свободно добавлять/удалять/изменять условия:
• file-visit-buffer + имя файла соответствует значению переменной abbrev-file-name
.
• file-visit-buffer + основной режим - latex-mode
из встроенного tex-mode.el
- не AUCTeX.
• file-visit-buffer + основной режим - режим markdown-mode
.
• file-visit-buffer + main-mode - emacs-lisp-mode
.
• file-visit-buffer + производный режим - org-mode
.
(defun my-save-some-buffers ()
(interactive)
(save-some-buffers 'no-confirm (lambda ()
(cond
((and buffer-file-name (equal buffer-file-name abbrev-file-name)))
((and buffer-file-name (eq major-mode 'latex-mode)))
((and buffer-file-name (eq major-mode 'markdown-mode)))
((and buffer-file-name (eq major-mode 'emacs-lisp-mode)))
((and buffer-file-name (derived-mode-p 'org-mode)))))))
(global-set-key [f5] 'my-save-some-buffers)