Nokta hareket ettiğinde işlevimi çalıştırmak için kullanabileceğim bir kanca var mı?

Modeline bazı gezinme bağlamı eklemek istiyorum. Sadece iyi olduğumu ve işlevimin adını verdiğimi anlayabiliyorum, ancak her zaman noktası nasıl hareket edeceğini bilmiyorum.

post-command-hook is the only thing I've found, but it sounds like it's overkill. Is there anything more appropriate?

4
@Harald Sanırım olmayabilir. Bu kanca çalıştırıldığında dokümantasyon çok açık değildir (yani, bir komutun ne olduğu). Kayıt için,% 100'ü 'aslında kullanmak için doğru olanı' kabul etmeyi kabul ediyorum.
katma yazar pelms, kaynak
M-x elisp-index-arama RET komutu . Komut, interaktif formuna veya klavye makrosuna (string veya vector format) sahip bir işlevdir.
katma yazar Mark Ireland, kaynak
Neden post-command-hook overkill? Bazı elisp kodları ile yapılırsa, kancanızın her zaman noktası hareket etmesini istemeyebilirsiniz. Bir şeyler yapmak için noktaya hareket eden çok fazla kod var. Verilen, genellikle bir save-excursion içinde yapılır, ancak yine de… (kodun save-excursion etkin olup olmadığına karar veremiyorum.)
katma yazar AttackingHobo, kaynak

1 cevap

Bence post-command-hook kullanmak istediğin şey.

Her komutu çalıştırıldığında çalıştırılır. Ve bir komut, fare düğmesi tıklatılması, ( self-insert-komutu komutunu çalıştırır) veya M-x kullanarak bir komut çalıştırması gibi temelde herhangi bir etkileşimli eylemdir.

Minibuffer'da yazarken kancanızın çalışmadığından emin olmak isteyebilirsiniz. Vücudunu (sanırım (window-minibuffer-p)…) sizin için halledecektir.

Ve muhtemelen, belirli dosyalarınızı düzenlerken kancanızın sadece aktif olmasını istersiniz. Bu durumda, post-command-hook arabelleğini yerel yapmayı düşünebilirsiniz:

(add-hook 'post-command-hook #'your-hook nil :local)

bunun için seninle ilgilenecek. Bu son noktayı eklemek için ( Düzenlendi .)

7
katma
Açıkça hook-local buffer değişkenlerini yapmayın. Bunun yerine add-hook 'u çağırırken LOCAL argümanını kullanın.
katma yazar Mark Ireland, kaynak
@phils Mükemmel nokta. Cevabı güncelleyeceğim.
katma yazar AttackingHobo, kaynak