Nhiều trường hợp Emacs mỗi máy chủ của họ?


7

Trong thiết lập của tôi, tôi có một số phiên bản Emacs (GNU) chạy đồng thời trên máy cục bộ của mình, một phiên bản cho mỗi dự án hoặc tác vụ mà tôi hiện đang làm việc.

Tôi muốn có thể mở bộ đệm trong một cá thể Emacs đang chạy, ví dụ như bằng một lệnh như

$ emacs file.txt

Các giải pháp thường gợi ý cho điều này là để chạy Emacs trong chế độ máy chủ. Tuy nhiên, điều này mâu thuẫn với việc tôi sử dụng nhiều phiên bản Emacs, vì tôi hiểu rằng theo mặc định, chỉ một emacsclient có thể hoạt động bất cứ lúc nào.

Làm cách nào tôi có thể mở tệp dưới dạng bộ đệm trong các phiên bản Emacs hiện tại (có thể là nhiều)? Mục tiêu cuối cùng là mở tệp trong cá thể Emacs trong không gian làm việc hiện tại (Compiz) hoặc tạo một cá thể như vậy nếu nó không tồn tại.


Tôi chỉnh sửa tiêu đề một chút. Có vẻ như bạn đang hỏi về cách để nhiều máy chủ Emacs chạy cùng một lúc. Xin hãy sửa tôi nếu tôi hiểu sai.
Malabarba

1
Các câu trả lời ở đây có thể sẽ được quan tâm: emacs.stackexchange.com/q/41/93
nispio

Nếu đó là trường hợp tôi sẽ xóa câu trả lời của tôi, vì tôi nghĩ rằng anh ta đang yêu cầu các khách hàng khác nhau trong các không gian làm việc khác nhau.
Boccaperta-IT

@Malabarba Tôi thực sự không chắc chắn! Lý do tôi đặt câu hỏi rộng hơn là vì tôi không biết liệu có trả lời được câu hỏi "Làm thế nào tôi có thể có nhiều máy chủ Emacs không?" là cách tiếp cận phù hợp để trả lời vấn đề của tôi "Làm cách nào tôi có thể có nhiều phiên bản Emacs và mở tệp dưới dạng bộ đệm trong một trong số chúng từ dòng lệnh?". Tuy nhiên, tôi thấy rằng việc đạt được nhiều máy chủ đang chạy có thể là một cách tiềm năng để giải quyết vấn đề của tôi.
Felix Hoffmann

Câu trả lời:


5

Câu trả lời này có phương pháp chung, mặc dù câu hỏi khác với câu hỏi của bạn.

Bạn có thể sử dụng emacs --daemon=workspaceNkết hợp với emacsclient -s workspaceNđể có một daemon emacs trên không gian làm việc N. Nếu bạn cần nhiều, chỉ cần làm workspace1, workspace2, v.v. Lưu ý rằng tên daemon hoàn toàn tùy ý và bạn có thể sử dụng bất kỳ lược đồ đặt tên nào bạn muốn.

Việc xác định không gian làm việc mà bạn tham gia có thể sẽ khó khăn hơn và tôi không biết cách xác định không gian làm việc đó. Nếu bạn có một biến môi trường thì một bí danh hoặc hàm có khả năng sẽ thực hiện thủ thuật (nếu bạn chỉ muốn mở mọi thứ thông qua shell).


1
Để thêm vào câu trả lời của bạn, server-namecho phép thực hiện điều tương tự mà không cần phải sử dụng trình nền Emacs. Chỉ cần đặt nó trước khi chạy (server-start). Có thể đặt giá trị này thành một giá trị tùy thuộc vào giá trị của command-line-args, để mô phỏng thứ gì đó tương tự như --daemonlời gọi
Sigma

1
@Sigma Cảm ơn! Mặc dù --daemongiải pháp hoạt động trên nguyên tắc, hiện tại tôi đang gặp một số rắc rối với phần cuối của câu hỏi của mình, "... hoặc để tạo một ví dụ như vậy nếu nó không tồn tại." Tôi hoặc là có thể vượt qua -cđể emacsclienthay không, nhưng có vẻ không phải là một cái gì đó ở giữa (mà tôi sẽ cần). Bạn có thể elobarte về giải pháp của bạn? Làm cách nào tôi có thể đặt server-nametrước khi chạy server-start(biến set không thực hiện thủ thuật vì biến chưa tồn tại). Một giải pháp init.el, thiết lập server-namedựa trên dòng lệnh args, sẽ chỉ là những gì tôi đang tìm kiếm.
Felix Hoffmann

(set-variable 'server-name "foo")đã làm cho tôi. Bạn có nhớ trích dẫn server-name? Ngoài ra: bạn có thể sử dụng server-running-pđể kiểm tra xem máy chủ đã chạy chưa.
J David Smith

0

Theo tôi biết, bạn có thể sử dụng Emacs trong chế độ máy chủ để có được những gì bạn đang tìm kiếm. Tôi thường có nhiều phiên bản emacsclient trong các không gian làm việc khác nhau, ví dụ, cho phép tôi dễ dàng chia sẻ bộ đệm giữa chúng.

Đây là những gì tôi làm:

  • bắt đầu emacs --daemontrong tôi.xinitrc
  • chạy emacsclient -ctrong không gian làm việc 2
  • chạy emacsclient -ttrong không gian làm việc 1 (khi tôi thường giữ một tmux toàn màn hình)

Tôi có thể chỉnh sửa bộ đệm trong từng trường hợp, chuyển nhanh chóng từ thuật ngữ sang GUI và ngược lại.

Bạn có thể tìm thấy nhiều cách tiếp cận hơn trong Bắt đầu hai trình nền emacs riêng cho giao diện điều khiển và GUI


Điều này trả lời một câu hỏi khác nhau: truy cập cùng một ví dụ Emacs từ các vị trí khác nhau. Nhưng câu hỏi là về việc có nhiều trường hợp Emacs.
Gilles 'SO- ngừng trở nên xấu xa'

1
Có, tiêu đề chủ đề đã được thay đổi sau câu trả lời của tôi vì vậy tôi nghĩ rằng câu hỏi là về nhiều emacsclient. Lấy làm tiếc.
Boccaperta-IT
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.