Kapan saya harus menggunakan dengan-eval-after-load dalam file konfigurasi saya?


15

Saya memeriksa file konfigurasi saya dan ingin melakukan pembersihan.

Pemahaman saya with-eval-after-loadadalah bahwa tubuhnya akan dievaluasi segera setelah paket terkait dimuat. Sementara membersihkan file konfigurasi saya dan membaginya lebih lagi, saya ingin menyertakan setiap konfigurasi paket with-eval-after-load. Semuanya berjalan seperti yang diharapkan sampai saya lampirkan konfigurasi untuk helmdan helm-projectile.

Inilah yang ada dalam pikiran saya ( lisp / init-helm.el ):

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

Setelah memulai ulang Emacs, saya mendapatkan masalah ukuran jendela ini:

emacs-window-size-issue

Ini adalah bagaimana saya mengubah ukuran jendela saya:

(set-frame-parameter nil 'fullscreen 'fullboth)

Saya kira saya menyalahgunakan with-eval-after-load, bagaimana cara membersihkan konfigurasi Emacs-nya dan memastikan tidak ada yang rusak tidak peduli paket apa yang diinstal?


Ini benar-benar aneh. (Mungkin bug?)
PythonNut

Apakah Anda tahu apa hubungannya dengan ini? Saya menggunakan port OS X Railwaycat dan saya tidak ingin menambahkan masalah di mana ini bukan milik :).
Mathieu Marques

8
Saya mencoba menggunakan with-eval-after-loaduntuk membungkus semua penyesuaian terkait paket saya satu kali. Kemudian saya melihat cahaya dan mulai menggunakannya use-package.
itsjeyd

@itsjeyd Ini memang terlihat sangat praktis dan nyaman! Namun saya mengalami beberapa masalah: Saya berkomentar (package-initialize)dan menggantinya dengan (require 'use-package)tetapi saya akan mendapatkan kesalahan File: Tidak dapat membuka file, tidak ada file atau direktori, gunakan-paket ketika me-restart Emacs. Namun, begitu Emacs telah dimulai saya dapat mengevaluasi (require 'use-package)tanpa masalah. Akhirnya, saya bahkan mencoba with-eval-after-load, masih error yang sama. Readme tidak begitu jelas tentang cara menginstal use-package ketika menggunakan paket dari package.el.
Mathieu Marques

1
Tunjukkan pada Anda Anda .emacs, sebaiknya versi stripped-down yang menunjukkan masalah dengan beberapa baris dan sesedikit mungkin paket eksternal. Ini mungkin ada hubungannya dengan pengaturan waktu bingkai vs beban paket selama startup . Tetapi tanpa melihat kode Anda, tidak banyak yang bisa kita lakukan. Juga beri tahu kami versi Emacs yang Anda gunakan.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:


2

Saya menggunakan with-eval-after-loadbanyak, sebagian besar untuk menambah atau menghapus elemen ke atau dari daftar setelah nilai default dievaluasi. Dengan begitu saya tidak perlu melacak perubahan dalam nilai default.

Adapun masalah dengan helminisialisasi Anda , dokumentasi merekomendasikan yang (require 'helm-config)hadir dalam init.eldependensi Anda.

Saya telah menemukan bahwa lebih mudah hanya membutuhkan helm-configselama inisialisasi daripada mengandalkan autoload, terutama karena saya akan memuatnya hampir sebagian besar waktu.


Saya telah mengubah sejak saat itu untuk digunakan use-package, dan bahkan ketika membutuhkan helm-configsaya masih mendapatkan masalah yang sama. Berikut ini adalah konfigurasi konfigurasi saya yang diperbarui: bitbucket.org/angrybacon/dotemacs/src .
Mathieu Marques

1

Ternyata itu tidak ada hubungannya dengan helminisialisasi (atau sedikit).

Dalam pencarian saya yang kekal untuk mengoptimalkan waktu start-up Emacs, saya telah memindahkan semua hal terkait antarmuka di awal konfigurasi saya. Itu termasuk pseudo fullscreen yang saya gunakan.

Menempatkan baris yang sesuai sebelum salah satu lisp berat dimuat memperbaiki masalah saya.

Ini konfigurasi saya untuk referensi .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.