2013-08-01 6 views
0

특정 기능을 수행하기 위해 igrep.el 패키지를 수정하려고합니다. M-x igrep-find를 실행하면 패키지에서 기본적으로 "현재 버퍼"유형의 파일 유형을 묻습니다. ("* [SCH]."DEFVAR 기본-파일 문자열 새로운)lisp이 사용자에게 입력을 요청하는 것을 중단했습니다.

내가 :. 내가 * 수에 grep으로하는 파일 형식을 기본하려면 [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)))) 
+0

저는 Lisp을 읽기가 어렵지만이 형식을 좀 더 잘 지정하십시오. –

+0

감사합니다. mohammad. 이미했다. – SFbay007

+0

노노, 감사합니다. –

답변

1

아마도 오해 할 수 있습니다. 입력을 원하지 않는다면 함수를 완전히 바꾸는 것이 더 쉬울까요?

(defvar default-files-string-new "*.sch") 
(defun igrep-read-files (&optional prompt-prefix) 
    `(,(expand-file-name (concat default-directory 
           default-files-string-new)))) 
+0

ahilsend yes :) 정확히! 그것은 완벽하게 작동했습니다. 답변을 upvote 할만큼 충분한 담당자가 있으면 좋겠어요 – SFbay007

+0

Ahilsend ... 어쩌면 당신은 저의 다른 혼란을 도와 줄 수 있습니다. 동일한 코드 조각에 대해 사용자가 입력을 "한 번"입력 할 수 있도록 수정하는 방법은 무엇입니까? 의미, igrep.el에 대한 grep에 대한 경로를 묻는 또 다른 옵션이 있습니다. 사용자가 기본 경로를 수락하거나 새 경로를 입력 한 다음 모든 새 grep 검색이 지정된 경로로 기본 설정되기를 원합니다. 계속해서 사용자에게 경로를 묻지 않아도됩니다. – SFbay007

관련 문제