(py-comment-indent-function): A replacement for
comment-indent-function's default lambda value (in simple.el), this
version finally kills this nit: auto-filling a comment that starts in
column zero with filladapt turned off would cascade the #'s to the
right.
Now auto-filling seems to work with or without filladapt, and with the
comment starting in any column.
(python-mode): Set comment-indent-function.
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 644f1ef..e9dd62d 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -979,24 +979,26 @@
(make-local-variable 'comment-end)
(make-local-variable 'comment-start-skip)
(make-local-variable 'comment-column)
+ (make-local-variable 'comment-indent-function)
(make-local-variable 'indent-region-function)
(make-local-variable 'indent-line-function)
(make-local-variable 'add-log-current-defun-function)
;;
(set-syntax-table py-mode-syntax-table)
- (setq major-mode 'python-mode
- mode-name "Python"
- local-abbrev-table python-mode-abbrev-table
- font-lock-defaults '(python-font-lock-keywords)
- paragraph-separate "^[ \t]*$"
- paragraph-start "^[ \t]*$"
- require-final-newline t
- comment-start "# "
- comment-end ""
- comment-start-skip "# *"
- comment-column 40
- indent-region-function 'py-indent-region
- indent-line-function 'py-indent-line
+ (setq major-mode 'python-mode
+ mode-name "Python"
+ local-abbrev-table python-mode-abbrev-table
+ font-lock-defaults '(python-font-lock-keywords)
+ paragraph-separate "^[ \t]*$"
+ paragraph-start "^[ \t]*$"
+ require-final-newline t
+ comment-start "# "
+ comment-end ""
+ comment-start-skip "# *"
+ comment-column 40
+ comment-indent-function 'py-comment-indent-function
+ indent-region-function 'py-indent-region
+ indent-line-function 'py-indent-line
;; tell add-log.el how to find the current function/method/variable
add-log-current-defun-function 'py-current-defun
)
@@ -1884,6 +1886,23 @@
py-indent-offset))
))
+(defun py-comment-indent-function ()
+ ;; A better value for comment-indent-function in Python source, this
+ ;; actually works when filladapt is turned off. Without this, in
+ ;; that case, comments which start in column zero cascade one
+ ;; character to the right
+ (save-excursion
+ (beginning-of-line)
+ (let ((eol (py-point 'eol)))
+ (and comment-start-skip
+ (re-search-forward comment-start-skip eol t)
+ (setq eol (match-beginning 0)))
+ (goto-char eol)
+ (skip-chars-backward " \t")
+ (max comment-column (+ (current-column) (if (bolp) 0 1)))
+ )))
+
+
(defun py-shift-region (start end count)
(save-excursion
(goto-char end) (beginning-of-line) (setq end (point))