如何避免在org src block的python代码块中弹出imenu-list-minor-mode的buffer

我在python模式的时候设置了自动启用该模式

(add-hook 'python-mode-hook 'imenu-list-minor-mode)

我在org中移除了该模式

(remove-hook 'org-mode-hook 'imenu-list-minor-mode)

但是当光标移动到org src python block的时候, imenu-list-minor-mode的buffer又自动启动了。不得不每次手动关闭。 如何解决呢?

可以试试,不过我没测试过

(add-hook 'python-mode-hook
	  #'(lambda ()
	      (unless (eq major-mode 'org-mode) 
	       (imenu-list-minor-mode))))

不行,在src block中,按下tab键,就出现了

把测试条件换成测试文件名后缀呢?

没看懂?怎么做?

换成这个试试 (bound-and-true-p org-src-mode)

顺便加入了楼上提到的对 org-src-mode 的测试

(add-hook 'python-mode-hook
          #'(lambda ()
              (unless (or (eq major-mode 'org-mode)
                          (string= (file-name-extension (buffer-name)) "org")
                          (bound-and-true-p org-src-mode))
                (imenu-list-minor-mode))))

不行,一打开org就出现,关闭掉后,在python src block中,按tab键,又出现了imenu buffer

你要自己多试呀,把上面几个变量先打出来看有什么可以判断的

(string-prefix-p "org" (file-name-extension (buffer-name))

update: 或者随便搜一下: org babel - How to turn off `emacs-lisp-checkdoc` of flycheck when edit source block in org-mode file? - Emacs Stack Exchange