В этом примере первый параметр установлен в значение non-nil
- «[о] ptional аргумент (префикс) non-nil
означает сохранить все без вопросов.» Хотя это может быть просто старый t
, я решил составить более значимый символ в напомните себе, что это означает - то есть, 'no-confirm
. Если бы я хотел получить диалоговое окно подтверждения, вместо этого я бы использовал nil
для аргумента сначала.См. Doc-string - M-x describe-function RET save-some-buffers RET
- для получения дополнительной информации о том, как эта функция ведет себя в зависимости от того, является ли аргумент первым аргументом nil
или non-nil
.
В приведенном ниже примере используется save-some-buffers
с пользовательской функции нулевого аргумента для второго аргумента - то есть, ПРЕД - выбрать, какие буферы должны быть сохранены. Док-строка для save-some-buffers
утверждает, что второй аргумент - т.е. ПРЕД - может быть один из трех вариантов - (1) Если ПРЕД является nil
, все буферы файлов, посещения считаются ; (2) Если PRED - t
, то определённые также будут считаться файловыми буферами; или (3) Если PRED - это функция с нулевым аргументом,, она указывает для каждого буфера, следует ли это учитывать или нет при вызове с этим током буфера.
В примере используется комбинация клавиш f5
, но пользователь может вызвать эту настраиваемую функцию в интерактивном режиме - M-x my-save-some-buffers
- или полностью назначить комбинацию клавиш. Есть несколько возможных совпадений, которые были жестко закодированы, и пользователь может добавлять/удалять/изменять условие:
• файловом посещения буфера + имя файла совпадает со значением переменной abbrev-file-name
,
• файловом посещения буфера + основной режим является latex-mode
от встроенного tex-mode.el
- не AucTeX.
• файл-посещение-буфер + основной режим markdown-mode
.
• файл-посещение-буфер + основной режим emacs-lisp-mode
.
• файл-посещение-буфер + производный-режим - 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)
Все, что вам нужно, это 'C-у С-х s' – ocodo
или' C-х лет! '(Который просто от глядя на' C-h' помощью отведенной для быстрых вариантов ясно). – phils
@phils очень верно, на самом деле нет идеи, почему принятый ответ должен быть настолько сложным. 'C-x s', а затем'! 'Не является« тихим »и требует реакции на подсказку (извините, педантик.) -« C-u »полезно знать, потому что он может обеспечить дополнительную функциональность для многих вещей. Например, попробуйте 'C-u' и' M-x align-regexp'. – ocodo