Làm cách nào tôi có thể ngăn chế độ python thỉnh thoảng làm nổi bật mọi thứ dưới dạng chuỗi


7

Tôi sử dụng python-modecho mã Python của mình và thỉnh thoảng cú pháp tô đậm bị nhầm lẫn và nghĩ rằng mọi thứ trong bộ đệm là một chuỗi ký tự. Điều này thường xảy ra khi tôi tạo một chuỗi; trong vài giây sau khi tôi nhập dấu ngoặc kép, mọi thứ sau con trỏ được tô sáng dưới dạng chuỗi.

Có cách nào để ngăn chặn điều này hoàn toàn? Hoặc, nếu không, có cách nào để làm cho emacs / python-mode phục hồi nhanh hơn không?

ed: Để rõ ràng, đánh dấu không chính xác vẫn tồn tại ngay cả sau khi dấu ngoặc kép đã được đóng và bộ đệm được lưu. Nhưng một lần nữa, đây không phải là mọi lúc, chỉ đôi khi.


5
Bạn có nghĩa là sau khi bạn gõ dấu ngoặc kép mở? Bởi vì, trong trường hợp đó, phần còn lại của bộ đệm một chuỗi (doc). Bạn có thể giải quyết điều này bằng cách để Emacs tự động chèn dấu ngoặc kép sau con trỏ của bạn hoặc một cái gì đó.
Tikhon Jelvis

Không, phần tô sáng vẫn tồn tại đôi khi trong vài giây sau khi dấu ngoặc kép được đóng lại (mặc dù hiện tại tôi không có emacs chèn chúng cho tôi.)
abingham

Ugh, điều gì đó tương tự xảy ra với tôi mọi lúc khi tôi ở REPL và tôi vô tình in một loạt văn bản. Không chắc nó có liên quan hay không, nhưng có lẽ vấn đề này còn chung chung hơn là chỉ python-mode.
Purple_arrows

Điểm thú vị. Tôi đã thử nghiệm c ++ - chế độ một chút, và nó dường như có hành vi tương tự. Nếu tôi để một chuỗi "mở" theo nghĩa đen đủ lâu, phần còn lại của bộ đệm sẽ được tô sáng như một phần của chuỗi (điều này có ý nghĩa hoàn hảo.) Sau khi đóng nghĩa đen, có thể mất vài giây để tô sáng phục hồi. Dường như, sau đó, có một số bộ đếm thời gian nói với các emacs phân tích lại / bật đèn đệm.
abingham

Bạn đã thử báo cáo lỗi này?
Dmitry

Câu trả lời:


6

Khi bạn sửa đổi bộ đệm, chỉ những dòng bạn sửa đổi mới được tô sáng lại ngay lập tức. Nếu sửa đổi ảnh hưởng đến việc làm nổi bật các dòng xuống phía dưới, những điều này sẽ được tô sáng lại sau thông qua một bộ đếm thời gian nhàn rỗi (nghĩa là nó xảy ra sau khi bạn ngừng gõ).

Độ trễ này được kiểm soát bởi jit-lock-context-timevà mặc định là 0,5 giây. Lưu ý rằng điều đó thực sự có nghĩa là "Emacs đã không hoạt động trong nửa giây", miễn là bạn tiếp tục đưa ra các lệnh Emacs mà không để lại quá nửa giây giữa các lệnh, việc tô sáng lại không xảy ra.

Nếu bạn nghĩ rằng phải mất hơn 0,5 giây và có thể đưa ra một công thức gây ra sự chậm trễ quá mức này, thì bạn sẽ muốn M-x report-emacs-bug.

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.