怎样阻止 imenu 自动排序?

imenu 可以生成 org 标题的菜单,但是总是按照字母顺序排列,有没有什么办法禁用排序?

我试了把 imenu-sort-function 设为 nil,但是没有用?

现在是这样的:

可以看到 imenu 把有子项目的都当作组来看待,将组放在了最前面,正确顺序应该是:

  • 摘要
  • 引言
  • 正文
  • 讨论
  • 致谢
  • 作者
  • 用法

有什么办法可以阻止它这样做,并按照原生的顺序,也就是文档中的顺序来排列菜单项呢?

**更新:**问题已更新,最新问题见 4 楼: 怎样阻止 imenu 自动排序? - #4,来自 et2010

Wow!emacswiki真是万能的,搜一下居然有现成的办法,简直了。。。。

https://www.emacswiki.org/emacs/ImenuMode

我的问题大部分都是我自己解决的,版主不会认为我灌水吧。。。。

看来以后得加强搜索,实在搜不到再来这问。

还没有解决,看下面

还没有解决,wiki里面的方法我试用了但是无效,我把 defcustom 和修改后的函数都放在下面 form 当中:

(with-eval-after-load "imenu"
   ....
)

但不知为什么,没有用

我查看了一下要 hack 的函数,原来围绕这个函数有一条 advice,是不是因为这条 advice 导致我的 hacking 不生效?这样的情况应该怎样做才能使 hack 生效?直接改源代码肯定是不行,因为 imenu 是emacs的内建包。

@xuchunyang

我把 advice 删除了,但是仍然不工作

搞定了,原来是wiki上搞错了,把 not 删掉就ok了,等下我编辑一下wiki

修改已提交:

有相同问题的同学可以直接复制 wiki 上的代码了