Szukam mniejszego trybu, aby cały czas wypełniać akapity podczas pisania (podobnie jak w aggressive-indent-mode
przypadku wcięć). Musi być również wystarczająco inteligentny, aby wypełniać tylko komentarze (i być może ciągi znaków w zależności od języka).
Niektóre rzeczy, których próbowałem, to:
auto-fill-mode
automatycznie wypełnia się podczas pisania nowych akapitów, ale nie wypełnia się podczas edycji akapitów.refill-mode
stale uzupełnia akapity, ale próbuje zawinąć kod w akapity oraz komentarze.Próbowałem dodać
fill-paragraph
doafter-change-functions
haka, ale to psuje cofnięcie i wiele innych rzeczy (to prawdopodobnie wszystko można naprawić, ale wymagałoby to trochę wysiłku).
Jakieś lepsze pomysły?
hooks
fill-paragraph
comment
dshepherd
źródło
źródło
org-mode
, ale możesz spróbować rebox2Odpowiedzi:
Wymyśliłem minimalny sposób implementacji tej funkcjonalności: po prostu spacja, aby zadzwonić
(fill-paragraph)
!Do tej pory natknąłem się na kilka zastrzeżeń:
elisp-mode
(ewentualnie inni) wykonują jakiś fantazyjny kod, gdy dzwoniszfill-paragraph
, może to być lub nie być to, czego chcesz. Prawdopodobnie można to naprawić, testując, czy punkt jest w komentarzu lub w dokumencie, ale nie jestem pewien, jak to zrobić.Czasami nie możesz łatwo wprowadzić wielu spacji (ponieważ
fill-paragraph
zabija wszelkie spacje końcowe). Ponieważ spacja działa teraz takjust-one-space
, jakby zastąpienie tego wiązania prawdopodobnie było w porządku(insert " ")
.Zrobiłem tryb drobny zawierający tę funkcjonalność, jest on dostępny na github lub w pakiecie melpa
aggressive-fill-paragraph
.źródło
aggressive-fill-paragraph
jest o wiele mniej agresywna niżrefill-mode
, która jest agresywna aż do całkiem bezużytecznego (ponieważ nie możesz nawet cytować kogoś, kto>
nie zmienia trybu ponownego napełniania: nawet jeśli używasz wyrażeń regularnych do wymiany) .Jeśli podoba ci się zachowanie trybu napełniania (nie: p), ale nie, gdy się zachowuje, powinno być stosunkowo łatwo to naprawić, blokując go, gdy nie jesteś w odpowiednich warunkach
Na przykład
Zasadniczo usuwa funkcję wyzwalającą ponowne napełnianie
after-change-functions
i zastępuje ją funkcją, która dodatkowo sprawdzi, czy mamy komentarz, zanim zrobimy dokładnie to samo.źródło
refill-mode
:) Problemem jest to, żerefill-mode
używafill-region
zamiastfill-paragraph
, a zatem traci zdolność do honorowaniafill-paragraph-function
i czyni rzeczy potencjalnie bałagan