emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] master 906dedb: * packages/ioccur/ioccur.el: Use lexical-binding


From: Stefan Monnier
Subject: [elpa] master 906dedb: * packages/ioccur/ioccur.el: Use lexical-binding and cl-lib
Date: Wed, 25 Mar 2020 11:25:20 -0400 (EDT)

branch: master
commit 906dedbae1634abf7314418740c9e32aa1c37511
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * packages/ioccur/ioccur.el: Use lexical-binding and cl-lib
    
    Also remove redundant (or dangling) `:group` args.
    
    (ioccur-iter-list): Make it a function.
    (ioccur-iter-next): Simplify into an alias.
    (ioccur-print-results, ioccur-read-search-input): Use pcase.
    (ioccur-dired): Check that we're inside a dired buffer.
    (ioccur): Tweak the wdired save&restore code.
---
 packages/ioccur/ioccur.el | 418 +++++++++++++++++++++++-----------------------
 1 file changed, 210 insertions(+), 208 deletions(-)

diff --git a/packages/ioccur/ioccur.el b/packages/ioccur/ioccur.el
index e917e04..e88ca3d 100644
--- a/packages/ioccur/ioccur.el
+++ b/packages/ioccur/ioccur.el
@@ -1,11 +1,11 @@
-;;; ioccur.el --- Incremental occur
+;;; ioccur.el --- Incremental occur  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2010-2013, 2016  Free Software Foundation, Inc.
+;; Copyright (C) 2010-2020  Free Software Foundation, Inc.
 
 ;; Author: Thierry Volpiatto <address@hidden>
 ;; X-URL: https://github.com/thierryvolpiatto/ioccur
 ;; Version: 2.4
