Fix cornercase for string syntax. * progmodes/python.el (python-syntax-propertize-function): Simplify and enhance the regexp for unescaped quotes. Now it also matches quotes in weird situations like the single quote in "something\"'". (python-syntax-stringify): Simplify num-quotes detecting code.
Allow user to set docstring style for fill-paragraph. * progmodes/python.el (python-fill-comment-function, python-fill-string-function) (python-fill-decorator-function, python-fill-paren-function): Remove :safe for defcustoms. (python-fill-string-style): New defcustom (python-fill-paragraph-function): Enhanced context detection. (python-fill-string): Honor python-fill-string-style settings.
Spelling fixes.
Enhancements to docstring formatting when filling paragraphs. * progmodes/python.el (python-fill-docstring-style): Rename from python-fill-string-style. Added new style. (python-fill-string): Use new style. Better checks for docstrings.
Fix shell output retrieval and comint-prompt-regexp init. * progmodes/python.el (inferior-python-mode): (python-shell-make-comint): Fix initialization of comint-prompt-regexp from copied file local variables. (python-shell-fetched-lines): Remove var. (python-shell-output-filter-in-progress): Rename from python-shell-fetch-lines-in-progress. (python-shell-output-filter-buffer): Rename from python-shell-fetch-lines-string. (python-shell-fetch-lines-filter): Delete function. (python-shell-output-filter): New function. (python-shell-send-string-no-output): Use them.
Enhancements to indentation. * lisp/progmodes/python.el (python-indent-context): Give priority to inside-string context. Make comments indentation markers. (python-indent-region): Do not mess with strings, unless it's the enclosing set of quotes.
* progmodes/python.el (inferior-python-mode) (python-shell-make-comint): Fixed initialization of local variables copied from parent buffer.
Enhancements on forward-sexp movement. * progmodes/python.el (python-nav-beginning-of-statement) (python-nav-end-of-statement): Return point-marker. (python-nav-forward-sexp): lisp-like forward-sexp behavior. (python-info-current-symbol) (python-info-statement-starts-block-p): Rename from python-info-beginning-of-block-p. (python-info-statement-ends-block-p): Rename from python-info-end-of-block-p. (python-info-beginning-of-statement-p) (python-info-end-of-statement-p) (python-info-beginning-of-block-p, python-info-end-of-block-p): New functions.
Fix shell handling of unbalanced quotes and parens in output. * progmodes/python.el (python-rx-constituents): Added string-delimiter. (python-syntax-propertize-function): Use it. (python-shell-output-syntax-table): New var. (inferior-python-mode): Prevent unbalanced parens/quotes from previous output mess with current input context.
* progmodes/python.el (python-shell-output-filter): Handle extra carriage return in OSX.
* progmodes/python.el (python-fill-paragraph): Rename from python-fill-paragraph-function. Fixed fill-paragraph for decorators.
Implemented `backward-up-list'-like navigation. * progmodes/python.el (python-nav-up-list) (python-nav-backward-up-list): New functions. (python-mode-map): Define substitute key for backward-up-list to python-nav-backward-up-list.
* progmodes/python.el (python-mode-map): Replace subtitute-key-definition with proper command remapping. (python-nav--up-list): Fix behavior for blocks on the same level.
* progmodes/python.el (inferior-python-mode): Fix hang in jit-lock.
Fix end-of-defun misbehavior. * progmodes/python.el (python-nav-beginning-of-defun): Rename from python-beginning-of-defun-function. Handle nested defuns correctly. (python-nav-end-of-defun): Rename from python-end-of-defun-function. Ensure forward movement. (python-info-current-defun): Reimplemented to work as intended with new fixed python-nav-{end,beginning}-of-defun. Stop scanning parent defuns as soon as possible.
Fix Imenu regression. * progmodes/python.el: (python-nav-beginning-of-defun): Fix forward movement when statement(s) separates point from defun. (python-imenu-prev-index-position): New function.
* progmodes/python.el: (python-indent-guess-indent-offset): If indentation is guessed make python-indent-offset variable buffer local.
* progmodes/python.el (python-skeleton-class) (python-skeleton-def): Do not add space after defun name.
* lisp/emacs-lisp/byte-run.el (defun-declarations-alist): Allow compiler-macros to be lambda expressions. * lisp/progmodes/python.el: Use cl-lib. Move var declarations outside of eval-when-compile. (python-syntax-context): Add compiler-macro. (python-font-lock-keywords): Simplify with De Morgan.
* progmodes/python.el: Remove cl dependency. (python-syntax-count-quotes): Replace incf call. (python-fill-string): Replace setf call.