mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
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.
This commit is contained in:
parent
2d467a0ff0
commit
2155973e5e
4 changed files with 90 additions and 3 deletions
|
|
@ -1,3 +1,11 @@
|
||||||
|
2015-02-07 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||||
|
|
||||||
|
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 <fgallina@gnu.org>
|
2015-02-07 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||||
|
|
||||||
Fix hideshow integration. (Bug#19761)
|
Fix hideshow integration. (Bug#19761)
|
||||||
|
|
|
||||||
|
|
@ -3921,15 +3921,29 @@ See `python-check-command' for the default."
|
||||||
:type 'string
|
:type 'string
|
||||||
:group 'python)
|
: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)
|
(defun python-eldoc--get-doc-at-point (&optional force-input force-process)
|
||||||
"Internal implementation to get documentation at point.
|
"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
|
returns will be used. If not FORCE-PROCESS is passed what
|
||||||
`python-shell-get-process' returns is used."
|
`python-shell-get-process' returns is used."
|
||||||
(let ((process (or force-process (python-shell-get-process))))
|
(let ((process (or force-process (python-shell-get-process))))
|
||||||
(when process
|
(when process
|
||||||
(let ((input (or force-input
|
(let ((input (or force-input
|
||||||
(python-info-current-symbol t))))
|
(python-eldoc--get-symbol-at-point))))
|
||||||
(and input
|
(and input
|
||||||
;; Prevent resizing the echo area when iPython is
|
;; Prevent resizing the echo area when iPython is
|
||||||
;; enabled. Bug#18794.
|
;; enabled. Bug#18794.
|
||||||
|
|
@ -3949,7 +3963,7 @@ inferior Python process is updated properly."
|
||||||
"Get help on SYMBOL using `help'.
|
"Get help on SYMBOL using `help'.
|
||||||
Interactively, prompt for symbol."
|
Interactively, prompt for symbol."
|
||||||
(interactive
|
(interactive
|
||||||
(let ((symbol (python-info-current-symbol t))
|
(let ((symbol (python-eldoc--get-symbol-at-point))
|
||||||
(enable-recursive-minibuffers t))
|
(enable-recursive-minibuffers t))
|
||||||
(list (read-string (if symbol
|
(list (read-string (if symbol
|
||||||
(format "Describe symbol (default %s): " symbol)
|
(format "Describe symbol (default %s): " symbol)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,11 @@
|
||||||
|
2015-02-07 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||||
|
|
||||||
|
* 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 <fgallina@gnu.org>
|
2015-02-07 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||||
|
|
||||||
* automated/python-tests.el
|
* automated/python-tests.el
|
||||||
|
|
|
||||||
|
|
@ -2943,6 +2943,63 @@ class Foo(models.Model):
|
||||||
|
|
||||||
;;; Eldoc
|
;;; 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
|
;;; Imenu
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue