按理说:0blayout,切分多个窗口时可以0blout-new保存当前窗口布局,并且给起个别名,方便布局切换。
配置如下:
(add-to-list 'load-path
(expand-file-name “lisp” user-emacs-directory))
(require '0blayout)
(0blayout-mode 1) ; Activate 0blayout-mode
1.为什么我new的时候新起的别名总是成为default!
2.无论new多少个,总是只有最后一个次的布局(而且还是default别名),和scratch。
- 版本是哪一个?
2.变量 0blayout-alist 的值是多少(C-h v 0blayout-alist)
他的核心是 window-configuration
3…建几个窗口,其中一个是*scratch* 在*scratch* 中输入以下代码并按 C-xC-e
(setq zz (current-window-configuration ) C-xC-e
4…只留下*scratch* 在*scratch* 中输入以下代码并按 C-xC-e
(set-window-configuration zz) C-xC-e
5…复制下面的代码到 *scratch* 在最后的 “)”后 按 C-xC-e ,如果得到zxcvbn 那就是你操作的问题了\
(progn
(set-frame-parameter nil '0blayout-current “zxcvbn”)
(print (frame-parameter nil '0blayout-current))
) C-xC-e

0blayout-alist默认是nil ,创建一个布局后值变为window-configuration
也能保存多个布局,必须先回到只有一个窗口的scratch下切分好布局后,然后C-c C-l C-c创建新布局。
问题1: 当提一次创建的时候,我想给他起一个别名,但是却默认为default,而scratch却是我起别名的窗口。
问题2: C-c C-l C-c 后第一次执行C-c C-l C-b不会显示刚刚创建的别名,第二次才出现。
问题3: 每次新起的别名都会给scratch 新布局的别名值是scratch之前的别名值。就像
新别名值 <-----> scratch 互换一样。
(defun 0blayout-push (layout-name)
"0blayout saving function.
Argument LAYOUT-NAME Name of the layout."
(interactive "sEnter name of current layout: ")
(set-frame-parameter nil '0blayout-current layout-name)
(0blayout-save)
(message "Saved layout: '%s'" (0blayout-get-current-name))
)
(defun 0blayout-pop (layout-name)
"0blayout pop function.
Argument LAYOUT-NAME Name of the layout."
(interactive
(list
(completing-read "Layout to pop up: " 0blayout-alist)))
(let ((layout (assoc (intern layout-name) 0blayout-alist)))
(if (eq layout nil)
(message "No layout with name: '%s' is defined" layout-name)
(progn
(set-window-configuration (cdr layout))
(0blayout-set-current-name layout-name)
(message "Pop up to layout: '%s'" layout-name)))))
(define-key global-map "\M-l" '0blayout-push)
(define-key global-map "\M-k" '0blayout-pop)
将以上代码复制到 *scratch* 然后 M-x eval-buffer (也可以是.emac 或是 0blayout.el)
再然后 M-l 保存当前的布局 M-k切换到以前保存的布局
1 个赞