Чи можливо створити буфер org-mode * scratch *?


13

Під час роботи над документом в emacs я часто відкриваю новий буфер, роблю щось в org-режимі, копіюючи вміст org-режиму та вставляючи його в свій документ. Я використовував для створення нового документа в режимі org кожен раз, коли мені потрібно було це зробити. Тепер у мене є файл, ~/.scratch.orgде я зберігаю цю роботу.

Чи можна було б створити *org-scratch*буфер, який поводився аналогічно *scratch*буфері?


3
Чи є щось незручне в роботі, M-x org-modeколи ви перебуваєте в *scratch*буфері?
xji

1
@XiangJi Навіть не думав цього робити. Це чудова ідея.
Брайан Фіцпатрік

Відповіді:


11

Початковий режим головного режиму для *Scratch*буфера керується змінною initial-major-mode- значення повинно бути символом (що, з точки зору непростої людини, означає поставити одну лапочку перед іменем основного режиму): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

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

EDIT : На підставі коментаря до оригінального плаката, ось приклад функції для створення буферів, які не відвідують файли, у послідовному порядку з основним режимом 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))) ))))

То чи можна було б мати два *Scratch*буфери тоді?
Брайан Фіцпатрік

Я додав зразкову функцію, яка створює нові буфери, які не відвідують файли, у числовому порядку, і я включив org-modeпозначення. Назву можна змінити з hello-worldтого, що бажає користувачеві, що розпізнає операційна система - наприклад, Windows не любить страйків.
законник

Дуже круто. Дякуємо, що подивилися на це!
Брайан Фіцпатрік

Я щасливий, що зміг допомогти. Я вирішив кинути результат і відобразити буфер одним махом - функціональність однакова, але функція виглядає трохи компактніше. :)
законник

11

Там називається розширення scratch, яке дозволяє створювати специфічні для режиму буфери подряпин. Він доступний у MELPA, тому вам слід легко встановити його.

Якщо цей пакет встановлений, коли ви знаходитесь у org-modeбуфері, ви можете запустити, M-xscratchщоб отримати буфер нуля org-mode.

Якщо ви надаєте аргумент префікса, ви отримуєте можливість вибрати режим (замість вибору поточного активного основного режиму).


Я спробував це, але я думаю, що буфер подряпин видаляється після виходу з програми emacs. Оригінальний буфер подряпин не робить, він також зберігається автоматично. Це правильно чи я щось пропустив?
Vivi

1
Якщо ви не зробите щось особливе, оригінальний *scratch*буфер не зберігається протягом сеансів, і він не зберігається при виході з emacs. Спробуйте запустити, emacs -qщоб отримати стандартну поведінку, немодифіковану вашим файлом init.
Франсуа Февотте

Цікаво, я цього не знав. Я щойно це досліджував, і з’ясував, що це особливість Аквамака. Я також з’ясував, що Aquamacs поставляється з командою Nb для створення клавіш для створення нової подряпини в іншому кадрі (цей не зберігається протягом сеансів).
Vivi

2
До речі, на MELPA існує пакет, який називається persistent-scratch, який стверджує, що створює стійкі буфери подряпин.
Віві

5

Я думаю, що один простий спосіб досягти цього - це просто запуститись, M-x org-modeколи ти знаходишся в *snatch*буфері, і, таким чином, включивши org-modeбезпосередньо. Це можна застосувати для включення будь-якого основного режиму.


Найпростіший спосіб на сьогоднішній день.
користувач2699

Це, безумовно, корисно. Мені подобається, що буфер подряпин виключно присвячений режиму org, оскільки я часто використовую буфер нуля для інших речей.
Брайан Фіцпатрік

2

Спробуйте це:

  1. Cx b (введіть назву нового буфера нуля, наприклад, "asdf")
  2. Mx org-mode (зміни основного режиму буфера "asdf")

Закриваючи цей буфер, ви не отримаєте запит на збереження його вмісту. Тобто ви отримуєте належний буфер подряпин. І *scratch*буфер залишається неушкодженим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.