Emacs Org-Mode: Wyłącz numery linii

Ostatnio przeniosłem się z vim do Emacs, ponieważ chcę użyć org-mode. Otworzyłem linię ~10000, plik 50kb w Emacs23 Org-mode i dodał około 10 pozycji pierwszego poziomu. Wydajność na quad-core z 3GB RAM w Emacs23 pod Ubuntu 10.04/32bit był tak powolny, że był bezużyteczny. Znalazłem dwa wątki na liście dyskusyjnej Org-mode. Wydaje się, że włączenie linum powoduje powolne działanie. Mogę żyć bez numerów linii w plikach .org, jeśli muszę, ale Nie chcę wyłączać numerów linii dla wszystkich edytowanych plików. Jeśli mam " żyć " w 'Emacsie', będę chciał numery linii do wszystkich innych plików.

Jak mogę wyłączyć linum tylko dla niektórych lub wszystkich .org plików? Czy jest to możliwe, jeśli mam kilka plików otwartych w Emacs i przełączam się między nimi? Znalazłem trochę dyskusji na temat wyłączania numerów linii dla głównych trybów tutaj, ale nie było nic, co mógłbym zaimplementować (chociaż skrypt linum-off.el wspomniał na stronie wygląda obiecująco, nie znam (jeszcze) (E)Lispa, więc nie mogę go zmienić tak, jak bym tego potrzebował).

Zaktualizowałem Org-mode z wersji 6.21 b, która pojawiła się wraz z Emacs23 do wersji 7.5, ale to nie robi różnicy. Wydajność w Emacs GUI jest tak zła, że aplikacja w ogóle nie odpowiada. Wydajność z -nw jest "lepsza" , ale nadal bezużyteczna.

Author: SabreWolfy, 2011-03-08

6 answers

Spróbuj dodać to do swojego .emacs:

(defun nolinum ()
  (global-linum-mode 0)
)
(add-hook 'org-mode-hook 'nolinum)

Zakłada się, że do numerowania linii używasz linum, a nie czegoś innego. W każdym razie, możesz dodać ten hook do trybu org, aby wyłączyć wszystko, co może spowolnić org tylko, Gdy używasz trybu org.

Disclaimer: nie mam zainstalowanego linum, więc nie mogę tego przetestować, ale powinno działać.

 10
Author: Rafe Kettler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-08 07:59:52

Jeśli wpiszesz m-x customize, przejdź do Linum w grupie Convenience, Zmień Linum na off lub zmień Linum Delay NA on, znacznie poprawi to wydajność.

Na moim laptopie (3 GB RAM, dwurdzeniowy) wada wydajności (w porównaniu z wyłączonym linum) jest niezauważalna, jednak na moim netbooku nadal mogą występować niewielkie problemy z wydajnością z plikiem 130kb linii ~3000 (opóźnienie ~ 50-150 ms podczas stronicowania).

 8
Author: blake314,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 14:35:14

linum-off.el wspomniany w moim question rozwiązał ten problem. Instrukcje są w pliku: umieść plik w ścieżce ładowania Emacsa i dodaj (require 'linum-off) do ~/.emacs. Ten skrypt wyłącza numerowanie linii tylko dla określonych trybów. Przetestowałem go i działa dobrze.

 5
Author: SabreWolfy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-13 10:37:51

Użyj nlinum , znacznie szybszej alternatywy.

 4
Author: mcandre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 18:02:27

Próbowałem następujących, które wyszły całkiem nieźle:

(defun nolinum ()
  (interactive)
  (message "Deactivated linum mode")
  (global-linum-mode 0)
  (linum-mode 0)
)

(global-set-key (kbd "<f6>") 'nolinum)

(add-hook 'org-mode-hook 'nolinum)

Oczywiście, nie potrzebujesz wiązania klawiszy. Sugeruję pozostawienie go w celach testowych i wyłączenie go, jeśli wszystko działa dobrze.

 2
Author: phimuemue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 19:47:12

Wystarczy dodać (add-hook 'org-mode-hook (lambda () (linum-mode 0))).

 2
Author: Jaime Arias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-24 17:17:03