0

我正在尝试修改 igrep.el 包以执行特定功能。执行 Mx igrep-find 时,包会询问用户默认“当前缓冲区”类型的文件类型。我想将 grep 的默认文件类型设置为 *.[sch] 所以我添加了以下行:

(defvar default-files-string-new "*.[sch]")

我正在尝试修改以下函数以停止向用户询问文件类型,而只是默认为上面指定的变量。

(defvar default-files-string-new "*.[sch]")
(defun igrep-read-files (&optional prompt-prefix)
  "Read and return a file name pattern from the minibuffer.
If `current-prefix-arg' is '(16) or '(64), read multiple file name
patterns and return them in a list.  Optional PROMPT-PREFIX is
prepended to the \"File(s): \" prompt."
  (let* ((default-files (igrep-default-files))
         (default-files-string (mapconcat 'identity default-files " "))
         (insert-default-directory igrep-insert-default-directory)
         (file (igrep-read-file-name
                (igrep-prefix prompt-prefix
                              (if default-files
                                  (format "File(s) [default: %s]: "
                                          default-files-string)
                                "File(s): "))
                nil (if default-files default-files-string "") nil nil
                'igrep-files-history))
         (files (list file)))
    (if (or igrep-read-multiple-files
            (and (consp current-prefix-arg)
                 (memq (prefix-numeric-value current-prefix-arg)
                       '(16 64))))
        (let* ((key (igrep-default-key 'exit-minibuffer
                                       minibuffer-local-completion-map
                                       "\r"))
               (prompt
                (igrep-prefix prompt-prefix
                              (if igrep-verbose-prompts
                                  (format "File(s): [Type `%s' when done] "
                                          (key-description key))
                                "File(s): "))))
          (while (and (setq file
                            (igrep-read-file-name prompt
                                                  nil "" nil nil
                                                  'igrep-files-history))
                      (not (equal file "")))
            (setq files (cons file files)))))
    (mapcar (lambda (file)
              (if (file-directory-p file)
                  ;; really should map expand-file-name over default-files:
                  (expand-file-name (if default-files default-files-string-new "*")
                                    file)
                file))
            (nreverse files))))
4

1 回答 1

1

也许我误解了。如果您不想要输入,那么完全替换该功能会不会更容易?

(defvar default-files-string-new "*.sch")
(defun igrep-read-files (&optional prompt-prefix)
  `(,(expand-file-name (concat default-directory
                               default-files-string-new))))
于 2013-08-01T22:47:04.690 回答