Sau khi các gói đã được cập nhật, vị trí của các tệp elisp được tải sẽ thay đổi thành trong thư mục của phiên bản mới của gói.
Yasnippet cố gắng tải các đoạn mã một cách lười biếng cho tệp mà nó đã được cài đặt, khi tôi mở một tệp ở chế độ chính mà yasnippet chưa từng thấy trước đây.
Điều này có nghĩa là tải mọi thứ với các chế độ chính chưa từng thấy trước đây một khi emacs đã được cập nhật không thành công, vì yasnippet phá vỡ toàn bộ bằng cách phàn nàn về "không có tệp hoặc thư mục như vậy".
Có một cách tổng quát tốt để giải quyết vấn đề này, chẳng hạn như không để các bản cập nhật phá vỡ mọi thứ? (Tôi nhận được một vấn đề tương tự nhưng ít tẻ nhạt hơn khi ag được cập nhật). Ngoài ra, có nên khuyên một điều gì đó trong yasnippet chỉ là nuốt lỗi để nó chỉ cảnh báo thay vì lỗi khi không thể tải các gói là một kế hoạch tốt hơn?
Làm rõ:
- Tôi bắt đầu emacs và yasnippet được tải.
- Tôi tải không có tệp nào có chế độ chính là (ví dụ) tệp tạo tệp.
- Tôi cập nhật lên phiên bản mới của yasnippet, sử dụng trình quản lý gói
- Tôi tải một tệp Makefile và yasnippet cố gắng tải đoạn mã cho tệp tạo tệp nhưng không thành công, vì thư mục mà nó đang sử dụng cho đoạn trích không còn tồn tại. Không chỉ vậy, nhưng thực tế mọi lệnh khác đều thất bại, vì móc nối trước với chúng mà yasnippet đã cài đặt không thành công.
- Giải pháp thay thế: Mở bộ đệm thông báo, tìm thư mục nào không thể mở và chạy
mkdir ~/.blargh/folder-yasnippet-wants
.
Rõ ràng, người ta có thể viết một số lời khuyên cho một chút yasnippet, nhưng tôi hy vọng một giải pháp toàn cầu hơn (và phải mất một thời gian chơi với elisp để có được lời khuyên để làm việc tôi chắc chắn).
package.el
làm việc hoàn hảo và có lẽ bạn đang tìm kiếm một giải pháp liên quan. Cá nhân tôi trở nên vô duyên khi mọi thứ bị phá vỡ, vì vậy tôi giảm khả năng bị vỡ bằng cách đặt các thư viện ở một vị trí hoàn toàn khác - trong một số trường hợp, tôi thậm chí thay đổi tất cả các tên bằng cách thêm tiền tố vào thư viện - ví dụ: lawlist-...
Bằng cách đó, không có gì phá vỡ ngoại trừ một chức năng đã được sửa đổi bởi nhóm Emacs - ví dụ: một đối số mới cho một chức năng hiện có, v.v. Tôi đã sao chép yasnippet.el
ở một nơi khác, xóa nó khỏi trình quản lý gói và không bao giờ lo lắng về nó.