2009-09-16 10 views
8

Robię małe modyfikacje SLIME, dzięki czemu mogę pobrać wszystkie aktualnie załadowane symbole z Lisp, przeanalizować je i uczynić je font-lock.Aktualizacja słów kluczowych blokujących czcionki w emacs bez przeładowania w trybie głównym

Udało mi się zrobić wszystkie te kroki, ale mam mały problem - kiedy lista słów kluczowych zmienia się w blokadę czcionki, bufor nie jest aktualizowany, chyba że zrestartujesz główny tryb selekcji. Nie chcę ponownie uruchamiać trybu lisp za każdym razem, gdy aktualizuję słowa kluczowe, ponieważ mam kilka haczyków w trybie lisp, które chcę uruchomić tylko wtedy, gdy ładuję plik po raz pierwszy.

Czy istnieje inny sposób na aktualizację blokady czcionki, aby odczytał on wszystkie nowe słowa kluczowe i odpowiednio buforował? Wyłączenie blokady czcionki i używanie font-lock-fontify-buffer nie rozwiązuje problemu.

UPD: Dodano nagrodę - pytanie nadal jest aktualne. Potrzebuję sposobu na ponowne załadowanie słowa kluczowego lock-lock bez przeładowywania trybu głównego.

Odpowiedz

5

Ok, jak to zamiast o:

(defun my-font-lock-restart() 
    (interactive) 
    (setq font-lock-mode-major-mode nil) 
    (font-lock-fontify-buffer)) 
+0

Awesome, to wydaje się działać! – freiksenet

1

Wyzwalanie trybu głównego nie jest tym, co powoduje, że blokada czcionek działa poprawnie. Nie jestem dokładnie zaznajomiony z wewnętrznymi modułami SLIME lub seplic, ale ustawienie zmiennej powinno sprawić, że będzie działać. Przełączenie trybu blokady czcionki spowoduje, że blokowanie czcionek zacznie się odnawiać z myślą o nowych słowach kluczowych, podobnie jak font-lock-fontify-buffer.

Zwykle hakuję w trybie cperl i jest to prosta sprawa z cperl-init-faces (która ustawia wewnętrzne zmienne blokady czcionki) i restartem blokady font-lock. tryb lisp nie powinien być zbytnio różny, z wyjątkiem braku potrzeby połączenia z numerem cperl-init-faces;)

Edycja: niektóre eksperymenty z trybem interakcji lisp ujawniają, że nawet ponowne uruchamianie trybu blokady czcionek nie jest konieczne. Wystarczy zmienić słowa kluczowe blokujące czcionkę, o ile w jakiś sposób ponownie uruchomisz funkcję fontowania. (Edycja tekstu, font-lock-fontify-bufor, etc.)

+0

To bardzo dziwne. Czego używasz do modyfikowania słów kluczowych? Używam "font-lock-add-keywords". – freiksenet

+0

Ponowne uruchamianie blokad czcionek nie pomaga na przykład w trybie Pythona. Może to moja wersja Emacsa? Jaką masz wersję? Mam GNU Emacs 23.1.50.1 na x86-64 Ubuntu. – freiksenet

1

Można tymczasowo usunąć zmienną tryb haka i uruchom go:

(defun my-restart-lisp-mode() 
    (interactive) 
    (let ((lisp-mode-hook nil)) 
    (normal-mode))) 
+0

Fajnie, spróbuję tego. Zastanawiam się, dlaczego to nie działa jak jrockway opisany domyślnie :) – freiksenet

+0

OK, to jest lepsze, ale to wyłącza wszystkie haki, w tym na przykład hak szlamowy, co nie jest dobre :(Naprawdę zastanawiam się, czy można to zrobić to bez restartowania trybu – freiksenet

Powiązane problemy