Komut satırından Emac'ları çağırabilmek ve çalışmazsa grafiksel Emacs başlatmak veya zaten çalışan bir Emac'ta bir dosyayı ziyaret etmek istiyorum. Bunu yapmanın emacsclient
"doğru" yolu olduğunu bildiğim bir şey yapmaya çalıştım , ancak OS X'te çok fazla sorun yaşadım, rasgele kilitlenirdi emacs --daemon
ya da makineyi kapatırken ya da yeniden başlatırken işlem askıda kalıyordu , ve genel lapa lapa olma. Bunun işe yaramasını isterken, şu anda open -a
gerçekten daha iyi çalışıyor, bunun dışında aşağıda açıklayacağım bir sorun dışında:
Bu open -a
gibi kullanarak :
$ open -a Emacs file.txt
Çalışmıyorsa Emacs'ı başlatacak ve dosyayı ziyaret edecektir. Ancak eğer mevcut tampon değilken bunu yaparsam *scratch*
, dosya yeni bir çerçevede (yani yeni bir sistem penceresi) açılır.
İşte örnek bir oturum:
$ open -a Emacs file.txt
Bu, Emacs'ı başlatır ve file.txt dosyasını açar, bu yüzden içinde bu tamponla birlikte tek bir kare vardır. Ben geçerseniz *scratch*
tampon ve bunu:
$ open -a Emacs file1.txt
Bu dosyayı aynı çerçevede açar. Şimdi bu dosya açık olan tek bir kare var ve eğer bunu yaparsam:
$ open -a Emacs file2.txt
Yeni bir kare açar ve aynı anda iki karenin açılmasını sağlar.
Komut satırı ile uğraşmayı Emacs'a --args
geçmek için anahtarı kullanmaya çalıştım open
, ancak bu sonraki çağrılar için işe yaramıyor gibi gözüküyor:
$ open -a Emacs --args --eval='(print "foo")'
$ open -a Emacs --args --eval='(print "bar")'
Bu yalnızca mesaj tamponunda "foo" yu basar ... ikinci kez Emacs ön plana çıkarılır ancak hiçbir mesaj yazdırılmaz.
open
Zaten çalışan uygulamalarla nasıl iletişim kurduğumdan emin değilim , nasıl öğrenebileceğimi bilen var mı? Veya Messages
arabellekten daha çok olup bitenler hakkında daha ayrıntılı bir kayıt tutmanın bir yolu var mı? Yukarıdaki oturum sırasında bu tampon belleğe ilginç bir şey yazılmıyor, bu yüzden bazı Emacs Lisp'i istediğimi yapmak için nasıl hackleyebileceğimi bilmiyorum ...
Teşekkürler!
emacsclient
tekrar ve onu başlayan (server-start)
benim de init.el
daha iyi çalışıyor gibi görünüyor emacs --daemon
denedim ilk kez çalışıyorlardı budur açılışta yukarı, at emacsclient
.
find-file
ve sonradebug-on-error
t'ye ayarlarım ve Emacs'ın nasıl çağırıldığına dair bazı ipuçları için yığın izini kontrol ederdim . Bir hata eklemekfind-file
, işlev tanımını lisp çizik arabelleğine kopyalamak ve içine bir çağrı eklemek kadar basit olabilirerror
(örneğin(error "cause stack trace")
. KAYNAK DOSYASINI DEĞİŞTİRMEYİNİZfind-file
- - bunu daima çizilmeye çalışabilir!