[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search 2f7770a 311/332: [el-search] Label matches wh
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search 2f7770a 311/332: [el-search] Label matches when copying from *El-Occur* |
Date: |
Tue, 1 Dec 2020 15:49:11 -0500 (EST) |
branch: externals/el-search
commit 2f7770ab498b205a1281be568349e322b350952b
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
[el-search] Label matches when copying from *El-Occur*
Also bump version to 1.11.3.
* packages/el-search/el-search.el
(el-search-occur-match-markers): New user option.
(el-search-occur-filter-buffer-substring): New function to use as
value of 'filter-buffer-substring-function' in *El-Occur* buffers.
(el-search-occur-write-file): New function to use in
'write-contents-functions' in *El-Occur* buffers.
(el-search-occur-mode): Install these functions.
---
NEWS | 9 +++++++++
el-search.el | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 63 insertions(+), 5 deletions(-)
diff --git a/NEWS b/NEWS
index 15e24e1..d23058d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,15 @@
Some of the user visible news were:
+Version: 1.11.3
+
+ When copying large parts of an *El Occur* buffer to the kill ring
+ (large here means "includes file headlines"), or you save an
+ *El Occur* buffer, matches are surrounded with --> <-- text markers
+ so that they are better visible when you send the output to someone
+ else, for example. This can be turned off or be configured with the
+ new user option 'el-search-occur-match-markers'.
+
Version: 1.11.1
Eldoc now displays signatures of search patterns for the search
diff --git a/el-search.el b/el-search.el
index 1c26b49..1bad6a7 100644
--- a/el-search.el
+++ b/el-search.el
@@ -7,7 +7,7 @@
;; Created: 29 Jul 2015
;; Keywords: lisp
;; Compatibility: GNU Emacs 25
-;; Version: 1.11.2
+;; Version: 1.11.3
;; Package-Requires: ((emacs "25") (stream "2.2.4") (cl-print "1.0"))
@@ -427,9 +427,6 @@
;;
;; - Could we profit from the edebug-read-storing-offsets reader?
;;
-;; - We need a mean to prepare occur output for posting. Surround
-;; matches with [[[ ]]] maybe?
-;;
;; - Make currently hardcoded bindings in
;; `el-search-loop-over-bindings' configurable
;;
@@ -3648,6 +3645,56 @@ Prompt for a new pattern and revert."
(set-keymap-parent map (make-composed-keymap special-mode-map
emacs-lisp-mode-map))
map))
+(defcustom el-search-occur-match-markers (list "--> " " <--")
+ "Whether to mark matches in copied or saved text in *El Occur*.
+
+When non-nil, should be a list of two strings (BEFORE-MARKER
+AFTER-MARKER). When large parts of an *El Occur* buffer are
+copied or the buffer is saved to a file, all matches are silently
+surrounded with these markers. This is useful if you want to
+send the buffer contents to someone else. \"Large\" means that
+the copied text includes buffer or file headlines, so this will
+not get in your way if you only want to copy single expressions
+from an *El Occur* buffer.
+
+When nil, all such treatment is disabled."
+ :type '(choice
+ (const :tag "Off" nil)
+ (list :tag "Match Text Markers"
+ (string :tag "Before-Marker String")
+ (string :tag "After-Marker String"))))
+
+(defun el-search-occur-filter-buffer-substring (beg end &optional delete)
+ (if (or delete
+ (not el-search-occur-match-markers)
+ (not (save-excursion
+ (goto-char beg)
+ (search-forward-regexp outline-regexp end t))))
+ (buffer-substring--filter beg end delete)
+ (let ((contents '())
+ p)
+ (save-excursion
+ (setq p (goto-char beg))
+ (while (not (<= end (point)))
+ (goto-char (next-single-char-property-change (point)
el-search-occur-match-ov-prop nil end))
+ (push (buffer-substring p (point)) contents)
+ (push (if (get-char-property (point) el-search-occur-match-ov-prop)
+ (car el-search-occur-match-markers)
+ (if (<= end (point)) "" (cadr
el-search-occur-match-markers)))
+ contents)
+ (setq p (point))))
+ (apply #'concat (nreverse contents)))))
+
+(defun el-search-occur-write-file (&optional file)
+ (let ((file (or file buffer-file-name))
+ (contents (save-restriction (widen) (filter-buffer-substring
(point-min) (point-max)))))
+ (with-temp-buffer
+ (insert contents)
+ (write-region (point-min) (point-max) file nil t))
+ (set-buffer-modified-p nil)
+ t ;signal success
+ ))
+
(define-derived-mode el-search-occur-mode emacs-lisp-mode "El-Occur"
"Major mode for El-Occur buffers.
@@ -3663,7 +3710,9 @@ addition from `special-mode-map':
(setq-local hs-hide-comments-when-hiding-all nil)
(hs-minor-mode +1)
(setq outline-regexp "^;;;\\ \\*+")
- (outline-minor-mode +1))
+ (outline-minor-mode +1)
+ (add-hook 'write-contents-functions 'el-search-occur-write-file nil t)
+ (setq-local filter-buffer-substring-function
#'el-search-occur-filter-buffer-substring))
(put 'el-search-occur-mode 'mode-class 'special)
- [elpa] externals/el-search d9acf3a 314/332: [el-search] Fix sanity check regarding comments, (continued)
- [elpa] externals/el-search d9acf3a 314/332: [el-search] Fix sanity check regarding comments, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 13fc32d 323/332: [el-search] Fix a highlighting corner case, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 9e95e79 325/332: [el-search] Also overwrite replaced matches automatically, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search f7e4c5b 327/332: [el-search] Small fix in occur filter-buffer-substring-function, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 82b807f 231/332: * el-search/el-search.el: New user option `el-search-allow-scroll', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3218858 261/332: [el-search] Add some key bindings, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search db7ccbb 220/332: * el-search/el-search.el: Don't highlight inserted replacement, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 226296a 229/332: * el-search/el-search-x.el: New pattern type `string-lines', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3503cf0 280/332: [el-search] Fix search setup with non-nil occur flag, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1a46fca 291/332: [el-search] Allow expressions as args of 'string', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2f7770a 311/332: [el-search] Label matches when copying from *El-Occur*,
Stefan Monnier <=
- [elpa] externals/el-search 07bed84 330/332: [el-search] Fix eldoc support for uncompiled patterns, Stefan Monnier, 2020/12/01