summaryrefslogtreecommitdiff
path: root/lisp/progmodes/python.el
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2012-05-17 00:03:27 -0300
committerFabián Ezequiel Gallina <fgallina@gnu.org>2012-05-17 00:03:27 -0300
commitb71bfa9cd6e670a97a803adb1027a859cd66bfe9 (patch)
tree923ae94df69fc3762c47815add78aa89f296334b /lisp/progmodes/python.el
parent929036b470d1a5924b70cb21b943c3050cbc8b70 (diff)
Return appropriate value to comint-dynamic-complete
This avoids a "No completions for ..." message being issued when a completion has been made. Also, reduces redundancy between the inferior-python-mode and python-mode completion code.
Diffstat (limited to 'lisp/progmodes/python.el')
-rw-r--r--lisp/progmodes/python.el54
1 files changed, 23 insertions, 31 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 1c05048512a..4fe5bd87462 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1609,38 +1609,38 @@ else:
(when (> (length completions) 2)
(split-string completions "^'\\|^\"\\|;\\|'$\\|\"$" t)))))
-(defun python-shell-completion--get-completion (input completions)
- "Get completion for INPUT using COMPLETIONS."
- (let ((completion (when completions
+(defun python-shell-completion--do-completion-at-point (process)
+ "Do completion for INPUT using COMPLETIONS."
+ (with-syntax-table python-dotty-syntax-table
+ (let* ((input (substring-no-properties
+ (or (comint-word (current-word)) "") nil nil))
+ (completions (python-shell-completion--get-completions
+ input process))
+ (completion (when completions
(try-completion input completions))))
- (cond ((eq completion t)
- input)
- ((null completion)
- (message "Can't find completion for \"%s\"" input)
- (ding)
- input)
+ (cond ((eq completion t)
+ t)
+ ((null completion)
+ (message "Can't find completion for \"%s\"" input)
+ (ding)
+ nil)
((not (string= input completion))
- completion)
+ (progn (delete-char (- (length input)))
+ (insert completion)
+ t))
(t
- (message "Making completion list...")
(with-output-to-temp-buffer "*Python Completions*"
(display-completion-list
(all-completions input completions)))
- input))))
+ t)))))
(defun python-shell-completion-complete-at-point ()
"Perform completion at point in inferior Python process."
(interactive)
- (with-syntax-table python-dotty-syntax-table
- (when (and comint-last-prompt-overlay
- (> (point-marker) (overlay-end comint-last-prompt-overlay)))
- (let* ((process (get-buffer-process (current-buffer)))
- (input (substring-no-properties
- (or (comint-word (current-word)) "") nil nil)))
- (delete-char (- (length input)))
- (insert
- (python-shell-completion--get-completion
- input (python-shell-completion--get-completions input process)))))))
+ (and comint-last-prompt-overlay
+ (> (point-marker) (overlay-end comint-last-prompt-overlay))
+ (python-shell-completion--do-completion-at-point
+ (get-buffer-process (current-buffer)))))
(defun python-shell-completion-complete-or-indent ()
"Complete or indent depending on the context.
@@ -1749,15 +1749,7 @@ inferior python process is updated properly."
(let ((process (python-shell-get-process)))
(if (not process)
(error "Completion needs an inferior Python process running")
- (with-syntax-table python-dotty-syntax-table
- (let* ((input (substring-no-properties
- (or (comint-word (current-word)) "") nil nil))
- (completions (python-shell-completion--get-completions
- input process)))
- (delete-char (- (length input)))
- (insert
- (python-shell-completion--get-completion
- input completions)))))))
+ (python-shell-completion--do-completion-at-point process))))
(add-to-list 'debug-ignored-errors "^Completion needs an inferior Python process running.")