mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-14 16:50:58 +00:00
*** empty log message ***
This commit is contained in:
parent
526148036b
commit
e91f80c43a
@ -261,6 +261,7 @@ Note: it means the file has no messages in it.\n\^_")))
|
||||
(define-key rmail-mode-map "\e\C-m" 'rmail-retry-failure)
|
||||
(define-key rmail-mode-map "c" 'rmail-continue)
|
||||
(define-key rmail-mode-map "f" 'rmail-forward)
|
||||
(define-key rmail-mode-map "\er" 'rmail-search-backwards)
|
||||
(define-key rmail-mode-map "\es" 'rmail-search)
|
||||
(define-key rmail-mode-map "<" 'rmail-first-message)
|
||||
(define-key rmail-mode-map ">" 'rmail-last-message)
|
||||
@ -1108,11 +1109,11 @@ or forward if N is negative."
|
||||
(if (>= where (rmail-msgbeg high)) high low)))
|
||||
|
||||
(defvar rmail-search-last-regexp nil)
|
||||
(defun rmail-search (regexp &optional reversep)
|
||||
(defun rmail-search (regexp &optional n)
|
||||
"Show message containing next match for REGEXP.
|
||||
Search in reverse (earlier messages) with non-nil second arg REVERSEP.
|
||||
Interactively, empty argument means use same regexp used last time,
|
||||
and reverse search is specified by a negative numeric arg."
|
||||
Prefix argument gives repeat count; negative argument means search
|
||||
backwards (through earlier messages).
|
||||
Interactively, empty argument means use same regexp used last time."
|
||||
(interactive
|
||||
(let* ((reversep (< (prefix-numeric-value current-prefix-arg) 0))
|
||||
(prompt
|
||||
@ -1128,7 +1129,9 @@ and reverse search is specified by a negative numeric arg."
|
||||
(setq rmail-search-last-regexp regexp))
|
||||
((not rmail-search-last-regexp)
|
||||
(error "No previous Rmail search string")))
|
||||
(list rmail-search-last-regexp reversep)))
|
||||
(list rmail-search-last-regexp
|
||||
(prefix-numeric-value current-prefix-arg))))
|
||||
(or n (setq n 1))
|
||||
(message "%sRmail search for %s..."
|
||||
(if reversep "Reverse " "")
|
||||
regexp)
|
||||
@ -1137,20 +1140,23 @@ and reverse search is specified by a negative numeric arg."
|
||||
(omax (point-max))
|
||||
(opoint (point))
|
||||
win
|
||||
(reversep (< n 0))
|
||||
(msg rmail-current-message))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(widen)
|
||||
;; Check messages one by one, advancing message number up or down
|
||||
;; but searching forward through each message.
|
||||
(if reversep
|
||||
(while (and (null win) (> msg 1))
|
||||
(goto-char (rmail-msgbeg (setq msg (1- msg))))
|
||||
(setq win (re-search-forward
|
||||
regexp (rmail-msgend msg) t)))
|
||||
(while (and (null win) (< msg rmail-total-messages))
|
||||
(goto-char (rmail-msgbeg (setq msg (1+ msg))))
|
||||
(setq win (re-search-forward regexp (rmail-msgend msg) t)))))
|
||||
(while (/= n 0)
|
||||
;; Check messages one by one, advancing message number up or down
|
||||
;; but searching forward through each message.
|
||||
(if reversep
|
||||
(while (and (null win) (> msg 1))
|
||||
(goto-char (rmail-msgbeg (setq msg (1- msg))))
|
||||
(setq win (re-search-forward
|
||||
regexp (rmail-msgend msg) t)))
|
||||
(while (and (null win) (< msg rmail-total-messages))
|
||||
(goto-char (rmail-msgbeg (setq msg (1+ msg))))
|
||||
(setq win (re-search-forward regexp (rmail-msgend msg) t))))
|
||||
(setq n (+ n (if (< n 0) -1 1)))))
|
||||
(if win
|
||||
(progn
|
||||
;; If this is a reverse search and we found a message,
|
||||
@ -1171,6 +1177,30 @@ and reverse search is specified by a negative numeric arg."
|
||||
(ding)
|
||||
(message "Search failed: %s" regexp)))))
|
||||
|
||||
(defun rmail-search-backwards (regexp &optional n)
|
||||
"Show message containing previous match for REGEXP.
|
||||
Prefix argument gives repeat count; negative argument means search
|
||||
forward (through later messages).
|
||||
Interactively, empty argument means use same regexp used last time."
|
||||
(interactive
|
||||
(let* ((reversep (< (prefix-numeric-value current-prefix-arg) 0))
|
||||
(prompt
|
||||
(concat (if reversep "Reverse " "") "Rmail search (regexp): "))
|
||||
regexp)
|
||||
(if rmail-search-last-regexp
|
||||
(setq prompt (concat prompt
|
||||
"(default "
|
||||
rmail-search-last-regexp
|
||||
") ")))
|
||||
(setq regexp (read-string prompt))
|
||||
(cond ((not (equal regexp ""))
|
||||
(setq rmail-search-last-regexp regexp))
|
||||
((not rmail-search-last-regexp)
|
||||
(error "No previous Rmail search string")))
|
||||
(list rmail-search-last-regexp
|
||||
(prefix-numeric-value current-prefix-arg))))
|
||||
(rmail-search regexp (- (or n -1))))
|
||||
|
||||
;; Show the first message which has the `unseen' attribute.
|
||||
(defun rmail-first-unseen-message ()
|
||||
(let ((current 1)
|
||||
|
113
lisp/simple.el
113
lisp/simple.el
@ -350,8 +350,35 @@ the minibuffer, then read and evaluate the result."
|
||||
(setq command-history (cons command command-history)))
|
||||
(eval command)))
|
||||
|
||||
;; (defvar repeat-complex-command nil)
|
||||
|
||||
(defun repeat-complex-command (arg)
|
||||
"Edit and re-evaluate last complex command, or ARGth from last.
|
||||
A complex command is one which used the minibuffer.
|
||||
The command is placed in the minibuffer as a Lisp form for editing.
|
||||
The result is executed, repeating the command as changed.
|
||||
If the command has been changed or is not the most recent previous command
|
||||
it is added to the front of the command history.
|
||||
You can use the minibuffer history commands \\<minibuffer-local-map>\\[next-history-element] and \\[previous-history-element]
|
||||
to get different commands to edit and resubmit."
|
||||
(interactive "p")
|
||||
(let ((elt (nth (1- arg) command-history))
|
||||
(minibuffer-history-position arg)
|
||||
(minibuffer-history-sexp-flag t)
|
||||
newcmd)
|
||||
(if elt
|
||||
(let ((minibuffer-history-variable ' command-history))
|
||||
(setq newcmd (read-from-minibuffer "Redo: "
|
||||
(prin1-to-string elt)
|
||||
minibuffer-local-map
|
||||
t
|
||||
(cons 'command-history
|
||||
arg)))
|
||||
;; If command to be redone does not match front of history,
|
||||
;; add it to the history.
|
||||
(or (equal newcmd (car command-history))
|
||||
(setq command-history (cons newcmd command-history)))
|
||||
(eval newcmd))
|
||||
(ding))))
|
||||
|
||||
(defvar minibuffer-history nil)
|
||||
(defvar minibuffer-history-sexp-flag nil)
|
||||
(setq minibuffer-history-variable 'minibuffer-history)
|
||||
@ -371,35 +398,55 @@ the minibuffer, then read and evaluate the result."
|
||||
(define-key minibuffer-local-completion-map "\ep" 'previous-history-element)
|
||||
(define-key minibuffer-local-must-match-map "\ep" 'previous-history-element)
|
||||
|
||||
(defun repeat-complex-command (arg)
|
||||
"Edit and re-evaluate last complex command, or ARGth from last.
|
||||
A complex command is one which used the minibuffer.
|
||||
The command is placed in the minibuffer as a Lisp form for editing.
|
||||
The result is executed, repeating the command as changed.
|
||||
If the command has been changed or is not the most recent previous command
|
||||
it is added to the front of the command history.
|
||||
You can use the minibuffer history commands \\<minibuffer-local-map>\\[next-history-element] and \\[previous-history-element]
|
||||
to get different commands to edit and resubmit."
|
||||
(interactive "p")
|
||||
(let ((elt (nth (1- arg) command-history))
|
||||
(minibuffer-history-position arg)
|
||||
(minibuffer-history-sexp-flag t)
|
||||
(repeat-complex-command-flag t)
|
||||
newcmd)
|
||||
(if elt
|
||||
(let ((minibuffer-history-variable ' command-history))
|
||||
(setq newcmd (read-from-minibuffer "Redo: "
|
||||
(prin1-to-string elt)
|
||||
minibuffer-local-map
|
||||
t
|
||||
(cons 'command-history
|
||||
arg)))
|
||||
;; If command to be redone does not match front of history,
|
||||
;; add it to the history.
|
||||
(or (equal newcmd (car command-history))
|
||||
(setq command-history (cons newcmd command-history)))
|
||||
(eval newcmd))
|
||||
(ding))))
|
||||
(define-key minibuffer-local-map "\er" 'previous-matching-history-element)
|
||||
(define-key minibuffer-local-ns-map "\er" 'previous-matching-history-element)
|
||||
(define-key minibuffer-local-ns-map "\er" 'previous-matching-history-element)
|
||||
(define-key minibuffer-local-completion-map "\er"
|
||||
'previous-matching-history-element)
|
||||
(define-key minibuffer-local-completion-map "\er"
|
||||
'previous-matching-history-element)
|
||||
(define-key minibuffer-local-must-match-map "\er"
|
||||
'previous-matching-history-element)
|
||||
|
||||
(define-key minibuffer-local-map "\es" 'next-matching-history-element)
|
||||
(define-key minibuffer-local-ns-map "\es" 'next-matching-history-element)
|
||||
(define-key minibuffer-local-ns-map "\es" 'next-matching-history-element)
|
||||
(define-key minibuffer-local-completion-map "\es"
|
||||
'next-matching-history-element)
|
||||
(define-key minibuffer-local-completion-map "\es"
|
||||
'next-matching-history-element)
|
||||
(define-key minibuffer-local-must-match-map "\es"
|
||||
'next-matching-history-element)
|
||||
|
||||
(put 'previous-matching-history-element 'enable-recursive-minibuffers t)
|
||||
(defun previous-matching-history-element (regexp n)
|
||||
(interactive "sPrevious element matching (regexp): \np")
|
||||
(let ((history (symbol-value minibuffer-history-variable))
|
||||
(pos minibuffer-history-position))
|
||||
(while (/= n 0)
|
||||
(setq prevpos pos)
|
||||
(setq pos (min (max 1 (+ pos (if (< n 0) -1 1))) (length history)))
|
||||
(if (= pos prevpos)
|
||||
(error (if (= pos 1)
|
||||
"No following item in minibuffer history"
|
||||
"No preceding item in minibuffer history")))
|
||||
(if (string-match regexp
|
||||
(if minibuffer-history-sexp-flag
|
||||
(prin1-to-string (nth (1- pos) history))
|
||||
(nth (1- pos) history)))
|
||||
(setq n (+ n (if (< n 0) -1 1)))))
|
||||
(setq minibuffer-history-position pos)
|
||||
(erase-buffer)
|
||||
(let ((elt (nth (1- pos) history)))
|
||||
(insert (if minibuffer-history-sexp-flag
|
||||
(prin1-to-string elt)
|
||||
elt)))
|
||||
(goto-char (point-min))))
|
||||
|
||||
(put 'next-matching-history-element 'enable-recursive-minibuffers t)
|
||||
(defun next-matching-history-element (regexp n)
|
||||
(interactive "sNext element matching (regexp): \np")
|
||||
(previous-matching-history-element regexp (- n)))
|
||||
|
||||
(defun next-history-element (n)
|
||||
"Insert the next element of the minibuffer history into the minibuffer."
|
||||
@ -423,10 +470,8 @@ to get different commands to edit and resubmit."
|
||||
(defun previous-history-element (n)
|
||||
"Inserts the previous element of `command-history' into the minibuffer."
|
||||
(interactive "p")
|
||||
;; (if repeat-complex-command-flag
|
||||
(next-history-element (- n)))
|
||||
;; (repeat-complex-command 1)))
|
||||
|
||||
|
||||
(defun goto-line (arg)
|
||||
"Goto line ARG, counting from line 1 at beginning of buffer."
|
||||
(interactive "NGoto line: ")
|
||||
|
Loading…
Reference in New Issue
Block a user