aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes/python.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/progmodes/python.el')
-rw-r--r--lisp/progmodes/python.el36
1 files changed, 27 insertions, 9 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 949b0252bf1..cfd3a73e1b0 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -33,7 +33,7 @@
33;; Implements Syntax highlighting, Indentation, Movement, Shell 33;; Implements Syntax highlighting, Indentation, Movement, Shell
34;; interaction, Shell completion, Shell virtualenv support, Pdb 34;; interaction, Shell completion, Shell virtualenv support, Pdb
35;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc, 35;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc,
36;; imenu. 36;; Imenu.
37 37
38;; Syntax highlighting: Fontification of code is provided and supports 38;; Syntax highlighting: Fontification of code is provided and supports
39;; python's triple quoted strings properly. 39;; python's triple quoted strings properly.
@@ -169,10 +169,12 @@
169;; might guessed you should run `python-shell-send-buffer' from time 169;; might guessed you should run `python-shell-send-buffer' from time
170;; to time to get better results too. 170;; to time to get better results too.
171 171
172;; imenu: This mode supports imenu in its most basic form, letting it 172;; Imenu: This mode supports Imenu in its most basic form, letting it
173;; build the necessary alist via `imenu-default-create-index-function' 173;; build the necessary alist via `imenu-default-create-index-function'
174;; by having set `imenu-extract-index-name-function' to 174;; by having set `imenu-extract-index-name-function' to
175;; `python-info-current-defun'. 175;; `python-info-current-defun' and
176;; `imenu-prev-index-position-function' to
177;; `python-imenu-prev-index-position'.
176 178
177;; If you used python-mode.el you probably will miss auto-indentation 179;; If you used python-mode.el you probably will miss auto-indentation
178;; when inserting newlines. To achieve the same behavior you have 180;; when inserting newlines. To achieve the same behavior you have
@@ -1087,12 +1089,12 @@ With positive ARG search backwards, else search forwards."
1087 (beg-indentation 1089 (beg-indentation
1088 (and (> arg 0) 1090 (and (> arg 0)
1089 (save-excursion 1091 (save-excursion
1090 (and (python-info-current-line-empty-p) 1092 (while (and
1091 (python-util-forward-comment -1)) 1093 (not (python-info-looking-at-beginning-of-defun))
1092 (python-nav-beginning-of-statement) 1094 (python-nav-backward-block)))
1093 (if (python-info-looking-at-beginning-of-defun) 1095 (or (and (python-info-looking-at-beginning-of-defun)
1094 (+ (current-indentation) python-indent-offset) 1096 (+ (current-indentation) python-indent-offset))
1095 (current-indentation))))) 1097 0))))
1096 (found 1098 (found
1097 (progn 1099 (progn
1098 (when (and (< arg 0) 1100 (when (and (< arg 0)
@@ -2870,6 +2872,19 @@ Interactively, prompt for symbol."
2870 "^Eldoc needs an inferior Python process running.") 2872 "^Eldoc needs an inferior Python process running.")
2871 2873
2872 2874
2875;;; Imenu
2876
2877(defun python-imenu-prev-index-position ()
2878 "Python mode's `imenu-prev-index-position-function'."
2879 (let ((found))
2880 (while (and (setq found
2881 (re-search-backward python-nav-beginning-of-defun-regexp nil t))
2882 (not (python-info-looking-at-beginning-of-defun))))
2883 (and found
2884 (python-info-looking-at-beginning-of-defun)
2885 (python-info-current-defun))))
2886
2887
2873;;; Misc helpers 2888;;; Misc helpers
2874 2889
2875(defun python-info-current-defun (&optional include-type) 2890(defun python-info-current-defun (&optional include-type)
@@ -3214,6 +3229,9 @@ if that value is non-nil."
3214 (set (make-local-variable 'imenu-extract-index-name-function) 3229 (set (make-local-variable 'imenu-extract-index-name-function)
3215 #'python-info-current-defun) 3230 #'python-info-current-defun)
3216 3231
3232 (set (make-local-variable 'imenu-prev-index-position-function)
3233 #'python-imenu-prev-index-position)
3234
3217 (set (make-local-variable 'add-log-current-defun-function) 3235 (set (make-local-variable 'add-log-current-defun-function)
3218 #'python-info-current-defun) 3236 #'python-info-current-defun)
3219 3237