xiyang
1
参考imenu-list
重写了一个类似tagbar
的插件 maple-imenu , 其实imenu-list已经足够了, 唯一的缺点就是和golden-ratio
搭配起来很难受
imenu-list与golden-ratio冲突如何解决?
原本想要自定义一下,但看了源码之后, 发现需要改动的地方越来越多, 最后不如自己重写
使用: 下载下来复制到 $HOME/.emacs.d/site-lisp/maple-imenu
目录, 然后
(use-package maple-imenu
:load-path "site-lisp/maple-imenu"
:commands (maple-imenu)
:config
(with-eval-after-load 'evil
(evil-make-overriding-map maple-imenu-mode-map 'normal)))
代码和逻辑与imenu-list
比起来更加通俗易懂,如果有什么需要,自定义一下即可
6 个赞
我希望能把imenu-list单独嵌到左边的下半部分(就和大部分IDE的功能一样),因为你在写代码的时候除了outline之外,还有一个工程窗口,而两个竖着的窗口中间夹一个代码区会让人很不舒服。
楼主可以看一下这个帖子:imenu里的数据能单独显示在一个窗口里吗?
不知道楼主的插件是否能解决这个问题。
我最后解决方案是使用了treemacs集成的imenu(但仍然不是很喜欢这个方案)
这个暂时没有好的办法, Side Windows貌似不能再split-window
imenu-list
其实够用了。为了简单,我也直接使用了treemacs
自带的。另外一个就是 lsp-mode
里带的lsp-ui-imenu
,挺好的。楼主可以把 maple-imenu
发布到 melpa 了。
例图中的python代码的这个list,是要依托于lsp-mode么?还是treemacs自然就可以啦?谢谢!
我暂时lsp用于python问题多多,1月份那版没跑起来,于是回去用jedi了。你这个imenu看着很心动,想试试。我现在用的neotree,也就看看文件,没什么用,基本不开。
图上的是 lsp-ui-imenu 的效果,treemacs 的效果如下:
1 个赞
这些tag list 类的插件都有一个共同的问题,就是切换文件后不自动刷新内容,导致我其实用的最多的还是counsel-imenu
,只有浏览时偶尔开一下这些。是使用姿势不对吗?
同大量使用counsel-imenu
的飘过~
求哪位使用treemacs这类侧边栏的大大提供个正确姿势
(可能我们得重开个贴?)
xiyang
12
应该是因为只添加了
(add-hook 'after-save-hook 'maple-imenu-update)
如果想要切换文件自动刷新,可能还需要设置
advice-add 'select-window
1 个赞
treemacs可以重构代码吗?也就是,在treemacs中改函数名或变量名,所有文件自动跟着变动?
xiyang
16
偶然间发现其实 Side Windows默认是支持多窗口的, 以上是 neotree 与 maple-imenu 搭配使用的效果, 相关配置
(use-package neotree
:config
;; (setq neo-mode-line-type 'none)
(defun neo-default-display-fn(buffer _alist)
(let ((window-pos (if (eq neo-window-position 'left) 'left 'right)))
(display-buffer-in-side-window buffer `((side . ,window-pos)(slot . -2))))))
(use-package maple-imenu
:ensure nil
:commands (maple-imenu)
:config
(setq maple-imenu-display-alist '((side . left) (slot . -1)))
(defun maple-sidebar()
(interactive)
(maple-imenu)
(neotree-toggle)))
注意(slot . -2)
这个参数, maple-imenu默认是(slot . -1)
, neotree设置为-2
代表neotree显示在maple-imenu的上面,反之则为下,相同则单独显示
2 个赞
有没有imenu 可以显示参数列表的,比如java 中那么多重载的方法,方法显示都是同一个名字。
我使用 maple-imenu一段时间了,发现 maple-imenu的窗口不能扩大,有时候一些函数很长,想把窗口放大些,但是 maple-imenu没有这个功能。但是 imenu-list
就可以。
xiyang
19
我加了一个maple-imenu-autoresize
的选项,你可以测试一下
1 个赞
然后我在使用的时候,还有一个不太好的地方,就是在这个imenu的buffer中仍然可以打开其他buffer,因为这个buffer很窄,就特别难看。建议不能打开其他buffer.
第二点:这个mode-line 的显示也不是很好。对比一下: