我想直接打开emacs的时候,让它显示默认的欢迎的buffer。用emacs打开文件的时候,不显示默认的欢迎buffer,因为这样会将界面分成两个窗口,文件窗口就很小了。这样能否实现?
判断一下 command-line-args
的长度,如果超过 2 就说明是通过
emacs xxx
这种方式打开。
我这样写似乎不行:
(if (> (length command-line-args) 2)
(setq inhibit-startup-message t))
没有任何效果
(add-hook 'after-init-hook
(defun no-startup-screen ()
(if (>= (length command-line-args) 2)
(setq inhibit-startup-screen t
inhibit-startup-message t
inhibit-startup-buffer-menu t))))
1 个赞
这回成功了,谢谢。看来还是elisp语言不过关啊,得认真学习。
通常不建议打开欢迎 buffer。emacs可以保存desktop(下次打开时的界面保持上次退出时的界面)。
这个功能挺有用的。
保存desktop的功能是很好啊,我搜索一下先。
想了一下,也要分情况:如果直接打开emacs,那么就打开上次退出的界面;如果用emacs打开文件,就不需要打开上次的界面。这样可以利用上面的代码改动一下。
(add-hook 'after-init-hook
(defun if-desktop-save ()
(if (< (length command-line-args) 2)
(setq desktop-save-mode t))))
我先把欢迎界面直接设置关闭了,然后执行上面这个代码,没有报错,但这样也没有效果,不保存上次退出时的界面。
(desktop-save-mode 1)
;; 如果用emacs打开文件则只打开文件,如果直接打开emacs则开启上次退出的非空界面
(add-hook 'after-init-hook
(defun if-desktop-save ()
(if (< (length command-line-args) 2)
(progn
(setq desktop-dirname "~/.emacs.d/desktop/"
desktop-base-file-name "emacs.desktop"
desktop-base-lock-name "lock"
desktop-path (list desktop-dirname)
desktop-save t
desktop-files-not-to-save "^$" ;reload tramp paths
desktop-load-locked-desktop nil
desktop-auto-save-timeout 10)
(desktop-save-mode 1)
(desktop-read)))))
这个还是不行,要把条件判断放在desktop-read前面才对。打开文件时,不打开上次的界面。
;; 如果用emacs打开文件则只打开文件,如果直接打开emacs则开启上次退出的非空界面
(add-hook 'after-init-hook
(defun if-desktop-read ()
(setq desktop-dirname "~/.emacs.d/desktop/"
desktop-base-file-name "emacs.desktop"
desktop-base-lock-name "lock"
desktop-path (list desktop-dirname)
desktop-save t
desktop-files-not-to-save "^$" ;reload tramp paths
desktop-load-locked-desktop nil
desktop-auto-save-timeout 10)
(desktop-save-mode 1)
(if (< (length command-line-args) 2)
(desktop-read))))
以上缩进有点问题