Ответ 1
Оберните функцию вокруг буфера сохранения, которая сначала отметит сначала измененный буфер:
(defun save-buffer-always ()
"Save the buffer even if it is not modified."
(interactive)
(set-buffer-modified-p t)
(save-buffer))
Это происходит со мной все время:
Есть ли другая функция или параметр, которые я могу использовать для принудительного сохранения emacs?
Оберните функцию вокруг буфера сохранения, которая сначала отметит сначала измененный буфер:
(defun save-buffer-always ()
"Save the buffer even if it is not modified."
(interactive)
(set-buffer-modified-p t)
(save-buffer))
Вы можете сохранить как с C-x C-w. Это должно экономить безоговорочно. Вы также можете просто ввести пробел, а затем перекрыть его. Emacs достаточно умен, чтобы понять, что если вы отмените все, что вы сделали до сих пор, буфер не имеет никаких изменений, но если вы внесете изменения, а затем вручную отмените их, он рассмотрит, что буфер был изменен.
Вы можете пометить текущий буфер как измененный с помощью функции Emacs- Lisp немодифицированной с префиксом arg, связанным с:
C-u M-~
Ответ выше не будет работать, если вы не вызываете новую функцию напрямую. Если вы хотите беспрепятственно изменять поведение сохранения emacs. Лучшим решением является создание совета:
(defadvice save-buffer (before save-buffer-always activate)
"always save buffer"
(set-buffer-modified-p t))
В качестве легкой альтернативы ответу на scottfrazer:
(defun my-save-buffer-always-sometimes (prefix)
"Save the buffer even if it is not modified."
(interactive "P")
(when prefix
(set-buffer-modified-p t))
(save-buffer))
Это вы могли бы заставить его, когда хотите с префиксом (C-u C-x C-s
), но в противном случае без необходимости изменять файл. Последняя измененная временная метка очень полезна (например, управление исходным кодом), что кажется позором изменить ее произвольно. YMMV, конечно.
Аналогичная проблема привела меня к онлайн-поиску решения. Затем мне кажется, что все, что мне нужно сделать, это ввести пробел (или любой символ) и удалить его, что помечает буфер как измененный. Тогда я могу набрать C-x C-s как обычно. Может быть, не сложный или продвинутый, но он работает.