コンソールでemacsを実行しているときに「シンボルの関数定義が無効です:エラー」を防ぐ方法は?


10

emacsでスクロールバーを無効にするために、(toggle-scroll-bar -1)を.emacsファイルに追加しました。コンソールモードの外でemacsを実行すると、うまく機能します。しかし、ターミナルでemacsを実行すると、シンボルの関数定義が無効であるというエラーが表示されます:toggle-scroll-bar

Emacs 23.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()

Emacsはおそらく、完全なエラーバックトレースを取得するオプションを指定してemacsを実行するように警告する警告バッファーを提供--debug-initしました。それを試して、その情報を質問に追加してください。Emacsバージョンと一緒にM-x emacs-version。そのコードのチャンクはEmacs 23.2で問題なく動作します。
トレイジャクソン

@Trey Jackson、リクエストした詳細を追加しました。Emacs23.1を実行しているようなので、アップグレードしてみます。ご提案ありがとうございます。
bneil

非常に奇妙な。次のテストでは、.emacsを使用せずにEmacsを実行します。emacs -nw -q次に、スクラッチバッファーに入力(scroll-bar-mode -1)C-jして、エラーが発生するかどうか確認します。その関数はscroll-bar.elパッケージのEmacsと一緒に配布されているので.emacs、何かおかしいか、Emacsが正しくインストールされていなかったと思います。
トレイジャクソン

デバッガに入ったときにこのエラーが表示されます--Lispエラー:(void-function scroll-bar-mode)(scroll-bar-mode -1)eval((scroll-bar-mode -1))eval-last-sexp -1(t)eval-last-sexp(t)eval-print-last-sexp()call-interactively(eval-print-last-sexp nil nil)
bneil

ここに私の.emacsファイルであるpastebin.com/4mYE91Neはあまりにも
bneil

回答:


13

FWIW。emacsマニュアルでwindow-systemは、述語としてのの使用は推奨されていません。

テキスト端末とグラフィックディスプレイで異なる動作をするコードを記述したい場合は、述語またはブールフラグ変数としてwindow-systemおよびinitial-window-systemを使用しないでください。これは、ウィンドウシステムが特定のディスプレイタイプのEmacs機能の適切なインジケータではないためです。代わりに、display-graphic-p、または「表示機能のテスト」で説明されている他の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)))

5

@neatonkの答えが最善であり、すべての基礎をカバーしていると思いますが、特にスクロールバーを無効にするには、 ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

-2

私の推測では、emacs -nwemacs を開いたときに、scroll-bar.elをロードする必要さえありません。それが機能を見つけるのに苦労している理由toggle-scroll-barです。
あなたが
(scroll-bar-mode -1)
たぶん仕事を入れれば代わりかもしれない。


1
(toggle-scroll-bar -1)emacs -nwEmacs 23.2で問題なく動作します...
トレイジャクソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.