Làm cách nào tôi có thể chạy Emacs đồ họa Mac OSX ở chế độ daemon?


24

Hình thức ngắn: Tôi muốn chạy phiên bản Mac OSX của Emacs được tìm thấy trên http://emacsformacosx.com/ dưới dạng daemon, với các máy khách đồ họa và văn bản kết nối với nó khi cần.

Cụ thể, đây là quy trình tôi muốn:

  1. Khi đăng nhập, hãy chạy /Applications/Emacs.app/Contents/MacOS/Emacs --daemonđể bắt đầu emacs như một daemon. Tôi đã biết làm thế nào để làm điều này .

  2. Khi chạy emacs từ một termnal địa phương, tôi muốn một trong hai:

    1. Nếu tôi chạy emacstừ một dấu nhắc lệnh cục bộ, hãy mở một khung mới với tệp đã chọn.
    2. Nếu # 1 là không thể, ít nhất là nếu tôi chạy emacsclienttừ dòng lệnh, hãy mở một khung mới với tệp đã chọn.
  3. Khi chạy emacs từ một thiết bị đầu cuối từ xa, tôi muốn một emacs chế độ văn bản bắt đầu, được kết nối với quá trình trình nền.

  4. Nếu tôi chạy Emacs.applại sử dụng trình nền emacs đang chạy trong nền thay vì bắt đầu một phiên bản mới và mở một cửa sổ mới trên đó.

Cho đến nay, tôi chỉ có thể hoàn thành # 1 và # 2.2 ở trên, nhưng đó là những phần dễ dàng. # 3 và # 4 là những thứ cần thiết nhất để thực hiện công việc này. Có ai biết làm thế nào để thực hiện những điều này?


1
Đối với những người khác tìm thấy câu hỏi này: bạn cũng có thể sử dụng M-x server-startđể đặt một emacs bắt đầu mà không cần --daemon vào chế độ máy chủ. Câu hỏi hay, BTW.
dmckee

1
... hoặc đặt (server-start).emacs của bạn để nó bắt đầu khi bạn khởi chạy emacsa
Doug Harris

Ai đó có thể giải thích làm thế nào để làm # 1? Bạn sẽ làm cho nó một mục đăng nhập?
Charlie Hoa

Câu trả lời:


15
  1. Bạn đã xử lý việc này
  2. Có, bạn sẽ muốn sử dụng emacsclient. Để có khung mới, hãy thêm tùy chọn -c. Tôi có một bí danh để làm cho nó nhanh hơn và nói với emacsclient đừng đợi máy chủ emacs quay trở lại:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Tôi không chắc về điều này. Tôi khởi động Emacs một lần và luôn tải các tệp mới trong phạm vi emacs hoặc sử dụng embí danh của mình .

Cập nhật:

Kiểm tra mẹo này ghi lại cách sử dụng Platypus để tạo trình bao bọc ứng dụng xung quanh emacsclient. Sau đó, bạn có thể sử dụng "Mở bằng ..." để khởi chạy bằng trình bao bọc ứng dụng mới.


Vâng, đó là mẹo thực sự, phải không? Bởi vì những gì tôi muốn là cho tất cả các cuộc gọi mở của HĐH để sử dụng các emacs đang chạy, cho dù tôi đang hoạt động trong một thiết bị đầu cuối hay bối cảnh GUI. Tôi sẽ tiếp tục tìm kiếm.
Chris R

Tìm thấy một giới thiệu cho Platypus và cập nhật câu trả lời của tôi.
Doug Harris

6
Điều này đã được giải quyết chưa? Làm thế nào bạn có được Emacs.app để kết nối với daemon?
milkypostman

Tôi cũng muốn biết câu trả lời cho câu hỏi 4 :)
jkp

2

Vâng, đây là một giải thích khá toàn diện về cách làm điều này độc đáo. Tôi đã thử một số phương pháp để làm cho nó hoạt động tốt, nhưng không tốt hơn những gì họ mô tả ở đây.

https://gist.github.com/304964

Chúc mừng!


1
Liên kết đã chết
Nisba

1

Cho 4. đặt cái này trong .emacs của bạn:

(setq ns-pop-up-frames nil)

Giải pháp tạo Mac .app (với Platypus) không hoạt động vì Mac sẽ không mở cùng một ứng dụng hai lần.


1
Nếu bạn sử dụng "open -n", bạn có thể mở phiên bản mới của ứng dụng ngay cả khi nó đang chạy. Hãy thử điều này trong thiết bị đầu cuối: open -n -a Emacs.app somefile.txt
Jörgen Lundberg

Vâng, nhưng nó sẽ mở ra một cửa sổ mới mà tôi không muốn
juanmirocks

Có thể tôi đang hiểu nhầm những gì bạn muốn, nhưng nếu bạn không muốn nó tạo một cửa sổ mới nhưng sử dụng một cửa sổ hiện có, hãy bỏ qua '-n'.
Jörgen Lundberg

Có, tôi không muốn tạo một cửa sổ mới. open -a Emacs.appchắc chắn là những gì tôi làm, nhưng để được mở trong cùng một ví dụ / nền daemon của một emacs hiện có, tôi cần phải viết (setq ns-pop-up-frames nil)trong .emacskhi tôi viết trong câu trả lời của mình. Nếu không, nó sẽ tạo ra một cửa sổ mới, dù có hay không -n.
juanmirocks
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.