He visto mucho esta pregunta. Pero ninguna de las respuestas solucionó mi problema: el modo menor permanece activado en otros modos.
Hasta ahora, he intentado:
(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))))
Mi problema con esos 2 enfoques es que semantic-mode
permanecerá en todos los modos principales una vez que visite un búfer de Python.
¿Cómo puedo desactivar semantic-mode
en todos los demás modos? ¿Tengo que apagarlo manualmente prog-mode-hook
?
Probar la solución 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))
Me rinde
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!
fuente
prog-mode-hook
(incluso si funcionaba). Sin embargo, ¿puedes decirme por qué usaste un#
? ¿Byte-compilado significa que se calculará en el primer paso que es .elc?#'
(comillas nítidas) donde se espera un argumento de símbolo de función . [Más lectura ](progn
lugar de(lambda ()
allí para envolver las cosas que deberían suceder si laif
condición es verdadera. También lo haríarequire
stickyfunc-enhance
desde el principio en la:init
referencia anteriorglobal-semantic-stickyfunc-mode
. En cuanto al error real, comenzaría una nueva pregunta con una pregunta más dirigida + etiquetas. Sin embargo, creo que el problema es con usted usando enlambda
lugar deprogn
.