функция для вызова той же команды оболочки в dired

я хотел бы иметь возможность вызывать одну и ту же команду оболочки для отмеченных файлов в dired без необходимости для emacs запрашивать ввод команды, поскольку команда всегда будет одной и той же. в частности, команда «открыть» (для mac os x).

я пытался взломать функцию dired-do-shell-command в dired-aux.el, но я не понимаю интерактивную строку.

в конце концов, я хотел бы иметь возможность привязать эту функцию к C-o для режима dired, чтобы мне не приходилось использовать Finder Mac OS X для навигации по файлам и их открытия. это позволит мне полностью перейти на emacs.

благодаря.


person Vinh Nguyen    schedule 01.12.2009    source источник


Ответы (1)


(defun dired-open ()
  (interactive)
  (dired-do-async-shell-command
   "open" current-prefix-arg
   (dired-get-marked-files t current-prefix-arg)))

(define-key dired-mode-map (kbd "C-o") 'dired-open)

Редактировать:

Мы можем использовать save-window-excursion для защиты существующей конфигурации окна от искажения выходным буфером:

(defun dired-open ()
  (interactive)
  (save-window-excursion
    (dired-do-async-shell-command
     "open" current-prefix-arg
     (dired-get-marked-files t current-prefix-arg))))
person huaiyuan    schedule 01.12.2009
comment
Спасибо Хуайюань. Работает как положено. Когда я запускаю C-o, он открывается, и emacs создает буфер Async shell Command. Я думаю, что этот буфер предназначен для вывода stdout. Есть ли способ подавить открытие этого окна, если на самом деле нет выходных данных или сообщений об ошибках? Спасибо! - person Vinh Nguyen; 01.12.2009
comment
В связи с этим я написал сообщение в блоге о запуске функции elisp для каждого отмеченного файла: justinsboringpage.blogspot.com/2009/04/ - person justinhj; 02.12.2009