質問: コンソールでemacsを実行しているときに「シンボルの関数定義が無効です:エラー」を防ぐにはどうすればよいですか? emacsでスクロールバーを無効にするために(toggle-scroll-bar -1)を.emacsファイルに追加しました。コンソールモードの外でemacsを実行するとうまく機能します。しかし、ターミナルでemacsを実行すると、エラーシンボルの関数定義が無効になります:toggle-scroll-bar私はemacs23.3.1を実行しています--debug-initを実行したときのトレースは次のとおりです 1 debugger entered--lisp error: (void-function scroll-bar-mode) 2 (scroll-bar-mode -1) 3 eval-buffer(#<buffer *load*> nil "/users/neil/.emacs.d/init.el" nil t) ;$ 4 load-with-code-conversion("/users/neil/.emacs.d/init.el" "/users/neil/.ema$ 5 load("/users/neil/.emacs.d/init" t t) 6 #[nil "^h\205\264^@ \306=\203^q^@\307^h\310q\2027^@ \311=\2033^@\312\307$ 7 command-line() 8 normal-top-level()
回答: fwiw。 emacsのマニュアルでは、述語としてwindow-systemを使用することは推奨されていません。 テキスト端末とグラフィックディスプレイで異なる動作をするコードを記述したい場合は、window-systemとinitial-window-systemを述語またはブールフラグ変数として使用しないでください。これは、ウィンドウシステムが特定の表示タイプでのemacs機能の適切な指標ではないためです。代わりに、display-graphic-pまたはdisplay featuretestingで説明されている他のdisplay-*-p述語のいずれかを使用してください。 http://www.gnu.org/software/emacs/manual/html_node/elisp/window-systems.html これを使用して、グラフィック表示時にスクロールバーとツールバーをオフにします。(if (display-graphic-p) (progn (tool-bar-mode -1) (scroll-bar-mode -1)))