Czy można stworzyć bufor * scratch * w trybie org?

13

Podczas pracy nad dokumentem w emacs często otwieram nowy bufor, robię coś w trybie org, kopiuję zawartość trybu org i wklejam do mojego dokumentu. Za każdym razem, gdy musiałem to robić, tworzyłem nowy dokument w trybie organizacji. Teraz mam plik, w ~/.scratch.orgktórym przechowuję moją pracę.

Czy byłoby możliwe utworzenie *org-scratch*bufora, który zachowywałby się analogicznie do *scratch*bufora?

Brian Fitzpatrick
źródło
3
Czy jest coś niewygodnego w pracy M-x org-modew *scratch*buforze?
xji
1
@XiangJi Nawet nie pomyślałem o tym. To świetny pomysł.
Brian Fitzpatrick

Odpowiedzi:

11

Początkowy tryb główny *Scratch*bufora jest kontrolowany przez zmienną initial-major-mode- wartość musi być symbolem (co w laikacie oznacza umieszczenie pojedynczego cudzysłowu przed nazwą trybu głównego): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

(setq initial-major-mode 'org-mode)

EDYCJA : Na podstawie komentarza oryginalnego plakatu, tutaj jest przykładowa funkcja do tworzenia buforów nie odwiedzających plików w kolejności sekwencyjnej z głównym trybem org-mode:

(defun my-scratch-buffer ()
"Create a new scratch buffer -- \*hello-world\*"
(interactive)
  (let ((n 0)
        bufname buffer)
    (catch 'done
      (while t
        (setq bufname (concat "*hello-world"
          (if (= n 0) "" (int-to-string n))
            "*"))
        (setq n (1+ n))
        (when (not (get-buffer bufname))
          (setq buffer (get-buffer-create bufname))
          (with-current-buffer buffer
            (org-mode))
          ;; When called non-interactively, the `t` targets the other window (if it exists).
          (throw 'done (display-buffer buffer t))) ))))
lista prawnicza
źródło
Czy byłoby możliwe posiadanie dwóch *Scratch*buforów?
Brian Fitzpatrick
Dodałem przykładową funkcję, która tworzy nowe bufory nie odwiedzające plików w kolejności numerycznej, i załączyłem org-modeoznaczenie. Nazwę można zmienić hello-worldna dowolną, którą użytkownik rozpozna przez system operacyjny - np. System Windows nie lubi gwiazdek.
prawnik
Bardzo fajny. Dzięki za obejrzenie tego!
Brian Fitzpatrick
Cieszę się, że mogłem pomóc. Postanowiłem rzucić wynik i wyświetlić bufor za jednym zamachem - funkcjonalność jest taka sama, ale funkcja wygląda w ten sposób nieco bardziej zwięźle. :)
lawlist
11

Istnieje tak zwane rozszerzenie scratch, które pozwala tworzyć bufory scratch specyficzne dla trybu. Jest dostępny w MELPA, więc powinieneś być w stanie go łatwo zainstalować.

Po zainstalowaniu tego pakietu, gdy jesteś w org-modebuforze, możesz uruchomić, M-xscratchaby pobrać bufor scratch org-mode.

Jeśli podasz argument przedrostka, otrzymasz możliwość wyboru trybu (zamiast wybierania aktualnie aktywnego trybu głównego).

François Févotte
źródło
Próbowałem tego, ale myślę, że bufor kasowania jest usuwany po wyjściu z emacsa. Oryginalny bufor scratch nie, automatycznie zapisuje się również. Czy to prawda, czy coś przeoczyłem?
Vivi
1
O ile nie zrobisz czegoś specjalnego, oryginalny *scratch*bufor nie będzie trwał w trakcie sesji, ani nie zostanie zapisany po wyjściu z emacsa. Spróbuj uruchomić, emacs -qaby uzyskać standardowe zachowanie, niezmodyfikowane przez plik init.
François Févotte
Interesujące, nie wiedziałem tego. Właśnie to zbadałem i odkryłem, że jest to cecha Aquamacs. Dowiedziałem się również, że Aquamacs jest wyposażony w skrót Command-N, aby utworzyć nową rysę w innej ramce (ta nie jest trwała między sesjami).
Vivi
2
Nawiasem mówiąc, istnieje pakiet na MELPA o nazwie persistent-scratch, który twierdzi, że tworzy trwałe bufory scratch.
Vivi
5

Myślę, że jednym prostym sposobem na osiągnięcie tego jest po prostu uruchomienie, M-x org-modegdy jesteś w *snatch*buforze, a więc włączenie org-modebezpośrednio. Można to zastosować do włączenia dowolnego trybu głównego.

Xji
źródło
Jak dotąd najprostszy sposób.
user2699,
Jest to z pewnością przydatne. Lubię bufor buforowy poświęcony wyłącznie trybowi org, ponieważ często używam bufora scratch do innych celów.
Brian Fitzpatrick
2

Spróbuj tego:

  1. Cx b (wpisz nazwę nowego bufora scratch, np. „Asdf”)
  2. Tryb org Mx (zmień główny tryb bufora „asdf”)

Po zamknięciu tego bufora nie otrzymasz zapytania o zapisanie jego zawartości. Czyli masz odpowiedni bufor scratch. A *scratch*bufor pozostaje nienaruszony.

cofnie się
źródło