1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 14:30:43 -08:00

Fixed eldoc behavior.

* python-eldoc-setup-code: The code to get help now uses the
        inspect element. When an object doesn't have documentation and
        if it is callable it returns the signature for it. Also when
        an object does contain documentation it only returns the first
        line.

      * python-eldoc-at-point: has been simplified to just message the
        doc header of objects.

      * python-info-current-defun: was not taking into account the
        current indentation so point was always inside a defun, even
        if the indentation was less or equal than the defun above.
This commit is contained in:
Fabián Ezequiel Gallina 2012-05-17 00:03:18 -03:00 committed by Fabián Ezequiel Gallina
parent 9787f82961
commit 15cc40b819

View file

@ -1924,10 +1924,28 @@ Runs COMMAND, a shell command, as if by `compile'. See
(defvar python-eldoc-setup-code
"def __PYDOC_get_help(obj):
try:
import pydoc
import inspect
if hasattr(obj, 'startswith'):
obj = eval(obj, globals())
doc = pydoc.getdoc(obj)
doc = inspect.getdoc(obj)
if not doc and callable(obj):
target = None
if inspect.isclass(obj) and hasattr(obj, '__init__'):
target = obj.__init__
objtype = 'class'
else:
target = obj
objtype = 'def'
if target:
args = inspect.formatargspec(
*inspect.getargspec(target)
)
name = obj.__name__
doc = '{objtype} {name}{args}'.format(
objtype=objtype, name=name, args=args
)
else:
doc = doc.splitlines()[0]
except:
doc = ''
try:
@ -2000,16 +2018,7 @@ Interactively, prompt for symbol."
(let ((process (python-shell-get-process)))
(if (not process)
(message "Eldoc needs an inferior Python process running.")
(let ((temp-buffer-show-hook
(lambda ()
(toggle-read-only 1)
(setq view-return-to-alist
(list (cons (selected-window) help-return-method))))))
(with-output-to-temp-buffer (help-buffer)
(with-current-buffer standard-output
(insert
(python-eldoc--get-doc-at-point symbol process))
(help-print-return-message)))))))
(message (python-eldoc--get-doc-at-point symbol process)))))
;;; Imenu
@ -2144,9 +2153,9 @@ not inside a defun."
(save-excursion
(goto-char (line-end-position))
(forward-comment -9999)
(setq min-indent (current-indentation))
(while (python-beginning-of-defun-function 1 t)
(when (or (not min-indent)
(< (current-indentation) min-indent))
(when (< (current-indentation) min-indent)
(setq min-indent (current-indentation))
(looking-at python-nav-beginning-of-defun-regexp)
(setq names (cons