Kiedy edytuję duże dokumenty, chciałbym zobaczyć, gdzie jestem, widząc kontur (bez zawartości) w osobnym buforze. Podobnie jak podczas czytania pliku PDF po lewej stronie znajduje się spis treści. (patrz poniżej)
W trybie organizacji można rozwinąć / zwinąć kontur. Ale czy możliwe jest umieszczenie statycznego konturu po lewej (lub po prawej) w osobnym buforze, aby po kliknięciu nagłówków drugi bufor przesunął się do tej pozycji?
Trochę tak, ale dla trybu org?
[Edit] jest bardzo zbliżony do tego, co chcę. Brakującym elementem układanki jest przeskoczenie w to samo miejsce po kliknięciu nagłówka / (lub dowolnego punktu naprawdę).clone-indirect-buffer
W tym celu próbowałem napisać kod: Przenieś do innego sklonowanego bufora w tym samym punkcie? (pozycja synchronizacji buforów pośrednich) (tryb org)
Ale nie działa, jeśli zawartość jest zwinięta. Jeśli można to zrobić, to bufor indonect-clone jest kompletnym rozwiązaniem tego problemu.
[Edit2 Solution]
Kod w linku powyżej i w odpowiedzi poniżej łączą nicejkę, aby rozwiązać przeskakiwanie tam iz powrotem.
;first call 'clone-indirect-buffer'. Then...
;This function works between buffer and it's clone.
(defun my/goto-same-spot-in-other-buffer ()
"Go to the same location in the other buffer. Useful for when you have cloned indirect buffers"
(interactive)
(let ((my/goto-current-point (point)))
(other-window 1)
(goto-char my/goto-current-point)
(when (invisible-p (point))
(org-reveal)))
)
;This function is a clone-to-buffer jump only:
; It does find the other buffer first thou instead of just jumping to the other
; window as does the function above.
(defun my/jump-to-point-and-show ()
"Switch to a cloned buffer's base buffer and move point to the
cursor position in the clone."
(interactive)
(let ((buf (buffer-base-buffer)))
(unless buf
(error "You need to be in a cloned buffer!"))
(let ((pos (point))
(win (car (get-buffer-window-list buf))))
(if win
(select-window win)
(other-window 1)
(switch-to-buffer buf))
(goto-char pos)
(when (invisible-p (point))
(show-branches)))))
(global-set-key (kbd "<s-mouse-1>") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "s-m") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "<C-s-mouse-1>") 'my/jump-to-point-and-show)
(global-set-key (kbd "C-s-m") 'my/jump-to-point-and-show)
źródło
C-c C-x b
luborg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
na przykład funkcji, ale wydaje się, że nie istnieje.Odpowiedzi:
Przychodzi mi na myśl kilka opcji. Pierwsze dwa są
speedbar
, z którymi rzekomo dobrze się bawiorg-mode
iminimap
chociaż nie korzystałem z nich, nie mogę ich osobiście ręczyć.Najprostszą (i jednocześnie najbardziej elastyczną) opcją byłoby użycie bufora pośredniego .
W praktyce chodzisz do
org
bufora, dla którego chcesz zarys, naciskaszM-x clone-indirect-buffer
(użyj,C-u M-x clone-indirect-buffer
jeśli chcesz kontrolować, jak nazywa się klon), a następnie bum, jest kolejna kopia bufora do użycia. Umieść ten klon w oknie lub ramce obok oryginalnego bufora i, w klonie, dostosuj kontur do własnych upodobań.Nie zapewnia ci funkcji „kliknij na nagłówek w zarysie”, o której wspomniałeś, ale ducha paska bocznego.
Edycja: w odpowiedzi na twój komentarz, oto proste polecenie, które po wywołaniu z klonu bufora przełączy się na bufor podstawowy i przeniesie punkt tam, gdzie kursor znajdował się w klonie bufora:
źródło
Co powiesz na: M-x
occur
RET^*+
RET(zauważ, że na końcu wyrażenia regularnego jest spacja).źródło
Po przeczytaniu odpowiedzi Dana i twojego opartego na niej rozwiązania, zebrałem to razem. To otwiera nowy, wąski, read-only clone na lewo od bieżącego bufora, a to wiąże
<mouse-1>
iRET
lokalnie w klonie, aby przejść do tej pozycji w buforze bazowej.Będzie to działać z
outline-mode
aoutline-minor-mode
, jak również tryby, które opierają się na nich, jak nporg-mode
. Znalazłem informacje na temat uzyskiwania lokalnych map kluczy, ale nie wiem, jak wybrać, którą z nich skopiować. Jest też strona, która ma funkcję automatycznego ustawiania specyficznych dla bufora trybów pomocniczych do ustawiania lokalnych kluczy bufora, ale wydaje się to poza zakresem tego problemu.źródło
outline-mode-map
zamiastorg-mode-map
udało mi się sprawić, że działaAUCTeX
zoutline-minor-mode
, co jest miłe.outline-mode
funkcjahide-body
ukrywa wszystko oprócz nagłówków.outline-mode-map
ihide-body
oraz kilka innych drobnych usprawnień.Wreszcie zostało to zaimplementowane w pakiecie
org-sidebar
:źródło
dwie propozycje niskiego czynszu (co robię) od nieprogramisty, który lubi używać aquamacs do edytora tekstu:
URUCHAMIANIE: wcięcie (aby pokazać kontur typu wodospadu, aby był lepiej widoczny jako całość)
służy to do przeglądania bufora na podstawie kart
i
+ OPCJE: H: N, gdzie N = = liczba poziomów, które chcesz zobaczyć w eksporcie HTML, co jest sugestią # 2
patrz: https://emacsclub.github.io/html/org_tutorial.html
źródło
Potrzebowałem czegoś podobnego, więc ustawiłem
outline-toc
tryb . Powinno działać w przypadku dokumentów w trybie org.źródło