Saya baru-baru ini membeli Mac pertama saya dalam satu dekade dan sedang dalam proses mengkonfigurasi itu. Saya seorang pengguna Emacs dan telah menentukan saya ingin hanya Emacs biasa bukan Aquamacs sehingga saya dapat menggunakan konfigurasi yang ada dari sistem operasi lain. Saya telah mencoba mengikuti banyak cara yang saya temukan online (seperti ini , ini dan ini dari situs tempat saya mengunduh Emacs ), dan telah mencoba menggabungkan potongan-potongan dengan berbagai cara, tetapi tidak pernah membuat keadaan menjadi mendekati apa yang saya harapkan / harapkan:
- Daemon Emacs mulai berjalan saat startup atau segera setelah saya membutuhkannya ; baik baik saja. Setiap frame Emacs baru didukung oleh server yang sama.
- Ketika saya membuka file teks dari Finder file dibuka di Emacs, dalam bingkai grafis yang ada jika memungkinkan.
- Jika saya menjalankan Emacs.app, sistem menggunakan kembali daemon emacs yang berjalan di latar bukannya memulai contoh baru dan membuka jendela baru di atasnya. ( ujung topi )
- Ketika saya menjalankan Emacs dari terminal, terminal menjalankan bisnisnya tanpa menunggu saya selesai dengan Emacs (kecuali saya menggunakan '-nw')
- AFAIK pada titik mana pun selama operasi yang dijelaskan di atas haruskah Emacs berakhir dalam keadaan ("mode edit server?") Di mana ia menunggu saya mengetik
C-x #
, meskipun saya tidak memiliki pemahaman yang mendalam tentang hal ini. - (Saya akan menganggap ini sebagai bonus). Ada beberapa cara bagi saya untuk memanggil Emacs dari terminal sehingga Emacs menggunakan kembali frame yang ada jika memungkinkan.
Bagaimana saya bisa mengkonfigurasi Emacs untuk berperilaku seperti ini?
Saya khususnya bingung dengan membuat Finder untuk membuka hal-hal di Emacs seperti yang saya inginkan (# 2), karena panduan yang saya temukan umumnya membuat sejumlah alias, Applescripts, bash scripts, dll. Dan saya tidak yakin yang saya ingin memberitahu Finder untuk digunakan untuk membuka file teks.
Terima kasih!
A. @lawlist bertanya, "Apakah frame baru dibuka secara default ketika Anda membuka file baru dari terminal meskipun ada frame yang ada?" Jawabannya adalah jika saya memulai server saat startup seperti yang dijelaskan di sini , buka bingkai, dan kemudian buka file dengan mengetik /Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n <whatever>
, saya bisa mendapatkan file untuk dibuka di bingkai yang ada. Jika tidak ada bingkai saat ini terbuka saya harus menggunakan "-nc" atau ketika saya mencoba membuka file tidak ada yang terjadi.
B. @lawlist bertanya, "Apakah Anda ingin daemon berjalan saat login, atau apakah itu cukup untuk memuat Emacs secara manual setelah login?" Menjalankan secara manual akan baik-baik saja.
M-x server-start
secara manual akan memulai server sehinggaemacsclient
dapat berkomunikasi dengannya. Saya telah menempatkan file(server-start)
sayainit.el
daripada menggunakan daemon saat login - namun, banyak orang lebih suka opsi masuk daemon. Dan tentu saja,.emacs
file tersebut akan menjadi tempat yang cocok untuk(server-start)
.ns-find-file
- yang diaktifkan secara otomatis ketika file dikaitkan dengan Emacs.app. Fungsi file intersep saya di tautan di atas juga memodifikasins-find-file
jika itu sesuatu yang menarik minat Anda. Tentu saja, Anda perlu Emacs built--with-ns
.Jawaban:
Untuk membuat Emacs.app membuka file dalam bingkai yang sudah ada alih-alih bingkai baru, tambahkan
(setq ns-pop-up-frames nil)
ke file konfigurasi seperti~/.emacs
.Anda dapat membuka file dari terminal dengan
open -a emacs file
atauemacsclient -n file
. Jika Emacs.app tidak terbuka tetapi adaEmacs --daemon
proses, untuk beberapa alasanemacsclient -n file
tidak berfungsi tetapiemacsclient -nc file
tidak.Pastikan Anda menggunakan
emacsclient
biner yang disertakan dengan versi Emacs yang Anda gunakan, sukai/Applications/Emacs.app/Contents/MacOS/bin/emacsclient
, atau/usr/local/bin/emacsclient
jika Anda menginstal Emacs dengan Homebrew.Untuk memulai server Emacs saat login, misalnya simpan daftar ini sebagai
~/Library/LaunchAgents/my.emacsdaemon.plist
:Plist dimuat secara otomatis saat berikutnya Anda masuk, tetapi Anda dapat langsung memuatnya dengan menjalankan
launchctl load ~/Library/LaunchAgents/my.emacsdaemon.plist
.Sunting: Saya masih tidak tahu mengapa orang mengaitkan tipe file dengan aplikasi AppleScript, bukan hanya Emacs.app. Skrip dalam jawaban kuzzooroo juga bisa ditulis sebagai skrip shell:
Anda dapat menggunakan Platypus untuk menyimpan skrip sebagai aplikasi:
Saya baru saja mulai menggunakan Emacs, tetapi saya memiliki pengaturan yang sama sekali berbeda. Saya membuat aplikasi Emacs saya sendiri dengan membuat salinan iTerm.app, mengubah CFBundleIdentifier di Info.plist sehingga aplikasi tersebut menggunakan file preferensi yang berbeda, dan mengatur perintah default ke
/usr/local/bin/emacs
. Saya telah menambahkan(server-start)
untuk~/.emacs
dan saya membuka kustom aplikasi Emacs saat login. Saya menggunakan Platypus untuk membuat aplikasi yang berjalanemacsclient -n "$@";open -b my.emacs
dan saya menjadikannya aplikasi default untuk file teks.sumber
Solusi Lauri yang dikombinasikan dengan saran dari komentar sebagian besar telah mengatasi masalah saya. Saya telah menempelkan beberapa Applescript di bawah ini yang saya jahit bersama dari barang-barang yang saya temukan online. Skrip membantu merapikan beberapa kerutan yang tersisa, misalnya, perilakunya sedikit lebih baik jika tidak ada bingkai Emacs saat ini.
EDIT: tujuan skrip harus dikaitkan dengan file .txt di Finder.
sumber