Kan jeg lave emacs grep windows bare bruge det andet vindue til at åbne filer i?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har emacs foran mig.


Jeg har kørt en find-grep, og det har mange hits, som vises i et vindue. Filnavne vises i grøn som hyperlinks.


Jeg gør det eneste vindue med C-x 1.


Hvis jeg klikker på et filnavn, spalter vinduet lodret, og filen med den viste tekst vises i det andet vindue.


Hvis jeg klikker på yderligere filnavne, erstatter den nye fil den gamle fil, hvilket er, hvad jeg vil ske.


Så langt så godt...


Men hvis jeg ændrer størrelsen på windows, vil emacs periodisk (når jeg klikker) dele en af ​​de to vinduer igen, hvilket gør skærmen vanskelig at læse. Det vil derefter cykle åbne nye filer mellem de to nye vinduer. Lejlighedsvis åbner det flere vinduer og gør situationen værre. Hvis jeg lukker nogen af ​​disse nye vinduer, bliver de bare genåbnet igen.


Faktisk sker denne forfærdelige opførsel, selvom jeg ikke ændrer noget. Det synes bare at ske oftere, hvis jeg gør det.


Jeg vil gerne have emacs at stoppe buggering rundt og bare have et find-grep vindue og et 'display' vindue, og udskift altid displayvinduet med den nye fil. Jeg vil også gerne kunne indstille disse vinduer til de størrelser, der synes mest hensigtsmæssige.


Er der nogen måde at opnå dette på?


Eller kan nogen pege på mig på et essay om hvordan hele (erstatte indholdet af dette vindue/erstatte indholdet i et andet vindue/oprette et andet vindue ved at splitte) ting virker, så jeg kan gå og hack det sane.

Bedste reference


Kort løsning:
Prøv at gøre dette


(setq split-height-threshold nil
      split-width-threshold nil)


Dette forhindrer Emacs i at opdele vinduer automatisk (vandret eller lodret). Dette kan være uønsket i andre situationer, men det skal gøre jobbet. Prøv det i en uge eller så og se om det forstyrrer din strømning.


Jeg fandt også, at hvis punktet var i et af vinduerne, og jeg klikede på et link, åbnes filen i det næste vindue (hvis det er tilfældet).


Så hvis du vil gøre filen åben i det højre vindue (når du har mere end et vindue), kan du sikre dig, at punktet er i vinduet før det vindue du vil have.


Længere svar:


OKAY. Jeg kunne reproducere problemet. Sagen er vinduet, der viser, at filerne er ret store (brede eller lange), fordi du har ændret det, og Emacs ser, at bredden eller højden er større end den respektive tærskel og opdeler den ligeledes. Så vi skal enten gøre tærsklen højere eller afkræfte adfærden fuldstændigt.


Og bare for at besvare de sidste par spørgsmål:



  • For at få det nuværende vindue - (selected-window)

  • For at få det næste vindue - (next-window)

  • For at vælge et vindue - (select-window foo-window)

  • For at få buffer i det aktuelle vindue - (current-buffer)

  • For at få buffer i et vindue - (window-buffer foo-window)

  • At angive en buffer for et vindue - (set-window-buffer foo-window bar-buffer)



Jeg er sikker på at du kan hack sammen anstændigt vindue/buffer management funktioner ved hjælp af disse funktioner.


Du kan bruge C-h f for at få flere detaljer om hver af disse funktioner.
Se også Elisp manualen - http://www.chemie.fu-berlin.de/chemnet/use/info/elisp/elisp\_26.html[9]