Bộ đệm quá trình Async luôn luôn sắp xếp cửa sổ sắp xếp


8

Tôi thường khởi chạy các chương trình bên ngoài từ các emacs bằng cách sử dụng M-!, chẳng hạn như Firefox hoặc Evince, v.v.

Có cách nào để chôn những bộ đệm như vậy theo mặc định, để tôi không phải nhìn thấy chúng trừ khi tôi quyết định đi tìm chúng?


Câu trả lời:


11

Vì đề cập rằng lệnh đang chạy không đồng bộ, tôi giả sử bạn có nghĩa là lệnh async-shell-commandbị ràng buộc M-&. Bạn có thể làm theo lời khuyên trong tài liệu về async-shell-command(bạn có thể đọc nó bằng cách thực hiện C-hfasync-shell-commandRET) tùy chỉnh display-buffer-alistnhư sau

(add-to-list 'display-buffer-alist (cons "\\*Async Shell Command\\*.*" (cons #'display-buffer-no-window nil)))

Bây giờ bộ đệm được sử dụng bởi lệnh để hiển thị đầu ra sẽ không bao giờ được hiển thị.


Điều này làm việc rất đẹp, cảm ơn bạn. Ngoài ra, tôi cũng không biết M-&. Tôi đã sử dụng M-!và sau đó thêm thủ công &lệnh tôi đã truyền vào shell.
Steven Arntson

4

Emacs có một cơ sở đa năng để ngăn chặn mọi thay đổi cấu hình cửa sổ không chủ ý (hoặc thực sự có chủ ý) gây ra vấn đề.

Thêm vào (winner-mode 1)tập tin init của bạn. Sau đó, khi một cái gì đó làm rối các cửa sổ của bạn, sử dụng C-c<left>( winner-undo) để khôi phục chúng. Bạn có thể sử dụng nó nhiều lần để hoàn tác nhiều thay đổi cấu hình cửa sổ. C-c<right>( winner-redo) đưa bạn trở lại cấu hình gần đây nhất.


Vâng, tôi là một người dùng rất nhiệt tình của Chế độ Người chiến thắng!
Steven Arntson

4

Đây là cấu hình của tôi. Nó sẽ hoạt động rất tốt nếu bạn sử dụng Linux.

(require 'dired-aux)

(defvar dired-filelist-cmd
  '(("vlc" "-L")))

(defun dired-start-process (cmd &optional file-list)
  (interactive
   (let ((files (dired-get-marked-files t current-prefix-arg)))
     (list
      (dired-read-shell-command "& on %s: " current-prefix-arg files)
      files)))
  (start-process
   cmd nil shell-file-name
   shell-command-switch
   (format "nohup 1>/dev/null 2>/dev/null %s \"%s\""
           (if (> (length file-list) 1)
               (format "%s %s" cmd
                       (cadr (assoc cmd dired-filelist-cmd)))
             cmd)
           (mapconcat #'expand-file-name file-list "\" \""))))

(define-key dired-mode-map "r" 'dired-start-process)

Nó không chỉ ẩn những bộ đệm phiền phức đó khi bạn mở tệp pdf dired, Evince sẽ tồn tại ngay cả khi bạn đóng Emacs. Ngoài ra còn có một tùy chỉnh nhỏ để xếp hàng các tệp video được đánh dấu cho danh sách phát vlc.


2

Bạn có thể chặn cửa sổ đó cho một lệnh thay vì sử dụng toàn cầu let

(let ((display-buffer-alist
       (cons (cons "\\*Async Shell Command\\*.*"
                   (cons #'display-buffer-no-window nil))
             display-buffer-alist))) ;; suppress async shell command window
  (async-shell-command command))

Tôi đề nghị (cons NEWTHING display-buffer-alist)thay vì (list NEWTHING)để không ức chế hoàn toàn các nguyên gốc.
phils

Đề nghị tốt, thực hiện nó.
killdash9
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.