]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new function to clear tags in tabulated list
authorStefan Kangas <stefankangas@gmail.com>
Mon, 16 Sep 2019 01:48:47 +0000 (03:48 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Thu, 26 Sep 2019 15:24:35 +0000 (17:24 +0200)
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-clear-all-tags):
New function to clear all tags from padding area in current buffer.
* doc/lispref/modes.texi (Tabulated List Mode): Document it.
* etc/NEWS: Announce it.

doc/lispref/modes.texi
etc/NEWS
lisp/emacs-lisp/tabulated-list.el

index 7185c243e24f584b01d0d921aa55375bace59ace..2e0c9e4655ef696b1f4df9602dbf43d9f3873093 100644 (file)
@@ -1201,6 +1201,11 @@ width of which is governed by @code{tabulated-list-padding}.
 function advances point by one line.
 @end defun
 
+@defun tabulated-list-clear-all-tags
+This function clears all tags from the padding area in the current
+buffer.
+@end defun
+
 @defun tabulated-list-set-col col desc &optional change-entry-data
 This function changes the tabulated list entry at point, setting
 @var{col} to @var{desc}.  @var{col} is the column number to change, or
index 4b693aaaa1df28fd7f88c7c94dd32ab0c26eb268..09394432aa84ef4ce2fb982d188b7765bc85e31a 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1766,6 +1766,11 @@ near the current column in Tabulated Lists (see variables
 list mode: 'w' (which widens the current column) and 'c' which makes
 the current column contract.
 
++++
+*** New function 'tabulated-list-clear-all-tags'.
+This function clears all tags from the padding area in the current
+buffer.  Tags are typically added by calling 'tabulated-list-put-tag'.
+
 ** Text mode
 
 +++
index f30e2c0ec8e4034897e794ea30801cc0ea88d2d2..ade60285883edb31270749de8a774ef0300dc529 100644 (file)
@@ -192,6 +192,19 @@ If ADVANCE is non-nil, move forward by one line afterwards."
   (if advance
       (forward-line)))
 
+(defun tabulated-list-clear-all-tags ()
+  "Clear all tags from the padding area in the current buffer."
+  (unless (> tabulated-list-padding 0)
+    (error "There can be no tags in current buffer"))
+  (save-excursion
+    (goto-char (point-min))
+    (let ((inhibit-read-only t)
+          ;; Match non-space in the first n characters.
+          (re (format "^ \\{0,%d\\}[^ ]" (1- tabulated-list-padding)))
+          (empty (make-string tabulated-list-padding ? )))
+      (while (re-search-forward re nil 'noerror)
+        (tabulated-list-put-tag empty)))))
+
 (defvar tabulated-list-mode-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map (make-composed-keymap