首页 > 解决方案 > 当 emacs *scratch* 缓冲区打开时自动粘贴剪贴板内容

问题描述

大多数情况下,当我打开没有参数的 emacs 时,它是为了操作剪贴板内容。因此,我希望 emacs 启动并直接在打开的 *scratch* 缓冲区中显示剪贴板内容。

标签: emacsclipboard

解决方案


我将此添加到我的 .emacs 中,似乎可以完成这项工作:

;; Opening *scratch* with clipboard contents (if clipboard contains text)
(condition-case nil
    (setq initial-scratch-message (clipboard-yank))
    (error (setq initial-scratch-message nil))
)

注意:由于 *scratch* 缓冲区将始终与剪贴板文本一起打开,您可能还希望将 *scratch* 缓冲区的默认主要模式更改为文本

;; Defaulting *scratch* buffer to text-mode
(setq initial-major-mode 'text-mode)

当我打开一个空的 .txt 文件时,我最后还添加了它以执行相同的剪贴板粘贴

;; Opening empty txt files with clipboard contents (if clipboard contains text)
(add-hook 'find-file-hook 'paste-clipboard-for-empty-txt-files)
(defun paste-clipboard-for-empty-txt-files ()
  (when (and (string= (file-name-extension buffer-file-name) "txt")
                      (= (buffer-size) 0))
    (condition-case nil (clipboard-yank) (error nil))))

推荐阅读