web-dev-qa-db-ja.com

コンソールで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()
10
bneil

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)))
13
neatonk

@neatonkの答えが最善であり、すべての基盤をカバーしていると思いますが、スクロールバーを明確に無効にするには、~/.emacsに次のように入力できます。

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
5
donovan.lampa