私はグーグルを検索してマニュアルを調べようとしましたが、それでもバッファオブジェクトのメジャーモードを取得する方法が見つかりません。例や参考資料を教えてください。ありがとう
私が見つけた唯一の解決策は、バッファーを変更してから元のバッファーに戻してからメジャーモードを照会することでした。それを行うより良い方法はありますか?
それで問題はありますか?
(defun buffer-mode (buffer-or-string)
"Returns the major mode associated with a buffer."
(with-current-buffer buffer-or-string
major-mode))
with-current-buffer
は、戻ったときにバッファーを復元します。
現在のバッファの場合:
(message "%s" major-mode)
これを行う簡単な方法は、buffer-local-value
がバッファローカル変数であるため、major-mode
関数を使用することです。
(buffer-local-value 'major-mode (get-buffer "*scratch*"))
以前の回答から拡張するだけ-引数なしで呼び出して、現在のバッファーのモードを取得します。
(defun buffer-mode (&optional buffer-or-name)
"Returns the major mode associated with a buffer.
If buffer-or-name is nil return current buffer's mode."
(buffer-local-value 'major-mode
(if buffer-or-name (get-buffer buffer-or-name) (current-buffer))))
例えば。 * scratch *バッファー内:
(buffer-mode) => 'LISP-interaction-mode
(buffer-mode "tasks.org") => 'org-mode
まあ、describe-modeはオプションのバッファー引数を取りますが、それはヘルプを表示します...そしてそれが何を返すのか正確にはわかりません...
しかし、それは簡単な検索で見つけることができる最高のものです...申し訳ありません...
別の方法として、_major-mode
_変数を直接readindすることとは別に、_mode-name
_変数。
単にこれを評価してください:
(print major-mode)