emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 2a022e9: Filter out rng-state elements in nxml-mode buffers from


From: Lars Ingebrigtsen
Subject: master 2a022e9: Filter out rng-state elements in nxml-mode buffers from the kill ring
Date: Sun, 15 Aug 2021 09:45:31 -0400 (EDT)

branch: master
commit 2a022e9be3a1f46dde2fa230d0b31fb6fbb5d66a
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Filter out rng-state elements in nxml-mode buffers from the kill ring
    
    * lisp/nxml/nxml-mode.el (nxml--buffer-substring-filter): Filter
    out `rng-state' objects (bug#50061).
    (nxml-mode): Set `filter-buffer-substring-function'.
---
 lisp/nxml/nxml-mode.el | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el
index 1bc905c..5a3499d 100644
--- a/lisp/nxml/nxml-mode.el
+++ b/lisp/nxml/nxml-mode.el
@@ -540,6 +540,7 @@ Many aspects this mode can be customized using
          (nxml-scan-prolog)))))
   (setq-local syntax-ppss-table sgml-tag-syntax-table)
   (setq-local syntax-propertize-function #'nxml-syntax-propertize)
+  (setq-local filter-buffer-substring-function #'nxml--buffer-substring-filter)
   (add-hook 'change-major-mode-hook #'nxml-cleanup nil t)
 
   (when (not (and (buffer-file-name) (file-exists-p (buffer-file-name))))
@@ -564,6 +565,19 @@ Many aspects this mode can be customized using
 
   (with-demoted-errors (rng-nxml-mode-init)))
 
+(defun nxml--buffer-substring-filter (beg end &optional delete)
+  (let ((string (buffer-substring--filter beg end delete)))
+    ;; The `rng-state' property is huge, so don't copy it to the kill
+    ;; ring.  This avoids problems when saving the kill ring with
+    ;; savehist.
+    (when (seq-find (lambda (elem)
+                      (plist-get (nth 2 elem) 'rng-state))
+                    (object-intervals string))
+      (remove-text-properties 0 (length string)
+                              '(rng-state nil fontified nil)
+                              string))
+    string))
+
 (defun nxml-cleanup ()
   "Clean up after nxml-mode."
   ;; Disable associated minor modes.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]