Tôi muốn giết một chuỗi được trích dẫn trong tệp nguồn mà không cần phải đánh dấu đầu chuỗi và khu vực giết, nhưng chỉ bằng cách đặt điểm bất kỳ vào bên trong chuỗi được trích dẫn và nhấn phím tắt.Làm thế nào để giết một chuỗi được trích dẫn tại điểm trong các emacs?
Tôi đã cố gắng viết một hàm trong elisp cho điều này, nhưng tôi đã tìm ra rằng tệp cần phải được phân tích cú pháp từ đầu đến điểm để xác định xem điểm có nằm trong chuỗi được trích dẫn hay không và để tìm các giới hạn chuỗi trích dẫn (còn xử lý các \ ") ...
Nhưng những tập tin đã được phân tích bằng font-lock Vì vậy, bây giờ tôi có thể tìm ra nếu tôi bên trong trích dẫn chuỗi:.
(defun inside-quoted-string?()
(interactive)
(print (find 'font-lock-doc-face (text-properties-at (point)))))
Nhưng làm thế nào để có được giới hạn của chuỗi? font-lock biết điều đó, vì nó nổi bật độc đáo nó màu xanh, nhưng làm thế nào để có được nó?
Chỉnh sửa: Cảm ơn câu trả lời. Tôi đã đưa ra mã này làm chính xác những gì tôi muốn - di chuyển mã xung quanh mà không chọn khu vực hoặc thậm chí chuyển sang đầu mã.
(defun kill-at-point()
"Kill the quoted string or the list that includes the point"
(interactive)
(let ((p (nth 8 (syntax-ppss))))
(if (eq (char-after p) ?\")
(progn
(goto-char p)
(kill-sexp))
(progn
(up-list)
(let ((beg (point)))
(backward-list)
(kill-region beg (point)))))))
(global-set-key (kbd "C-,") 'kill-at-point)
Bất kỳ đề xuất nào để cải thiện được hoan nghênh.