Chạy Emacs từ thanh tác vụ Windows


8

Khi tôi muốn chuyển đổi giữa các chương trình trong Windows, tôi thường sử dụng phím windows cộng với phím số để chạy chương trình từ thanh tác vụ của mình. Hầu hết các chương trình sẽ bắt đầu chạy hoặc, nếu đã có một phiên bản, đưa nó lên nền trước và tập trung vào nó. Nhưng Emacs (bắt đầu với runemacs.exe) sẽ tạo một mục mới trên thanh tác vụ và sử dụng lại phím tắt sẽ chỉ tạo một thể hiện mới. Theo như tôi có thể nói, tôi thậm chí không thể chuyển đổi giữa các khung khác nhau bằng các lệnh Emacs (Tôi đã thử Cx 5 o).

Có cách nào để làm cho nó sử dụng các phím nóng windows tiếp theo sẽ chỉ sử dụng phiên bản hiện tại của Emacs và, nếu không, tôi ít nhất có thể làm cho nó để tôi có thể dễ dàng điều hướng giữa các khung khác nhau không? Tôi đã thử đoạn trích này:

(require 'server)
(unless (server-running-p)
  (start-server)) 

từ câu trả lời cho câu hỏi này , nhưng nó không tạo ra sự khác biệt.


Bạn có thể chỉ định đoạn trích nào bạn đang đề cập đến không?
nispio

Đoạn mã đó đảm bảo rằng một máy chủ chỉnh sửa được tạo lần đầu tiên khi Emacs được chạy. Các cuộc gọi tiếp theo tới Emacs muốn kết nối với cùng một máy chủ chỉnh sửa phải sử dụngemacsclientw.exe
nispio

@nispio Ah, điều đó giải thích tại sao nó không hoạt động. Có cách nào để mọi thứ chạy trên cùng một máy chủ chỉnh sửa mà không cần phải chạy từ các tệp thực thi khác nhau không?
phục vụ

Câu trả lời này có thể sẽ hoạt động: emacs.stackexchange.com/a/158/93 . Khi bạn cung cấp runemacs.exenhư một trình soạn thảo thay thế, bạn có thể gọi emacsclientw.exengay cả khi không có máy chủ chỉnh sửa nào đang chạy.
nispio

1
Xem bình luận của tôi để trả lời của nispio về cách tránh tạo khung mới.
Vamsi

Câu trả lời:


5

Thêm phần này vào tệp init của bạn để đảm bảo rằng máy chủ chỉnh sửa được tạo khi emacs bắt đầu

(require 'server)
(unless (server-running-p)
  (server-start)) 

Bây giờ làm cho phím tắt windows của bạn trỏ đến emacsclientw.exenhư sau:

C:\path\to\emacsclientw.exe -n -e "(raise-frame)" -a "C:\path\to\runemacs.exe"

Điều này sẽ tập trung vào khung Emacs hiện có (nếu có) hoặc runemacs.exenếu không thì gọi khác. (Cảm ơn Vamsi đã giúp điều chỉnh các tham số lệnh)


Điều này hoạt động theo cách tôi muốn nếu tôi truyền cho nó một tệp để chạy, nhưng nếu tôi chỉ sử dụng lệnh như vậy thì nó sẽ hiển thị một lỗi thông báo "tên tệp hoặc đối số được yêu cầu."
phục hồi

@resueman -cCờ có khắc phục được sự cố đó không?
nispio

2
@nispio Người ta có thể sử dụng C:\path\to\emacsclientw.exe -n -e "(raise-frame)" -a "C:\path\to\runemacs.exe"để tránh tạo khung mới và nâng khung trước đó.
Vamsi

@Vamsi nhưng không có ý -cchí nó cũng mong có một file để truy cập? (Nếu bạn không thể nói rằng tôi không ở máy Windows ngay bây giờ.)
nispio

@Vamsi Điều đó hoạt động hoàn hảo. @nispio nó dường như hoạt động tốt mà không cần -cmiễn là nó có -ebiểu thức.
phục hồi

7

Tôi vấp phải một câu trả lời khác cho vấn đề trên SuperUser ngày hôm nay. Có vẻ như hackish hơn, nhưng kết quả phù hợp hơn với các chương trình khác trên Windows.

  1. Chạy runemacs.exe không có biểu tượng có sẵn trong thanh tác vụ.
  2. Nhấp chuột phải vào biểu tượng Emacs đang chạy trong thanh tác vụ và nhấp vào "ghim chương trình này vào thanh tác vụ."
  3. Đóng Emacs
  4. Shift nhấp chuột phải vào biểu tượng Emacs được ghim trên thanh tác vụ, nhấp vào Thuộc tính và thay đổi mục tiêu từ emacs.exe thành runemacs.exe.

1
FWIW, đó là những gì tôi làm. Tôi không hiểu đó là những gì bạn muốn, từ câu hỏi của bạn. Tôi nghĩ rằng bạn muốn sử dụng emacsclient, trong số những thứ khác. BTW, trong Propertiesbạn cũng có thể đặt Start inthư mục và mở Emacs vào một tệp hoặc thư mục cụ thể. (Tôi bắt đầu Emacs với Dired trong Start inthư mục. IOW, tôi chuyển cùng một thư mục (được "trích dẫn) làm đối số cho runemacs.)
vẽ

@Drew Tôi có lẽ đã không giải thích những gì tôi muốn rất tốt. Tôi vẫn còn đủ mới để giữ mọi thứ thẳng. Cảm ơn vì những lời khuyên.
phục hồi
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.