Karena emacsclient dapat menangani waktu pemuatan paket yang lama dengan benar, saya benar-benar ingin menjaga setidaknya satu proses emacs, dan sebagian besar waktu hanya satu proses emacs , terbuka sebagai proses latar belakang dan lebih baik menyembunyikan GUI.
Saat ini saya mendefinisikan fungsi berikut di .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
Dan juga memiliki baris berikut di .bashrc:
emc
Jadi setiap kali saya membuka shell, saya akan berakhir dengan proses emacs baru.
Masalahnya adalah saya akan memiliki banyak proses emacs tambahan yang tidak perlu setelah membuka banyak shell. Namun, saya hanya ingin mempertahankan satu proses emacs tunggal sepanjang waktu dari startup lebih baik menyembunyikan GUI .
emacsclient
gui
phonycollectibles
sumber
sumber
emacs --eval "(suspend-frame)"
daripadaemacs --daemon
( emacswiki.org/emacs/EmacsAsDaemon ). Apakah ada alasan Anda memilih untuk tidak memanggil emacs sebagai daemon? Anda dapat menggunakan sesuatu sepertipgrep -U `whoami` emacs || emacs --daemon &
untuk memastikan itu berfungsi.Jawaban:
Saya melakukan ini dengan memulai daemon emacs ketika saya login. Di mana Anda meletakkan perintah ini tergantung pada manajer desktop Anda. Saya menggunakan
i3
, yang dikonfigurasi untuk menjalankan skrip saat masuk yang mencakup yang berikut:Dengan itu, emacs selalu berjalan di latar belakang, dan saya membuka klien baru
emacsclient -c -n
, terikat dengan pengikatan tombol yang nyaman di window manager. Jika Anda bekerja di terminal, Anda hanya perlu alias sederhana sepertialias emc='emacsclient'
, mungkin dengan-n
,-c
atau-t
argumen, tergantung pada bagaimana Anda menggunakannya.Periksa opsi-opsi untuk emacsclient dalam manual: ( (emacs) Opsi emacsclient , dapat diakses dari Emacs oleh
C-h r m emacsclient options <enter>
). Anda dapat menggunakan-a
bendera untuk secara otomatis memulai daemon emacs jika belum berjalan, dan-c
atau-t
untuk membuka klien bingkai atau terminal baru, daripada menggunakan kembali yang sudah ada (dalam sesi yang sama):sumber
Jika Anda menggunakan sistem operasi yang menggunakan manajer layanan systemd (yang saat ini mencakup sebagian besar distribusi GNU / Linux), maka solusi terbaik mungkin menggunakan systemd untuk memulai daemon Emacs Anda saat boot. Anda dapat melakukan ini dengan membuat file
$HOME/.config/systemd/user/emacs.service
dengan konten berikut:Maka Anda harus memulai layanan dan mengaturnya untuk mulai secara otomatis untuk semua booting berikutnya:
Anda sekarang dapat menggunakan
emacsclient
seperti biasa. Jika Anda biasanya menjalankannya dengan-n
,-c
atau-t
pilihan, Anda dapat mengatur sebuah alias di shell Anda. Anda mungkin juga ingin mengatur variabel lingkunganEDITOR
dan / atauVISUAL
untuk menjalankanemacsclient
cara yang Anda suka. Misalnya, di Bash, Anda dapat menambahkan yang berikut ke.bashrc
file Anda :Jika Anda perlu menghentikan daemon Emacs, Anda dapat melakukan ini sebagai berikut:
Dan jika Anda ingin menghentikannya secara permanen saat boot:
sumber
Cara saya melakukannya sangat mirip dengan jawaban sebelumnya, dengan memiliki alias yang didefinisikan dalam .bashrc saya untuk
emacs --daemon
Terlepas dari ini, saya memiliki pintasan papan tombol
ctrl-alt-E
diatur keemacsclient -c
. Ketika saya ingin mulai bekerja pada emacs saya membuka terminal dan mengetikds
dan memanggil setiap instance emacsclient dengan shortcut saya.Semoga ini bisa membantu seseorang.
sumber