2013-09-28 149 views
10

Làm thế nào để bạn đóng khung emacsclient mà không làm mất máy chủ/daemon?Cách đóng khung gui emacsclient mà không làm mất máy chủ

Làm C-x C-c hoặc C-x 5 0 trong gui sẽ thoát cả khung và máy chủ (và các máy khách khác), trong khi điều này chỉ thoát khỏi khung hiện tại khi thực hiện từ thiết bị đầu cuối.

(Ps: phiên bản emacs của tôi là 24,2, gtk tôi đã cố gắng mà không init-file để xem nếu nó được xuất phát từ cấu hình của tôi, nhưng kết quả là như nhau.)

+0

Trong một thời gian dài, tôi gặp vấn đề với việc xây dựng gtk emacs và chuyển sang bộ công cụ khác. Những người trong kênh #emacs trên freenode lưu ý rằng đây là một lỗi lâu đời ở đâu đó trong gtk khiến máy chủ bị lỗi.Hãy thử xây dựng bằng cách sử dụng bộ công cụ sáng suốt. –

Trả lời

7

Nó nói trong minibuffer khi emacsclient bắt đầu, rằng "Khi được thực hiện với bộ đệm, hãy nhập Cx #".

+0

'C-x #' cũng tiêu diệt máy chủ khi nhận ra từ gui – AdrieanKhisbe

+3

Nó chắc chắn không làm điều đó cho tôi. – Dolda2000

+0

Tôi biết nó không được phép. :/ Bạn đang sử dụng phiên bản nào? – AdrieanKhisbe

4

Bắt đầu emacsclient với -n/--no-wait cờ sẽ:

Đừng chờ đợi cho máy chủ trở lại

Bạn sẽ không cần phải đóng các khách hàng trong trường hợp đó.

Và nếu bạn phải đóng cửa emacsclient chỉ cần xóa bộ đệm máy chủ sẽ vẫn nguyên vẹn.

6

Tôi nghĩ điểm mấu chốt ở đây là bạn cần khởi động máy chủ ở chế độ daemon. Nếu máy chủ chạy trong tiến trình emacs hiện có - ví dụ nếu bạn có (server-start) trong tệp init của mình - máy chủ sẽ chết với tiến trình emacs.

Có một vài cách để khởi chạy máy chủ trong chế độ daemon:

  • gọi emacs với dòng tùy chọn --daemon lệnh
  • gọi emacsclient với các tùy chọn dòng lệnh, mà sẽ có hiệu lực chạy emacs --daemon cho bạn sau đó tìm cách kết nối với nó

Khi bạn có máy chủ ở chế độ daemon, bạn sẽ có thể đóng mọi khung và daemon sẽ tiếp tục ngồi và chờ kết nối thêm.

0

Tôi đang sử dụng cả Debian với i3 và OSX. Tôi thường thoát khỏi khung GUI emacsclient bằng phím tắt của cửa sổ đóng của trình quản lý cửa sổ. Ví dụ: trong OSX, tôi sử dụng "Command + w" để đóng khung GUI của máy khách mà không làm mất máy chủ và trong i3, tôi sử dụng "Super + Shift + q" (cửa sổ đóng mặc định bằng i3) để thoát khỏi khung máy khách .

2

Vì bạn chạy (server-start) từ khung hiện có, khung đó không phải là khung emacsclient và đóng khung hình cuối cùng rõ ràng được xử lý giống như C-x C-c: nó sẽ thoát khỏi Emacs.

Nếu bạn sử dụng emacs --daemon, có thể sử dụng thủ thuật ALTERNATE_EDITOR='', bạn sẽ không gặp phải vấn đề này; bạn chỉ có thể sử dụng emacsclient -n -c để mở một khung giao diện, và sau khi đóng nó, daemon sẽ chỉ ngồi quanh chờ bạn mở một khung mới, cho dù là đồ họa hay dựa trên thiết bị đầu cuối.

+0

Tôi thậm chí bắt đầu nó thông qua systemd, như mô tả tại WikEmacs: http://wikemacs.org/wiki/Emacs_server#Adding_To_OS_Startup – MKesper