Thỉnh thoảng tôi quan sát hành vi bất ngờ khi chỉnh sửa văn bản. Lần truy cập đầu tiên của tôi thường là sử dụng C-h k
để tìm hiểu các hàm nào đang được gọi bởi một chuỗi khóa đã cho. Tuy nhiên, đôi khi tài liệu này mâu thuẫn với hành vi được quan sát. Trong những trường hợp này, tôi thường cho rằng một số gói khác đã nối vào hàm hoặc chuỗi khóa đó và đang sửa đổi hành vi của nó.
Làm thế nào tôi có thể tìm hiểu mà chức năng đang thu hút vào dãy phím của tôi không?
Một ví dụ mà tôi gặp phải gần đây là tôi đã nhấn "phím và dấu ngoặc kép được chèn vào đầu và cuối của vùng hoạt động. Tôi đã có một nghi ngờ rằng đây không phải là hành vi Emacs mặc định, vì vậy tôi đã sử dụng C-h k "
để tìm ra chức năng nào thực sự được gọi.
Các describe-key
tài liệu hướng dẫn nói với tôi rằng các chức năng self-insert-command
đã được gọi, mà là một chức năng built-in. Để làm cho một câu chuyện dài ngắn, sau một số lượng thử nghiệm và lỗi, tôi đã có thể xác định rằng hành vi đó là do electric-pair-mode
. Trong tương lai, có cách nào nhanh hơn để đi đến kết luận này hơn là tắt từng gói bị nghi ngờ cho đến khi tìm ra thủ phạm?
electric-pair-mode
hoạt động bằng cách móc vào post-self-insert-hook
chứ không phải bằng cách thay đổi phím bấm.
C-h k
cho bạn biết chính xác những gì xảy ra cho một phím nhấn. Nếu bạn nhìn vào tài liệu cho self-insert-command
, nó nói rất rõ post-self-insert-hook
là chạy sau khi lệnh kết thúc.
after-change-functions
như Jordon đề cập đến trong câu trả lời của anh ta? Tài liệu cho một chức năng có lẽ sẽ không đề cập cụ thể đến cái móc đó, phải không?
C-h k
+ các móc tiêu chuẩn == hành vi hoàn chỉnh (nhiều hơn hoặc ít hơn). Tất nhiên đôi khi để lại rất nhiều khả năng, nhưng nó vẫn minh bạch hơn bất kỳ hệ thống phần mềm phức tạp nào khác mà tôi biết.
electric-pair-mode
là đã được kích hoạt chỉ trong một số chế độ chính? Bạn vẫn thấyself-insert-command
cho"
khi bạn làmC-h k
trong khielectric-pair-mode
đang hoạt động?