3

几乎总是,我想像这样运行 find-grep:

ack --no-heading --no-color "SOMETHING" ~/myco/firmwaresrc

其中 SOMETHING 是唯一的变量。实际上,要实现这一点,需要大量的按键和思考。

我将如何“装罐”这个,以便 Mx fgf 使用该命令运行 find-grep 并用当前区域代替 SOMETHING?

实际上我已经想出了如何做到这一点(见下面的答案)。如果没有选定的区域,谁能告诉我如何让 emacs 要求一些东西?

4

3 回答 3

7
(defun fgf (term)
  (interactive
   (list (if (use-region-p)
             (buffer-substring (region-beginning) (region-end))
           (read-string "grep-find: "))))
  (grep-find (concat "ack --no-heading --no-color \""
                     term  "\" ~/myco/firmwaresrc")))
于 2012-02-10T11:57:41.877 回答
1

您可能还想查看ackfull-ackack-and-a-half。最后一个应该是前两个的婚姻。它们允许您指定默认参数等(尽管学习 elisp 并没有错 :-)。

于 2012-02-10T15:51:33.030 回答
0

这有效:

(defun fgf ()
  (interactive)
  (if (region-active-p)
      (let (start end term command)
        (setq start (region-beginning)
              end   (region-end)
              term (buffer-substring start end)
              command (concat "ack --no-heading --no-color \"" term  "\" ~/myco/firmwaresrc"))
    (grep-find command))))

所以现在我想知道如果没有选择区域,是否有可能让它问我“某事”。我会换个问题。

于 2012-02-10T09:52:09.193 回答