(py-smart-indentation): Updated docstring for new policy.
(python-mode): Implement new policy: never turn indent-tabs-mode on.
Only turn it off if tab-width != py-indent-offset.
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index b4b6020..4f53f1f 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -157,15 +157,15 @@
to `python-mode':
1. `py-indent-offset' is guess from existing code in the buffer.
- Only guessed values between 2 and 8 are considered. If a valid
+ Only guessed values between 2 and 8 are considered. If a valid
guess can't be made (perhaps because you are visiting a new
- file), then the value in py-indent-offset is used.
+ file), then the value in `py-indent-offset' is used.
- 2. `indent-tabs-mode' is set as follows: if `py-indent-offset'
- equals `tab-width' then `indent-tabs-mode' is set to t,
- otherwise it is set to nil. This means that for newly written
- code, tabs are only inserted in indentation if one tab is one
- indentation level, otherwise only spaces are used.
+ 2. `indent-tabs-mode' is turned off if `py-indent-offset' does not
+ equal `tab-width' (`indent-tabs-mode' is never turned on by
+ Python mode). This means that for newly written code, tabs are
+ only inserted in indentation if one tab is one indentation
+ level, otherwise only spaces are used.
Note that both these settings occur *after* `python-mode-hook' is run,
so if you want to defeat the automagic configuration, you must also
@@ -960,7 +960,11 @@
(>= py-indent-offset 2))
(setq offset py-indent-offset))
(setq py-indent-offset offset)
- (setq indent-tabs-mode (= tab-width py-indent-offset))
+ ;; Only turn indent-tabs-mode off if tab-width !=
+ ;; py-indent-offset. Never turn it on, because the user must
+ ;; have explicitly turned it off.
+ (if (/= tab-width py-indent-offset)
+ (setq indent-tabs-mode nil))
)))