My ~/.emacs
zawiera następujące ustawienia otwierania niektórych plików z niektórych aplikacji (Ubuntu 12.10; Emacs 24):Jak uniknąć wyskakiwania bufora * Async Shell Command * w Emacs?
(setq dired-guess-shell-alist-user
'(("\\.pdf\\'" "okular ? &")
("\\.djvu\\'" "okular ? &")
("\\.mp3\\'" "vlc ? &")
("\\.mp4\\'" "vlc ? &")
))
Kiedy przejść do .pdf w dired-mode
i uderzył !
, otwiera .pdf w Okular , ale dired-bufor jest podzielony na dwie części, drugi teraz jest bezużyteczny bufor *Async Shell Command*
zawierające treść jak
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
Jak mogę zapobiec tego bufora przed otwarciem? (z wyjątkiem, być może, jeśli wystąpił błąd i informacje te są przydatne).
znalazłem pytania związane here i here, ale wydają się radzić sobie z konkretnych poleceń wykonywanych asynchronicznie, zamiast *Async Shell Command*
w ogóle (jeśli to możliwe, chciałbym zmienić zachowanie w ogóle do procesów asynchronicznych, a nie tylko dla niektórych typy plików)
Zobacz rzeczywiste funkcje wewnątrz źródła '.../lisp/simple.el' - tj.' Defun shell-command' i 'defun async-shell-command'. Możesz nawet tworzyć własne niestandardowe funkcje i/lub używać 'defalias'.Podczas używania 'start-process', drugim argumentem jest nazwa bufora wyjściowego - użycie' nil' dla drugiego argumentu zapobiega tworzeniu bufora wyjściowego. Możesz użyć 'set-process-sentinel' w połączeniu z' start-process'. – lawlist
Łańcuch dokumentu 'async-shell-command' stwierdza:' ... W Elisp, często będziesz lepiej obsługiwany przez wywoływanie "procesu startowego" bezpośrednio, ponieważ zapewnia on większą kontrolę i nie narzuca używania shell (z potrzebą cytowania argumentów). " – lawlist