Function: python-nav--up-list
python-nav--up-list is a byte-compiled function defined in
python.el.gz.
Signature
(python-nav--up-list &optional DIR)
Documentation
Internal implementation of python-nav-up-list.
DIR is always 1 or -1 and comes sanitized from
python-nav-up-list calls.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/python.el.gz
(defun python-nav--up-list (&optional dir)
"Internal implementation of `python-nav-up-list'.
DIR is always 1 or -1 and comes sanitized from
`python-nav-up-list' calls."
(let ((context (python-syntax-context-type))
(forward-p (> dir 0)))
(cond
((memq context '(string comment)))
((eq context 'paren)
(let ((forward-sexp-function))
(up-list dir)))
((and forward-p (python-info-end-of-block-p))
(let ((parent-end-pos
(save-excursion
(let ((indentation (and
(python-nav-beginning-of-block)
(current-indentation))))
(while (and indentation
(> indentation 0)
(>= (current-indentation) indentation)
(python-nav-backward-block)))
(python-nav-end-of-block)))))
(and (> (or parent-end-pos (point)) (point))
(goto-char parent-end-pos))))
(forward-p (python-nav-end-of-block))
((and (not forward-p)
(> (current-indentation) 0)
(python-info-beginning-of-block-p))
(let ((prev-block-pos
(save-excursion
(let ((indentation (current-indentation)))
(while (and (python-nav-backward-block)
(>= (current-indentation) indentation))))
(point))))
(and (> (point) prev-block-pos)
(goto-char prev-block-pos))))
((not forward-p) (python-nav-beginning-of-block)))))