Setelah paket diperbarui, lokasi file elisp yang dimuat akan berubah berada di folder versi baru paket.
Yasnippet mencoba memuat cuplikan dengan malas untuk file yang diinstalnya, ketika saya membuka file dalam mode utama yasnippet belum pernah melihat sebelumnya.
Ini berarti bahwa memuat hal-hal dengan mode utama yang sebelumnya tidak terlihat setelah emacs telah diperbarui gagal, karena yasnippet memecah semuanya dengan mengeluh tentang "tidak ada file atau direktori".
Apakah ada cara umum yang baik untuk menyelesaikan masalah ini, seperti tidak membiarkan pembaruan merusak sesuatu? (Saya mendapatkan masalah yang serupa tetapi tidak terlalu membosankan saat ag diperbarui). Atau, akan menyarankan sesuatu di yasnippet untuk hanya menelan kesalahan sehingga hanya memperingatkan bukannya kesalahan ketika tidak dapat memuat paket menjadi rencana yang lebih baik?
Klarifikasi:
- Saya memulai emacs, dan yasnippet dimuat.
- Saya tidak memuat file yang moda utamanya (misalnya) makefile.
- Saya memperbarui ke versi baru dari yasnippet, menggunakan manajer paket
- Saya memuat makefile, dan yasnippet mencoba memuat cuplikan untuk makefile tetapi gagal, karena folder yang digunakannya untuk cuplikan tidak lagi ada. Bukan hanya itu, tetapi secara praktis setiap perintah lain gagal, karena pra-kait kepada mereka yang diinstal yasnippet gagal.
- Penanganan Masalah: Buka buffer pesan, cari folder mana yang tidak dapat dibuka dan dijalankan
mkdir ~/.blargh/folder-yasnippet-wants
.
Jelas, orang bisa menulis beberapa saran untuk sedikit yasnippet, tapi saya berharap untuk solusi yang lebih global (dan itu butuh waktu bermain dengan elisp untuk mendapatkan saran untuk bekerja, saya yakin).
package.el
bekerja dengan sempurna dan Anda mungkin mencari solusi untuk itu. Saya pribadi menjadi unglued ketika ada masalah, jadi saya mengurangi kemungkinan kerusakan dengan menempatkan perpustakaan di lokasi yang sama sekali berbeda - dalam beberapa kasus, saya bahkan mengubah semua nama dengan menambahkan awalan di perpustakaan - misalnya,lawlist-...
Dengan begitu, tidak ada istirahat kecuali fungsi yang dimodifikasi oleh tim Emacs - misalnya, argumen baru untuk fungsi yang ada, dll. Saya menyalin diyasnippet.el
tempat lain, menghapusnya dari manajer paket, dan tidak pernah khawatir tentang hal itu.Jawaban:
Apa yang saya lakukan sedikit rumit: Saya menyarankan fungsi
package-activate
sedemikian rupa sehingga setiap kali sebuah paket diaktifkan, Emacs akan mencari file yang dipanggil[package]-conf.el
dan menjalankannya menggunakanload
alih-alihrequire
, sehingga dapat dieksekusi beberapa kali.Dan di saya
pkg-configs/yasnippet-conf.el
, saya mengaturyas-snippet-dirs
variabel ke titik di manayasnippet
paket itu:kzn-path
adalah fungsi yang saya gunakan untuk menemukan direktori khusus saya dengan simbol; Anda dapat menggantinya untuk direktori.Semua ini disalin langsung dari file konfigurasi saya. Saya pikir itu setiap hal yang Anda butuhkan, atau setidaknya harus mengarahkan Anda ke arah yang benar.
sumber