Saya mencoba mengatur daemon server emacs dan menggunakan emacsclient pada MS Windows sehingga file dapat dibuka dengan cepat tanpa penundaan dan overhead terkait dengan memulai instance tambahan emacs untuk setiap file yang dibuka. Saya mengikuti instruksi khusus yang disediakan di emacswiki untuk MS Windows yang melibatkan:
- Menjalankan emacs sebagai daemon,
runemacs.exe --daemon
- Diikuti dengan memohon
emacsclientw.exe
dengan opsi yang sesuai.
Memulai daemon berhasil (saya melihat emacs.exe dalam daftar proses), tetapi menjalankan emacsclient menghasilkan kesalahan. Wiki mengatakan untuk membuat jalan pintas ke emacsclientw.exe
dan mengubah target menjadi
X:\path\to\emacs\bin\emacsclientw.exe -na "X:\path\to\emacs\bin\emacsclientw.exe" -c -n
Apakah ini benar? Sepertinya klien dipanggil dua kali. Menggunakan target seperti yang ditunjukkan tidak menjalankan program dan menghasilkan kesalahan "nama file atau argumen yang diperlukan". Hanya menggunakan bagian pertama dari target yang ditunjukkan di atas
X:\path\to\emacs\bin\emacsclientw.exe -na
menghasilkan kesalahan umum. Hanya menggunakan bagian kedua
X:\path\to\emacs\bin\emacsclientw.exe -c -n
menghasilkan kesalahan "Tidak ada soket atau editor alternatif." (Opsi emacsclient resmi dijelaskan di sini. )
Ada saran? Emacs berjalan dengan baik dalam mode standar, yaitu, tidak dalam mode daemon. Versi 25.1. Saya lebih suka menjalankan daemon daripada memulai server dalam file inisialisasi saya.
Error: Cannot connect even after starting the Emacs daemon
Dikonfirmasi pintasan ini memang meluncurkan proses daemon, tetapi file masih terbuka dalam instance emacs mereka sendiri. Diuji dengan dan tanpa hak administrator. Emacs 25.1, Windows 7.Error: Cannot connect even after starting the Emacs daemon
.Perintah yang saya gunakan adalah:
(Jika folder tempat sampah Emacs tidak ada pada Anda
PATH
, gunakan path lengkap untukemacsclientw.exe
danrunemacs.exe
.)atau dengan nama opsi pendek dan trik string kosong,
Perhatikan bahwa trik string kosong untuk
-a
akan memulai daemon jika tidak berjalan, tetapi ini seharusnya tidak berfungsi sampai Emacs 26 (saya masih di 25). Sebelum 26 Anda harus menentukan editor alternatif secara eksplisit. Saya menggunakanrunemacs.exe
, tetapi Emacs saya dikonfigurasi untuk memulai server dan membiarkannya tetap berjalan.Karena Windows tidak memiliki soket domain Unix lokal yang
emacsclient
biasanya digunakan untuk terhubung ke server, ia harus kembali menggunakan soket jaringan TCP. Untuk alasan keamanan yang jelas, Anda tidak ingin sembarang orang di jaringan Anda mengakses seluruh sistem file Anda melalui server Emacs. Oleh karena itu,emacsclient
harus tahu port yang tepat (ephemeral) dan token keamanan yang ditulis dalam file server sebelum server mengizinkannya terhubung.Jika server sudah berjalan, maka Anda tidak perlu
-a
(tetapi tidak sakit). Anda dapat mengaturALTERNATE_EDITOR
variabel lingkungan alih-alih menggunakan-a
.Jika Anda mengatur
EMACS_SERVER_FILE
variabel lingkungan, maka Anda tidak perlu menentukannya lagi dengan-f
.sumber
Untuk Emacs 26.3 dan Windows 10 berfungsi:
Daemon :
C:\YOUR_EMACS\emacs-26.3\bin\emacs.exe "--daemon"
Klien : mis:
C:\YOUR_EMACS\emacs-26.3\bin\emacsclientw.exe "temp.org"
Saat Anda menambahkan Emacs yang dapat dieksekusi
PATH
, Anda dapat dengan mudah membukaemacsclientw.exe
dari mana saja. Anda juga dapat menambahkan daemon di folder startup:C:\Windows\System32\cmd.exe /c start /high emacs.exe "--daemon"
sumber