[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 2155973: python.el: Keep eldoc visible while typing
From: |
Fabián Ezequiel Gallina |
Subject: |
[Emacs-diffs] master 2155973: python.el: Keep eldoc visible while typing args. |
Date: |
Sat, 07 Feb 2015 21:39:19 +0000 |
branch: master
commit 2155973e5e35d11a50ce6773bb34d5df68beea57
Author: Fabián Ezequiel Gallina <address@hidden>
Commit: Fabián Ezequiel Gallina <address@hidden>
python.el: Keep eldoc visible while typing args.
Fixes: debbugs:19637
* lisp/progmodes/python.el (python-eldoc--get-symbol-at-point): New
function.
(python-eldoc--get-doc-at-point, python-eldoc-at-point): Use it.
* test/automated/python-tests.el
(python-eldoc--get-symbol-at-point-1)
(python-eldoc--get-symbol-at-point-2)
(python-eldoc--get-symbol-at-point-3)
(python-eldoc--get-symbol-at-point-4): New tests.
---
lisp/ChangeLog | 8 +++++
lisp/progmodes/python.el | 20 ++++++++++++--
test/ChangeLog | 8 +++++
test/automated/python-tests.el | 57 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 90 insertions(+), 3 deletions(-)
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 655ae57..34d4013 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,13 @@
2015-02-07 Fabián Ezequiel Gallina <address@hidden>
+ python.el: Keep eldoc visible while typing args. (Bug#19637)
+
+ * progmodes/python.el (python-eldoc--get-symbol-at-point): New
+ function.
+ (python-eldoc--get-doc-at-point, python-eldoc-at-point): Use it.
+
+2015-02-07 Fabián Ezequiel Gallina <address@hidden>
+
Fix hideshow integration. (Bug#19761)
* progmodes/python.el
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 3399429..72a76a4 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -3921,15 +3921,29 @@ See `python-check-command' for the default."
:type 'string
:group 'python)
+(defun python-eldoc--get-symbol-at-point ()
+ "Get the current symbol for eldoc.
+Returns the current symbol handling point within arguments."
+ (save-excursion
+ (let ((start (python-syntax-context 'paren)))
+ (when start
+ (goto-char start))
+ (when (or start
+ (eobp)
+ (memq (char-syntax (char-after)) '(?\ ?-)))
+ ;; Try to adjust to closest symbol if not in one.
+ (python-util-forward-comment -1)))
+ (python-info-current-symbol t)))
+
(defun python-eldoc--get-doc-at-point (&optional force-input force-process)
"Internal implementation to get documentation at point.
-If not FORCE-INPUT is passed then what `python-info-current-symbol'
+If not FORCE-INPUT is passed then what `python-eldoc--get-symbol-at-point'
returns will be used. If not FORCE-PROCESS is passed what
`python-shell-get-process' returns is used."
(let ((process (or force-process (python-shell-get-process))))
(when process
(let ((input (or force-input
- (python-info-current-symbol t))))
+ (python-eldoc--get-symbol-at-point))))
(and input
;; Prevent resizing the echo area when iPython is
;; enabled. Bug#18794.
@@ -3949,7 +3963,7 @@ inferior Python process is updated properly."
"Get help on SYMBOL using `help'.
Interactively, prompt for symbol."
(interactive
- (let ((symbol (python-info-current-symbol t))
+ (let ((symbol (python-eldoc--get-symbol-at-point))
(enable-recursive-minibuffers t))
(list (read-string (if symbol
(format "Describe symbol (default %s): " symbol)
diff --git a/test/ChangeLog b/test/ChangeLog
index b1e2151..ff02bd6 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,6 +1,14 @@
2015-02-07 Fabián Ezequiel Gallina <address@hidden>
* automated/python-tests.el
+ (python-eldoc--get-symbol-at-point-1)
+ (python-eldoc--get-symbol-at-point-2)
+ (python-eldoc--get-symbol-at-point-3)
+ (python-eldoc--get-symbol-at-point-4): New tests.
+
+2015-02-07 Fabián Ezequiel Gallina <address@hidden>
+
+ * automated/python-tests.el
(python-tests-visible-string): New function.
(python-parens-electric-indent-1)
(python-triple-quote-pairing): Fix indentation, move require calls.
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index e5fcda9..47e2a6e 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -2943,6 +2943,63 @@ class Foo(models.Model):
;;; Eldoc
+(ert-deftest python-eldoc--get-symbol-at-point-1 ()
+ "Test paren handling."
+ (python-tests-with-temp-buffer
+ "
+map(xx
+map(codecs.open('somefile'
+"
+ (python-tests-look-at "ap(xx")
+ (should (string= (python-eldoc--get-symbol-at-point) "map"))
+ (goto-char (line-end-position))
+ (should (string= (python-eldoc--get-symbol-at-point) "map"))
+ (python-tests-look-at "('somefile'")
+ (should (string= (python-eldoc--get-symbol-at-point) "map"))
+ (goto-char (line-end-position))
+ (should (string= (python-eldoc--get-symbol-at-point) "codecs.open"))))
+
+(ert-deftest python-eldoc--get-symbol-at-point-2 ()
+ "Ensure self is replaced with the class name."
+ (python-tests-with-temp-buffer
+ "
+class TheClass:
+
+ def some_method(self, n):
+ return n
+
+ def other(self):
+ return self.some_method(1234)
+
+"
+ (python-tests-look-at "self.some_method")
+ (should (string= (python-eldoc--get-symbol-at-point)
+ "TheClass.some_method"))
+ (python-tests-look-at "1234)")
+ (should (string= (python-eldoc--get-symbol-at-point)
+ "TheClass.some_method"))))
+
+(ert-deftest python-eldoc--get-symbol-at-point-3 ()
+ "Ensure symbol is found when point is at end of buffer."
+ (python-tests-with-temp-buffer
+ "
+some_symbol
+
+"
+ (goto-char (point-max))
+ (should (string= (python-eldoc--get-symbol-at-point)
+ "some_symbol"))))
+
+(ert-deftest python-eldoc--get-symbol-at-point-4 ()
+ "Ensure symbol is found when point is at whitespace."
+ (python-tests-with-temp-buffer
+ "
+some_symbol some_other_symbol
+"
+ (python-tests-look-at " some_other_symbol")
+ (should (string= (python-eldoc--get-symbol-at-point)
+ "some_symbol"))))
+
;;; Imenu
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 2155973: python.el: Keep eldoc visible while typing args.,
Fabián Ezequiel Gallina <=