aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2020-03-28 09:41:15 -0400
committerStefan Monnier2020-03-28 09:43:14 -0400
commita7e3516571e72e58bb4b5d19eca5feca41135f57 (patch)
tree5e17314d17e70604708eafa3b2630080b99726d2
parentdfeb87d8e54ee5f2ce3e16d34a812131bb2f6e4d (diff)
downloademacs-a7e3516571e72e58bb4b5d19eca5feca41135f57.tar.gz
emacs-a7e3516571e72e58bb4b5d19eca5feca41135f57.zip
* lisp/progmodes/ebrowse.el (ebrowse-tags-loop-call): Rename
Used to be called `ebrowse-tags-loop-form` and passed to `eval`. Now it's passed to `apply` instead, which is better for karma. (ebrowse-tags-loop-continue, ebrowse-tags-search) (ebrowse-tags-query-replace, ebrowse-tags-search-member-use): Adjust accordingly. (ebrowse-electric-position-mode-map): Move init into declaration. (ebrowse-electric-position-mode): Derive from special.
-rw-r--r--lisp/progmodes/ebrowse.el46
1 files changed, 22 insertions, 24 deletions
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index c02703fc59f..1c9e805f039 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -3543,9 +3543,9 @@ completion."
3543 3543
3544;;; Tags query replace & search 3544;;; Tags query replace & search
3545 3545
3546(defvar ebrowse-tags-loop-form () 3546(defvar ebrowse-tags-loop-call '(ignore)
3547 "Form for `ebrowse-loop-continue'. 3547 "Function call for `ebrowse-loop-continue'.
3548Evaluated for each file in the tree. If it returns nil, proceed 3548Passed to `apply' for each file in the tree. If it returns nil, proceed
3549with the next file.") 3549with the next file.")
3550 3550
3551(defvar ebrowse-tags-next-file-list () 3551(defvar ebrowse-tags-next-file-list ()
@@ -3612,7 +3612,7 @@ TREE-BUFFER if indirectly specifies which files to loop over."
3612 (when first-time 3612 (when first-time
3613 (ebrowse-tags-next-file first-time tree-buffer) 3613 (ebrowse-tags-next-file first-time tree-buffer)
3614 (goto-char (point-min))) 3614 (goto-char (point-min)))
3615 (while (not (eval ebrowse-tags-loop-form)) 3615 (while (not (apply ebrowse-tags-loop-call))
3616 (ebrowse-tags-next-file) 3616 (ebrowse-tags-next-file)
3617 (message "Scanning file `%s'..." buffer-file-name) 3617 (message "Scanning file `%s'..." buffer-file-name)
3618 (goto-char (point-min)))) 3618 (goto-char (point-min))))
@@ -3625,9 +3625,9 @@ If marked classes exist, process marked classes, only.
3625If regular expression is nil, repeat last search." 3625If regular expression is nil, repeat last search."
3626 (interactive "sTree search (regexp): ") 3626 (interactive "sTree search (regexp): ")
3627 (if (and (string= regexp "") 3627 (if (and (string= regexp "")
3628 (eq (car ebrowse-tags-loop-form) 're-search-forward)) 3628 (eq (car ebrowse-tags-loop-call) #'re-search-forward))
3629 (ebrowse-tags-loop-continue) 3629 (ebrowse-tags-loop-continue)
3630 (setq ebrowse-tags-loop-form (list 're-search-forward regexp nil t)) 3630 (setq ebrowse-tags-loop-call `(re-search-forward ,regexp nil t))
3631 (ebrowse-tags-loop-continue 'first-time))) 3631 (ebrowse-tags-loop-continue 'first-time)))
3632 3632
3633 3633
@@ -3637,10 +3637,11 @@ If regular expression is nil, repeat last search."
3637With prefix arg, process files of marked classes only." 3637With prefix arg, process files of marked classes only."
3638 (interactive 3638 (interactive
3639 "sTree query replace (regexp): \nsTree query replace %s by: ") 3639 "sTree query replace (regexp): \nsTree query replace %s by: ")
3640 (setq ebrowse-tags-loop-form 3640 (setq ebrowse-tags-loop-call
3641 (list 'and (list 'save-excursion 3641 (list (lambda ()
3642 (list 're-search-forward from nil t)) 3642 (and (save-excursion
3643 (list 'not (list 'perform-replace from to t t nil)))) 3643 (re-search-forward from nil t))
3644 (not (perform-replace from to t t nil))))))
3644 (ebrowse-tags-loop-continue 'first-time)) 3645 (ebrowse-tags-loop-continue 'first-time))
3645 3646
3646 3647
@@ -3665,7 +3666,7 @@ looks like a function call to the member."
3665 (cl-values-list (ebrowse-tags-read-name header "Find calls of: ")))) 3666 (cl-values-list (ebrowse-tags-read-name header "Find calls of: "))))
3666 ;; Set tags loop form to search for member and begin loop. 3667 ;; Set tags loop form to search for member and begin loop.
3667 (setq regexp (concat "\\<" name "[ \t]*(") 3668 (setq regexp (concat "\\<" name "[ \t]*(")
3668 ebrowse-tags-loop-form (list 're-search-forward regexp nil t)) 3669 ebrowse-tags-loop-call `(re-search-forward ,regexp nil t))
3669 (ebrowse-tags-loop-continue 'first-time tree-buffer)))) 3670 (ebrowse-tags-loop-continue 'first-time tree-buffer))))
3670 3671
3671 3672
@@ -3767,18 +3768,10 @@ Prefix arg ARG says how much."
3767 3768
3768;;; Electric position list 3769;;; Electric position list
3769 3770
3770(defvar ebrowse-electric-position-mode-map () 3771(defvar ebrowse-electric-position-mode-map
3771 "Keymap used in electric position stack window.")
3772
3773
3774(defvar ebrowse-electric-position-mode-hook nil
3775 "If non-nil, its value is called by `ebrowse-electric-position-mode'.")
3776
3777
3778(unless ebrowse-electric-position-mode-map
3779 (let ((map (make-keymap)) 3772 (let ((map (make-keymap))
3780 (submap (make-keymap))) 3773 (submap (make-keymap)))
3781 (setq ebrowse-electric-position-mode-map map) 3774 ;; FIXME: Yuck!
3782 (fillarray (car (cdr map)) 'ebrowse-electric-position-undefined) 3775 (fillarray (car (cdr map)) 'ebrowse-electric-position-undefined)
3783 (fillarray (car (cdr submap)) 'ebrowse-electric-position-undefined) 3776 (fillarray (car (cdr submap)) 'ebrowse-electric-position-undefined)
3784 (define-key map "\e" submap) 3777 (define-key map "\e" submap)
@@ -3801,14 +3794,19 @@ Prefix arg ARG says how much."
3801 (define-key map "\e\C-v" 'scroll-other-window) 3794 (define-key map "\e\C-v" 'scroll-other-window)
3802 (define-key map "\e>" 'end-of-buffer) 3795 (define-key map "\e>" 'end-of-buffer)
3803 (define-key map "\e<" 'beginning-of-buffer) 3796 (define-key map "\e<" 'beginning-of-buffer)
3804 (define-key map "\e>" 'end-of-buffer))) 3797 (define-key map "\e>" 'end-of-buffer)
3798 map)
3799 "Keymap used in electric position stack window.")
3800
3801
3802(defvar ebrowse-electric-position-mode-hook nil
3803 "If non-nil, its value is called by `ebrowse-electric-position-mode'.")
3805 3804
3806(put 'ebrowse-electric-position-mode 'mode-class 'special)
3807(put 'ebrowse-electric-position-undefined 'suppress-keymap t) 3805(put 'ebrowse-electric-position-undefined 'suppress-keymap t)
3808 3806
3809 3807
3810(define-derived-mode ebrowse-electric-position-mode 3808(define-derived-mode ebrowse-electric-position-mode
3811 fundamental-mode "Electric Position Menu" 3809 special-mode "Electric Position Menu"
3812 "Mode for electric position buffers. 3810 "Mode for electric position buffers.
3813Runs the hook `ebrowse-electric-position-mode-hook'." 3811Runs the hook `ebrowse-electric-position-mode-hook'."
3814 (setq mode-line-buffer-identification "Electric Position Menu") 3812 (setq mode-line-buffer-identification "Electric Position Menu")