22

Aquamacs Emacsで「すべてのバッファをサイレントに保存」するコマンドを作成するにはどうすればよいですか?

良いコマンドを見つけましたsave-some-buffersが、問題は、保存したいすべてのバッファーを確認するように個別に要求されることです。

グーグルを通して、と呼ばれる変数に関するいくつかのドキュメントを見つけましたsave-silently-pが、それは存在しないようです(Aquamacsバージョン2.4、つまりEmacs 23.3.50.1)。

では、プロンプトを表示せずにすべてのバッファーをサイレントに保存するにはどうすればよいですか?

4

4 に答える 4

26

カスタム変数を設定する必要はありません。単純に次のようにします。

C-u C-x s

または長期的に:

Ctrl+ u Ctrl+x s

さらに、すべての保存可能なファイルバッファに対して、実行し、プロンプトの答えで「はい」をC-x s押します。!これは厳密にはサイレントではありませんが、それでも非常に高速で目立たないものです。(クレジット:@phils)

于 2013-07-26T00:44:55.627 に答える
15

nil以外を渡すsave-some-buffersと、プロンプトが表示されずにすべてのファイルが保存されるため、次のようなことができます。

(defun save-all () (interactive) (save-some-buffers t))
(global-set-key (kbd "C-S") 'save-all)
于 2013-11-22T05:43:38.533 に答える
5

この例では、最初の引数がnon-nil値に設定されています-「[o] ptional引数(接頭辞)non-nilt、質問なしですべてを保存することを意味します。」それが何を表しているのかを思い出してください-つまり、'no-confirm。確認ダイアログを受け取りたい場合は、代わりに最初の引数に使用nilします。最初の引数がまたはであるかどうかに応じてこの関数がどのように動作するかに関する追加情報については、doc-string---を参照してください。M-x describe-function RET save-some-buffers RETnilnon-nil

以下の例では、2番目の引数(つまり、PREDsave-some-buffers )にカスタムのゼロ引数関数を使用して、保存するバッファーを選択します。のdoc-stringは、2番目の引数(つまり、PRED )が3つの可能性のいずれかである可能性があることを示しています。 (1)PREDがの場合、すべてのファイル訪問バッファーが考慮されます。(2)PREDがの場合、特定の非ファイルバッファも考慮されます。または(3) PREDがゼロ引数関数の場合、save-some-buffersnilt各バッファについて、そのバッファ電流で呼び出されたときにそれを考慮するかどうかを示します。

この例では、のキーボードショートカットを使用してf5いますが、ユーザーはこのカスタム関数をインタラクティブに呼び出すことができますM-x my-save-some-buffers---または別のキーボードショートカットを完全に割り当てることができます。ハードコーディングされている可能性のある一致がいくつかあり、ユーザーは条件を自由に追加/削除/変更できます。

•file-visiting-buffer +ファイル名は変数の値と一致しますabbrev-file-name

•file-visiting-buffer + major - modeはlatex-mode、組み込みのAUCTeXではありません。tex-mode.el

•file-visiting-buffer + major-modeは。ですmarkdown-mode

•file-visiting-buffer + major-modeは。ですemacs-lisp-mode

•file-visiting-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)
于 2015-05-26T20:25:51.000 に答える
3

の情報ページからsave-some-buffers

(save-some-buffers&optional ARG PRED)

変更されたファイル訪問バッファをいくつか保存します。それぞれについてユーザーに尋ねます。y' to save,決定する前に保存しない、C-r' to look at the buffer in question withview-buffer'、またはd' to view the differences usingdiff-buffer-with-file'と答えることができます。

このコマンドは、最初に、 `buffer-save-without-query'がnil以外のバッファを、要求せずに保存します。

したがって、すべてのファイルに対して(たとえば)変数buffer-save-without-queryをに設定する必要があります。トリックを行う必要があります。t(add-hook 'find-file-hook (lambda () (setq buffer-save-without-query t)))

于 2013-03-06T18:29:05.357 に答える