Ho visto questa domanda molto. Ma nessuna delle risposte ha risolto il mio problema: la modalità minore rimane attiva in altre modalità.
Finora ho provato:
(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))))
Il mio problema con questi 2 approcci è che semantic-mode
rimarrà attivo in tutte le principali modalità una volta che ho visitato un buffer Python.
Come posso disattivare semantic-mode
in tutte le altre modalità? Devo spegnerlo manualmente prog-mode-hook
?
Provando la soluzione di 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))
Mi cede:
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!
prog-mode-hook
(anche se funzionava). Tuttavia, puoi dirmi perché hai usato un#
? Il byte-compilato significa che verrà calcolato nel primo passaggio che è .elc?