Liệu cú pháp từ có đưa kịch bản vào tài khoản?


9

Tôi gọi count-words-region( M-x =) trên chuỗi US / RU / IPA:

HelloПривheləʊ

Thông báo sau được in:

Region has 1 line, 4 words, and 14 characters.

Tất cả các biểu tượng có wcú pháp, nhưng khác nhau trong tập lệnh:

(char-syntax ?H) ; ?w
(char-syntax ?П) ; ?w
(char-syntax ?ʊ) ; ?w
(aref char-script-table ?H)  ; script: latin
(aref char-script-table ?П)  ; script: cyrillic
(aref char-script-table ?ʊ)  ; script: phonetic

Điều đó có nghĩa là ranh giới từ được xác định không chỉ bằng cú pháp char mà còn bởi tập lệnh char ?

Tôi muốn tắt hành vi này cho các chế độ được chọn để có thể điều hướng qua các từ nhưng không qua các tập lệnh. Làm thế nào điều này có thể đạt được?

CẬP NHẬT Thảo luận hữu ích hơn nữa về debbugs .

Câu trả lời:


7

Hành vi cụ thể này forward-wordcó thể được kiểm soát bởi các biến word-combining-categoriesword-separating-categories. Nếu bạn muốn bỏ qua hoàn toàn tập lệnh, việc thêm cặp (nil. Nil) vào danh sách đầu tiên là đủ, ví dụ:

(let ((word-combining-categories (cons '(nil . nil)
                                       word-combining-categories)))
  (forward-word))

Bạn cũng có thể thay đổi biến đó setq-localnếu bạn muốn hiệu ứng trong một bộ đệm cụ thể.


Làm thế nào bạn tìm thấy về các biến này? Tôi không thấy đề cập đến chúng trong hướng dẫn sử dụng ...
JeanPierre

@JeanPierre Tôi đã xem nguồn này (và 100% đồng ý rằng nó nên được ghi lại!)
YoungFrog

3
Xin vui lòng M-x report-emacs-bugđể có tài liệu cập nhật.
phils

2

Thật vậy, forward-wordbackward-wordcũng cho thấy có một số từ ở đây. Điều này có ý nghĩa với tôi rằng các ký tự từ các tập lệnh khác nhau không thể ở cùng một từ, nhưng tài liệu nên được làm rõ về điều đó ( ở đây ). Tôi đề nghị M-x report-emacs-bugvề nó.

Nếu bạn chỉ muốn di chuyển qua "từ" bỏ qua tập lệnh, bạn có thể sử dụng skip-syntax-forwardskip-syntax-backward(được mô tả ở đây )

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.