Ich habe diese Frage oft gesehen. Aber keine der Antworten hat mein Problem behoben: Der Nebenmodus bleibt in anderen Modi aktiviert.
Bisher habe ich versucht:
(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))))
Mein Problem mit diesen beiden Ansätzen ist, dass semantic-mode
sie in allen wichtigen Modi aktiviert bleiben, sobald ich einen Python-Puffer besucht habe.
Wie kann ich semantic-mode
in allen anderen Modi ausschalten ? Muss ich es manuell ausschalten prog-mode-hook
?
Kaushalmodis Lösung versuchen:
(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))
Ergibt mich:
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!
quelle
prog-mode-hook
(wenn es überhaupt funktioniert hat). Können Sie mir jedoch sagen, warum Sie a verwendet haben#
? Bedeutet bytekompiliert, dass es im ersten Schritt von .elc berechnet wird?#'
(scharfes Anführungszeichen), wenn ein Funktionssymbolargument erwartet wird. [Mehr lesen ](progn
stattdessen(lambda ()
dort verwenden, um die Dinge zu verpacken, die passieren sollten, wenn dieif
Bedingung erfüllt ist. Auch ich würderequire
stickyfunc-enhance
ganz am Anfang in der:init
vor Ihnen genanntenglobal-semantic-stickyfunc-mode
. Was den eigentlichen Fehler betrifft, würde ich eine neue Frage mit einer gezielteren Frage + Tags beginnen. Ich denke jedoch, dass das Problem bei Ihnen liegt,lambda
anstattprogn
.