gỡ lỗi một số elisp - Phần cuối của tệp trong quá trình phân tích lỗi lỗi trong init.el


9

Sau một thời gian dài gỡ lỗi tệp init.el của tôi, nó trông giống như dòng đầu tiên của mã elisp sau, nghĩa (custom-set-variableslà gây ra lỗi 'Kết thúc tệp trong khi phân tích cú pháp') mà tôi hoàn toàn không hiểu. Nếu tôi nhận xét dòng này, tất cả đều ổn. Tôi thậm chí không tự nhập mã này, vì nó đã được tự động thêm vào init.el từ customizemenu.

(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))

Đây là thông báo lỗi hoàn chỉnh:

Cảnh báo (khởi tạo): Đã xảy ra lỗi khi tải `/Users/me/.emacs.d/init.el ':

Kết thúc tệp trong quá trình phân tích cú pháp: /Users/me/.emacs.d/init.el

Bất kỳ trợ giúp sẽ được đánh giá cao ! Cảm ơn


Nếu tệp lớn, bạn có thể sử dụng M-x check-parensđể chuyển đến phần vi phạm. Nếu tệp ngắn hoặc bạn đang xem một đoạn mã ngắn, thì có các phương pháp để làm nổi bật dấu ngoặc đơn để xem trực quan nơi dấu ngoặc bị đặt sai hoặc thiếu. Đây là một liên kết đến biến thể của riêng tôi về highlight-parentheses-mode: stackoverflow.com/a/23998965/2112361
luật

Vui lòng không sử dụng custom-set-variablesmã Elisp của riêng bạn. Đây có nghĩa là để được tự động tạo ra chỉ . Đừng sao chép và dán nó. Tìm mã tương đương bằng cách sử dụng setqhoặc một cái gì đó như thế.
Stefan

Câu trả lời:


19

Lỗi "kết thúc tập tin trong quá trình phân tích cú pháp" có nghĩa là bạn chưa đóng paren.

Để gỡ lỗi này, bạn nên

  1. Làm M-x check-parens RETđể xác định vị trí của lỗi hiện tại.
  2. Cho phép show-paren-modexem paren nào phù hợp với cái hiện tại của bạn - điều này sẽ giúp bạn bảo trì mã đang diễn ra.
  3. Sử dụng C-M-f/C-M-b để điều hướng bởi các parens cân bằng; nếu bạn gặp lỗi, đây là nơi cha mẹ mở của bạn không đóng.
  4. Sử dụng TABđể thụt lề từng dòng và xem nếu thụt mới phù hợp với mong đợi của bạn.

Câu trả lời khác giải thích chính xác lỗi thực tế là gì trong trường hợp của bạn.


5

Một dấu ngoặc đơn đóng bị thiếu trong ví dụ trên. Các thống kê whenkhông phải là một phần của custom-set-variables. Mã sửa lỗi như sau:

(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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.