Thay thế yêu cầu báo cáo bằng cách tự động tải trong tệp .emacs để cải thiện hiệu suất


8

Theo những bài viết này:

người ta có thể bằng cách nào đó thay thế requireloadbáo cáo trong .emacstệp để tăng tốc độ bắt đầu emacs. Tuy nhiên tôi không biết làm thế nào để làm điều này một cách chi tiết.

Ví dụ: tôi có (trong số những thứ khác) trong tệp .emacs của mình như sau requirevà các loadcâu lệnh:

(load "auctex.el" nil t t)
(require 'alarm)
(require 'linked)
(load "nxhtml/autostart.el")
(require 'autoinsert)
(require 'recentf)
(require 'color-theme)
(load "~/.emacsaddons/emacs-color-theme-solarized/color-theme-solarized")
...

Cho alarmlinkedcó các tệp tương ứng trong một thư mục được gọi .emacsaddons, vì nxhtmlcó một thư mục, đối với các tệp khác không có tệp tương ứng .emacsaddons. Tôi đã không bao gồm tất cả requirehoặc các loadtuyên bố từ .emacstệp của mình trong ví dụ ở trên, chỉ một vài nơi tôi cảm thấy rằng các bước để thay thế chúng autoloadsẽ khác nhau giữa chúng (ví dụ: vì một số có eltệp unter .emacsaddonsvà một số không, hoặc nxhtmllà vì một tiểu thư của .emacsaddons...).

Làm thế nào là các bước chi tiết để thay thế mọi thứ bằng autoloadchức năng để cải thiện hiệu suất?

Câu trả lời:


4

Là bước đầu tiên để tự động tải, tôi sẽ đề nghị bạn chuyển đổi các loadlệnh rõ ràng của mình với các đường dẫn được thêm vào danh sách những thứ mà emacs nên tải, như trong:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/"))

Với điều đó ở đầu của bạn .emacs, bạn có thể gọi những thứ khác phụ thuộc vào việc tải các tệp khác để chúng sẽ được tìm thấy.

Cụ thể để hoãn tải các tệp, đối với mỗi tệp (require 'foo)bạn có trong tệp của mình .emacs, bạn nên thay thế tệp đó bằng một cái gì đó tương tự:

(autoload 'name-of-foo-mode "code-for-foo.el" "Minor/Major mode for foo" t)

Bạn có thể phải thử nghiệm (có thể đọc) mã cho .el tệp tương ứng để xem tên bạn cần đặt là gì 'name-of-foo-mode. Phổ biến nhất là 'foohoặc 'foo-mode, nhưng có sự không nhất quán.

Trong trường hợp của tôi, tôi có những tuyên bố này gần với đáy của tôi .emacs:

(autoload 'textmate-mode "textmate" "Minor mode for automatic bracket pairs" t)
(autoload 'post-mode "post" "Mode for editing e-mails" t)
(autoload 'turn-on-reftex "reftex" "Minor mode for references in TeX files" t)
(autoload 'mode-compile "mode-compile" "Compile current buffer" t)
(autoload 'markdown-mode "markdown-mode" "Major mode for Markdown files" t)

nhưng một số tuyên bố mà tôi phải có requiretrước khi tôi chuyển sang tự động tải là:

(require 'reftex)
(require 'post)
(require 'compile)
(require 'textmate)

Vì vậy, như tôi đã nói, bạn có thể phải thực hiện một số thử nghiệm hoặc đọc mã, nhưng, cuối cùng, nó đáng giá, vì nó sẽ giúp bạn tiết kiệm thời gian nếu bạn thường xuyên gọi emacs.


1

Cách tốt nhất mà tôi đã tìm thấy để bắt đầu emacs một cách nhanh chóng là trình bày quy trình. Các hướng dẫn này liên quan đến emacs23. Các phiên bản trước có khả năng máy chủ / máy khách, nhưng có thể khó cấu hình hơn. Khi tôi lần đầu tiên đăng nhập vào máy tính để bàn của mình, tôi thực thi emacs --daemon. Sau này, mỗi khi tôi cần emacs tôi thực thi emacsclient -c filenamevà nó bật lên ngay lập tức. Khi sử dụng emacs trong chế độ máy chủ / máy khách, bạn cần bỏ thói quen sử dụng C-x C-cđể thoát, thay vào đó là gõ C-x #. FWIW, đây là điều mà emacs23 dường như đã khắc phục, vì đôi khi tôi đã tự bắt mình gõ C-x C-cmà không giết quá trình máy chủ, nhưng tôi vẫn giữ thói quen cũ.

Tùy thuộc vào yêu cầu của bạn, điều này có thể hoạt động tốt hơn so với thao tác cấu hình của bạn để đạt được ít lợi ích.

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.