Автоматическое закрытие буфера с нуля

Что я должен написать в моем файле .emacs, чтобы буфер *scratch* закрывался при открытии Emacs?

Ответы

Ответ 1

(kill-buffer "*scratch*")

Ответ 2

Не совсем ответ на ваш вопрос, но вам может понравиться знать, что при запуске вы можете выбрать другой буфер, или изменить содержимое буфера * scratch *. Например:

;; Make *scratch* buffer blank.
(setq initial-scratch-message nil)

;; Make the buffer that opens on startup your init file ("~/.emacs" or
;; "~/.emacs.d/init.el").
(setq initial-buffer-choice user-init-file) 

В первом примере буфер * scratch * будет пустым. Во втором примере буфер * scratch * будет по-прежнему существовать, но пользовательский init файл будет сфокусирован.

Ответ 3

Вы можете настроить:

initial-buffer-choice

Я установил его для своего homedir: "~/" для запуска в режиме Dired.

Ответ 4

Я подозреваю, что вы, вероятно, часто запускаете emacs, возможно, даже один раз для каждого файла, который хотите изменить. (Если я ошибаюсь в этом предположении, то следующие комментарии к вам не относятся.)

Emacs предназначен для запуска, а затем запускается несколько недель или месяцев, пока вы посещаете различные файлы, так как вам нужно их редактировать. Emacs обрабатывает несколько файлов очень хорошо, поэтому вряд ли нужно даже убивать связанные буферы, пока вы не получите 50 или 100 из них. Я запускаю emacs сразу после запуска оконной системы и запускается до тех пор, пока моя система не выключится или не сработает. Исходный буфер нуля не является проблемой в этом режиме, потому что я вижу это нечасто.

Ответ 5

Я использую это, чтобы убить буфер нуля и открыть новый буфер в текстовом режиме под названием Untitled. Нашел его в новостной группе и немного изменил.

(defun my-close-scratch ()
  (kill-buffer "*scratch*")
  (if (not (delq nil (mapcar 'buffer-file-name (buffer-list))))
      (new-untitled-buffer)
    ))

(defun my-emacs-startup-hook ()
  (my-close-scratch))
(add-hook 'emacs-startup-hook 'my-emacs-startup-hook)

(defun new-untitled-buffer ()
  "Opens a new empty buffer."
  (interactive)
  (let ((buf (generate-new-buffer "Untitled")))
    (switch-to-buffer buf)
    (normal-mode)
    (setq buffer-offer-save t))
  (add-hook 'kill-buffer-query-functions
            'ask-to-save-modified nil t)
  )

Чтобы закрыть Untitled при открытии файлов из filemanager, когда emacs не открыт, я использую это:

(defun my-close-untitled ()
  (if (get-buffer "Untitled")
      (kill-buffers-by-name "Untitled")))

(add-hook 'find-file-hook 'my-close-untitled)

Ответ 6

Правильный способ - добавить inhibit-startup-screen в раздел custom-set-variables вашего файла .emacs.

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(inhibit-startup-screen t)
)