Menjalankan Emacs dari taskbar Windows

8

Ketika saya ingin beralih antar program di Windows, saya biasanya menggunakan tombol windows plus tombol angka untuk menjalankan program dari taskbar saya. Sebagian besar program akan mulai berjalan atau, jika sudah ada instance, bawa ke latar depan dan fokuslah pada itu. Tetapi Emacs (dimulai dengan runemacs.exe) akan membuat entri baru di taskbar, dan menggunakan pintasan lagi hanya akan membuat contoh baru. Sejauh yang saya tahu, saya bahkan tidak bisa beralih di antara frame yang berbeda menggunakan perintah Emacs (saya mencoba Cx 5 o).

Apakah ada cara untuk membuatnya sehingga penggunaan hotkey windows selanjutnya hanya akan menggunakan instance Emacs yang ada dan, jika tidak, bisakah saya setidaknya membuatnya sehingga saya dapat dengan mudah menavigasi antara frame yang berbeda? Saya mencoba cuplikan ini:

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

dari jawaban untuk pertanyaan ini , tetapi itu tidak membuat perbedaan.

resueman
sumber
Bisakah Anda menentukan cuplikan yang Anda maksud?
nispio
Cuplikan itu memastikan bahwa server edit dibuat saat pertama kali Emacs dijalankan. Panggilan selanjutnya ke Emacs yang ingin terhubung ke server edit yang sama harus digunakanemacsclientw.exe
nispio
@nispio Ah, itu menjelaskan mengapa itu tidak berhasil. Apakah ada cara untuk menjalankan semuanya pada server edit yang sama tanpa perlu dijalankan dari executable yang berbeda?
resueman
Jawaban ini mungkin akan berfungsi: emacs.stackexchange.com/a/158/93 . Ketika Anda menyediakan runemacs.exesebagai editor alternatif, Anda dapat menelepon emacsclientw.exebahkan ketika tidak ada server edit yang sedang berjalan.
nispio
1
Lihat komentar saya untuk jawaban nispio tentang cara menghindari membuat bingkai baru.
Vamsi

Jawaban:

5

Tambahkan ini ke file init Anda untuk memastikan bahwa server edit dibuat ketika emacs dimulai

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

Sekarang buat pintasan windows Anda dengan menunjuk emacsclientw.exesebagai berikut:

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

Ini harus memfokuskan frame Emacs yang ada (jika ada), atau panggilan runemacs.exelain. (Terima kasih kepada Vamsi untuk bantuan menyetel parameter perintah)

nispio
sumber
Ini berfungsi seperti yang saya inginkan jika saya meneruskannya untuk menjalankan file, tetapi jika saya hanya menggunakan perintah apa adanya maka akan menampilkan kesalahan yang mengatakan "nama file atau argumen yang diperlukan."
resueman
@resueman. Apakah -cflag memperbaiki masalah itu?
nispio
2
@nispio One dapat digunakan C:\path\to\emacsclientw.exe -n -e "(raise-frame)" -a "C:\path\to\runemacs.exe"untuk menghindari membuat bingkai baru dan menaikkan bingkai sebelumnya.
Vamsi
@Vamsi tetapi tanpa -cakankah itu juga mengharapkan file untuk dikunjungi? (Jika Anda tidak tahu saya tidak di mesin Windows sekarang.)
nispio
@Vamsi Itu bekerja dengan sempurna. @nispio sepertinya berfungsi dengan baik tanpa -cmemiliki -eekspresi.
resueman
7

Saya menemukan jawaban lain untuk masalah pada SuperUser hari ini. Tampaknya lebih bersifat meretas, tetapi hasilnya lebih konsisten dengan program lain di Windows.

  1. Jalankan runemacs.exe tanpa ikon yang sudah ada di bilah tugas.
  2. Klik kanan pada ikon Emacs yang sedang berjalan di taskbar, dan klik "sematkan program ini ke taskbar."
  3. Tutup Emacs
  4. Bergeser klik kanan pada ikon Emacs yang disematkan di bilah tugas, klik Properties, dan ubah target dari emacs.exe menjadi runemacs.exe.
resueman
sumber
1
FWIW, itulah yang saya lakukan. Saya tidak mengerti bahwa itulah yang Anda inginkan, dari pertanyaan Anda. Saya pikir Anda ingin menggunakan emacsclient, antara lain. BTW, di PropertiesAnda juga dapat mengatur Start indirektori dan membuka Emacs ke file atau direktori tertentu. (Saya memulai Emacs dengan Dired di Start indirektori. TKI, saya meneruskan direktori yang sama ( "-dikutip) dengan argumen runemacs.)
Drew
@Drew saya mungkin tidak menjelaskan apa yang saya inginkan dengan sangat baik. Saya masih cukup baru sehingga sulit untuk menjaga semuanya tetap lurus. Terima kasih atas tipsnya.
resueman