ack не работает при запуске из "grep-find" в Emacs на Windows - PullRequest
4 голосов
/ 24 февраля 2010

Я пытаюсь использовать ack-grep в качестве замены для grep + find в Emacs в Windows, но ack-grep завершается немедленно (успешно) без печати каких-либо совпадений. Я пробовал практически все возможные комбинации параметров командной строки с ack-grep, но, похоже, ничего не работает.

M-x grep-find

Введите «ack html» для поиска файлов, содержащих «html». Ack сразу выходит, ничего не печатая:

-*- mode: grep; default-directory: "c:/" -*-
Grep started at Tue Feb 23 23:50:52

ack html

Grep finished (matches found) at Tue Feb 23 23:50:52

Выполнение той же команды «ack html» в cmd.exe работает нормально (показывает множество различных файлов, содержащих строку «html».

Есть идеи?

Ответы [ 3 ]

8 голосов
/ 24 февраля 2010

При запуске ack под Emacs в Windows я обнаружил, что иногда путаюсь, должен ли он искать файлы или читать из STDIN. Вот функция, которую я использую для вызова ack (используйте M-x ack). Вы можете поместить это в .emacs.

(defvar ack-command "ack --nogroup --nocolor ")
(defvar ack-history nil)
(defvar ack-host-defaults-alist nil)
(defun ack ()
  "Like grep, but using ack-command as the default"
  (interactive)
  ; Make sure grep has been initialized
  (if (>= emacs-major-version 22)
      (require 'grep)
    (require 'compile))
  ; Close STDIN to keep ack from going into filter mode
  (let ((null-device (format "< %s" null-device))
        (grep-command ack-command)
        (grep-history ack-history)
        (grep-host-defaults-alist ack-host-defaults-alist))
    (call-interactively 'grep)
    (setq ack-history             grep-history
          ack-host-defaults-alist grep-host-defaults-alist)))
0 голосов
/ 27 марта 2013

У меня была похожая проблема с использованием модуля ack-and-a-half, закрытие STDIN тоже помогло. На github есть проблема: https://github.com/jhelwig/ack-and-a-half/issues/23

0 голосов
/ 09 июля 2012

(setq grep-find-command "ack <nul -i ")

...