python-mode.el Announcementstag:launchpad.net,2008-02-22:/python-mode/+announcementshttps://launchpad.net/@@/product-logohttps://launchpad.net/@@/product2015-10-02T16:57:14.665471+00:006.2.12015-10-02T16:57:14.665471+00:002015-10-02T16:57:14.566004+00:00tag:launchpad.net,2015-10-02:/+announcement/13665Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- Handle PEP 492 async coroutines</p>
<p>- Logic of py-indent-region WRT <a class="bug-link" href="https://launchpad.net/bugs/1426903">lp:1426903</a><br/>
In case first line accepts an indent,<br/>
keep the remaining lines' relative.<br/>
Otherwise lines in region get outmost indent,<br/>
same with optional argument</p>
<p>- Commands<br/>
- py-match-paren<br/>
If at a beginning, jump to end and vice versa.<br/>
Matches lists, block, statement, string and comment</p>
<p> - ipython2.7<br/>
- ipython3</p>
<p> - py-beginning-<wbr/>of-for-<wbr/>block<br/>
- py-beginning-<wbr/>of-for-<wbr/>block-bol<br/>
- py-end-<wbr/>of-statement-<wbr/>bol<br/>
- py-end-<wbr/>of-top-<wbr/>level-bol</p>
<p> - py-flycheck-mode - toggle `flycheck-mode' from menu "Checks"</p>
<p> - py-execute-section - execute arbitrary chunks of code<br/>
- py-execute-<wbr/>section-<wbr/>python<br/>
- py-execute-<wbr/>section-<wbr/>python2<br/>
- py-execute-<wbr/>section-<wbr/>python3<br/>
- py-execute-<wbr/>section-<wbr/>ipython<br/>
- py-execute-<wbr/>section-<wbr/>ipython2.<wbr/>7<br/>
- py-execute-<wbr/>section-<wbr/>ipython3<br/>
- py-execute-<wbr/>section-<wbr/>jython</p>
<p> - py-sectionize-<wbr/>region<br/>
- py-backward-section<br/>
- py-forward-section</p>
<p> - py-narrow-to-block<br/>
- py-narrow-<wbr/>to-block-<wbr/>or-clause<br/>
- py-narrow-to-class<br/>
- py-narrow-to-clause<br/>
- py-narrow-to-def<br/>
- py-narrow-<wbr/>to-def-<wbr/>or-class<br/>
- py-narrow-<wbr/>to-statement</p>
<p>- New helper functions, like<br/>
- py--end-<wbr/>of-block-<wbr/>bol-p<br/>
- py--end-<wbr/>of-clause-<wbr/>bol-p<br/>
etc.</p>
<p> Functions in a boolean sense just stating if being at an end or<br/>
start no longer a command. Renamed as interanal<br/>
functions with prefix `py--' now.</p>
<p>- TAB-indent from column zero: go to outmost first, <a class="bug-link" href="https://launchpad.net/bugs/1375122">lp:1375122</a><br/>
- (I)Python-shell setup made more reliable</p>
<p>New customizables:</p>
<p>- py-imenu-max-items, default is 99<br/>
Sets `imenu-max-items'</p>
<p>- py-python-<wbr/>edit-version, default is ""<br/>
When not empty, fontify according to Python version specified.</p>
<p>- py-pdb-executable, default is nil<br/>
Indicate PATH/TO/pdb.</p>
<p>- py-update-<wbr/>gud-pdb-<wbr/>history-<wbr/>p, default is t<br/>
If pdb should provide suggestions WRT file and pdb-path.</p>
<p>- py-split-<wbr/>window-<wbr/>on-execute-<wbr/>threshold, default is 3<br/>
Don't split when max number of displayed windows is reached.</p>
<p>Renamed:<br/>
- py-beginning-<wbr/>of-commented-<wbr/>section --> py-beginning-<wbr/>of-comments<br/>
- py-narrow-to-defun --> py-narrow-to-def</p>New in version 6.2.02014-11-28T19:10:26.136754+00:002014-11-28T19:10:26.019876+00:00tag:launchpad.net,2014-11-28:/+announcement/13077Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- Support for large output<br/>
new commands py-fast-process, py-fast-...<br/>
Fixes: large output makes Emacs freeze, <a class="bug-link" href="https://launchpad.net/bugs/1253907">lp:1253907</a></p>
<p> Python code now might be processed by an<br/>
- interactive Python shell (DEFAULT)<br/>
- non-interactive Python (`py-fast-<wbr/>process-<wbr/>p', if large output)</p>
<p> Both processes might run in<br/>
- session, i.e. start from possible previous state (DEFAULT)<br/>
- dedicated, (`py-dedicated-<wbr/>process-<wbr/>p', run in separate process)</p>
<p>- TAB bound to `py-indent-<wbr/>or-complete'<wbr/>, completes at EOL.<br/>
Calls to `tab-to-tab-stop' removed, as these would conflict.<br/>
Use `C-q TAB' to insert a literally TAB-character.</p>
<p>- py-fast-complete<br/>
Complete word before point, if any, use `py-fast-process'</p>
<p>- `py-shell-<wbr/>complete-<wbr/>or-indent'<br/>
In shell: complete or indent depending on the context.<br/>
If cursor is at current-indentation and further indent<br/>
seems reasonable, indent. Otherwise try to complete.</p>
<p>- Python specific hide-show<br/>
py-hide-region<br/>
py-show-region<br/>
py-hide-statement<br/>
py-show-statement<br/>
py-hide-block<br/>
py-show-block<br/>
py-hide-clause<br/>
py-show-clause<br/>
py-hide-<wbr/>block-or-<wbr/>clause<br/>
py-show-<wbr/>block-or-<wbr/>clause<br/>
py-hide-def<br/>
py-show-def<br/>
py-hide-class<br/>
py-show-class<br/>
py-hide-<wbr/>expression<br/>
py-show-<wbr/>expression<br/>
py-hide-<wbr/>partial-<wbr/>expression<br/>
py-show-<wbr/>partial-<wbr/>expression<br/>
py-hide-line<br/>
py-show-line<br/>
py-hide-top-level<br/>
py-show-top-level</p>
<p>- `py-shell' uses new `py-shell-mode', `py-shell-mode-map'<br/>
M-x describe-mode RET mentions edit available commands<br/>
Menu "Py-Shell"</p>
<p>- Improved customization of Python2, Python3, IPython executables<br/>
receive defaults depending from system<br/>
py-python-command - defaults to python2<br/>
py-python2-<wbr/>command<br/>
py-python3-<wbr/>command<br/>
py-ipython-<wbr/>command</p>
<p> py-python-<wbr/>command-<wbr/>args<br/>
py-python2-<wbr/>command-<wbr/>args<br/>
py-python3-<wbr/>command-<wbr/>args<br/>
py-ipython-<wbr/>command-<wbr/>args</p>
<p>- info-lookup-symbol made working with Python<br/>
patched python-info.el available at<br/>
<a href="https://bitbucket.org/andreas_roehler/pydoc-info" rel="nofollow">https:/<wbr/>/bitbucket.<wbr/>org/andreas_<wbr/>roehler/<wbr/>pydoc-info</a><br/>
See also INSTALL-INFO-FILES</p>
<p>- `py-backward-<wbr/>same-level'<br/>
While `py-up' will go upward from beginning of block, this travels<br/>
same level, but goes up if no element left in level. If callled<br/>
from inside a string or list, go to its beginning.</p>
<p>- `py-kill-<wbr/>shell-unconditi<wbr/>onal'<br/>
With optional argument SHELL, otherwise kill default<br/>
(I)Python shell.</p>
<p>- py-info-<wbr/>lookup-<wbr/>symbol ()<br/>
Calls `info-lookup-<wbr/>symbol'<wbr/>. Sends help if stuff is missing.</p>
<p>- py-toggle-<wbr/>split-window-<wbr/>function<br/>
If window is splitted vertically or horizontally.<br/>
Sets customizable variable<br/>
`py-split-<wbr/>window-<wbr/>on-execute-<wbr/>function'<br/>
Also in menu Python/<wbr/>Customize/<wbr/>Switches/<wbr/>Display/<wbr/>Which split windows</p>
<p>- py-symbol-at-point<br/>
Return the Python symbol under cursor</p>
<p>- py-report-<wbr/>comint-<wbr/>variable-<wbr/>setting<br/>
Display Py-shell' comint-mode variables of interest.</p>
<p>- variables-state<br/>
Diplays state of python-mode variables in an org-mode buffer</p>
<p>- py-kill-<wbr/>buffer-<wbr/>unconditional<br/>
Kill buffer unconditional; kill also any buffer-process.</p>
<p>Setting docstring style simplified; a style is all needed.<br/>
New commands<br/>
-py-set-<wbr/>nil-docstring-<wbr/>style<br/>
-py-set-<wbr/>pep-257-<wbr/>nn-docstring-<wbr/>style<br/>
-py-set-<wbr/>pep-257-<wbr/>docstring-<wbr/>style<br/>
-py-set-<wbr/>django-<wbr/>docstring-<wbr/>style<br/>
-py-set-<wbr/>symmetric-<wbr/>docstring-<wbr/>style<br/>
-py-set-<wbr/>onetwo-<wbr/>docstring-<wbr/>style</p>
<p>- new indent feature/behavior, <a class="bug-link" href="https://launchpad.net/bugs/1280982">lp:1280982</a><br/>
If an empty line was dedented deliberatly, this is<br/>
honored by next lines indent</p>
<p>- py-object-<wbr/>reference-<wbr/>face<br/>
commonly "self" or "cls", inherits default face</p>
<p>- py-error<br/>
In case of error, list messages from Python process</p>
<p>- `py-split-<wbr/>windows-<wbr/>on-execute-<wbr/>p' renamed `py-split-<wbr/>window-<wbr/>on-execute'<br/>
Not a boolean any more, new option 'just-two: When code is send to<br/>
interpreter, split screen into source-code buffer and current<br/>
--maybe reused-- py-shell. When set to `t' --default--, python-mode<br/>
will keep existing windows and split only if needed. Alternatively<br/>
if a multitude of python-<wbr/>shells/<wbr/>buffers should be visible, open them<br/>
manually and set `py-keep-<wbr/>windows-<wbr/>configuration' to `t'.</p>
<p> If `always' split according to settings of `split-<wbr/>height-<wbr/>threshold'<wbr/>, `split-<wbr/>width-threshold<wbr/>'; with `t' keep just two windows</p>
<p>- For completeness some commands user might expect<br/>
py-execute-<wbr/>statement-<wbr/>dedicated<br/>
py-execute-<wbr/>block-dedicated<br/>
py-execute-<wbr/>clause-<wbr/>dedicated<br/>
py-execute-<wbr/>block-or-<wbr/>clause-<wbr/>dedicated<br/>
py-execute-<wbr/>def-dedicated<br/>
py-execute-<wbr/>class-dedicated<br/>
py-execute-<wbr/>region-<wbr/>dedicated<br/>
py-execute-<wbr/>buffer-<wbr/>dedicated<br/>
py-execute-<wbr/>expression-<wbr/>dedicated<br/>
py-execute-<wbr/>partial-<wbr/>expression-<wbr/>dedicated<br/>
py-execute-<wbr/>line-dedicated<br/>
py-execute-<wbr/>top-level-<wbr/>dedicated</p>
<p>- `py-unload-<wbr/>python-<wbr/>el'<br/>
Normally commands delivered by python.el are usable alongside with<br/>
python-mode.el. Some old version of python.el might write skeletons into<br/>
python-<wbr/>mode-abbrev-<wbr/>table, which is removed that way.</p>
<p>Internally used functions preferably are prefixed `py--':<br/>
py--statement<wbr/>-opens-<wbr/>block-p<br/>
py--statement<wbr/>-opens-<wbr/>clause-<wbr/>p ...</p>
<p>New variable `py-ipython-<wbr/>command' - (PATH-TO)-IPython</p>
<p>Boolean `py-set-<wbr/>fill-column-<wbr/>p' renamed `py-auto-fill-mode'<br/>
Fill according to `py-docstring-<wbr/>fill-column' and<br/>
`py-comment-<wbr/>fill-column'</p>
<p>`py-font-<wbr/>lock-keywords' renamed `python-<wbr/>font-lock-<wbr/>keywords'<wbr/>,<br/>
<a class="bug-link" href="https://launchpad.net/bugs/1314921">lp:1314921</a></p>
<p>New booleans<br/>
- py-fast-process-p<br/>
If `t', stuff is executed through `py-fast-...'-<br/>
commands, suitable for large output. Result arrives<br/>
in py-fast-<wbr/>output-<wbr/>buffer, which is not in comint-mode</p>
<p>- py-shell-<wbr/>manage-<wbr/>windows-<wbr/>p<br/>
If `t', open output buffers, split windows according to settings of<br/>
`py-split-<wbr/>window-<wbr/>on-execute' and `py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p'.</p>
<p>Removed commands<br/>
-toggle-<wbr/>py-nil-<wbr/>docstring-<wbr/>style<br/>
-py-nil-<wbr/>docstring-<wbr/>style-on<br/>
-py-nil-<wbr/>docstring-<wbr/>style-off<br/>
-toggle-<wbr/>py-onetwo-<wbr/>docstring-<wbr/>style<br/>
-py-onetwo-<wbr/>docstring-<wbr/>style-on<br/>
-py-onetwo-<wbr/>docstring-<wbr/>style-off<br/>
-toggle-<wbr/>py-pep-<wbr/>257-docstring-<wbr/>style<br/>
-py-pep-<wbr/>257-docstring-<wbr/>style-on<br/>
-py-pep-<wbr/>257-docstring-<wbr/>style-off<br/>
-toggle-<wbr/>py-pep-<wbr/>257-nn-<wbr/>docstring-<wbr/>style<br/>
-py-pep-<wbr/>257-nn-<wbr/>docstring-<wbr/>style-on<br/>
-py-pep-<wbr/>257-nn-<wbr/>docstring-<wbr/>style-off<br/>
-toggle-<wbr/>py-symmetric-<wbr/>docstring-<wbr/>style<br/>
-py-symmetric-<wbr/>docstring-<wbr/>style-on<br/>
-py-symmetric-<wbr/>docstring-<wbr/>style-off<br/>
-toggle-<wbr/>py-django-<wbr/>docstring-<wbr/>style<br/>
-py-django-<wbr/>docstring-<wbr/>style-on<br/>
-py-django-<wbr/>docstring-<wbr/>style-off<br/>
Some commands not so useful made common functions, like<br/>
-py-statement-<wbr/>opens-block-<wbr/>p<br/>
-py-statement-<wbr/>opens-clause-<wbr/>p ...</p>
<p>Dropped booleans:<br/>
`py-start-<wbr/>run-py-<wbr/>shell',<br/>
`py-start-<wbr/>run-ipython-<wbr/>shell',<br/>
`py-pylint-<wbr/>offer-current-<wbr/>p'<br/>
`py-paragraph-<wbr/>fill-docstring-<wbr/>p'<br/>
`py-enforce-<wbr/>output-<wbr/>buffer-<wbr/>p'<br/>
`py-cleanup-<wbr/>temporary'<wbr/>, as redundant WRT `py-debug-p'</p>New in version 6.1.32014-01-28T07:28:13.418585+00:002014-01-28T07:44:45.872227+00:00tag:launchpad.net,2014-01-28:/+announcement/12406Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- PEP8 indent-alternatives when closing a list implemented</p>
<p>Boolean `py-close-<wbr/>at-start-<wbr/>column-<wbr/>p', default is nil</p>
<p>my_list = [<br/>
1, 2, 3,<br/>
4, 5, 6,<br/>
]<br/>
result = some_function_<wbr/>that_takes_<wbr/>arguments(<br/>
'a', 'b', 'c',<br/>
'd', 'e', 'f',<br/>
)</p>
<p>When non-nil, it will be lined up under the first character of the line that starts the multi-line construct, as in:</p>
<p>my_list = [<br/>
1, 2, 3,<br/>
4, 5, 6,<br/>
]</p>
<p>result = some_function_<wbr/>that_takes_<wbr/>arguments(<br/>
'a', 'b', 'c',<br/>
'd', 'e', 'f',<br/>
)</p>
<p>- Keys C-M-a, C-M-e usable for all top-level form, <a class="bug-link" href="https://launchpad.net/bugs/1191078">lp:1191078</a></p>
<p> Boolean `py-defun-<wbr/>use-top-<wbr/>level-p'<br/>
If non-nil, beginning- end-of-defun forms will use<br/>
`py-beginning<wbr/>-of-top-<wbr/>level', `py-end-<wbr/>of-top-<wbr/>level',<br/>
mark-defun marks top-level form at point etc.</p>
<p>Keys C-M-a, C-M-e usable for all top-level form, <a class="bug-link" href="https://launchpad.net/bugs/1191078">lp:1191078</a></p>
<p>- New commands:<br/>
py-beginning-<wbr/>of-block-<wbr/>current-<wbr/>column<br/>
"Reach the beginning of block which starts at current column "</p>
<p> py-beginning-<wbr/>of-top-<wbr/>level<br/>
py-beginning-<wbr/>of-top-<wbr/>level<br/>
py-end-<wbr/>of-top-<wbr/>level<br/>
py-mark-top-level<br/>
py-copy-top-level<br/>
py-delete-<wbr/>top-level<br/>
py-kill-top-level<br/>
py-execute-<wbr/>top-level<br/>
py-top-<wbr/>level-form-<wbr/>p<br/>
py-comment-<wbr/>top-level<br/>
py-beginning-<wbr/>of-top-<wbr/>level-p</p>
<p>- `minor-block' commands added<br/>
A minor block is started by a `for', `if', `try' or `with',<br/>
while block covers also `def' or `class'</p>
<p>- variable `py-keep-<wbr/>windows-<wbr/>configuration'<wbr/>, default is nil<br/>
Setting `py-keep-<wbr/>windows-<wbr/>configuration' to `t' will<br/>
restore windows-<wbr/>configuration regardless of<br/>
`py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p' and<br/>
`py-split-<wbr/>windows-<wbr/>on-execute-<wbr/>p' settings. However, if<br/>
an error occurs, it's displayed.</p>
<p> To suppres window-changes due to error-signaling<br/>
also, set `py-keep-<wbr/>windows-<wbr/>configuration' onto 'force</p>
<p>- boolean empty-line-<wbr/>closes-<wbr/>p, default is nil<br/>
When non-nil, dedent after empty line following block<br/>
If non-nil, a C-j from empty line would dedent.</p>
<p> if True:<br/>
print("Part of the if-statement")</p>
<p> print("Not part of the if-statement")</p>
<p>- boolean py-debug-p, default is nil<br/>
When non-nil, keep resp. store information useful for<br/>
debugging. Temporary files are not deleted. Other<br/>
functions might implement some logging etc.</p>
<p>- heuristic exit<br/>
new var `py-max-<wbr/>specpdl-<wbr/>size', default is `max-specpdl-size'<br/>
py-end-<wbr/>of-statement will error if number of<br/>
`py-max-<wbr/>specpdl-<wbr/>size' loops is completed, thus avoiding<br/>
a hang from a possibly eternal loop.</p>
<p>- `py-statement' no longer refferred to `py-copy-statement'<br/>
Same with block, def, expression etc. `py-statement' made<br/>
own command, which returns statement, a string.</p>
<p>- boolean `py-max-<wbr/>help-buffer-<wbr/>p', default is nil<br/>
If "*Python-<wbr/>Help*"-<wbr/>buffer be the only visible.</p>New in version 6.1.22013-09-02T15:27:42.615489+00:002013-11-19T08:40:31.535862+00:00tag:launchpad.net,2013-09-02:/+announcement/11892Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- simplified menu</p>
<p>- `py-execute-<wbr/>...'-commands return result as string<br/>
Controlled by boolean `py-store-<wbr/>result-<wbr/>p', Default is nil<br/>
When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked.</p>
<p>- commands deleting all commented lines:<br/>
`py-delete-<wbr/>comments-<wbr/>in-def-<wbr/>or-class'<br/>
`py-delete-<wbr/>comments-<wbr/>in-class'<br/>
`py-delete-<wbr/>comments-<wbr/>in-block'<br/>
`py-delete-<wbr/>comments-<wbr/>in-region'</p>
<p>- boolean `py-indent-<wbr/>paren-spanned-<wbr/>multilines-<wbr/>p, default is nil<br/>
If non-nil, indents elements of list a value of `py-indent-offset' to first element:<br/>
def foo():<br/>
if (foo &&<br/>
baz):<br/>
bar()</p>
<p> Default lines up with first element:</p>
<p> def foo():<br/>
if (foo &&<br/>
baz):<br/>
bar()</p>
<p>- `py-output-buffer' made customizable<br/>
See boolean `py-enforce-<wbr/>output-<wbr/>buffer-<wbr/>p'</p>
<p>- exceptions following executed regions made point to source</p>
<p>- command `py-empty-<wbr/>out-list-<wbr/>backward'<br/>
Deletes all elements from list before point<br/>
With when cursor after<br/>
mystring[0:1]<br/>
-------------^<br/>
==><br/>
mystring[]<br/>
---------^<br/>
In result cursor is insided emptied delimited form."</p>
<p>- `py-minor-<wbr/>expression' reconsidered, numeric args dropped<br/>
grasps keyword-arguments</p>
<p>- boolean `py-electric-<wbr/>kill-backward-<wbr/>p', default is nil.<br/>
If behind a delimited form of braces, brackets or parentheses,<br/>
`py-electric-<wbr/>backspace' runs `py-empty-<wbr/>out-list-<wbr/>backward'</p>
<p>- py-flakes8-run, flakes8 API</p>
<p>- customizable `py-backslashed<wbr/>-lines-<wbr/>indent-<wbr/>offset'</p>
<p>- boolean `py-pylint-<wbr/>offer-current-<wbr/>p'<br/>
If current buffers file should be offered for check.<br/>
Otherwise `py-pylint-run' looks up filename from history</p>
<p>- boolean `py-prompt-<wbr/>on-changed-<wbr/>p'<br/>
When called interactively, ask for save before a<br/>
changed buffer is sent to interpreter.</p>
<p>- customizable `py-closing-<wbr/>list-space'<br/>
Number of chars, closing parenthesis outdent from opening</p>
<p>- customizable `py-uncomment-<wbr/>indents-<wbr/>p'<br/>
When non-nil, after uncomment indent lines.</p>
<p>- boolean `py-load-<wbr/>skeletons-<wbr/>p'<br/>
If skeleton definitions should be loaded</p>
<p>- boolean `py-if-<wbr/>name-main-<wbr/>permission-<wbr/>p'<br/>
Allows execution of code inside blocks started by<br/>
if __name__== '__main__'</p>
<p>- boolean `py-highlight-<wbr/>error-source-<wbr/>p', default is nil<br/>
When py-execute-... commands raise an error, respective code in source-buffer will be highlighted.</p>
<p>- `py-remove-<wbr/>overlays-<wbr/>at-point'<wbr/>, command<br/>
Remove overlays as set when `py-highlight-<wbr/>error-source-<wbr/>p' is non-nil.</p>
<p>- `py-which-<wbr/>def-or-<wbr/>class', command, now used `which-<wbr/>function-<wbr/>mode'</p>
<p>- unused variable `py-backspace-<wbr/>function' removed</p>
<p>- Bundled third-party-stuff removed as reported conflicting at emacs-mirror, <a class="bug-link" href="https://launchpad.net/bugs/1153998">lp:1153998</a><br/>
affects autopair.el, smart-operator.el<br/>
Kept menu switches resp. commands will issue a warning</p>
<p>- dropped `py-paragraph-<wbr/>fill-docstring-<wbr/>p'; just `fill-paragraph' should DTRT</p>
<p>- `py-set-<wbr/>pager-cat-<wbr/>p', default is nil<br/>
If non-nil, $PAGER is set to 'cat'</p>
<p>- in directory doc customizable variables are listed:<br/>
variables-<wbr/>python-<wbr/>mode.org, variables-<wbr/>python-<wbr/>mode.rst</p>
<p>Caveat: Please save buffer before C-c C-c, otherwise a bug shows up.<br/>
Bug is fixed in current trunk.</p>python-mode.el-6.1.12013-02-23T15:35:53.607528+00:002013-02-23T15:35:53.543377+00:00tag:launchpad.net,2013-02-23:/+announcement/11203Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.1.1<br/>
-------<wbr/>-------<wbr/>-------</p>
<p>- comment-related commands:<br/>
py-uncomment<br/>
py-comment-block, py-comment-clause,<br/>
py-comment-<wbr/>block-or-<wbr/>clause, py-comment-def,<br/>
py-comment-class, py-comment-<wbr/>def-or-<wbr/>class,<br/>
py-comment-<wbr/>statement</p>
<p>- boolean `py-set-<wbr/>fill-column-<wbr/>p'<br/>
If `t', enables use Python specific `fill-column' according to<br/>
`py-docstring<wbr/>-fill-column'<wbr/>, default is 72<br/>
and `py-comment-<wbr/>fill-column, default is 79</p>
<p>- boolean `py-tab-<wbr/>shifts-<wbr/>region-<wbr/>p'<br/>
when `t', TAB will indent/cycle the region, not just the current line.</p>
<p>- boolean `py-tab-<wbr/>indents-<wbr/>region-<wbr/>p'<br/>
when `t', when first TAB doesn't shift, `indent-region' is called</p>
<p>- command from RET customizable via `py-return-key':<br/>
`py-newline-<wbr/>and-indent'<wbr/>, `newline' or `py-newline-<wbr/>and-dedent'</p>
<p>- boolean `py-use-<wbr/>font-lock-<wbr/>doc-face-<wbr/>p', default is nil<br/>
If non-nil, documention strings get `font-lock-<wbr/>doc-face'</p>
<p>- boolean `py-newline-<wbr/>delete-<wbr/>trailing-<wbr/>whitespace-<wbr/>p'<br/>
Delete trailing whitespace maybe left by `py-newline-<wbr/>and-indent'</p>
<p>- `py-electric-<wbr/>comment-<wbr/>p' new default nil</p>
<p>- py-up minor API change<br/>
If inside a delimited form --string or list-- go to it's beginning<br/>
If not at beginning of a statement or block, go to it's beginning<br/>
If at beginning of a statement or block, go to beginning one level above of c</p>
<p>- py-down minor API change:<br/>
Go to beginning of one level below of compound statement or definition at point.<br/>
If no statement or block below, but a delimited form --string or list-- go to it's beginning.<br/>
Repeated call from there will behave like down-list.</p>
<p>- commands make underscore syntax changes easier:<br/>
toggle-<wbr/>py-underscore-<wbr/>word-syntax-<wbr/>p<br/>
py-underscore<wbr/>-word-syntax-<wbr/>p-on<br/>
py-underscore<wbr/>-word-syntax-<wbr/>p-off</p>
<p>- py-update-imports removed<br/>
Do not maintain a static variable containing needed imports<br/>
Determine imports on the fly rather, as it might change<br/>
the very moment</p>
<p>- variable `py-fill-<wbr/>docstring-<wbr/>style' renamed `py-docstring-<wbr/>style'</p>python-mode.el-6.1.02012-12-05T09:20:09.779624+00:002012-12-05T09:20:09.679509+00:00tag:launchpad.net,2012-12-05:/+announcement/10921Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.1.0<br/>
-------<wbr/>-------<wbr/>-------</p>
<p>- py-up<br/>
Go to beginning one level above of compound statement or definition at point.<br/>
- py-down<br/>
Go to beginning one level below of compound statement or definition at point.</p>
<p>- Customizable output directory<br/>
After checking for a remote shell, the following variables are consulted:</p>
<p> py-use-<wbr/>current-<wbr/>dir-when-<wbr/>execute-<wbr/>p, default t<br/>
When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands</p>
<p> py-fileless-<wbr/>buffer-<wbr/>use-default-<wbr/>directory-<wbr/>p, default t<br/>
When `py-use-<wbr/>current-<wbr/>dir-when-<wbr/>execute-<wbr/>p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shell"</p>
<p> py-keep-<wbr/>shell-dir-<wbr/>when-execute-<wbr/>p, default nil<br/>
Don't change Python shell's current working directory when sending code.</p>
<p> `py-execute-<wbr/>directory'<wbr/>, default nil</p>
<p> If nothing was set so far, $VIRTUAL_ENV and $HOME are queried.</p>
<p>- Set of commands calling Python3.3</p>
<p>- fill docstrings according to style, commands<br/>
py-fill-<wbr/>string-<wbr/>django<br/>
py-fill-<wbr/>string-<wbr/>onetwo<br/>
py-fill-<wbr/>string-<wbr/>pep-257<br/>
py-fill-<wbr/>string-<wbr/>pep-257-<wbr/>nn<br/>
py-fill-<wbr/>string-<wbr/>symmetric</p>
<p> Customizable variable `py-fill-<wbr/>docstring-<wbr/>style' provides default value<br/>
used by `py-fill-string', `py-fill-paragraph'</p>
<p> DJANGO:</p>
<p> \"\"\"<br/>
Process foo, return bar.<br/>
\"\"\"</p>
<p> \"\"\"<br/>
Process foo, return bar.</p>
<p> If processing fails throw ProcessingError.<br/>
\"\"\"</p>
<p> ONETWO:</p>
<p> \"\"\"Process foo, return bar.\"\"\"</p>
<p> \"\"\"<br/>
Process foo, return bar.</p>
<p> If processing fails throw ProcessingError.</p>
<p> \"\"\"</p>
<p> PEP-257:</p>
<p> \"\"\"Process foo, return bar.\"\"\"</p>
<p> \"\"\"Process foo, return bar.</p>
<p> If processing fails throw ProcessingError.</p>
<p> \"\"\"</p>
<p> PEP-257-NN:</p>
<p> \"\"\"Process foo, return bar.\"\"\"</p>
<p> \"\"\"Process foo, return bar.</p>
<p> If processing fails throw ProcessingError.<br/>
\"\"\"</p>
<p> SYMMETRIC:</p>
<p> \"\"\"Process foo, return bar.\"\"\"</p>
<p> \"\"\"<br/>
Process foo, return bar.</p>
<p> If processing fails throw ProcessingError.<br/>
\"\"\""</p>
<p> Built upon code seen at python.el, thanks Fabian</p>
<p>- `py-down-<wbr/>statement'<wbr/>, `py-up-statement'</p>
<p>- toggle-<wbr/>py-split-<wbr/>windows-<wbr/>on-execute-<wbr/>p<br/>
- py-split-<wbr/>windows-<wbr/>on-execute-<wbr/>p-off<br/>
- py-split-<wbr/>windows-<wbr/>on-execute-<wbr/>p-on</p>
<p>- toggle-<wbr/>py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p<br/>
- py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p-on<br/>
- py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p-off</p>
<p>- `py-shell-<wbr/>switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p' renamed `py-switch-<wbr/>buffers-<wbr/>on-execute-<wbr/>p'</p>python-mode.el-6.0.122012-09-28T05:58:41.023524+00:002012-09-28T06:00:25.758886+00:00tag:launchpad.net,2012-09-28:/+announcement/10674Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.12<br/>
-------<wbr/>-------<wbr/>-------</p>
<p>- py-sexp-function.</p>
<p> When set, it's value is called instead of `forward-sexp', `backward-sexp<br/>
Choices are py-partial-<wbr/>expression, py-expression, default nil</p>
<p>- `py-partial-<wbr/>expression' reconsidered.<br/>
Beside common moves like `defun', `statement' specific Python-mode edits are delivered:</p>
<p> `py-expression' and `py-partial-<wbr/>expression'<wbr/>.</p>
<p> Statement below is considered composed of two `py-expression'</p>
<p> a = ['spam', 'eggs', 100, 1234]<br/>
|_| |______<wbr/>_______<wbr/>_______<wbr/>_____|</p>
<p> Assigment operator and all inside comments is ignored.</p>
<p> `py-partial-<wbr/>expression' would match six sections</p>
<p> a = ['spam', 'eggs', 100, 1234]<br/>
|_| |_____| |____| |__| |__|<br/>
<wbr/>|______<wbr/>_______<wbr/>_______<wbr/>_____|</p>
<p> When traversing code, `py-partial-<wbr/>expression' climbs down and up<br/>
all levels encountered, i.e. at opening `[' `py-expression' would return ['spam', 'eggs', 100, 1234], while one char behind at `''<br/>
it yields `'spam','</p>
<p>- `py-find-<wbr/>definition' also detects non-imported definition in current buffer</p>
<p>- Choice between `py-imenu-<wbr/>create-<wbr/>index-new' and series 5.<br/>
py-imenu-<wbr/>create-<wbr/>index-function made easier.<br/>
Customizable variable `py-imenu-<wbr/>create-<wbr/>index-function' provided, see also<br/>
command in PyTools</p>
<p>- New commands addressing BOL as start/end:<br/>
py-beginning-<wbr/>of-block-<wbr/>bol<br/>
py-end-<wbr/>of-block-<wbr/>bol<br/>
py-mark-block-bol<br/>
py-copy-block-bol<br/>
py-kill-block-bol<br/>
py-delete-<wbr/>block-bol<br/>
py-end-<wbr/>of-clause-<wbr/>bol<br/>
etc.</p>
<p>- While commands "py-beginning..." resp. "py-end..." compute the context,<br/>
selecting the corresponding beginning or end,<br/>
new "py-up...", "py-down..." jump regexp-based to the<br/>
next element in buffer.<br/>
See also menu PyEdit</p>python-mode.el-6.0.112012-08-14T19:31:47.280226+00:002012-08-14T19:31:47.216776+00:00tag:launchpad.net,2012-08-14:/+announcement/10424Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.11<br/>
-------<wbr/>-------<wbr/>-------</p>
<p>- improved Pymacs based code completion:<br/>
- Completion of symbols from imported modules, functions, classes,<br/>
module/<wbr/>class-level data members and instance variables in the current<br/>
buffer. The information for this completion is updated whenever the file<br/>
is saved.<br/>
- Completion of local variables and function parameters.<br/>
- Type deduction from constructor calls and literals.<br/>
- Show help for modules, classes and functions.<br/>
- Go to definition of modules, classes and functions.<br/>
- Show signature of functions.<br/>
- Support for auto-complete and company.</p>
<p>- remote shell support</p>
<p>- extended version of smart-operator added<br/>
original smart-operator.el authored by<br/>
William Xu <william.<wbr/>xwl@gmail.<wbr/>com><br/>
Url: <a href="http://xwl.appspot.com/ref/smart-operator.el" rel="nofollow">http://<wbr/>xwl.appspot.<wbr/>com/ref/<wbr/>smart-operator.<wbr/>el</a></p>
<p>- py-electric-colon extended<br/>
if `py-electric-<wbr/>colon-newline-<wbr/>and-indent-<wbr/>p' is non-nil,<br/>
`py-electric-<wbr/>colon' calls `newline-<wbr/>and-indent'</p>
<p>- boolean `py-no-<wbr/>completion-<wbr/>calls-dabbrev-<wbr/>expand-<wbr/>p'<br/>
If completion function should call dabbrev-expand<br/>
when no completion found. Default is `t'</p>
<p>- boolean `py-shell-<wbr/>prompt-<wbr/>read-only'<wbr/>, default t<br/>
sets `comint-<wbr/>prompt-<wbr/>read-only'<wbr/>, avoid unintentional edits</p>
<p>- customizable history variables/files<br/>
py-python-history defaults to "~/.python_history"<br/>
py-ipython-<wbr/>history defaults to "~/.ipython/<wbr/>history"</p>
<p> If py-honor-<wbr/>PYTHONHISTORY-<wbr/>p is `t', $PYTHONHISTORY takes precedence, default is nil<br/>
If py-honor-<wbr/>IPYTHONDIR-<wbr/>p is `t', $IPYTHONHISTORY precedes, default is nil</p>
<p>- customizable boolean `py-trailing-<wbr/>whitespace-<wbr/>smart-delete-<wbr/>p'<br/>
Default is nil. Some commands may delete trailing<br/>
whitespaces by the way. When editing other peoples<br/>
code, this may produce a larger diff than expected</p>python-mode.el-6.0.102012-06-28T16:24:15.246932+00:002012-06-28T16:24:15.106385+00:00tag:launchpad.net,2012-06-28:/+announcement/10246Andreas Roehlerhttps://launchpad.net/~a-roehler<p>adresses some bugs and speed issues</p>python-mode.el-6.0.92012-06-20T16:32:55.750133+00:002012-06-20T16:32:55.672082+00:00tag:launchpad.net,2012-06-20:/+announcement/10215Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.9<br/>
-------<wbr/>-------<wbr/>------</p>
<p>- autopair-mode delivered<br/>
Credits to Joao Tavora <a href="http://autopair.googlecode.com" rel="nofollow">http://<wbr/>autopair.<wbr/>googlecode.<wbr/>com</a><br/>
see README-AUTOPAIR.org for details</p>
<p>- Syntax highlighting in Python-shell buffers enabled<br/>
boolean `py-fontify-<wbr/>shell-buffer-<wbr/>p', default is nil</p>
<p>- py-add-abbrev, new command<br/>
Similar to `add-mode-abbrev', but uses<br/>
`py-partial-<wbr/>expression' before point for expansion to<br/>
store, not `word'. Also provides a proposal for new<br/>
abbrevs.</p>
<p> Proposal for an abbrev is composed from the downcased<br/>
initials of expansion - provided they are of char-class<br/>
[:alpha:]</p>
<p> For example code below would be recognised as a<br/>
`py-expression' composed by three<br/>
py-partial-<wbr/>expressions.</p>
<p> OrderedDict.<wbr/>popitem(<wbr/>last=True)</p>
<p> Putting the curser at the EOL, M-3 M-x py-add-abbrev</p>
<p> would prompt "op" for an abbrev to store, as first<br/>
`py-partial-<wbr/>expression' beginns with a "(", which is<br/>
not taken as proposal.</p>
<p>- py-edit-abbrevs<br/>
Jumps to `python-<wbr/>mode-abbrev-<wbr/>table'</p>
<p>- modeline enhanced<br/>
when a path/to/<wbr/>my/favoured/<wbr/>Python is given with `py-shell-name'<br/>
the Python-shell buffer before would display</p>
<p> *ND path/to/<wbr/>my/favoured/<wbr/>Python*</p>
<p> now:</p>
<p> *ptmfP Python*</p>
<p> boolean `py-modeline-<wbr/>display-<wbr/>full-path-<wbr/>p'<br/>
boolean `py-modeline-<wbr/>acronym-<wbr/>display-<wbr/>home-p'<br/>
If the modeline acronym should contain chars indicating the home-directory.</p>
<p>- mode-line indicates "Py" by default<br/>
customize `python-<wbr/>mode-modeline-<wbr/>display'</p>
<p>- Pymacs intergration dropped from trunk<br/>
conflicts with classic install being reported</p>python-mode.el-6.0.82012-05-23T06:54:51.194784+00:002012-05-23T06:54:51.118173+00:00tag:launchpad.net,2012-05-23:/+announcement/10088Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.8<br/>
-------<wbr/>-------<wbr/>------</p>
<p>- `py-pep8-run', new command checking formatting<br/>
`py-pep8-help'</p>
<p>- `py-pyflake-run', new command<br/>
Pyflakes is a simple program which checks Python<br/>
source files for errors. - It is similar to<br/>
PyChecker in scope, but differs in - that it does<br/>
not execute the modules to check them.<br/>
`py-<wbr/>pyflake-<wbr/>help'</p>
<p>- `py-pylint-run', new command calls Pylint,<br/>
a Python source code analyzer which looks for<br/>
programming errors, helps enforcing a coding standard<br/>
and sniffs for some code smells (as defined in Martin<br/>
Fowler's Refactoring book) .</p>
<p> Pylint checks length of lines of code, if variable<br/>
names are well-formed according to your coding<br/>
standard, if declared interfaces are truly<br/>
implemented, and much more. Additionally, it is<br/>
possible to write plugins.<br/>
`py-pylint-doku', `py-pylint-help'</p>
<p>- py-pyflakespep8<wbr/>-run, combines calls to pyflakes and pep8</p>
<p>- respective flymake-modes,<br/>
`pyflakespep8<wbr/>-flymake-<wbr/>mode', `pylint-<wbr/>flymake-<wbr/>mode'<br/>
etc. See meny PyTools</p>python-mode.el-6.0.72012-05-08T07:45:44.252772+00:002012-05-08T07:50:20.394130+00:00tag:launchpad.net,2012-05-08:/+announcement/10020Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.7</p>
<p>- make every Python shell acces its own history-file<br/>
.python3_history<br/>
.python_history<br/>
.ipython_history etc.</p>
<p>- related to shell used<br/>
`toggle-<wbr/>force-py-<wbr/>shell-name-<wbr/>p'<br/>
`force-<wbr/>py-shell-<wbr/>name-p-<wbr/>on'/off</p>
<p> making it easier to enforce default py-shell upon execution</p>
<p> `toggle-<wbr/>force-local-<wbr/>shell'<br/>
`py-force-<wbr/>local-shell-<wbr/>on'/off</p>
<p> If locally indicated Python shell should be taken and<br/>
enforced upon sessions execute commands, <a class="bug-link" href="https://launchpad.net/bugs/988091">lp:988091</a></p>
<p>- specific completion:<br/>
py-python2-<wbr/>shell-complete, py-python3-<wbr/>shell-complete,<br/>
py-python2-<wbr/>script-<wbr/>complete, py-python3-<wbr/>script-<wbr/>complete</p>python-mode.el-6.0.62012-04-23T09:34:04.715797+00:002012-04-23T09:35:04.260444+00:00tag:launchpad.net,2012-04-23:/+announcement/9948Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.6<br/>
-------<wbr/>-------<wbr/>------<br/>
- files inside a virtual machine made visible for pdbtrack</p>
<p>- new commands `py-toggle-<wbr/>split-windows-<wbr/>on-execute'<wbr/>, ...-on, ...-off<br/>
`py-toggle-<wbr/>shell-switch-<wbr/>buffers-<wbr/>on-execute'<wbr/>, ...-on, ...-off<br/>
allow `py-execute-buffer' etc. to split/not-split windows,<br/>
move cursor onto output or not</p>
<p>- Behavior of C-u M-x `py-shell' closer to common shell</p>
<p> C-u 4 prompts for a buffer,<br/>
i.e. when a "*Python*" shell is running,<br/>
C-u M-x `py-shell' opens a "*Python<2>*" per default<br/>
C-u 2 M-x py-shell promts for command-arguments as known from 5th-series</p>
<p>- `py-intend-<wbr/>tabs-mode' sets default of `indent-tabs-mode', <a class="bug-link" href="https://launchpad.net/bugs/953765">lp:953765</a></p>
<p>-- New boolean variable `py-intend-<wbr/>tabs-mode'<br/>
Permits value independent from Emacs-wide `indent-tabs-mode'<br/>
Commands `py-toggle-<wbr/>indent-<wbr/>tabs-mode'<wbr/>, ...-on, ...-off<br/>
menu PyTools "Toggle indent-tabs-mode"</p>
<p>- Extended py-execute-... forms provided for "line"</p>
<p>- new commands py-beginning/<wbr/>end-of-<wbr/>line<br/>
while introduced for internal reasons --because of it's<br/>
return values-- they allow repeats, i.e. when already<br/>
at end-of-line, jumping to next end etc.</p>
<p>- new boolean `py-force-<wbr/>py-shell-<wbr/>name-p'<br/>
When `t', execution with Python specified in `py-shell-name' is en forced, shebang will have no effect. Default is nil.</p>
<p>- customizable `py-separator-<wbr/>char', a string, see report <a class="bug-link" href="https://launchpad.net/bugs/975539">lp:975539</a><br/>
Precedes guessing when not empty, is returned by<br/>
function `py-separator-char'</p>
<p>- nicer `org-cycle' behavior: when new `py-org-cycle-p' it `t',<br/>
command `org-cycle' is available at shift-TAB, <backtab></p>bug-fix release 6.0.62012-03-11T08:08:42.320886+00:002012-03-25T14:35:21.219356+00:00tag:launchpad.net,2012-03-11:/+announcement/9741Andreas Roehlerhttps://launchpad.net/~a-roehler<p>scheduled for 2012-04-06</p>python-mode.el-6.0.52012-03-03T18:50:08.691671+00:002012-03-03T19:00:42.697748+00:00tag:launchpad.net,2012-03-03:/+announcement/9699Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- Menu reworked and extended</p>
<p>- extended commands combine executing statement/block... with dedicated/switch... etc. This may remove some need of customization.</p>
<p>- local environments support started<br/>
If calls to common `py-shell' should use local executable<br/>
instead of default system Python set<br/>
`py-use-<wbr/>local-default' alongside with<br/>
`py-shell-<wbr/>local-path'</p>
<p>- `py-toggle-shells' alias of more powerful `py-switch-shells'<br/>
Toggles between the interpreter customized in `py-shell-toggle-1' resp. `py-shell-<wbr/>toggle-<wbr/>2'. Was hard-coded CPython and Jython in earlier versions, now starts with Python2 and Python3 by default.</p>
<p>- `py-shell-name' accepts PATH/TO/EXECUTABLE<br/>
in addition to name of an installed default Python-Shell.<br/>
Permits installing commands like<br/>
(defun python-XYZ-shell (&optional argprompt)<br/>
"Start an Python-XYZ interpreter ... "<br/>
(interactive)<br/>
(let ((py-shell-name "PATH/TO/<wbr/>PYTHON-<wbr/>XYZ"))<br/>
(py-shell argprompt)))</p>
<p>- new commands `indent-tabs-mode', `toggle-<wbr/>indent-<wbr/>tabs-mode'<wbr/>,<br/>
`indent-<wbr/>tabs-mode-<wbr/>on', `indent-<wbr/>tabs-mode-<wbr/>off'</p>
<p> feature after a request at Stack Exchange asked Jul<br/>
13 '11 at 13:23 saying<br/>
`tab-width' now follows `py-indent-offset'</p>
<p>- new command `py-execute-<wbr/>region-<wbr/>default' forces the<br/>
systems default Python interpreter to execute, ignores<br/>
shebang</p>
<p> related functions redesigned, `async' argument dropped<br/>
`py-execute-<wbr/>region' now reads:</p>
<p> (defun py-execute-region (start end &optional shell dedicated)<br/>
"Send the region to a Python interpreter.</p>
<p> When called with \\[univeral-<wbr/>argument]<wbr/>, execution through `default-value' of `py-shell-name' is forced.<br/>
When called with \\[univeral-<wbr/>argument] followed by a number different from 4 and 1, user is prompted to specify a shell. This might be the name of a system-wide shell or include the path to a virtual environment.</p>
<p> When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. "<br/>
[ ... ]</p>
<p>- new `py-number-face',<br/>
visible only when customized and `py-use-<wbr/>number-<wbr/>face-p' is `t',<br/>
inherits default face<br/>
With large files fontifying numbers may cause a delay<br/>
Credits to github.<wbr/>com/fgallina/<wbr/>python.<wbr/>el/issues42</p>
<p>- new boolean `py-verbose-p'<br/>
if `t', reached indent level etc. is messaged</p>
<p>- new commands py-execute-<wbr/>buffer-<wbr/>dedicated, py-execute-<wbr/>buffer-<wbr/>switch -dedicated</p>
<p>- `toggle-<wbr/>py-smart-<wbr/>indentation' new command<br/>
also `py-smart-<wbr/>indentation-<wbr/>on', -off</p>python-mode.el-6.0.42011-12-30T18:27:12.970766+00:002012-03-03T19:01:55.939929+00:00tag:launchpad.net,2011-12-30:/+announcement/9438Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New in version 6.0.4</p>
<p>- Python shell starts with `python-mode'<br/>
that's needed by completion for now<br/>
boolean customizable `py-start-<wbr/>run-py-<wbr/>shell'</p>
<p>- outline-<wbr/>(minor-<wbr/>)mode enabled providing regular<br/>
expressions. Customize `py-outline-<wbr/>minor-mode-<wbr/>p' to<br/>
switch it on with python-mode</p>
<p>- Hook delivered to start hs-minor-mode from python-mode<br/>
Customize `py-hide-<wbr/>show-minor-<wbr/>mode-p'<br/>
Key setting example:<br/>
(global-set-key [(super s)] 'hs-hide-all)<br/>
(global-set-key [(super S)] 'hs-show-all)</p>
<p>- Listing of available commands in org-mode and reST<br/>
format in directory "doc"</p>
<p>- Python shells and executing forms may be called as<br/>
dedicated process. See commands available \w suffix<br/>
"-dedicated".</p>
<p>- completion fixed: M-TAB completes in Python buffer, TAB<br/>
completes in Python shells</p>
<p>- py-down-FORM-lc commands<br/>
Goto beginning of line following end of FORM.<br/>
\"-lc\" stands for \"left-corner\" - a complementary command travelling left, whilst `py-end-of-FORM' stops at right corner.<br/>
Implemented forms are "block", "clause", "def", "class", "statement".</p>
<p>- py-down-FORM commands</p>
<p> like py-down-block introduced in version 6.0.3,<br/>
implemented also for "clause", "def", "class",<br/>
"statement".<br/>
Go to the beginning of next block below<br/>
current level.</p>python-mode.el-6.0.32011-10-06T18:43:28.643791+00:002011-10-06T18:43:28.593541+00:00tag:launchpad.net,2011-10-06:/+announcement/9018Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- commands `ipython', `python2', `python3', `jython', `python'<br/>
opening a respective python shell</p>
<p>- ipython integration started</p>
<p>- py-shift-<wbr/>block-left, py-shift-<wbr/>block-right etc.<br/>
Implemented forms that way are<br/>
"paragraph" "block" "clause" "def" "class" "line" "statement"</p>
<p>- py-dedent<br/>
Dedent line according to `py-indent-offset'. With<br/>
arg, do it that many times. If point is between<br/>
indent levels, dedent to next level. Stops at BOL.<br/>
Returns column reached, if dedent done, nil otherwise.</p>
<p>- py-indent-<wbr/>forward-<wbr/>line<br/>
Indent line and move one line forward. If<br/>
`py-kill-<wbr/>empty-line' is non-nil, delete an empty<br/>
line. When closing a form, use py-close-block et al,<br/>
which will move and indent likewise. Returns position.</p>
<p>- py-down-block<br/>
Go to the beginning of next block below current level.<br/>
Returns position if block inside found, nil otherwise.</p>
<p>- py-close-block, -clause, -def, class<br/>
Set indent level to that of beginning of definition.<br/>
If final line isn't empty and<br/>
`py-close-<wbr/>block-provides-<wbr/>newline' non-nil, insert a<br/>
newline. Returns column.</p>
<p>- new commands specifying the shell override<br/>
`py-shell-name' for execution<br/>
implemented shells are "python" "python2" "python2.7"<br/>
"python3" "python3.2" "jython"</p>
<p> available with default, -switch and -no-switch<br/>
option, i.e.<br/>
py-execute-<wbr/>region-<wbr/>python3.<wbr/>2<br/>
py-execute-<wbr/>region-<wbr/>python3.<wbr/>2-switch<br/>
py-execute-<wbr/>region-<wbr/>python3.<wbr/>2-no-switch etc.</p>
<p> Docstring of py-execute-<wbr/>region-<wbr/>python3.<wbr/>2-switch for<br/>
example: "Send the region to a common shell calling the<br/>
python3.2 interpreter. Ignores setting of<br/>
`py-shell-<wbr/>switch-<wbr/>buffers-<wbr/>on-execute'<wbr/>, output-buffer<br/>
will being switched to."</p>
<p>- Declarations<br/>
Deal with assigments resp. statements in current<br/>
level which don't open blocks. Provides common edit<br/>
functions as copy, mark, kill, goto beg/end.</p>
<p> Functions will be used typically to grasp<br/>
initialisations resp. assignements of variables<br/>
between the definition of a class or method and it's<br/>
body, likewise global stuff at the head of a file.</p>
<p>- column-marker.el added<br/>
Commands `column-marker-1', `column-marker-2', and<br/>
`column-marker-3' each highlight a given column<br/>
(using different background colors by default).</p>python-mode.el-6.0.22011-08-23T07:22:44.484048+00:002011-08-23T07:34:26.067394+00:00tag:launchpad.net,2011-08-23:/+announcement/8829Andreas Roehlerhttps://launchpad.net/~a-roehler<p>- New feature `py-electric-<wbr/>comment'</p>
<p> When inserting a comment, if starting a comment, indent<br/>
accordingly. If a numeric argument ARG is provided,<br/>
that many colons are inserted non-electrically. With<br/>
universal-<wbr/>prefix-<wbr/>key C-u \"#\" Electric behavior<br/>
is inhibited inside a string or comment.</p>
<p>- New commands `py-partial-<wbr/>expression'<wbr/>:</p>
<p> "." operators delimit a partial-expression on it's<br/>
level.</p>
<p> Given the function below, `py-partial-<wbr/>expression'<br/>
called at pipe symbol would copy and return:</p>
<p> def usage():<br/>
print """Usage: %s<br/>
....""" % (<br/>
<wbr/> os.path.<wbr/>basename(<wbr/>sys.argv[<wbr/>0]))<br/>
-----<wbr/>-------<wbr/>|------<wbr/>-------<wbr/>-------<wbr/>-----<br/>
==> path</p>
<p> <wbr/> os.path.<wbr/>basename(<wbr/>sys.argv[<wbr/>0]))<br/>
-----<wbr/>-------<wbr/>------|<wbr/>-------<wbr/>-------<wbr/>-----<br/>
==> basename(<wbr/>sys.argv[<wbr/>0]))</p>
<p> <wbr/> os.path.<wbr/>basename(<wbr/>sys.argv[<wbr/>0]))<br/>
-----<wbr/>-------<wbr/>-------<wbr/>-------<wbr/>|------<wbr/>-----<br/>
==> sys</p>
<p> <wbr/> os.path.<wbr/>basename(<wbr/>sys.argv[<wbr/>0]))<br/>
-----<wbr/>-------<wbr/>-------<wbr/>-------<wbr/>----|--<wbr/>-----<br/>
==> argv[0]</p>
<p> while `py-expression' would copy and return</p>
<p> (<br/>
<wbr/> os.path.<wbr/>basename(<wbr/>sys.argv[<wbr/>0]))</p>
<p> ;;;;;</p>
<p> Also for existing commands a shorthand is defined:</p>
<p> (defalias 'py-statement 'py-copy-statement)</p>
<p> which will mark, copy and return.</p>
<p>- Commands implementing a behavior which customizing of<br/>
`py-shell-<wbr/>switch-<wbr/>buffers-<wbr/>on-execute' would do:</p>
<p> py-execute-<wbr/>buffer-<wbr/>no-switch<br/>
py-execute-<wbr/>buffer-<wbr/>switch<br/>
py-execute-<wbr/>region-<wbr/>no-switch<br/>
py-execute-<wbr/>region-<wbr/>switch</p>
<p>- Several bugfixes.</p>python-mode.el-6.0.12011-08-05T08:58:04.656220+00:002011-08-05T08:58:04.587592+00:00tag:launchpad.net,2011-08-05:/+announcement/8761Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New group of commands `py-expression' addresses parts<br/>
of a statement, for example which would be concatenated<br/>
by "."-operator.</p>
<p>See</p>
<p>py-copy-expression<br/>
py-mark-expression<br/>
py-beginning-<wbr/>of-expression<br/>
py-end-<wbr/>of-expression<br/>
py-kill-expression</p>
<p>Comment: Whilst operators inside a statement are<br/>
Python expressions syntactically, editing command<br/>
`py-expression' ignores them, as it's dealt with easier<br/>
by common `symbol'-commands already</p>
<p>Several bugfixes.</p>python-mode.el 6.02011-07-21T20:12:09.265075+00:002011-07-23T15:26:43.716552+00:00tag:launchpad.net,2011-07-21:/+announcement/8696Andreas Roehlerhttps://launchpad.net/~a-roehler<p>New commands</p>
<p>As shown below for the `mark'-command, delete,<br/>
copy, jump to beginning and end of the respective<br/>
programming-<wbr/>expressions:</p>
<p>py-mark-statement<br/>
py-mark-block<br/>
py-mark-<wbr/>block-or-<wbr/>clause<br/>
py-mark-def<br/>
py-mark-<wbr/>def-or-<wbr/>class<br/>
py-mark-class<br/>
py-mark-clause</p>
<p>Also a couple of bugfixes are done based at a new core.</p>python-mode.el 5.1.02009-01-29T19:39:36.043583+00:002009-01-29T19:39:36.004684+00:00tag:launchpad.net,2009-01-29:/+announcement/1906Barry Warsawhttps://launchpad.net/~barry<p>Version 5.1.0 fixes a problem with syntax highlighting None and places the file under the GPLv3.</p>5.0.02008-11-28T16:40:15.254358+00:002008-11-28T16:40:15.154541+00:00tag:launchpad.net,2008-11-28:/+announcement/1519Barry Warsawhttps://launchpad.net/~barry<p>After a very long hiatus, I'm happy to announce the release of python-mode.el<br/>
version 5.0.0. Since it's been so long since we did an official release, and<br/>
since I have no idea what version you are using, I won't even begin to outline<br/>
all that's changed. We intend to do more regular updates in the future<br/>
though.</p>