Jako programista chcę widzieć linijkę w określonej kolumnie (zwykle 80), więc widzę, kiedy przekraczam tę kolumnę, ale także, jak się do niej zbliżam, aby móc wcześniej sformatować kod.
Opcje, które do tej pory znalazłem, nie pozwalają osiągnąć tego celu:
whitespace-mode
,column-enforce-mode
icolumn-marker
podświetl poszczególne wiersze tylko wtedy, gdy tekst w wierszu już minąłfill-column
. Chciałbym zobaczyć, kiedy zbliżam się do kolumny, nie tylko kiedy ją przekraczam.fill-column-indicator
byłoby to dobre rozwiązanie, oprócz tego, że łamieauto-complete-mode
,company-mode
,avy
, i więcej. Są to kwestie, które wydają się trudne do ustalenia, z których każda wymaga indywidualnego obejście - na przykład zobaczyć tencompany-mode
problem i tenauto-complete-mode
problem , te ostatnie ponad dwa lata).
Czy są jakieś lepsze alternatywy?
display
font-lock
programming
Jorgen Schäfer
źródło
źródło
(set-window-margins nil 0 (max (- (window-width) 80) 0))
Więc jeśli masz okno o szerokości 120 znaków, zmniejszy to miejsce, w którym musisz wyświetlić kod, do 80 znaków. W ten sposób nie zepsuje konfiguracji okna i możesz ją wyłączyć, jeśli chcesz. Jeśli masz prążki, w rzeczywistości 80 linii zostanie narysowana linia.Odpowiedzi:
fill-column-indicator
jest najbardziej dojrzałym rozwiązaniem, a jeśli znajdziesz kod oparty na nakładce, z którym jest on w konflikcie, możesz dodać kod do zawieszenia,fci-mode
gdy aktywny jest konflikt kodu. Na przykład poniższy kod sprawia, że działa zauto-complete
:źródło
company-mode
.popup-create
ipopup-delete
- w zależności od przypadku użycia może być konieczne podanie różnych funkcji.Oto jedna opcja, która jest bardziej niezawodna, prawie nic nie psuje (czasami tryb firmowy jest godnym uwagi wyjątkiem), ale nie jest tak wygodna jak
fill-column-indicator
.Użyj formatu wiersza nagłówka, aby zaznaczyć 80. kolumnę nagłówka.
Powinno wystarczyć coś takiego:
Powinieneś zmienić liczbę spacji w tym pierwszym ciągu w zależności od rozmiaru lewej grzywki. Ale poza tym powinno to działać dość dobrze. Nie jest tak wygodny jak linijka w rzeczywistym buforze, ale pomaga.
Możesz również ustawić, aby dotyczyło to tylko buforów programujących.
Wynik:
powinieneś otrzymać coś takiego (pierwszy wiersz nie znajduje się w buforze, ale w nagłówku).
źródło
M-x ruler-mode
.Po wielu cierpieniach spowodowanych różnymi błędami
fill-column-indicator
, na dobre usunąłem go z mojej konfiguracji.Obecnie używam wbudowanej funkcjonalności Emacsa do podświetlania zbyt długich linii. To nawet wygląda lepiej, nie włączałbym
fill-column-indicator
teraz, nawet gdyby nie było błędów.Na początek możesz pobrać moją konfigurację:
Następnie włącz go tam, gdzie chcesz. Używam go tylko w kontekście programowania:
źródło
Emacs 27 będzie obsługiwał wskaźnik wypełnienia kolumny natywnie za pomocą lokalnego trybu buforowego
display-fill-column-indicator-mode
i jego globalnego odpowiednikaglobal-display-fill-column-indicator-mode
.Oto jest w akcji:
Quoth
(emacs) Displaying Boundaries
:źródło
Ta strona EmacsWiki zawiera wiele informacji na temat różnych sposobów oznaczania konkretnej kolumny lub w inny sposób informowania o jej przejściu.
Ten, którego używam, to pozycja linii trybu .
Ale inni to pokazano linię pionową w kolumnie ( Column Marker , Fill-Kolumna Indicator ) i stosując tryb białymi aby podświetlić tekst, który przechodzi obok kolumny.
(Jeśli chcesz, aby wiersz znajdował się daleko po prawej stronie całego tekstu we wszystkich wierszach, zawsze możesz go włączyć
picture-mode
, ale prawdopodobnie jest to przydatne tutaj tylko jako tymczasowe obejście).Zobacz także Znajdź długie linie, aby dowiedzieć się, jak znaleźć długie linie na żądanie.
źródło
Nie dokładnie to, czego chcesz, ale władca jak @ Malabarba ♦ zniszczy przestrzeń, oto lepsze rozwiązanie:
Jest wbudowany pakiet w
emacs-goodies-el
(zalecamy zainstalowanie go w terminalu) o nazwie highlight-poza-fill-column.el , dodaj to do swojego.emacs
lubinit.el
:Tekst powyżej
fill-column
80 we fragmencie zostanie podświetlony koloremred
. Możesz ustawić twarz tak, jak chcesz.źródło
Ponieważ
fill-column-indicator
jest dość ciężkie, to rozwiązanie pokazuje znak po prawej stronie bieżącej linii.Więc podczas pisania możesz zobaczyć limit linii, zanim go przekroczysz.
To definiuje tryb podrzędny
hl-line-margin-mode
:Jeśli używasz
evil-mode
i chcesz ograniczyć to do trybu wstawiania, możesz dodać następujące zaczepy:źródło