Можно ли создать буфер «режим нуля» *?


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. орг / программное обеспечение / Emacs / ручной / html_node / Elisp / Auto-Major-Mode.html

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

РЕДАКТИРОВАТЬ : на основе комментария оригинального постера, вот пример функции для создания буферов, не посещающих файлы в последовательном порядке с основным режимом 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. Оригинальный буфер очистки не делает этого, он также автоматически сохраняет себя. Это правильно или я что-то упустил?
— Виви

1
Если вы не сделаете что-то особенное, исходный *scratch*буфер не сохраняется между сеансами и не сохраняется при выходе из emacs. Попробуйте запустить, emacs -qчтобы получить стандартное поведение, не измененное вашим файлом инициализации.
— Франсуа Февот

Интересно, я этого не знал. Я только что исследовал это, и я обнаружил, что это особенность Aquamacs. Я также обнаружил, что Aquamacs поставляется с комбинацией клавиш Command-N для создания новой царапины в другом кадре (этот не сохраняется во время сеансов).
— Виви

2
Кстати, в MELPA есть пакет с именем persistent-scratch, который утверждает, что создает постоянные чистые буферы.
— Виви

5

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


Самый простой способ на сегодняшний день.
— user2699

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

2

Попробуй это:

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

При закрытии этого буфера вы не получите запрос на сохранение его содержимого. Т.е. вы получаете правильный буфер для царапин. И *scratch*буфер остается целым.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.