awesome-tab 1.0 发布, 开箱即用的Emacs标签插件

怎么保证第一个就是你想切换的工作区分组

因为awesome-tab-build-helm-source 这个函数我是放在helm的init里面的(实际是spacemacs的post-init-helm),所以启动emacs的时候会自动调用,就会相应地弹出“Switch to group”,然后整个emacs停在这里等我选一个group。

实际上此时是emacs刚启动,基本上只有一个group(除了更新packages时,偶尔有2个groups的情况),所以我就得按一下回车,然后整个emacs的启动才会继续下去。虽然只多了这么一个enter操作,但是很别扭,不方便。

这个awesome-tab-build-helm-source我了解得不多,只是看你的readme里提到:用helm的话,加这个函数来和helm联合使用。

要不然的话,如果检测到只有一个group就直接选择,或者说,加一个default选项之类的?

你的配置有问题,这个功能是你需要切换分组时手动调用helm显示的。

为啥和emacs启动扯上关系了?还会卡住emacs启动?

你要解决的不要让emacs启动调用它,而不是一个工作区自动按enter

读一下helm source的使用方式吧,我能确定你并没有理解helm source是啥和什么时候用

浅色主题能否自动改成浅色的标签颜色

自己改face配色,不可能百搭的

好吧,我自己看看吧,主要是spacemacs的配置就那几个地方,然后和你的lazycat-emacs区别比较大,也没法参考你的。

我看你的init-helm.el里面就是直接在(require 'helm) … (require 'awesome-tab)后面执行(awesome-tab-build-helm-source),所以我就加在post-init-helm里面。大佬你的好多插件都很好,就是不知道怎么在spacemacs的框架下恰当使用。

哈哈哈哈,我不用spacemcs

其实你看看helm的文档就懂了

awesome-tab 用起来越来越爽了, 现在还有一个痛点是,如何快速的跳转到上次访问过的buffer , 场景是 从buffer B 跳转到buffer A , 而buffer A 是很早之前就打开过的buffer,所以A 与B 虽属同一个 tab group ,但是因为隔的太远,一屏的tab列表内看不到,所有想 跳转的时候,能否把A 挪到B之后,这样可以方便在两个buffer之间通过 awesome-tab-backward与 awesome-tab-forward切换 , 一个特例就是 如果是通过 awesome-tab-forward 或 awesome-tab-backward切换的buffer ,则不做上述挪动

这个方案不知可不可行, 大家可以一起讨论下

先想好,感觉这个逻辑有坑,哈哈哈哈

这两天感觉emace反应速度比以前快一些了,不知是不是因为用了最新的awesome-tab。这个版本可以改成2.0了。 :grinning:

可以先把awesome-tab复制到一个路径,在spacemacs的配置里写上

(add-to-list 'load-path (expand-file-name "~/.path/of/awesome-tab"))

然后require就行了。我之前用spacemacs的时候此方法可行。

应该和这个补丁有关 Significantly optimize the performance of switching tab by avoiding e… · manateelazycat/awesome-tab@d04e014 · GitHub

好的,谢谢你。路径的问题我也解决了。

上面提到的问题,我用了一个笨办法也“解决”了。就是把大佬的init-helm.el文件中的除了快捷键绑定的部分全部copy到post-init-helm,哦,对了,spaceamcs要再安装一个helm-ls-git包。然后,绑定helm-dwimSPC b i,这样,就算基本把awesome-tabspacemacs结合起来了。

简单观测了下,启动时间基本增加不多,多了大概零点几秒。启动大佬定义的那个helm-dwim函数有一秒左右的卡顿/延迟。算是基本完美了吧,以我这elisp水平就算可以了,哈哈。

好的,谢谢!刚拜读了一下。

我觉得你这个逻辑有点像spacemacs里的switch-alternate-buffer

(defun cm/alternate-buffer (&optional window)
  "Switch back and forth between current and last buffer in the
current window."
  (interactive)
  (let ((current-buffer (window-buffer window)))
    ;; if no window is found in the windows history, `switch-to-buffer' will
    ;; default to calling `other-buffer'.
    (switch-to-buffer
     (cl-find-if (lambda (buffer)
                   (not (eq buffer current-buffer)))
                 (mapcar #'car (window-prev-buffers window))) nil t)))

老王,我不喜欢powerline那带有锯齿的曲线,想用原来awesome-tab的直边分割,要怎么改回去?


暂时先revert回去了

你可以改里面的 powerline-wave-left 和 powerline-wave-right 成其他 powerline 主题样式.

1 个赞

如果哪天用 SVG 来画, 应该不会锯齿了.

不一样,我想要的不只是切换到上一个, 而是也能快速切换到上一个的上一个, 即, 想把最近访问过的buffer按访问顺序用awesome tab 排列起来,而不仅仅是按 buffer 被创建的顺序排

我想了一个方式:

  1. 监控 switch buffer 函数
  2. 切换的时候, 看看前后两个 buffer 的组, 如果是不相同的组, 不用管.
  3. 如果两个buffer是相同的组, 两个标签相邻, 不用管
  4. 如果两个buffer是相同的组, 但是两个标签不相邻, 一旦切换切换到新标签以后, 旧标签立即移动到新标签的旁边.

这种方式应该最容易实现, 同时兼容性最好 (不用管是怎么切换过来的).

就是不知道这样设计有没有更不方便的副作用?

先留言, 看看大家的意见.

1 个赞