-;; Compatibility: GNU Emacs >=22.3
+;; Package-Requires: ((emacs "24") (cl-lib "0.5"))
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
@@ -49,7 +49,7 @@
 
 ;;; Code:
 (require 'derived)
-(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl-lib))
 (require 'outline)
 (eval-when-compile (require 'wdired))
 
@@ -84,12 +84,10 @@
 ;;; User variables.
 (defcustom ioccur-search-delay 0.5
   "During incremental searching, display is updated all these seconds."
-  :group 'ioccur
   :type  'integer)
 
 (defcustom ioccur-search-prompt "Pattern: "
   "Prompt used for `ioccur-occur'."
-  :group 'ioccur
   :type  'string)
 
 (defcustom ioccur-mode-line-string
@@ -102,42 +100,35 @@ S-/Tab:Hist,C-v/t:Scroll,C-d/u:Follow,C-w:Yank tap")
 
   "Minimal documentation of `ioccur' commands displayed in mode-line.
 Set it to nil to remove doc in mode-line."
-  :group 'ioccur
   :type  'string)
 
 (defcustom ioccur-length-line 80
   "Length of the line displayed in ioccur buffer.
 When set to nil lines displayed in `ioccur-buffer' will not be modified.
 See `ioccur-truncate-line'."
-  :group 'ioccur
   :type 'integer)
 
 (defcustom ioccur-max-length-history 100
   "Maximum number of element stored in `ioccur-history'."
-  :group 'ioccur
   :type 'integer)
 
 (defcustom ioccur-buffer-completion-use-ido nil
   "Use ido to choose buffers in `ioccur-find-buffer-matching'."
-  :group 'ioccur
   :type 'symbol)
 
-(defcustom ioccur-default-search-function 're-search-forward
+(defcustom ioccur-default-search-function #'re-search-forward
   "Default search function.
 Use here one of `re-search-forward' or `search-forward'."
-  :group 'ioccur
   :type 'symbol)
 
 (defcustom ioccur-highlight-match-p t
   "Highlight matchs in `ioccur-buffer' when non--nil."
-  :group 'ioccur
   :type 'boolean)
 
 (defcustom ioccur-fontify-buffer-p nil
   "Fontify `ioccur-current-buffer' when non--nil.
 This allow to have syntactic coloration in `ioccur-buffer' but
 it slow down the start of ioccur at first time on large buffers."
-  :group 'ioccur
   :type 'boolean)
 
 (defcustom ioccur-case-fold-search 'smart
@@ -147,7 +138,6 @@ if pattern contains no uppercase characters.
 Otherwise, with a nil or t value, the behavior is same as
 `case-fold-search'.
 Default value is `smart', other possible values are nil and t."
-  :group 'ioccur
   :type 'symbol)
 
 (defvar ioccur-read-char-or-event-skip-read-key nil
@@ -161,43 +151,35 @@ Deprecated, should be used only in old Emacs versions.")
 ;;; Faces.
 (defface ioccur-overlay-face
     '((t (:background "Green4" :underline t)))
-  "Face for highlight line in ioccur buffer."
-  :group 'ioccur-faces)
+  "Face for highlight line in ioccur buffer.")
 
 (defface ioccur-match-overlay-face
     '((t (:background "Indianred4" :underline t)))
-  "Face for highlight line in matched buffer."
-  :group 'ioccur-faces)
+  "Face for highlight line in matched buffer.")
 
 (defface ioccur-title-face
     '((t (:background "Dodgerblue4")))
-  "Face for highlight incremental buffer title."
-  :group 'ioccur-faces)
+  "Face for highlight incremental buffer title.")
 
 (defface ioccur-regexp-face
     '((t (:background "DeepSkyBlue" :underline t)))
-  "Face for highlight found regexp in `ioccur-buffer'."
-  :group 'ioccur-faces)
+  "Face for highlight found regexp in `ioccur-buffer'.")
 
 (defface ioccur-match-face
     '((t (:background "DeepSkyBlue")))
-  "Face for highlight matches in `ioccur-buffer'."
-  :group 'ioccur-faces)
+  "Face for highlight matches in `ioccur-buffer'.")
 
 (defface ioccur-num-line-face
     '((t (:foreground "OrangeRed")))
-  "Face for highlight number line in ioccur buffer."
-  :group 'ioccur-faces)
+  "Face for highlight number line in ioccur buffer.")
 
 (defface ioccur-invalid-regexp
     '((t (:foreground "Goldenrod")))
-  "Face for highlight wrong regexp message in ioccur buffer."
-  :group 'ioccur-faces)
+  "Face for highlight wrong regexp message in ioccur buffer.")
 
 (defface ioccur-cursor
     '((t (:foreground "green")))
-  "Face for cursor color in minibuffer."
-  :group 'ioccur-faces)
+  "Face for cursor color in minibuffer.")
 
 ;;; Internal variables.
 ;; String entered in prompt.
@@ -246,10 +228,15 @@ Special commands:
                 ioccur-mode-line-string "-%-"))
         (kill-local-variable 'mode-line-format)))
 
-(defsubst* ioccur-position (item seq &key (test 'eq))
+(cl-defsubst ioccur-position (item seq &key (test #'eq))
+  ;; FIXME: Probably not worth inlining since it's a loop with an indirect
+  ;; function call inside and the compiler likely won't figure out which
+  ;; function is called indirectly to turn it into a direct call.
   "A simple replacement of CL `position'."
-  (loop for i in seq for index from 0
-     when (funcall test i item) return index))
+  ;; FIXME: We could (require 'cl-lib) and use `cl-position' (or
+  ;; `seq-position') nowadays.
+  (cl-loop for i in seq for index from 0
+           when (funcall test i item) return index))
 
 ;; Compatibility
 (unless (fboundp 'window-system)
@@ -257,22 +244,19 @@ Special commands:
     window-system))
 
 ;;; Iterators.
-(defmacro ioccur-iter-list (list-obj)
+(defun ioccur-iter-list (list)
   "Return an iterator from list LIST-OBJ."
-  `(lexical-let ((lis ,list-obj))
-     (lambda ()
-       (let ((elm (car lis)))
-         (setq lis (cdr lis))
-         elm))))
+  (lambda () (pop list)))
+
+(defalias 'ioccur-iter-next #'funcall
+  "Return next elm of ITERATOR.
 
-(defun ioccur-iter-next (iterator)
-  "Return next elm of ITERATOR."
-  (funcall iterator))
+\(fn ITERATOR)")
 
 (defun ioccur-iter-circular (seq)
   "Infinite iteration on SEQ."
-  (lexical-let ((it  (ioccur-iter-list seq))
-                (lis seq))
+  (let ((it  (ioccur-iter-list seq))
+        (lis seq))
     (lambda ()
       (let ((elm (ioccur-iter-next it)))
         (or elm
@@ -283,25 +267,25 @@ Special commands:
   "Return SEQ from index 0 to POS."
   (butlast seq (- (length seq) pos)))
 
-(defun* ioccur-sub-prec-circular (seq elm &key (test 'eq))
+(cl-defun ioccur-sub-prec-circular (seq elm &key (test #'eq))
   "Infinite reverse iteration of SEQ starting at ELM."
-  (lexical-let* ((rev-seq  (reverse seq))
-                 (pos      (ioccur-position elm rev-seq :test test))
-                 (sub      (append (nthcdr (1+ pos) rev-seq)
-                                   (ioccur-butlast rev-seq pos)))
-                 (iterator (ioccur-iter-list sub)))
+  (let* ((rev-seq  (reverse seq))
+         (pos      (ioccur-position elm rev-seq :test test))
+         (sub      (append (nthcdr (1+ pos) rev-seq)
+                           (ioccur-butlast rev-seq pos)))
+         (iterator (ioccur-iter-list sub)))
      (lambda ()
        (let ((elm (ioccur-iter-next iterator)))
          (or elm
              (progn (setq iterator (ioccur-iter-list sub))
                     (ioccur-iter-next iterator)))))))
 
-(defun* ioccur-sub-next-circular (seq elm &key (test 'eq))
+(cl-defun ioccur-sub-next-circular (seq elm &key (test #'eq))
   "Infinite iteration of SEQ starting at ELM."
-  (lexical-let* ((pos      (ioccur-position elm seq :test test))
-                 (sub      (append (nthcdr (1+ pos) seq)
-                                   (ioccur-butlast seq pos)))
-                 (iterator (ioccur-iter-list sub)))
+  (let* ((pos      (ioccur-position elm seq :test test))
+         (sub      (append (nthcdr (1+ pos) seq)
+                           (ioccur-butlast seq pos)))
+         (iterator (ioccur-iter-list sub)))
      (lambda ()
        (let ((elm (ioccur-iter-next iterator)))
          (or elm (progn
@@ -312,13 +296,14 @@ Special commands:
   "Print in `ioccur-buffer' lines matching REGEXP in `ioccur-current-buffer'."
   (setq ioccur-count-occurences 0)
   (with-current-buffer ioccur-current-buffer
-    (let ((case-fold-search (case ioccur-case-fold-search
-                              (smart (let ((case-fold-search nil))
-                                       (if (string-match "[A-Z]" regexp) nil 
t)))
-                              (t ioccur-case-fold-search))))
+    (let ((case-fold-search
+           (pcase ioccur-case-fold-search
+             (`smart (let ((case-fold-search nil))
+                       (if (string-match "[A-Z]" regexp) nil t)))
+             (_ ioccur-case-fold-search))))
       (save-excursion
         (goto-char (point-min))
-        (loop
+        (cl-loop
               while (not (eobp))
               ;; We need to read also C-g from here
               ;; Because when loop is started `ioccur-read-search-input'
@@ -364,12 +349,12 @@ If ALL is non--nil highlight the whole string STR."
                                     whole-line-matched)
                                    line))
            (trunc-line          (ioccur-truncate-line hightline)))
-      (incf ioccur-count-occurences)
+      (cl-incf ioccur-count-occurences)
       (insert " " (propertize lineno 'face 'ioccur-num-line-face
                               'help-echo line)
               ":" trunc-line "\n"))))
 
-(defun* ioccur-truncate-line (line &optional (columns ioccur-length-line))
+(cl-defun ioccur-truncate-line (line &optional (columns ioccur-length-line))
   "Remove indentation in LINE and truncate modified LINE of num COLUMNS.
 COLUMNS default value is `ioccur-length-line'.
 If COLUMNS is nil return original indented LINE.
@@ -393,8 +378,8 @@ So just set `ioccur-length-line' to nil if you don't want 
lines truncated."
 (defun ioccur-list-buffers-matching (buffer-match regexp buffer-list)
   "Collect all buffers in BUFFER-LIST whose names match BUFFER-MATCH and \
 contain lines matching REGEXP."
-  (loop
-     with ini-buf-list = (loop for buf in buffer-list
+  (cl-loop
+     with ini-buf-list = (cl-loop for buf in buffer-list
                             unless (rassq buf dired-buffers)
                             collect buf)
      for buf in ini-buf-list
@@ -405,17 +390,17 @@ contain lines matching REGEXP."
 
 (defun ioccur-list-buffers-containing (regexp buffer-list)
   "Collect all buffers in BUFFER-LIST containing lines matching REGEXP."
-  (loop with buf-list = (loop for i in buffer-list
-                           when (buffer-file-name (get-buffer i))
-                           collect i)
+  (cl-loop with buf-list = (cl-loop for i in buffer-list
+                                    when (buffer-file-name (get-buffer i))
+                                    collect i)
      for buf in buf-list
      when (ioccur-buffer-contain buf regexp)
      collect (buffer-name buf)))
 
-(defun* ioccur-find-buffer-matching1 (regexp
-                                      &optional
-                                      match-buf-name
-                                      (buffer-list (buffer-list)))
+(cl-defun ioccur-find-buffer-matching1 (regexp
+                                        &optional
+                                        match-buf-name
+                                        (buffer-list (buffer-list)))
   "Find all buffers containing a text matching REGEXP \
 and connect `ioccur' to the selected one.
 
@@ -430,9 +415,9 @@ The buffer completion list is provided by one of:
 depending on which `ioccur-buffer-completion-use-ido' you have choosen."
   ;; Remove doublons maybe added by minibuffer in `ioccur-history'.
   (setq ioccur-history
-        (loop for i in ioccur-history
-           when (not (member i hist)) collect i into hist
-           finally return hist))
+        (cl-loop for i in ioccur-history
+                 when (not (member i hist)) collect i into hist
+                 finally return hist))
 
   (let ((prompt   (format "Search (%s) in Buffer: " regexp))
         (win-conf (current-window-configuration))
@@ -442,7 +427,7 @@ depending on which `ioccur-buffer-completion-use-ido' you 
have choosen."
                        regexp buffer-list)
                       (ioccur-list-buffers-containing regexp buffer-list))))
 
-    (labels
+    (cl-labels
         ((find-buffer ()
            (let ((buf (if (and ido-mode
                                (eq ioccur-buffer-completion-use-ido 'ido))
@@ -478,14 +463,17 @@ See `ioccur-find-buffer-matching1'."
 ;;; Ioccur dired
 ;;;###autoload
 (defun ioccur-dired (regexp)
+  ;; FIXME: Missing docstring!
   (interactive (list (let ((savehist-save-minibuffer-history nil))
                        (read-from-minibuffer "Search for Pattern: "
                                              nil nil nil '(ioccur-history . 0)
                                              (thing-at-point 'symbol)))))
-  (let ((buf-list (loop for f in (dired-get-marked-files)
-                     do (find-file-noselect f)
-                     unless (file-directory-p f)
-                     collect (get-buffer (file-name-nondirectory f)))))
+  (cl-assert (derived-mode-p 'dired-mode))
+  (declare-function dired-get-marked-files "dired")
+  (let ((buf-list (cl-loop for f in (dired-get-marked-files)
+                           do (find-file-noselect f)
+                           unless (file-directory-p f)
+                           collect (get-buffer (file-name-nondirectory f)))))
     (ioccur-find-buffer-matching1 regexp nil buf-list)))
 
 ;;;###autoload
@@ -676,155 +664,168 @@ START-POINT is the point where we start searching in 
buffer."
          yank-point
          (index 0))
     (unless (string= initial-input "")
-      (loop for char across initial-input do (push char tmp-list)))
+      (cl-loop for char across initial-input do (push char tmp-list)))
     (setq ioccur-pattern initial-input)
     ;; Cycle history function.
     ;;
-    (flet ((cycle-hist (arg)
-             ;; ARG can be positive or negative depending we call M-p or M-n.
-             (if ioccur-history
-                 (progn
-                   ;; Cycle history will start at second call,
-                   ;; at first call just use the car of hist ring.
-                   ;; We build a new iterator based on a sublist
-                   ;; starting at the current element of history.
-                   ;; This is a circular iterator. (no end)
-                   (if start-hist ; At first call, start-hist is nil.
-                       (progn
-                         (if (< arg 0)
-                             ;; M-p (move from left to right in hist ring).
-                             (unless it-prec ; Don't rebuild iterator if 
exists.
-                               (setq it-prec (ioccur-sub-next-circular
-                                              ioccur-history
-                                              cur-hist-elm :test 'equal))
-                               (setq it-next nil)) ; Kill forward iterator.
-                             ;; M-n (move from right to left in hist ring).
-                             (unless it-next ; Don't rebuild iterator if 
exists.
-                               (setq it-next (ioccur-sub-prec-circular
-                                              ioccur-history
-                                              cur-hist-elm :test 'equal))
-                               (setq it-prec nil))) ; kill backward iterator.
-                         (let ((it (or it-prec it-next)))
-                           (setq cur-hist-elm (ioccur-iter-next it))
-                           (setq tmp-list nil)
-                           (loop for char across cur-hist-elm
-                                 do (push char tmp-list))
-                           (setq ioccur-pattern cur-hist-elm)))
-                       ;; First call use car of history ring.
-                       (setq tmp-list nil)
-                       (loop for char across cur-hist-elm
-                             do (push char tmp-list))
-                       (setq ioccur-pattern cur-hist-elm)
-                       (setq start-hist t)))
-                 (message "No history available.") (sit-for 2) t))
-           ;; Insert INITIAL-INPUT.
-           ;;
-           (insert-initial-input ()
-             (unless (string= initial-input "")
-               (loop for char across initial-input
-                     do (push char (nthcdr index tmp-list)))))
-           ;; Maybe start timer.
-           ;;
-           (start-timer ()
-             (unless ioccur-search-timer
-               (ioccur-start-timer)))
-           ;; Maybe stop timer.
-           ;;
-           (stop-timer ()
-             (when ioccur-search-timer
-               (ioccur-cancel-search)))
-           ;; Kill pattern
-           ;;
-           (kill (str)
-             (with-current-buffer ioccur-current-buffer
-               (goto-char start-point)
-               (setq yank-point start-point))
-             (kill-new (substring str (- (length tmp-list) index)))
-             (setq tmp-list (nthcdr index tmp-list)))
-           ;; Add cursor in minibuffer
-           ;;
-           (set-cursor (str pos)
-             (setq pos (min index (1- (length tmp-list))))
-             (when (not (string= str ""))
-               (let* ((real-index (- (1- (length tmp-list)) pos))
-                      (cur-str (substring str real-index (1+ real-index))))
-                 (concat (substring str 0 real-index)
-                         (propertize cur-str 'display
-                                     (if (= index (length tmp-list))
-                                         (concat
-                                          (propertize "|" 'face 'ioccur-cursor)
-                                          cur-str)
-                                         (concat
-                                          cur-str
-                                          (propertize "|" 'face 
'ioccur-cursor))))
-                         (substring str (1+ real-index)))))))
+    (cl-flet
+        ((cycle-hist (arg)
+           ;; ARG can be positive or negative depending we call M-p or M-n.
+           (if ioccur-history
+               (progn
+                 ;; Cycle history will start at second call,
+                 ;; at first call just use the car of hist ring.
+                 ;; We build a new iterator based on a sublist
+                 ;; starting at the current element of history.
+                 ;; This is a circular iterator. (no end)
+                 (if start-hist ; At first call, start-hist is nil.
+                     (progn
+                       (if (< arg 0)
+                           ;; M-p (move from left to right in hist ring).
+                           (unless it-prec ; Don't rebuild iterator if exists.
+                             (setq it-prec (ioccur-sub-next-circular
+                                            ioccur-history
+                                            cur-hist-elm :test #'equal))
+                             (setq it-next nil)) ; Kill forward iterator.
+                           ;; M-n (move from right to left in hist ring).
+                           (unless it-next ; Don't rebuild iterator if exists.
+                             (setq it-next (ioccur-sub-prec-circular
+                                            ioccur-history
+                                            cur-hist-elm :test #'equal))
+                             (setq it-prec nil))) ; kill backward iterator.
+                       (let ((it (or it-prec it-next)))
+                         (setq cur-hist-elm (ioccur-iter-next it))
+                         (setq tmp-list nil)
+                         (cl-loop for char across cur-hist-elm
+                                  do (push char tmp-list))
+                         (setq ioccur-pattern cur-hist-elm)))
+                     ;; First call use car of history ring.
+                     (setq tmp-list nil)
+                     (cl-loop for char across cur-hist-elm
+                              do (push char tmp-list))
+                     (setq ioccur-pattern cur-hist-elm)
+                     (setq start-hist t)))
+               (message "No history available.") (sit-for 2) t))
+         ;; Insert INITIAL-INPUT.
+         ;;
+         (insert-initial-input ()
+           (unless (string= initial-input "")
+             (cl-loop for char across initial-input
+                      do (push char (nthcdr index tmp-list)))))
+         ;; Maybe start timer.
+         ;;
+         (start-timer ()
+           (unless ioccur-search-timer
+             (ioccur-start-timer)))
+         ;; Maybe stop timer.
+         ;;
+         (stop-timer ()
+           (when ioccur-search-timer
+             (ioccur-cancel-search)))
+         ;; Kill pattern
+         ;;
+         (kill (str)
+           (with-current-buffer ioccur-current-buffer
+             (goto-char start-point)
+             (setq yank-point start-point))
+           (kill-new (substring str (- (length tmp-list) index)))
+           (setq tmp-list (nthcdr index tmp-list)))
+         ;; Add cursor in minibuffer
+         ;;
+         (set-cursor (str pos)
+           (setq pos (min index (1- (length tmp-list))))
+           (when (not (string= str ""))
+             (let* ((real-index (- (1- (length tmp-list)) pos))
+                    (cur-str (substring str real-index (1+ real-index))))
+               (concat (substring str 0 real-index)
+                       (propertize cur-str 'display
+                                   (if (= index (length tmp-list))
+                                       (concat
+                                        (propertize "|" 'face 'ioccur-cursor)
+                                        cur-str)
+                                       (concat
+                                        cur-str
+                                        (propertize "|" 'face 
'ioccur-cursor))))
+                       (substring str (1+ real-index)))))))
 
       ;; Start incremental loop.
       (while (let ((char (ioccur-read-char-or-event
                           (concat prompt (set-cursor ioccur-pattern index)))))
                (message nil)
-               (case char
-                 ((not (?\M-p ?\M-n ?\t C-tab)) ; Reset history
-                  (setq start-hist nil)
-                  (setq cur-hist-elm (car ioccur-history)) t)
-                 ((down ?\C-n)                  ; Next line.
+               (pcase char
+                 ;; FIXME: The old code used CL's `case' with the following
+                 ;; first branch:
+                 ;;
+                 ;;     ((not (?\M-p ?\M-n ?\t C-tab)) ; Reset history
+                 ;;      (setq start-hist nil)
+                 ;;      (setq cur-hist-elm (car ioccur-history)) t)
+                 ;;
+                 ;; This was clearly not working since it could only match if
+                 ;; `char' was equal to `not' or to the list
+                 ;; (?\M-p ?\M-n ?\t C-tab), which is clearly not what was
+                 ;; intended, but it's not clear what this was meant to do!
+                 ((or `down `?\C-n)             ; Next line.
                   (stop-timer) (ioccur-next-line)
                   (ioccur-color-current-line) t)
-                 ((up ?\C-p)                    ; Precedent line.
+                 ((or `up `?\C-p)               ; Precedent line.
                   (stop-timer) (ioccur-precedent-line)
                   (ioccur-color-current-line) t)
-                 (?\M-<                         ; Beginning of buffer.
+                 (`?\M-<                        ; Beginning of buffer.
                   (when (ioccur-beginning-of-buffer)
-                    (stop-timer)) t)
-                 (?\M->                         ; End of buffer.
+                    (stop-timer))
+                  t)
+                 (`?\M->                        ; End of buffer.
                   (when (ioccur-end-of-buffer)
-                    (stop-timer)) t)
-                 ((?\C-d C-down)                ; Scroll both windows down.
+                    (stop-timer))
+                  t)
+                 ((or `?\C-d `C-down)           ; Scroll both windows down.
                   (stop-timer) (ioccur-scroll-down) t)
-                 ((?\C-u C-up)                  ; Scroll both windows up.
+                 ((or `?\C-u `C-up)             ; Scroll both windows up.
                   (stop-timer) (ioccur-scroll-up) t)
-                 (?\r                           ; RET break and exit code.
+                 (`?\r                          ; RET break and exit code.
                   nil)
-                 (?\d                           ; Delete backward with DEL.
+                 (`?\d                          ; Delete backward with DEL.
                   (start-timer)
                   (with-current-buffer ioccur-current-buffer
                     (goto-char start-point)
                     (setq yank-point start-point))
                   (with-no-warnings (pop (nthcdr index tmp-list)))
                   t)
-                 (?\C-g                         ; Quit and restore buffers.
+                 (`?\C-g                        ; Quit and restore buffers.
                   (setq ioccur-quit-flag t) nil)
-                 ((right ?\C-z)                 ; Persistent action.
+                 ((or `right `?\C-z)            ; Persistent action.
                   (ioccur-jump-without-quit) t)
-                 ((?\C- )                       ; Persistent action save mark.
+                 (`?\C-                         ; Persistent action save mark.
                   (ioccur-jump-without-quit t) t)
-                 ((left ?\C-j)                  ; Jump and kill search buffer.
+                 ((or `left `?\C-j)             ; Jump and kill search buffer.
                   (setq ioccur-exit-and-quit-p t) nil)
-                 ((next ?\C-v)                  ; Scroll down.
+                 ((or `next `?\C-v)             ; Scroll down.
                   (ioccur-scroll-other-window-down) t)
-                 ((?\C-t ?\M-v prior)           ; Scroll up.
+                 ((or `?\C-t `?\M-v `prior)     ; Scroll up.
                   (ioccur-scroll-other-window-up) t)
-                 (?\C-s                         ; Toggle split window.
+                 (`?\C-s                        ; Toggle split window.
                   (ioccur-split-window) t)
-                 ((?\C-: ?\C-l)                 ; Toggle regexp/litteral 
search.
+                 ((or `?\C-: `?\C-l)            ; Toggle regexp/litteral 
search.
                   (start-timer)
-                  (if (eq ioccur-search-function 're-search-forward)
-                      (setq ioccur-search-function 'search-forward)
-                      (setq ioccur-search-function 're-search-forward)) t)
-                 (?\C-k                         ; Kill input.
+                  (setq ioccur-search-function
+                        (if (eq ioccur-search-function #'re-search-forward)
+                            #'search-forward
+                          #'re-search-forward))
+                  t)
+                 (`?\C-k                        ; Kill input.
                   (start-timer)
                   (kill ioccur-pattern) (setq index 0) t)
-                 ((?\M-k ?\C-x)                 ; Kill input as sexp.
+                 ((or `?\M-k `?\C-x)            ; Kill input as sexp.
                   (start-timer)
                   (let ((sexp (prin1-to-string ioccur-pattern)))
                     (kill sexp)
                     (setq ioccur-quit-flag t)
                     (setq ioccur-message (format "Killed: %s" sexp)))
                   nil)
-                 (?\C-y                         ; Yank from `kill-ring'.
+                 (`?\C-y                        ; Yank from `kill-ring'.
                   (setq initial-input (car kill-ring))
                   (insert-initial-input) t)
-                 (?\C-w                         ; Yank stuff at point.
+                 (`?\C-w                        ; Yank stuff at point.
                   (start-timer)
                   (with-current-buffer ioccur-current-buffer
                     ;; Start to initial point if C-w have never been hit.
@@ -840,16 +841,17 @@ START-POINT is the point where we start searching in 
buffer."
                         (setq initial-input (buffer-substring-no-properties
                                              yank-point (point)))
                         (setq yank-point (point)) ; End of last forward-word
-                        (insert-initial-input)))) t)
-                 ((?\t ?\M-p)                   ; Precedent history elm.
+                        (insert-initial-input))))
+                  t)
+                 ((or `?\t `?\M-p)              ; Precedent history elm.
                   (start-timer)
                   (setq index 0)
                   (cycle-hist -1))
-                 ((backtab ?\M-n)               ; Next history elm.
+                 ((or `backtab `?\M-n)          ; Next history elm.
                   (start-timer)
                   (setq index 0)
                   (cycle-hist 1))
-                 (?\C-q                         ; quoted-insert.
+                 (`?\C-q                        ; quoted-insert.
                   (stop-timer)
                   (let ((char (with-temp-buffer
                                 (call-interactively 'quoted-insert)
@@ -858,31 +860,31 @@ START-POINT is the point where we start searching in 
buffer."
                   (start-timer)
                   t)
                  ;; Movements in minibuffer
-                 (?\C-b                         ; backward-char.
+                 (`?\C-b                        ; backward-char.
                   (setq index (min (1+ index) (length tmp-list))) t)
-                 (?\C-f                         ; forward-char.
+                 (`?\C-f                        ; forward-char.
                   (setq index (max (1- index) 0)) t)
-                 (?\C-a                         ; move bol.
+                 (`?\C-a                        ; move bol.
                   (setq index (length tmp-list)) t)
-                 (?\C-e                         ; move eol.
+                 (`?\C-e                        ; move eol.
                   (setq index 0) t)
-                 (t                             ; Store character.
+                 (_                             ; Store character.
                   (start-timer)
                   (if (characterp char)
                       (push char (nthcdr index tmp-list))
                       (setq unread-command-events
-                            (nconc (mapcar 'identity
+                            (nconc (mapcar #'identity
                                            (this-single-command-raw-keys))
                                    unread-command-events))
                       nil))))
-        (setq ioccur-pattern (apply 'string (reverse tmp-list)))))))
+        (setq ioccur-pattern (apply #'string (reverse tmp-list)))))))
 
 (defun ioccur-print-buffer (regexp)
   "Pretty Print results matching REGEXP in `ioccur-buffer'."
   ;; FIXME: Why force tooltip-mode?  What about sessions with both GUI and
   ;; tty frames?
   (unless (window-system) (setq tooltip-use-echo-area t) (tooltip-mode 1))
-  (let* ((cur-method (if (eq ioccur-search-function 're-search-forward)
+  (let* ((cur-method (if (eq ioccur-search-function #'re-search-forward)
                          "Regexp" "Literal"))
          (title      (propertize
                       (format
@@ -1021,13 +1023,13 @@ for commands provided in the `ioccur-buffer'."
                (len      (length init-str))
                (curpos   (point))
                (inhibit-read-only t)
-               (cur-mode (with-current-buffer ioccur-current-buffer
-                           (prog1
-                               major-mode
-                             ;; If current `major-mode' is wdired
-                             ;; Turn it off.
-                             (when (eq major-mode 'wdired-mode)
-                               (wdired-change-to-dired-mode)))))
+               (wdired (with-current-buffer ioccur-current-buffer
+                         ;; If current `major-mode' is wdired Turn it off.
+                         (when (derived-mode-p 'wdired-mode)
+                           (declare-function wdired-change-to-dired-mode
+                                             "wdired" ())
+                           (wdired-change-to-dired-mode)
+                           t)))
                str-no-prop)
           (set-text-properties 0 len nil init-str)
           (setq str-no-prop init-str)
@@ -1066,7 +1068,7 @@ for commands provided in the `ioccur-buffer'."
                      (setq buffer-read-only t)
                      (ioccur-save-history)))
               ;; Maybe reenable `wdired-mode'.
-              (when (eq cur-mode 'wdired-mode) (wdired-change-to-wdired-mode))
+              (when wdired (wdired-change-to-wdired-mode))
               (setq ioccur-count-occurences 0)
               (setq ioccur-quit-flag nil)
               (setq ioccur-message nil)



reply via email to

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