Tôi cần truy cập vùng chọn trong bộ đệm Emacs. Tôi đã tìm thấy bài viết này How do I access the contents of the current region in Emacs Lisp? và nó giúp tôi rất nhiều.Làm thế nào để có được vùng (lựa chọn) lập trình trong Emacs Lisp?
Nhưng có sự cố. Lần đầu tiên tôi chọn (đánh dấu) một vùng, nó hoạt động tốt, nhưng khi tôi nhấn Cg và di chuyển con trỏ đến một nơi khác mà không làm nổi bật bất kỳ ký tự nào, tôi nhận chuỗi từ dấu cuối đến điểm hiện tại trong khi tôi mong đợi một dấu trống .
Thực ra tôi cần triển khai hàm sẽ trả về lựa chọn hiện tại (được đánh dấu) dưới dạng chuỗi hoặc chuỗi rỗng nếu không có gì được đánh dấu. Đoạn mã sau có thể diễn tả rõ ràng hơn.
(defun get-search-term()
(interactive)
(let (
(selection (buffer-substring-no-properties (region-beginning) (region-end))))
(if (= (length selection) 0)
(message "empty string")
(message selection))))
Mọi đề xuất? Cảm ơn rất nhiều!
Bất kỳ lý do nào bạn không sử dụng biểu mẫu 'tương tác' được hiển thị bởi Gareth Rees trong câu hỏi mà bạn đã liên kết? – phils
Cảm ơn bạn đã trả lời và xin lỗi vì đã không đọc kỹ bài viết đó. (tương tác "r") đã giải quyết được vấn đề của tôi. Tôi cần đọc thêm về tương tác. – sailing
có thể trùng lặp của [Làm cách nào để truy cập nội dung của khu vực hiện tại trong Emacs Lisp?] (Http://stackoverflow.com/questions/605846/how-do-i-access-the-contents-of-the-current -region-in-emacs-lisp) – phils