一部のelispのデバッグ— init.elの「解析エラー時のファイルの終わり」


9

私のinit.elファイルを長時間デバッグした後、次のelispコードの最初の行のように見え(custom-set-variablesます。この行をコメントすると、すべて問題ありません。このコードはcustomizeメニューからinit.elに自動的に追加されているため、自分で入力することもありませんでした。

(custom-set-variables
'(global-hl-line-mode t)
'(ido-mode (quote buffer) nil (ido))
'(menu-bar-mode nil)
 (when (display-graphic-p)
 (tool-bar-mode -1)
 (scroll-bar-mode -1))

完全なエラーメッセージは次のとおりです。

警告(初期化): `/Users/me/.emacs.d/init.el 'のロード中にエラーが発生しました:

解析中のファイルの終わり:/Users/me/.emacs.d/init.el

どんな助けもいただければ幸いです!ありがとう


ファイルが大きい場合は、を使用M-x check-parensして問題のあるセクションにジャンプできます。ファイルが短い場合、またはコードの短いセクションを表示している場合は、一致する括弧を強調表示して、括弧が誤って配置されているか欠落している場所を視覚的に確認する方法があります。ここに私自身のバリエーションへのリンクがありhighlight-parentheses-modeます: stackoverflow.com/a/23998965/2112489
lawlist

custom-set-variables独自のElispコードでは使用しないでください。これは自動生成のみを目的としています。コピーして貼り付けないでください。を使用して同等のコードを探しsetqます。
Stefan

回答:


19

「解析中のファイルの終わり」エラーは、括弧を閉じていないことを意味します。

これをデバッグするには、

  1. やるM-x check-parens RET現在のエラーの位置を特定します。
  2. show-paren-modeどの括弧が現在の括弧と一致するかを確認できるようにします。これは、継続的なコードのメンテナンスに役立ちます。
  3. C-M-f/C-M-bを使用して、バランスのとれた括弧でナビゲートします。エラーが発生した場合、閉じられていない開いている親がここにあります。
  4. を使用TABして各行をインデントし、新しいインデントが期待どおりかどうかを確認します。

他の答えはあなたのケースで実際のエラーが何であるかを正しく説明しています。


5

上記の例では、閉じ括弧が欠落しています。このwhen文はの一部ではありませんcustom-set-variables。修正されたコードは次のとおりです。

(custom-set-variables
  '(global-hl-line-mode t)
  '(ido-mode (quote buffer) nil (ido))
  '(menu-bar-mode nil))

(when (display-graphic-p)
  (tool-bar-mode -1)
  (scroll-bar-mode -1))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.