Skeletons such as python-skeleton-if in python.el has been giving me problems - I never use them but they get invoked unexpectedly. If they are invoked, it is a pain to get out of it and also it messes up my code.

I tried to use python-mode instead of python.el but it seems it gets loaded by other packages (such as lisp/cedet/semantic/wisent/python.elc) when I look at load-history and thus whenever I open a .py file python.el is always loaded.

Since the skeletons are my main issue, I was wondering if there is a way to completely disable all the skeletons?

---- Edited ----

It seems like Evil mode is interaction with python.el. Specifically, evil-normal-state after typing if invokes python-skeleton-if.

For example, if I type if and then press ESC, it invokes python-skeleton-if.

2 Answers 2


In turns out that evil-mode was calling expand-abbrev because expand-abbrev was in evil-insert-state-exit-hook. Having (setq evil-want-abbrev-expand-on-insert-exit nil) before loading evil fixed the issue.


Have you tried:

(setq python-skeleton-autoinsert nil)


  • Yes its value is nil already. It actually seems like an issue about python.el and evil mode interacting. I edited my question accordingly.
    – joon
    Nov 9, 2017 at 3:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.