Eu já vi muito essa pergunta. Mas nenhuma das respostas resolveu meu problema: o modo secundário permanece ativado nos outros modos.
Até agora, eu tentei:
(use-package stickyfunc-enhance
:config
;; (add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode)
;; (defun turn-on-semantic () (semantic-mode 1) (require 'stickyfunc-enhance))
;; (add-hook 'python-mode-hook 'turn-on-semantic)
(add-hook 'python-mode-hook
(lambda ()
(add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode)
(semantic-mode 1)
(require 'stickyfunc-enhance))))
Meu problema com essas duas abordagens é que semantic-mode
permanecerá ativado em todos os principais modos quando eu visitar um buffer Python.
Como posso desligar semantic-mode
em todos os outros modos? Preciso ativá-lo manualmente prog-mode-hook
?
Tentando a solução de kaushalmodi:
(use-package stickyfunc-enhance
:init
(add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode)
:config
(defun me/enable-semantic-maybe ()
"Maybe enable `semantic-mode'."
(if (derived-mode-p 'python-mode)
(lambda ()
(semantic-mode 1)
(require 'stickyfunc-enhance))
(semantic-mode -1)))
(add-hook 'change-major-mode-hook #'me/enable-semantic-maybe))
Rende-me:
Making python-shell-interpreter local to *Python Internal [792caf12c778150badeeede64c068cee]* while let-bound!
Making python-shell-interpreter-args local to *Python Internal [792caf12c778150badeeede64c068cee]* while let-bound!
fonte
prog-mode-hook
(se até estava funcionando). No entanto, você pode me dizer por que usou um#
? Byte-compiled significa que será computado na primeira etapa que .elc é?#'
(aspas nítidas) onde um argumento de símbolo de função é esperado. [Mais leitura ](progn
vez de(lambda ()
lá para embrulhar as coisas que deveriam acontecer se aif
condição fosse verdadeira. Também eu gostariarequire
stickyfunc-enhance
no começo:init
antes de você fazer referênciaglobal-semantic-stickyfunc-mode
. Quanto ao erro real, eu começaria uma nova pergunta com uma pergunta mais direcionada + tags. Eu acho que embora o problema esteja com você usando emlambda
vez deprogn
.