突然想到标题栏实际上可以当标签页栏来使用

比如我用 Spacemacs 的 Project Layout,

然后把 title format 定义成:

(defun lx/layout-format-name (name pos)
  "Format the layout name given by NAME for display in mode-line."
  (let* ((layout-name (if (file-directory-p name)
                          (file-name-nondirectory (directory-file-name name))
                        name))
         (string-name (format "%s" layout-name))
         (current (equal name (spacemacs//current-layout-name)))
         (caption (concat (number-to-string (if (eq 9 pos) 0 (1+ pos)))
                          ". " string-name)))
    (if current
        (propertize (concat "❰❰ " caption " ❱❱") 'face 'warning)
      caption)))


(defun lx/layouts-for-title-bar ()
  "Return a one liner string containing all the layout names."
  (let* ((persp-list (or (persp-names-current-frame-fast-ordered)
                         (list persp-nil-name)))
         (formatted-persp-list
          (concat " "
                  (mapconcat (lambda (persp)
                               (lx/layout-format-name
                                persp (position persp persp-list)))
                             persp-list "          "))))
    formatted-persp-list))

(setq frame-title-format '(:eval (lx/layouts-for-title-bar))))

然后把 s-number 绑定到切换 persp:

(global-set-key (kbd "s-0") 'spacemacs/persp-switch-to-0)
(global-set-key (kbd "s-1") 'spacemacs/persp-switch-to-1)
... ...
3 个赞

标签页是邪教……

是吗,还有这说法吗

说笑。这个虽然是 vim 特色功能 不过的确已经有 Emacs Tabbar 插件了。

tabbar 我试用了一下,可能是没设置好,好多隐藏 buffer 都显示出来,后来索性不用了。

Emacs 重来都是全屏 什么 tool-bar 。。。 什么全部都隐藏的路过。。。

1 个赞

所以说 tab bar,menu bar,tool bar,scroll bar,titile bar,side bar 都是邪教。

话说macOS下是支持系统原生标签页的。 只不过触发条件未知。而且官方版在关闭标签的时候会闪退,mac port倒没这问题。

这些 bar/tree,在单手操作(鼠标)的时候还有点用,全键盘的时候就鸡肋了。当两个标签显示的是同一个文件,强迫症患者还能忍吗?

看你用的是spacemacs,实际 SPC l就可以看到所有的layout呀。放到标题栏上就不能点了,感觉用途不大。

我是把标题栏改成完整路径,这样就方便看当前目录了。

;;让frame标题始终显示完整路径。http://stackoverflow.com/questions/3669511/the-function-to-show-current-files-full-path-in-mini-buffer
  (setq frame-title-format
        (list (format "%s %%S: %%j " (system-name))
              '(buffer-file-name "%f" (dired-directory dired-directory "%b"))))
1 个赞

把layout放到标题栏是个不错的主意,按照你的代码实现了

如何在layout前面放些自己的内容啊,比如几个特定的文字和当前文件的路径?

https://github.com/lululau/dot_files/blob/use-ruby-mode/emacs-config/funcs/title-format.el

这是我目前的配置

这个配置不错,赞。