From 603613e1f9365d6cc2c86a0826cd7f7081bd438f Mon Sep 17 00:00:00 2001 From: Mathias De Wachter Date: Wed, 15 Oct 2014 14:16:30 -0400 Subject: [PATCH] elpy setup --- elpa/archives/marmalade/archive-contents | 2 +- elpa/archives/melpa-stable/archive-contents | 2 +- elpa/python-mode-6.1.3/INSTALL | 24 - elpa/python-mode-6.1.3/LICENSE | 674 - elpa/python-mode-6.1.3/NEWS | 915 - elpa/python-mode-6.1.3/PKG-INFO | 11 - elpa/python-mode-6.1.3/README | 197 - .../byte-compile-directory.sh | 40 - .../completion/auto-complete-pycomplete.el | 47 - .../completion/company-pycomplete.el | 74 - .../completion/pycomplete.el | 436 - .../completion/pycomplete.elc | Bin 14647 -> 0 bytes .../completion/pycomplete.py | 776 - .../completion/test_pycomplete.py | 238 - .../doc/commands-python-mode.org | 5088 --- .../doc/commands-python-mode.rst | 6309 ---- .../doc/variables-python-mode.org | 833 - .../doc/variables-python-mode.rst | 995 - .../extensions/column-marker.el | 259 - .../extensions/column-marker.elc | Bin 7190 -> 0 bytes .../extensions/highlight-indentation.el | 103 - .../extensions/highlight-indentation.elc | Bin 3088 -> 0 bytes .../python-mode-autoloads.el | 18 - elpa/python-mode-6.1.3/python-mode-pkg.el | 2 - elpa/python-mode-6.1.3/python-mode-pkg.elc | Bin 656 -> 0 bytes elpa/python-mode-6.1.3/python-mode.el | 26765 ---------------- elpa/python-mode-6.1.3/python-mode.elc | Bin 882605 -> 0 bytes elpa/python-mode-6.1.3/setup.py | 14 - elpa/python-mode-6.1.3/test/doctest-mode.el | 2061 -- elpa/python-mode-6.1.3/test/doctest-mode.elc | Bin 56310 -> 0 bytes .../test/pars-part-output.el | 100 - .../test/pars-part-output.elc | Bin 2998 -> 0 bytes .../test/py-bug-numbered-tests.el | 6228 ---- .../test/py-bug-numbered-tests.elc | Bin 421346 -> 0 bytes .../test/py-shell-completion-tests.el | 173 - .../test/py-shell-completion-tests.elc | Bin 5420 -> 0 bytes .../test/python-executes-test.el | 123 - .../test/python-executes-test.elc | Bin 5070 -> 0 bytes .../test/python-extended-executes-test.el | 2545 -- .../test/python-extended-executes-test.elc | Bin 150160 -> 0 bytes .../test/python-mode-ert-tests.el | 582 - .../test/python-mode-ert-tests.elc | Bin 71537 -> 0 bytes .../test/python-mode-test.el | 2399 -- .../test/python-mode-tests.sh | 1459 - .../test/test-triple-strings.py | 78 - init.el | 10 +- user.el | 12 + 47 files changed, 21 insertions(+), 59571 deletions(-) delete mode 100644 elpa/python-mode-6.1.3/INSTALL delete mode 100644 elpa/python-mode-6.1.3/LICENSE delete mode 100644 elpa/python-mode-6.1.3/NEWS delete mode 100644 elpa/python-mode-6.1.3/PKG-INFO delete mode 100644 elpa/python-mode-6.1.3/README delete mode 100644 elpa/python-mode-6.1.3/byte-compile-directory.sh delete mode 100644 elpa/python-mode-6.1.3/completion/auto-complete-pycomplete.el delete mode 100644 elpa/python-mode-6.1.3/completion/company-pycomplete.el delete mode 100644 elpa/python-mode-6.1.3/completion/pycomplete.el delete mode 100644 elpa/python-mode-6.1.3/completion/pycomplete.elc delete mode 100644 elpa/python-mode-6.1.3/completion/pycomplete.py delete mode 100755 elpa/python-mode-6.1.3/completion/test_pycomplete.py delete mode 100644 elpa/python-mode-6.1.3/doc/commands-python-mode.org delete mode 100644 elpa/python-mode-6.1.3/doc/commands-python-mode.rst delete mode 100644 elpa/python-mode-6.1.3/doc/variables-python-mode.org delete mode 100644 elpa/python-mode-6.1.3/doc/variables-python-mode.rst delete mode 100644 elpa/python-mode-6.1.3/extensions/column-marker.el delete mode 100644 elpa/python-mode-6.1.3/extensions/column-marker.elc delete mode 100644 elpa/python-mode-6.1.3/extensions/highlight-indentation.el delete mode 100644 elpa/python-mode-6.1.3/extensions/highlight-indentation.elc delete mode 100644 elpa/python-mode-6.1.3/python-mode-autoloads.el delete mode 100644 elpa/python-mode-6.1.3/python-mode-pkg.el delete mode 100644 elpa/python-mode-6.1.3/python-mode-pkg.elc delete mode 100644 elpa/python-mode-6.1.3/python-mode.el delete mode 100644 elpa/python-mode-6.1.3/python-mode.elc delete mode 100644 elpa/python-mode-6.1.3/setup.py delete mode 100644 elpa/python-mode-6.1.3/test/doctest-mode.el delete mode 100644 elpa/python-mode-6.1.3/test/doctest-mode.elc delete mode 100644 elpa/python-mode-6.1.3/test/pars-part-output.el delete mode 100644 elpa/python-mode-6.1.3/test/pars-part-output.elc delete mode 100644 elpa/python-mode-6.1.3/test/py-bug-numbered-tests.el delete mode 100644 elpa/python-mode-6.1.3/test/py-bug-numbered-tests.elc delete mode 100644 elpa/python-mode-6.1.3/test/py-shell-completion-tests.el delete mode 100644 elpa/python-mode-6.1.3/test/py-shell-completion-tests.elc delete mode 100644 elpa/python-mode-6.1.3/test/python-executes-test.el delete mode 100644 elpa/python-mode-6.1.3/test/python-executes-test.elc delete mode 100644 elpa/python-mode-6.1.3/test/python-extended-executes-test.el delete mode 100644 elpa/python-mode-6.1.3/test/python-extended-executes-test.elc delete mode 100644 elpa/python-mode-6.1.3/test/python-mode-ert-tests.el delete mode 100644 elpa/python-mode-6.1.3/test/python-mode-ert-tests.elc delete mode 100644 elpa/python-mode-6.1.3/test/python-mode-test.el delete mode 100755 elpa/python-mode-6.1.3/test/python-mode-tests.sh delete mode 100644 elpa/python-mode-6.1.3/test/test-triple-strings.py diff --git a/elpa/archives/marmalade/archive-contents b/elpa/archives/marmalade/archive-contents index 29d9a1c3e..6dd888a6f 100644 --- a/elpa/archives/marmalade/archive-contents +++ b/elpa/archives/marmalade/archive-contents @@ -1084,7 +1084,7 @@ (0 0 5))) "robots based on rcirc irc" single]) (rcirc-notify . - [(0 6) + [(0 8) nil "libnotify popups" single]) (rcirc-color . [(0 2) diff --git a/elpa/archives/melpa-stable/archive-contents b/elpa/archives/melpa-stable/archive-contents index d8e7cff01..3aff59e07 100644 --- a/elpa/archives/melpa-stable/archive-contents +++ b/elpa/archives/melpa-stable/archive-contents @@ -1,2 +1,2 @@ -(1 (zygospore . [(0 0 3) nil "reversible C-x 1 (delete-other-windows)" single ((:url . "https://github.com/louiskottmann/zygospore.el"))]) (zenburn-theme . [(2 0) nil "A low contrast color theme for Emacs." single ((:url . "http://github.com/bbatsov/zenburn-emacs"))]) (yasnippet . [(0 9 0 1) nil "Yet another snippet extension for Emacs." tar ((:url . "http://github.com/capitaomorte/yasnippet") (:keywords "convenience" "emulation"))]) (yascroll . [(0 1) nil "Yet Another Scroll Bar Mode" single ((:keywords "convenience"))]) (yagist . [(0 8 10) ((json (1 2 0))) "Yet Another Emacs integration for gist.github.com" single ((:url . "https://github.com/mhayashi1120/yagist.el/raw/master/yagist.el") (:keywords "gist" "git" "github" "paste" "pastie" "pastebin"))]) (yafolding . [(0 1 4) nil "Yet another folding extension for Emacs" single ((:keywords "folding"))]) (xterm-color . [(1 0) nil "ANSI & XTERM 256 color support" single nil]) (xcscope . [(1 1) nil "cscope interface for (X)Emacs" single ((:url . "https://github.com/dkogan/xcscope.el") (:keywords "languages" "c"))]) (ws-butler . [(0 3) nil "Unobtrusively remove trailing whitespace." single ((:url . "https://github.com/lewang/ws-butler"))]) (writeroom-mode . [(2 5) nil "Minor mode for distraction-free writing" tar ((:keywords "text"))]) (writegood-mode . [(2 0) nil "Polish up poor writing on the fly" single ((:url . "http://github.com/bnbeckwith/writegood-mode") (:keywords "writing" "weasel-words" "grammar"))]) (wrap-region . [(0 7 3) ((dash (1 0 3))) "Wrap text with punctation or tag" single ((:url . "http://github.com/rejeep/wrap-region") (:keywords "speed" "convenience"))]) (wonderland . [(0 1 1) ((dash (2 0 0)) (dash-functional (1 0 0)) (multi (2 0 0)) (emacs (24))) "declarative configuration for Emacsen" single ((:url . "http://github.com/kurisuwhyte/emacs-wonderland") (:keywords "configuration" "profile" "wonderland"))]) (wispjs-mode . [(0 2 0) ((clojure-mode (0))) "Major mode for Wisp code." single ((:url . "https://github.com/krisajenkins/wispjs-mode"))]) (wisp-mode . [(0 6 4) nil "Tools for wisp: the Whitespace-to-Lisp preprocessor" single ((:keywords "languages" "lisp"))]) (windsize . [(0 1) nil "Simple, intuitive window resizing" single ((:url . "http://github.com/grammati/windsize") (:keywords "window" "resizing" "convenience"))]) (window-numbering . [(1 1 2) nil "No description available." single nil]) (window-layout . [(1 2) nil "window layout manager" single ((:keywords "window" "layout"))]) (window-end-visible . [(0 1 0) nil "Find the last visible point in a window" single ((:url . "http://github.com/rolandwalker/window-end-visible") (:keywords "extensions"))]) (wiki-nav . [(1 0 0) ((button-lock (1 0 0)) (nav-flash (1 0 0))) "Simple file navigation using [[WikiStrings]]" single ((:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "navigation"))]) (whitespace-cleanup-mode . [(0 9) nil "Intelligently call whitespace-cleanup on save" single ((:url . "https://github.com/purcell/whitespace-cleanup-mode") (:keywords "convenience"))]) (weechat . [(0 2) ((s (1 3 1)) (cl-lib (0 2)) (emacs (24)) (tracking (1 2))) "Chat via WeeChat's relay protocol in Emacs" tar nil]) (web-mode . [(10) nil "major mode for editing html templates" single ((:url . "http://web-mode.org") (:keywords "html" "template" "javascript" "css" "web" "php" "django" "erb" "jsp"))]) (wcheck-mode . [(2014 6 21) nil "General interface for text checkers" tar nil]) (wc-goal-mode . [(2 1) nil "Running word count with goals (minor mode)" single ((:url . "https://github.com/bnbeckwith/wc-goal-mode"))]) (wacspace . [(0 4 2) ((dash (1 2 0)) (cl-lib (0 2))) "The WACky WorkSPACE manager for emACS" tar nil]) (vlf . [(1 6) nil "View Large Files" tar ((:url . "https://github.com/m00natic/vlfi") (:keywords "large files" "utilities"))]) (vimgolf . [(0 10 0) nil "VimGolf interface for the One True Editor" single ((:keywords "games" "vimgolf" "vim"))]) (vim-region . [(0 3 0) ((expand-region (20140127))) "Select region as vim" single ((:url . "https://github.com/ongaeshi/emacs-vim-region"))]) (vector-utils . [(0 1 2) nil "Vector-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/vector-utils") (:keywords "extensions"))]) (vcomp . [(0 3 1) nil "compare version strings" single ((:url . "https://github.com/tarsius/vcomp") (:keywords "versions"))]) (uzumaki . [(0 1) ((cl-lib (0 5))) "A simple buffer cycler" single ((:url . "http://github.com/geyslan/uzumaki") (:keywords "buffer" "convenience"))]) (utop . [(1 15) ((emacs (24))) "Universal toplevel for OCaml" single ((:url . "https://github.com/diml/utop") (:keywords "ocaml" "languages"))]) (use-package . [(20140601) ((bind-key (1 0)) (diminish (0 44))) "A use-package declaration for simplifying your .emacs" single ((:url . "https://github.com/jwiegley/use-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (unicode-whitespace . [(0 2 4) ((ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "teach whitespace-mode about fancy characters" single ((:url . "http://github.com/rolandwalker/unicode-whitespace") (:keywords "faces" "wp" "interface"))]) (unicode-progress-reporter . [(0 5 4) ((emacs (24 1 0)) (ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Progress-reporter with fancy characters" single ((:url . "http://github.com/rolandwalker/unicode-progress-reporter") (:keywords "interface"))]) (unicode-fonts . [(0 4 2) ((font-utils (0 7 2)) (ucs-utils (0 8 0)) (list-utils (0 4 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Configure Unicode fonts" single ((:url . "http://github.com/rolandwalker/unicode-fonts") (:keywords "i18n" "faces" "frames" "wp" "interface"))]) (unicode-enbox . [(0 1 4) ((string-utils (0 3 2)) (ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Surround a string with box-drawing characters" single ((:url . "http://github.com/rolandwalker/unicode-enbox") (:keywords "extensions" "interface"))]) (unfill . [(0 1) nil "The inverse of fill-paragraph and fill-region" single ((:keywords "utilities"))]) (underwater-theme . [(1 1 0) nil "A gentle, deep blue color theme" single ((:keywords "faces"))]) (undercover . [(0 2 0) ((emacs (24)) (dash (2 0 0)) (shut-up (0 3 2))) "Test coverage library for Emacs" single ((:url . "https://github.com/sviridov/undercover.el") (:keywords "lisp" "tests" "coverage" "tools"))]) (ucs-utils . [(0 8 0) ((persistent-soft (0 8 8)) (pcache (0 2 3)) (list-utils (0 4 2))) "Utilities for Unicode characters" tar ((:url . "http://github.com/rolandwalker/ucs-utils") (:keywords "i18n" "extensions"))]) (typo . [(1 1) nil "Minor mode for typographic editing" single ((:url . "https://github.com/jorgenschaefer/typoel") (:keywords "convenience" "wp"))]) (twittering-mode . [(2 0 0) nil "Major mode for Twitter" single ((:url . "http://twmode.sf.net/") (:keywords "twitter" "web"))]) (twilight-anti-bright-theme . [(0 3 0) nil "A soothing Emacs 24 light-on-dark theme" single ((:url . "https://github.com/jimeh/twilight-anti-bright-theme.el") (:keywords "themes"))]) (tup-mode . [(1 3 1) nil "Major mode for editing files for Tup" single ((:url . "https://github.com/ejmr/tup-mode"))]) (tumble . [(1 5) nil "an Tumblr mode for Emacs" single ((:keywords "tumblr"))]) (tuareg . [(2 0 8) ((caml (3 12 0 1))) "OCaml mode for Emacs." tar ((:url . "http://forge.ocamlcore.org/projects/tuareg/") (:keywords "ocaml" "languages"))]) (ttrss . [(1 7 5) ((emacs (23 1))) "Tiny Tiny RSS elisp bindings" single ((:url . "https://github.com/pedros/ttrss.el") (:keywords "news" "local"))]) (truthy . [(0 2 8) ((list-utils (0 4 2))) "Test the content of a value" single ((:url . "http://github.com/rolandwalker/truthy") (:keywords "extensions"))]) (traad . [(0 4) nil "emacs interface to the traad refactoring server." single ((:url . "https://github.com/abingham/traad"))]) (thrift . [(0 9 1) nil "No description available." single nil]) (theme-changer . [(2 1 0) nil "Sunrise/Sunset Theme Changer for Emacs" single ((:url . "https://github.com/hadronzoo/theme-changer") (:keywords "color-theme" "deftheme" "solar" "sunrise" "sunset"))]) (textmate-to-yas . [(0 21) nil "Import Textmate macros into yasnippet syntax" tar ((:url . "https://github.com/mlf176f2/textmate-to-yas.el/") (:keywords "yasnippet" "textmate"))]) (textmate . [(1) nil "No description available." single nil]) (test-case-mode . [(0 1 9) nil "unit test front-end" single ((:url . "http://nschum.de/src/emacs/test-case-mode/") (:keywords "tools"))]) (terraform-mode . [(0 1) ((cl-lib (0 5))) "Major mode for terraform configuration file" single ((:url . "https://github.com/syohex/emacs-terraform-mode"))]) (tern-auto-complete . [(0 6 2) ((tern (0 0 1)) (auto-complete (1 4)) (cl-lib (0 5)) (emacs (24))) "Tern Completion by auto-complete.el" single nil]) (tern . [(0 6 2) ((json (1 2)) (cl-lib (0 5)) (emacs (24))) "Tern-powered JavaScript integration" single ((:url . "http://ternjs.net/"))]) (tempbuf . [(1 4) nil "kill unused buffers in the background" single ((:keywords "convenience"))]) (tagedit . [(1 4 0) ((s (1 3 1)) (dash (1 0 3))) "Some paredit-like features for html-mode" single ((:keywords "convenience"))]) (tabbar-ruler . [(0 40) ((tabbar (2 0 1))) "Pretty tabbar, autohide, use both tabbar/ruler" tar ((:url . "http://github.com/mlf176f2/tabbar-ruler.el") (:keywords "tabbar" "ruler mode" "menu" "tool bar."))]) (system-specific-settings . [(0 2) nil "Apply settings only on certain systems" single ((:url . "https://github.com/DarwinAwardWinner/emacs-system-specific-settings") (:keywords "configuration"))]) (syntactic-sugar . [(0 9 4) nil "Effect-free forms such as if/then/else" single ((:url . "http://github.com/rolandwalker/syntactic-sugar") (:keywords "extensions"))]) (swift-mode . [(0 2 0) ((emacs (24 1))) "Major-mode for Apple's Swift programming language." single nil]) (svg-mode-line-themes . [(0 1 1) ((xmlgen (0 4))) "SVG-based themes for mode-line" tar ((:url . "https://github.com/sabof/svg-mode-line-themes"))]) (suomalainen-kalenteri . [(2014 6 15) nil "Finnish national and Christian holidays for calendar" tar nil]) (sudden-death . [(0 2) nil "Totsuzen-no-Shi" single ((:url . "https://github.com/yewton/sudden-death.el"))]) (subshell-proc . [(0 1) nil "Functions for working with comints" single ((:url . "https://github.com/andrewmains12/subshell-proc"))]) (stumpwm-mode . [(0 9 8) nil "special lisp mode for evaluating code into running stumpwm" single ((:keywords "comm" "lisp" "tools"))]) (stripe-buffer . [(0 2 3) ((cl-lib (1 0))) "Use a different background for even and odd lines" single ((:url . "https://github.com/sabof/stripe-buffer"))]) (string-utils . [(0 3 2) ((list-utils (0 4 2))) "String-manipulation utilities" single ((:url . "http://github.com/rolandwalker/string-utils") (:keywords "extensions"))]) (string-edit . [(0 1 0) ((dash (1 2 0))) "Avoid escape nightmares by editing string in separate buffer" single nil]) (stgit . [(0 17 1) nil "No description available." single nil]) (stekene-theme . [(1 0 12) ((emacs (24))) "The stekene dark and light color themes." tar nil]) (starter-kit-ruby . [(2 0 3) ((inf-ruby (2 2 1)) (starter-kit (2 0 1))) "Saner defaults and goodies for Ruby" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-perl . [(2 0 3) nil "Some helpful Perl code" single nil]) (starter-kit-lisp . [(2 0 3) ((starter-kit (2 0 2)) (elisp-slime-nav (0 1))) "Saner defaults and goodies for lisp languages" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-js . [(2 0 3) ((starter-kit (2 0 1))) "Saner defaults and goodies for Javascript" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-eshell . [(2 0 3) nil "Saner defaults and goodies: eshell tweaks" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-bindings . [(2 0 3) ((starter-kit (2 0 2))) "Saner defaults and goodies: bindings" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit . [(2 0 3) ((paredit (22)) (idle-highlight-mode (1 1 1)) (find-file-in-project (3 0)) (smex (1 1 1)) (ido-ubiquitous (0 3)) (magit (0 8 1))) "Saner defaults and goodies." tar nil]) (stan-snippets . [(2 4 1) ((yasnippet (0 8 0)) (stan-mode (2 4 1))) "Yasnippets for Stan" tar ((:url . "http://github.com/stan-dev/stan-mode") (:keywords "languages"))]) (stan-mode . [(2 4 1) nil "Major mode for editing Stan files" tar ((:url . "http://github.com/stan-dev/stan-mode") (:keywords "languanges"))]) (sprintly-mode . [(0 0 4) ((furl (0 0 2))) "Major mode for dealing with sprint.ly" single ((:url . "https://github.com/sprintly/sprintly-mode"))]) (sparql-mode . [(0 9 2) nil "Edit and interactively evaluate SPARQL queries." tar ((:url . "https://github.com/ljos/sparql-mode"))]) (sourcetalk . [(1 2 0) ((request (0 2 0))) "SourceTalk (http://sourcetalk.net) plugin for Emacs" single ((:url . "https://github.com/malroc/sourcetalk_emacs") (:keywords "sourcetalk" "code" "discussion"))]) (sourcemap . [(0 2) ((cl-lib (0 5)) (emacs (24))) "Sourcemap parser" single ((:url . "https://github.com/syohex/emacs-sourcemap"))]) (solarized-theme . [(1 2 0) ((dash (2 6 0))) "The Solarized color theme, ported to Emacs." tar nil]) (smex . [(3 0) nil "M-x interface with Ido-style fuzzy matching." single ((:url . "http://github.com/nonsequitur/smex/") (:keywords "convenience" "usability"))]) (smeargle . [(0 1) ((cl-lib (0 5)) (emacs (24))) "Highlighting region by last updated time" single ((:url . "https://github.com/syohex/emacs-smeargle"))]) (smartscan . [(0 2) nil "Jumps between other symbols found at point" single ((:keywords "extensions"))]) (smartrep . [(0 0 3) nil "Support sequential operation which omitted prefix keys." single ((:url . "https://github.com/myuhe/smartrep.el") (:keywords "convenience"))]) (smart-tabs-mode . [(1 0) nil "Intelligently indent with tabs, align with spaces!" single ((:url . "http://www.emacswiki.org/emacs/SmartTabs") (:keywords "languages"))]) (smart-mode-line-powerline-theme . [(2 6) ((emacs (24 3)) (powerline (2 3)) (smart-mode-line (2 5))) "smart-mode-line theme that mimics the powerline appearance." single ((:url . "http://github.com/Bruce-Connor/smart-mode-line"))]) (smart-mode-line . [(2 6) ((emacs (24 3)) (dash (2 2 0)) (rich-minority (0 1))) "A color coded smart mode-line." tar ((:url . "http://github.com/Bruce-Connor/smart-mode-line") (:keywords "mode-line" "faces" "theme" "themes"))]) (sly . [(2 9) nil "No description available." tar nil]) (slime-volleyball . [(1 1) nil "An SVG Slime Volleyball Game" tar ((:keywords "games"))]) (slime-ritz . [(0 6 0) nil "slime extensions for ritz" single ((:url . "https://github.com/pallet/ritz") (:keywords "languages" "lisp" "slime"))]) (slime-company . [(0 8) ((slime (2 3 2)) (company (0 7))) "slime completion backend for company mode" single ((:keywords "convenience" "lisp" "abbrev"))]) (slime . [(2 10 1) ((cl-lib (0 5))) "Superior Lisp Interaction Mode for Emacs" tar ((:url . "https://github.com/slime/slime") (:keywords "languages" "lisp" "slime"))]) (slim-mode . [(1 1) nil "Major mode for editing Slim files" single ((:url . "http://github.com/minad/emacs-slim") (:keywords "markup" "language"))]) (slideview . [(0 6 1) nil "File slideshow" single ((:url . "https://github.com/mhayashi1120/Emacs-slideview/raw/master/slideview.el") (:keywords "files"))]) (slamhound . [(1 5 4) nil "Rip Clojure namespaces apart and rebuild them." single ((:url . "https://github.com/technomancy/slamhound") (:keywords "tools" "lisp"))]) (skewer-mode . [(1 6 1) ((simple-httpd (1 4 0)) (js2-mode (20090723)) (emacs (24))) "live browser JavaScript, CSS, and HTML interaction" tar nil]) (skewer-less . [(0 2) ((skewer-mode (1 5 3))) "Skewer support for live LESS stylesheet updates" single ((:keywords "languages" "tools"))]) (skeletor . [(1 4) ((s (1 7 0)) (f (0 14 0)) (dash (2 2 0)) (cl-lib (0 3)) (emacs (24 1))) "Provides project skeletons for Emacs" tar nil]) (simplezen . [(0 1 1) nil "A simple subset of zencoding-mode for Emacs." single nil]) (simpleclip . [(1 0 0) nil "Simplified access to the system clipboard" single ((:url . "http://github.com/rolandwalker/simpleclip") (:keywords "convenience"))]) (simple-httpd . [(1 4 5) ((cl-lib (0 3))) "pure elisp HTTP server" single ((:url . "https://github.com/skeeto/emacs-http-server"))]) (shut-up . [(0 3 2) ((cl-lib (0 3)) (emacs (24))) "Shut up would you!" single ((:url . "http://github.com/rejeep/shut-up.el"))]) (shm . [(1 0 1) nil "No description available." tar nil]) (shell-pop . [(0 3) nil "helps you to use shell easily on Emacs. Only one key action to work." single ((:url . "http://github.com/kyagi/shell-pop-el") (:keywords "shell" "terminal" "tools"))]) (shampoo . [(0 0 1) nil "Shampoo, a remote Smalltalk developemnt" tar nil]) (session . [(2 3 1) nil "use variables, registers and buffer places across sessions" single ((:url . "http://emacs-session.sourceforge.net/") (:keywords "session" "session management" "desktop" "data" "tools"))]) (serverspec . [(0 0 4) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (helm (1 6 1))) "Serverspec minor mode" tar ((:url . "http://101000lab.org"))]) (servant . [(0 3 0) ((s (1 8 0)) (dash (2 2 0)) (f (0 11 0)) (ansi (0 3 0)) (commander (0 5 0)) (epl (0 2)) (shut-up (0 2 1)) (web-server (0 0 1))) "ELPA server written in Emacs Lisp" tar ((:url . "http://github.com/rejeep/servant.el") (:keywords "elpa" "server"))]) (sekka . [(1 5 7) ((cl-lib (0 3)) (concurrent (0 3 1)) (popup (0 5 0))) "A client for Sekka IME server" single ((:url . "https://github.com/kiyoka/sekka") (:keywords "ime" "skk" "japanese"))]) (scss-mode . [(0 5 0) nil "Major mode for editing SCSS files" single ((:url . "https://github.com/antonj/scss-mode") (:keywords "scss" "css" "mode"))]) (scala-mode . [(2 11 3) nil "Major mode for editing Scala code." tar ((:keywords "scala" "languages" "oop"))]) (save-sexp . [(0 2 0) nil "save variables in files using setter forms like `setq'" tar ((:url . "https://github.com/tarsius/save-sexp") (:keywords "convenience"))]) (sauron . [(0 10) nil "Track (erc/org/dbus/...) events and react to them." tar nil]) (sass-mode . [(3 0 18) ((haml-mode (3 0 15))) "Major mode for editing Sass files" single ((:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "css"))]) (sackspace . [(0 8 2) nil "A better backspace" single ((:url . "http://github.com/cofi/sackspace.el") (:keywords "delete" "convenience"))]) (s . [(1 9 0) nil "The long lost Emacs string manipulation library." single ((:keywords "strings"))]) (rvm . [(1 3 0) nil "Emacs integration for rvm" single ((:url . "http://www.emacswiki.org/emacs/RvmEl") (:keywords "ruby" "rvm"))]) (rust-mode . [(0 12 0) nil "A major emacs mode for editing Rust source code" single ((:url . "https://github.com/rust-lang/rust") (:keywords "languages"))]) (ruby-tools . [(0 1 2) nil "Collection of handy functions for ruby-mode." tar nil]) (ruby-test-mode . [(1 0) nil "Minor mode for Behaviour and Test Driven" single ((:keywords "ruby" "unit" "test" "rspec"))]) (ruby-hash-syntax . [(0 4) nil "Toggle ruby hash syntax between classic and 1.9 styles" single ((:url . "https://github.com/purcell/ruby-hash-syntax") (:keywords "languages"))]) (ruby-end . [(0 4 0) nil "Automatic insertion of end blocks for Ruby" single ((:url . "http://github.com/rejeep/ruby-end") (:keywords "speed" "convenience" "ruby"))]) (ruby-compilation . [(2 11) ((inf-ruby (2 2 1))) "run a ruby process in a compilation buffer" single ((:url . "https://github.com/eschulte/rinari") (:keywords "test" "convenience"))]) (rtags . [(1 1) nil "No description available." tar nil]) (rspec-mode . [(1 11) ((ruby-mode (1 0)) (cl-lib (0 4))) "Enhance ruby-mode for RSpec" tar ((:url . "http://github.com/pezra/rspec-mode") (:keywords "rspec" "ruby"))]) (rsense . [(0 3) nil "RSense client for Emacs" single ((:keywords "convenience"))]) (roguel-ike . [(0 1 0) ((popup (0 5 0))) "A coffee-break roguelike" tar nil]) (rnc-mode . [(1 0 6) nil "A major mode for editing RELAX NG Compact syntax." single nil]) (rinari . [(2 11) ((ruby-mode (1 0)) (inf-ruby (2 2 5)) (ruby-compilation (0 16)) (jump (2 0))) "Rinari Is Not A Rails IDE" single ((:url . "https://github.com/eschulte/rinari") (:keywords "ruby" "rails" "project" "convenience" "web"))]) (rich-minority . [(0 1 1) ((cl-lib (0 5))) "Clean-up and Beautify the list of minor-modes." single ((:url . "http://github.com/Bruce-Connor/rich-minority") (:keywords "mode-line" "faces"))]) (reveal-in-finder . [(0 3 1) nil "Reveal the file associated with the buffer in the OS X Finder" single ((:url . "https://github.com/kaz-yos/elisp") (:keywords "os x" "finder"))]) (request-deferred . [(0 1 0) nil "Wrap request.el by deferred" single nil]) (request . [(0 1 0) nil "Compatible layer for URL request in Emacs" single nil]) (req-package . [(0 5) ((use-package (1 0)) (dash (2 7 0)) (log4e (0 2 0))) "A use-package wrapper for package runtime dependencies management" single ((:url . "https://github.com/edvorg/req-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (relax . [(0 2) ((json (1 2))) "For browsing and interacting with CouchDB" single ((:url . "http://github.com/technomancy/relax.el") (:keywords "database" "http"))]) (relative-line-numbers . [(0 3) ((emacs (24))) "Display relative line numbers on the margin" single ((:url . "https://github.com/Fanael/relative-line-numbers"))]) (rbenv . [(0 0 3) nil "Emacs integration for rbenv" single ((:url . "https://github.com/senny/rbenv.el") (:keywords "ruby" "rbenv"))]) (rase . [(1 1) nil "Run At Sun Event daemon" single ((:url . "https://github.com/m00natic/rase/") (:keywords "solar" "sunrise" "sunset" "midday" "midnight"))]) (rainbow-identifiers . [(0 2 1) ((emacs (24))) "Highlight identifiers according to their names" single ((:url . "https://github.com/Fanael/rainbow-identifiers"))]) (rainbow-delimiters . [(1 3 12) nil "Highlight nested parens, brackets, braces a different color at each depth." single ((:url . "http://github.com/jlr/rainbow-delimiters/raw/master/rainbow-delimiters.el") (:keywords "faces" "convenience" "lisp" "matching" "tools" "rainbow" "rainbow parentheses" "rainbow parens"))]) (r-autoyas . [(0 28) nil "Provides automatically created yasnippets for R function argument lists." tar ((:url . "https://github.com/mlf176f2/r-autoyas.el") (:keywords "r" "yasnippet"))]) (quickrun . [(2 1 0) nil "Run commands quickly" single ((:url . "https://github.com/syohex/emacs-quickrun"))]) (qml-mode . [(0 1) nil "Major mode for editing QT Declarative (QML) code." single ((:url . "https://github.com/coldnew/qml-mode") (:keywords "qml" "qt" "qt declarative"))]) (qiita . [(0 0 1) nil "No description available." single nil]) (pyvenv . [(1 3) nil "Python virtual environment interface" single ((:url . "http://github.com/jorgenschaefer/pyvenv") (:keywords "python" "virtualenv" "tools"))]) (python-environment . [(0 0 1) ((deferred (0 3 1))) "virtualenv API for Emacs Lisp" tar ((:keywords "applications" "tools"))]) (pushbullet . [(0 5 2) ((grapnel (0 5 2)) (json (1 2))) "Emacs client for the PushBullet Android app" single ((:url . "http://www.github.com/theanalyst/revolver") (:keywords "convenience"))]) (puppet-mode . [(0 3) ((emacs (24 1)) (cl-lib (0 5)) (pkg-info (0 4))) "Major mode for Puppet manifests" single ((:url . "https://github.com/lunaryorn/puppet-mode") (:keywords "languages"))]) (pungi . [(0 9 5) ((jedi (0 2 0 -3 2))) "Integrates jedi with virtualenv and buildout python environments" single ((:keywords "convenience"))]) (projectile . [(0 11 0) ((s (1 6 0)) (dash (1 5 0)) (pkg-info (0 4))) "Manage and navigate projects in Emacs easily" single ((:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (project-root . [(0 7) nil "Define a project root and take actions based upon it." single nil]) (project-explorer . [(0 13 4) ((cl-lib (0 3)) (es-lib (0 3)) (es-windows (0 1)) (emacs (24))) "A project explorer sidebar" single ((:url . "https://github.com/sabof/project-explorer"))]) (prodigy . [(0 6 0) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (emacs (24))) "Manage external services from within Emacs" single ((:url . "http://github.com/rejeep/prodigy.el"))]) (processing-mode . [(1 0) ((yasnippet (0 8 0))) "Major mode for Processing 2.0" single ((:keywords "languages" "snippets"))]) (pretty-mode . [(2 0 2) nil "Redisplay parts of the buffer as pretty symbols." single ((:url . "https://github.com/akatov/pretty-mode") (:keywords "pretty" "unicode" "symbols"))]) (powerline . [(2 2) ((cl-lib (0 2))) "Rewrite of Powerline" tar ((:url . "http://github.com/milkypostman/powerline/") (:keywords "mode-line"))]) (pov-mode . [(3 3) nil "Major mode for editing POV-Ray scene files." tar nil]) (popwin . [(0 6 2) nil "Popup Window Manager." single ((:keywords "convenience"))]) (popup . [(0 5 0) ((cl-lib (0 3))) "Visual Popup User Interface" single ((:keywords "lisp"))]) (plenv . [(0 32) nil "A plenv wrapper for Emacs" single ((:keywords "emacs" "perl"))]) (pkgbuild-mode . [(0 11) nil "Interface to the ArchLinux package manager" single nil]) (pkg-info . [(0 5) ((dash (1 6 0)) (epl (0 4))) "Information about packages" single ((:url . "https://github.com/lunaryorn/pkg-info.el") (:keywords "convenience"))]) (pip-requirements . [(0 4) ((dash (2 8 0))) "A major mode for editing pip requirements files." single nil]) (phpunit . [(0 2 0) nil "Launch PHP unit tests using phpunit" single ((:url . "https://github.com/nlamirault/phpunit.el") (:keywords "php" "tests" "phpunit"))]) (php-mode . [(1 13 5) nil "Major mode for editing PHP code" single ((:url . "https://github.com/ejmr/php-mode"))]) (php-auto-yasnippets . [(2 3 1) ((php-mode (1 11)) (yasnippet (0 8 0))) "Creates snippets for PHP functions" tar ((:url . "https://github.com/ejmr/php-auto-yasnippets"))]) (phi-search-mc . [(2 1) ((phi-search (2 0 0)) (multiple-cursors (1 2 1))) "multiple-cursors extension for phi-search" single ((:url . "https://github.com/knu/phi-search-mc.el") (:keywords "search" "cursors"))]) (ph . [(0 1 0) ((emacs (24 3))) "A global minor mode for managing multiple projects." tar nil]) (perspective . [(1 10) nil "switch between named \"perspectives\" of the editor" single ((:url . "http://github.com/nex3/perspective-el") (:keywords "workspace" "convenience" "frames"))]) (persp-projectile . [(0 11 0) ((perspective (1 9)) (projectile (0 11 0)) (cl-lib (0 3))) "Perspective integration with Projectile" single ((:keywords "project" "convenience"))]) (persistent-soft . [(0 8 8) ((pcache (0 2 3)) (list-utils (0 4 2))) "Persistent storage, returning nil on failure" single ((:url . "http://github.com/rolandwalker/persistent-soft") (:keywords "data" "extensions"))]) (pcache . [(0 2 4) ((eieio (1 3))) "persistent caching for Emacs" single nil]) (pastehub . [(0 5 2) nil "A client for the PasteHub cloud service" single ((:url . "https://github.com/kiyoka/pastehub"))]) (password-store . [(1 6 3) ((dash (1 5 0)) (f (0 11 0)) (s (1 9 0))) "Password store (pass) support" single ((:keywords "pass"))]) (passthword . [(1 3) ((cl-lib (0 5))) "Simple password manager" single nil]) (parent-mode . [(2 1) nil "get major mode's parent modes" single ((:url . "https://github.com/Fanael/parent-mode"))]) (paren-face . [(0 1 0) nil "a face for parentheses in lisp modes" single ((:url . "http://github.com/tarsius/paren-face"))]) (paredit-everywhere . [(0 4) ((paredit (22))) "Enable some paredit features in non-lisp buffers" single ((:keywords "languages" "convenience"))]) (paredit . [(23) nil "minor mode for editing parentheses" single ((:keywords "lisp"))]) (paradox . [(1 2 2) nil "No description available." tar nil]) (pangu-spacing . [(0 4) nil "Minor-mode to add space between Chinese and English characters." single ((:url . "http://github.com/coldnew/pangu-spacing"))]) (pandoc-mode . [(2 6) nil "Minor mode for interacting with Pandoc" tar ((:keywords "text" "pandoc"))]) (pallet . [(0 6) ((cask (0 6))) "A package management tool for Emacs, using Cask." tar nil]) (page-break-lines . [(0 9) nil "Display ugly ^L page breaks as tidy horizontal lines" single ((:url . "https://github.com/purcell/page-break-lines") (:keywords "convenience" "faces"))]) (packed-git . [(0 3 5) ((cl-lib (0 5)) (magit (2 1 0))) "Utilities for Emacs packages living in Git repositories" single ((:url . "http://tarsius.github.com/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (packed . [(0 3 5) ((cl-lib (0 5))) "package manager agnostic Emacs Lisp package utilities" single ((:url . "http://tarsius.github.com/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (package-utils . [(0 2 0) ((epl (0 7 -3))) "Extensions for package.el" single ((:url . "https://github.com/Silex/package-utils") (:keywords "package" "convenience"))]) (pabbrev . [(4 0) nil "Predictive abbreviation expansion" single nil]) (outshine . [(2 0) nil "outline with outshine outshines outline" single ((:url . "https://github.com/tj64/outshine"))]) (outorg . [(2 0) nil "Org-style comment editing" single ((:url . "https://github.com/tj64/outorg"))]) (osx-plist . [(1 0 0) nil "Apple plist file parser" single ((:keywords "convenience"))]) (osx-location . [(0 1) nil "Watch and respond to changes in geographical location on OS X" tar nil]) (osx-browse . [(0 8 8) ((string-utils (0 3 2)) (browse-url-dwim (0 6 6))) "Web browsing helpers for OS X" single ((:url . "http://github.com/rolandwalker/osx-browse") (:keywords "hypermedia" "external"))]) (orglink . [(0 2 1) ((dash (1 3 2)) (org (8 0))) "use Org Mode links in other modes" single ((:url . "http://github.com/tarsius/orglink") (:keywords "hypertext"))]) (orgbox . [(0 5 0) ((org (8 0)) (cl-lib (0 5))) "Mailbox-like task scheduling Org." single ((:url . "https://github.com/yasuhito/orgbox") (:keywords "org"))]) (org-trello . [(0 6 2) ((request-deferred (0 1 0)) (deferred (0 3 2)) (s (1 9 0)) (dash (2 8 0)) (emacs (24))) "Minor mode to synchronize org-mode buffer and trello board" tar nil]) (org-toodledo . [(2 16) nil "Toodledo integration for Emacs Org mode" tar ((:keywords "outlines" "data"))]) (org-readme . [(20130322 926) ((http-post-simple (1 0)) (yaoddmuse (0 1 1)) (header2 (21 0)) (lib-requires (21 0))) "Integrates Readme.org and Commentary/Change-logs." tar ((:url . "https://github.com/mlf176f2/org-readme") (:keywords "header2" "readme.org" "emacswiki" "git"))]) (org-protocol-jekyll . [(0 1) nil "Jekyll's handler for org-protocol" single nil]) (org-pomodoro . [(1 3 3) ((alert (0 5 10))) "Pomodoro implementation for org-mode." tar nil]) (org-page . [(0 41) ((ht (1 5)) (mustache (0 22)) (htmlize (1 47)) (org (8))) "a static site generator based on org mode" tar nil]) (org-outlook . [(0 11) nil "Outlook org" tar ((:url . "https://github.com/mlf176f2/org-outlook.el") (:keywords "org-outlook"))]) (org-magit . [(0 2 2) ((magit (1 2 0)) (org (6 1))) "basic support for magit links" single ((:keywords "git" "magit" "outlines"))]) (org-mac-iCal . [(7 9 3 5) nil "Imports events from iCal.app to the Emacs diary" single ((:keywords "outlines" "calendar"))]) (org-journal . [(1 5 3) nil "a simple org-mode based journaling mode" single ((:url . "http://github.com/bastibe/emacs-journal"))]) (org-elisp-help . [(0 1 0) ((cl-lib (0 2)) (org (8 0))) "org links to emacs-lisp documentation" single ((:url . "http://tarsius.github.com/org-elisp-help") (:keywords "org" "remember" "lisp"))]) (org-bullets . [(0 2 4) nil "Show bullets in org-mode as UTF-8 characters" single ((:url . "https://github.com/sabof/org-bullets"))]) (org-agenda-property . [(1 3 1) ((emacs (24 2))) "Display org properties in the agenda buffer." single ((:url . "http://github.com/Bruce-Connor/org-agenda-property") (:keywords "calendar"))]) (operate-on-number . [(1 1 0) nil "Operate on number at point with arithmetic functions" single ((:url . "https://github.com/knu/operate-on-number.el") (:keywords "editing"))]) (olivetti . [(1 0 0) nil "Minor mode for a nice writing environment" single ((:keywords "wp"))]) (octomacs . [(0 0 1) nil "Octopress interface for Emacs" single ((:url . "http://technosorcery.net"))]) (ocp-indent . [(1 4 2 2) nil "automatic indentation with ocp-indent" single ((:url . "http://www.typerex.org/ocp-indent.html") (:keywords "ocaml" "languages"))]) (object-registry . [(1 2 0) ((cl-lib (0 2))) "track data items by various instance slots" single ((:url . "https://github.com/tarsius/object-registry") (:keywords "data" "oo"))]) (ob-translate . [(0 1 2) ((google-translate (0 4)) (org (8))) "Translation of text blocks in org-mode." single ((:url . "https://github.com/krisajenkins/ob-translate") (:keywords "org" "babel" "translate" "translation"))]) (ob-sml . [(0 2) ((sml-mode (6 4))) "org-babel functions for template evaluation" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (o-blog . [(2 0) nil "" tar ((:keywords "emacs"))]) (nvm . [(0 0 3) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0))) "Manage Node versions within Emacs" single ((:url . "http://github.com/rejeep/nvm.el") (:keywords "node" "nvm"))]) (nsis-mode . [(0 44) nil "NSIS-mode" tar ((:url . "http://github.com/mlf176f2/nsis-mode") (:keywords "nsis"))]) (nrepl-sync . [(0 3 1) ((cider (0 6))) "connect to nrepl port and eval .sync.clj." single ((:url . "https://github.com/phillord/lein-sync"))]) (nrepl-ritz . [(0 6 0) ((nrepl (0 1 5))) "nrepl extensions for ritz" single ((:url . "https://github.com/pallet/ritz") (:keywords "languages" "lisp" "nrepl"))]) (notmuch . [(0 18 1) nil "No description available." tar nil]) (nose . [(0 1 1) nil "Easy Python test running in Emacs" single ((:keywords "nose" "python" "testing"))]) (nodejs-repl . [(0 0 2) nil "Run Node.js REPL" single nil]) (nix-mode . [(1 7) nil "No description available." single nil]) (ninja-mode . [(1 5 1) nil "Major mode for editing .ninja files" single nil]) (neotree . [(0 2 1) nil "A tree plugin like NerdTree for Vim" single ((:url . "https://github.com/jaypei/emacs-neotree"))]) (nemerle . [(1 2) nil "major mode for editing nemerle programs" single ((:keywords "nemerle" "mode" "languages"))]) (ncl-mode . [(0 98) nil "No description available." tar nil]) (navorski . [(0 2 7) ((s (1 9 0)) (dash (1 5 0)) (multi-term (0 8 14))) "Helping you live in the terminal, like Viktor did." single ((:keywords "terminal"))]) (navi-mode . [(2 0) nil "major-mode for easy buffer-navigation" single ((:url . "https://github.com/tj64/navi"))]) (nav-flash . [(1 1 0) nil "Briefly highlight the current line" single ((:url . "http://github.com/rolandwalker/nav-flash") (:keywords "extensions" "navigation" "interface"))]) (mykie . [(0 2 1) nil "Command multiplexer: Register multiple functions to a keybind" tar ((:url . "https://github.com/yuutayamada/mykie-el") (:keywords "emacs" "configuration" "keybind"))]) (multiple-cursors . [(1 3 0) nil "Multiple cursors for Emacs." tar nil]) (multi-web-mode . [(0 2 1) nil "multiple major mode support for web editing" tar ((:keywords "convenience" "languages" "wp"))]) (multi . [(2 0 1) ((emacs (24))) "Clojure-style multi-methods for emacs lisp" single ((:url . "http://github.com/kurisuwhyte/emacs-multi") (:keywords "multimethod" "generic" "predicate" "dispatch"))]) (moz . [(1 1 0) nil "Lets current buffer interact with inferior mozilla." single ((:url . "http://github.com/bard/mozrepl/raw/master/chrome/content/moz.el"))]) (move-dup . [(0 2 1) nil "Eclipse-like moving and duplicating lines or rectangles." single ((:keywords "convenience" "wp"))]) (morlock . [(0 4 0) nil "more font-lock keywords for elisp" single ((:url . "http://github.com/tarsius/morlock") (:keywords "convenience"))]) (mode-line-debug . [(1 2 1) nil "show status of `debug-on-error' in the mode-line" single ((:url . "https://github.com/tarsius/mode-line-debug") (:keywords "convenience" "lisp"))]) (mode-icons . [(0 1 0) nil "Show icons for modes" tar ((:url . "http://ryuslash.org/projects/mode-icons.html") (:keywords "multimedia"))]) (mocker . [(0 3 0) ((eieio (1 3)) (el-x (0 2 4))) "mocking framework for emacs" single ((:keywords "lisp" "testing"))]) (mmm-mode . [(0 5 1) nil "Allow Multiple Major Modes in a buffer" tar ((:url . "https://github.com/purcell/mmm-mode") (:keywords "convenience" "faces" "languages" "tools"))]) (mmm-mako . [(1 1) ((mmm-mode (0 4 8))) "MMM submode class for Mako Templates" single ((:url . "https://bitbucket.org/pjenvey/mmm-mako"))]) (minitest . [(0 7 1) ((dash (1 0 0))) "An Emacs mode for ruby minitest files" single ((:url . "https://github.com/arthurnn/minitest-emacs"))]) (minimal-session-saver . [(0 6 2) nil "Very lean session saver" single ((:url . "http://github.com/rolandwalker/minimal-session-saver") (:keywords "tools" "frames" "project"))]) (miniedit . [(2 0) nil "Enhanced editing for minibuffer fields." single nil]) (minibuffer-cua . [(1 0 0) nil "Make CUA mode's S-up/S-down work in minibuffer" single ((:url . "https://github.com/knu/minibuffer-cua.el") (:keywords "completion" "editing"))]) (minibuffer-complete-cycle . [(1 25 20130814) nil "Cycle through the *Completions* buffer" single ((:url . "https://github.com/knu/minibuffer-complete-cycle") (:keywords "completion"))]) (milkode . [(0 4) nil "Command line search and direct jump with Milkode" single ((:keywords "milkode" "search" "grep" "jump" "keyword"))]) (migemo . [(1 9 1) nil "Japanese incremental search through dynamic pattern expansion" single ((:url . "https://github.com/emacs-jp/migemo"))]) (mew . [(6 6) nil "Messaging in the Emacs World" tar nil]) (merlin . [(1 7 1) nil "Mode for Merlin, an assistant for OCaml." single ((:url . "http://github.com/the-lambda-church/merlin") (:keywords "ocaml" "languages"))]) (mentor . [(0 1) nil "Control rtorrent from GNU Emacs" tar ((:keywords "bittorrent" "rtorrent"))]) (mc-extras . [(1 0 3) ((multiple-cursors (1 2 1))) "Extra functions for multiple-cursors mode." tar ((:url . "https://github.com/knu/mc-extras.el") (:keywords "editing" "cursors"))]) (maxframe . [(0 5) nil "No description available." single nil]) (marmalade . [(0 0 4) ((furl (0 0 2))) "Elisp interface for the Emacs Lisp package server." single ((:url . "http://code.google.com/p/marmalade"))]) (markdown-toc . [(0 0 6) ((s (1 7 0)) (dash (2 5 0)) (markdown-mode (2 0))) "A simple TOC generator for markdown file" tar nil]) (markdown-mode . [(2 0) nil "Emacs Major mode for Markdown-formatted text files" single ((:url . "http://jblevins.org/projects/markdown-mode/") (:keywords "markdown" "github flavored markdown" "itex"))]) (mark-tools . [(0 3) nil "Some simple tools to access the mark-ring in Emacs" single ((:url . "https://github.com/stsquad/emacs-mark-tools"))]) (map-regexp . [(0 3 0) ((cl-lib (0 2))) "map over matches of a regular expression" single ((:url . "https://github.com/tarsius/map-regexp") (:keywords "convenience"))]) (map-progress . [(0 5 0) nil "mapping macros that report progress" single ((:url . "https://github.com/tarsius/map-progress/") (:keywords "convenience"))]) (mallard-mode . [(0 3 0) nil "Major mode for editing Mallard files" tar ((:url . "https://github.com/jhradilek/emacs-mallard-mode") (:keywords "xml" "mallard"))]) (malinka . [(0 2 0) ((s (1 9 0)) (dash (2 4 0)) (f (0 11 0)) (cl-lib (0 3)) (rtags (0 0)) (projectile (0 11 0))) "A C/C++ project configuration package for Emacs" single ((:url . "https://github.com/LefterisJP/malinka") (:keywords "c" "c++" "project-management"))]) (malabar-mode . [(20140303 946) ((fringe-helper (1 0 1))) "A better Java mode for Emacs" tar ((:url . "http://www.github.com/m0smith/malabar-mode") (:keywords "java" "maven" "language" "malabar"))]) (makey . [(0 3) ((cl-lib (0 2))) "interactive commandline mode" single nil]) (make-color . [(0 4) nil "Alternative to picking color - update fg/bg color by pressing r/g/b/... keys" single ((:url . "http://github.com/alezost/make-color.el") (:keywords "color"))]) (magit-tramp . [(0 1 0) ((magit (1 2 0))) "git method for TRAMP" single ((:url . "https://github.com/sigma/magit-tramp"))]) (magit-topgit . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "topgit plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-svn . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "git-svn plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-stgit . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "StGit plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-push-remote . [(0 5 0) ((magit (1 3 0))) "push remote support for Magit" single ((:url . "https://github.com/tarsius/magit-push-remote") (:keywords "convenience"))]) (magit-gitflow . [(1 0 0) ((magit (1 3 0))) "gitflow extension for magit" single ((:url . "https://github.com/jtatarik/magit-gitflow") (:keywords "vc" "tools"))]) (magit-gh-pulls . [(0 3) ((gh (0 4 3)) (magit (1 1 0))) "GitHub pull requests extension for Magit" single ((:keywords "tools"))]) (magit-find-file . [(2 0 0) ((magit (1 2 0)) (dash (2 8 0))) "completing-read over all files in Git" single ((:url . "https://github.com/bradleywright/magit-find-file.el") (:keywords "git"))]) (magit-annex . [(0 10 0) ((cl-lib (0 3)) (magit (1 2 0))) "Use git annex within magit" single ((:url . "https://github.com/kyleam/magit-annex") (:keywords "magit" "git-annex"))]) (magit . [(90141013) ((cl-lib (0 3)) (git-commit-mode (0 14 0)) (git-rebase-mode (0 14 0))) "control Git from Emacs" tar ((:keywords "vc" "tools"))]) (macrostep . [(0 8) nil "interactive macro stepper for Emacs Lisp" single ((:url . "https://github.com/joddie/macrostep") (:keywords "lisp" "languages" "macro" "debugging"))]) (macro-math . [(1 0) nil "in-buffer mathematical operations" single ((:url . "http://nschum.de/src/emacs/macro-math/") (:keywords "convenience"))]) (m-buffer . [(0 5) ((dash (2 5 0)) (emacs (24 3))) "Buffer Manipulation Functions" single nil]) (lua-mode . [(20140514) nil "a major-mode for editing Lua scripts" single ((:url . "http://immerrr.github.com/lua-mode") (:keywords "languages" "processes" "tools"))]) (love-minor-mode . [(1 1) nil "Minor mode for working on LÖVE projects" single ((:url . "https://github.com/ejmr/love-minor-mode"))]) (logito . [(0 1) ((eieio (1 3))) "logging library for Emacs" single ((:keywords "lisp" "tool"))]) (logalimacs . [(1 0 0) nil "Front-end to logaling-command for Ruby gems" single ((:url . "https://github.com/logaling/logalimacs"))]) (log4j-mode . [(1 3) nil "major mode for viewing log files" single ((:keywords "log" "log4j" "java"))]) (literate-coffee-mode . [(0 2) ((coffee-mode (0 5 0))) "major-mode for Literate CoffeeScript" single ((:url . "https://github.com/syohex/emacs-literate-coffee-mode"))]) (list-utils . [(0 4 2) nil "List-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/list-utils") (:keywords "extensions"))]) (lispyscript-mode . [(0 3 5) nil "Major mode for LispyScript code." single ((:url . "https://github.com/krisajenkins/lispyscript-mode") (:keywords "lisp" "languages"))]) (lispy . [(0 13 0) ((helm (1 5 3)) (ace-jump-mode (2 0)) (s (1 4 0)) (noflet (0 0 10)) (multiple-cursors (1 3 0)) (iedit (0 97))) "vi-like Paredit" tar nil]) (linum-relative . [(0 4) nil "display relative line number in emacs." single ((:url . "http://github.com/coldnew/linum-relative") (:keywords "converience"))]) (linked-buffer . [(0 5) ((emacs (24)) (m-buffer (0 5)) (dash (2 5 0))) "One buffer as a view of another" tar nil]) (link . [(1 10) nil "No description available." single nil]) (lingr . [(0 2) nil "Lingr Client for GNU Emacs" single ((:url . "http://github.com/lugecy/lingr-el") (:keywords "chat" "client" "internet"))]) (lfe-mode . [(0 9 0) nil "Lisp Flavoured Erlang mode" tar nil]) (less-css-mode . [(0 19) nil "Major mode for editing LESS CSS files (lesscss.org)" single ((:url . "https://github.com/purcell/less-css-mode") (:keywords "less" "css" "mode"))]) (ledger-mode . [(3 1) nil "Helper code for use with the \"ledger\" command-line tool" tar nil]) (latex-extra . [(1 8) ((auctex (11 86 1)) (cl-lib (0 5))) "Adds several useful functionalities to LaTeX-mode." single ((:url . "http://github.com/Bruce-Connor/latex-extra") (:keywords "tex"))]) (langtool . [(1 2 1) nil "Grammer check utility using LanguageTool" single ((:url . "https://github.com/mhayashi1120/Emacs-langtool/raw/master/langtool.el") (:keywords "docs"))]) (know-your-http-well . [(0 2 0) nil "Look up the meaning of HTTP headers, methods, relations, status codes" tar nil]) (kivy-mode . [(1 8 0) nil "Emacs major mode for editing Kivy files" single nil]) (killer . [(0 2 2) nil "kill and delete text" single ((:url . "http://github.com/tarsius/killer") (:keywords "convenience"))]) (kill-ring-search . [(1 1) nil "incremental search for the kill ring" single ((:url . "http://nschum.de/src/emacs/kill-ring-search/") (:keywords "convenience" "matching"))]) (keymap-utils . [(0 4 4) ((cl-lib (0 2))) "Keymap utilities" tar nil]) (keydef . [(1 15) nil "a simpler way to define keys, with kbd syntax" single ((:keywords "convenience" "lisp" "customization" "keyboard" "keys"))]) (keychain-environment . [(2 0 1) nil "load keychain environment variables" single ((:url . "https://github.com/tarsius/keychain-environment") (:keywords "gnupg" "pgp" "ssh"))]) (key-combo . [(1 2) nil "map key sequence to commands" tar ((:url . "https://github.com/uk-ar/key-combo") (:keywords "keyboard" "input"))]) (jump-to-line . [(0 2 0) nil "Jump to line number at point." single ((:keywords "jump" "line" "back" "file" "ruby" "csharp" "python" "perl"))]) (jump . [(2 3) ((findr (0 7)) (inflections (1 1))) "build functions which contextually jump between files" single ((:url . "http://github.com/eschulte/jump.el/tree/master") (:keywords "project" "convenience" "navigation"))]) (julia-mode . [(0 3 1) nil "No description available." single nil]) (jsx-mode . [(0 1 10) nil "major mode for JSX" single ((:url . "https://github.com/jsx/jsx-mode.el"))]) (json-mode . [(1 1 0) nil "Major mode for editing JSON files" single ((:url . "https://github.com/joshwnj/json-mode"))]) (js3-mode . [(1 1 0) nil "An improved JavaScript editing mode" tar ((:keywords "javascript" "languages"))]) (js2-refactor . [(0 6 1) ((js2-mode (20101228)) (multiple-cursors (1 0 0)) (dash (1 0 0)) (s (1 0 0)) (yasnippet (20130218))) "A JavaScript refactoring library for emacs." tar nil]) (js2-mode . [(20140114) ((emacs (24 1))) "Improved JavaScript editing mode" tar ((:url . "https://github.com/mooz/js2-mode/") (:keywords "languages" "javascript"))]) (js2-closure . [(1 0) ((js2-mode (20140114))) "Google Closure dependency manager" single ((:url . "http://github.com/jart/js2-closure"))]) (jedi . [(0 1 2) ((epc (0 1 0)) (auto-complete (1 4))) "Python auto-completion for Emacs" tar nil]) (jabber . [(0 8 92) nil "A Jabber client for Emacs." tar nil]) (j-mode . [(1 1 1) nil "Major mode for editing J programs" tar ((:url . "http://github.com/zellio/j-mode") (:keywords "j" "langauges"))]) (ix . [(0 7) ((grapnel (0 5 3))) "Emacs client for http://ix.io pastebin" single ((:url . "http://www.github.com/theanalyst/ix.el"))]) (irony . [(0 1 1) ((cl-lib (0 5))) "C/C++ minor mode powered by libclang" tar ((:url . "https://github.com/Sarcasm/irony-mode") (:keywords "c" "convenience" "tools"))]) (ir-black-theme . [(1 0 1) nil "Port of ir-black theme" single ((:keywords "faces"))]) (instapaper . [(0 9 5) nil "No description available." single nil]) (insert-shebang . [(0 9 3) nil "Insert shebang line automatically." single ((:url . "http://github.com/psachin/insert-shebang") (:keywords "shebang" "tool" "convenience"))]) (inline-crypt . [(0 1 4) nil "Simple inline encryption via openssl" tar nil]) (initsplit . [(1 6) nil "No description available." single nil]) (init-loader . [(0 1) nil "Loader for configuration files" single ((:url . "https://github.com/emacs-jp/init-loader/"))]) (inflections . [(2 3) nil "convert english words between singular and plural" single ((:url . "https://github.com/eschulte/jump.el") (:keywords "ruby" "rails" "languages" "oop"))]) (inf-ruby . [(2 4 0) nil "Run a Ruby process in a buffer" single ((:url . "http://github.com/nonsequitur/inf-ruby") (:keywords "languages" "ruby"))]) (import-popwin . [(0 8) ((popwin (0 6)) (cl-lib (0 5))) "popwin buffer near by import statements with popwin" single ((:url . "https://github.com/syohex/emacs-import-popwin"))]) (immutant-server . [(1 2 0) nil "Run your Immutant server in Emacs" single ((:url . "http://www.github.com/leathekd/immutant-server.el"))]) (ignoramus . [(0 7 0) nil "Ignore backups, build files, et al." single ((:url . "http://github.com/rolandwalker/ignoramus") (:keywords "convenience" "tools"))]) (iflipb . [(1 2) nil "interactively flip between recently visited buffers" single ((:url . "http://hg.rosdahl.net/iflipb"))]) (idris-mode . [(0 9 14) ((emacs (24))) "Major mode for editing Idris code" tar ((:url . "https://github.com/idris-hackers/idris-mode") (:keywords "languages"))]) (ido-vertical-mode . [(0 1 5) nil "Makes ido-mode display vertically." single ((:url . "https://github.com/gempesaw/ido-vertical-mode.el") (:keywords "convenience"))]) (ido-ubiquitous . [(2 14) ((emacs (24 1))) "Use ido (nearly) everywhere." single ((:url . "https://github.com/DarwinAwardWinner/ido-ubiquitous") (:keywords "convenience"))]) (ido-load-library . [(0 2 0) ((persistent-soft (0 8 8)) (pcache (0 2 3))) "Load-library alternative using ido-completing-read" single ((:url . "http://github.com/rolandwalker/ido-load-library") (:keywords "maint" "completion"))]) (ido-complete-space-or-hyphen . [(1 1) nil "No description available." single nil]) (idle-highlight-mode . [(1 1 3) nil "highlight the word the point is on" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/IdleHighlight") (:keywords "convenience"))]) (identica-mode . [(1 3 1) nil "Major mode API client for status.net open microblogging" tar ((:url . "http://blog.gabrielsaldana.org/identica-mode-for-emacs/") (:keywords "identica" "web"))]) (ibuffer-vc . [(0 8) ((cl-lib (0 2))) "Group ibuffer's list by VC project, or show VC status" single ((:url . "http://github.com/purcell/ibuffer-vc") (:keywords "themes"))]) (hyde . [(0 2) nil "No description available." tar nil]) (httprepl . [(1 1) ((s (1 9 0)) (dash (2 5 0)) (emacs (24))) "An HTTP REPL" single ((:url . "https://github.com/gregsexton/httprepl.el") (:keywords "http" "repl"))]) (httpcode . [(0 1) nil "explains the meaning of an HTTP status code" single ((:url . "http://github.com/rspivak/httpcode.el"))]) (html-to-markdown . [(1 5) nil "HTML to Markdown converter written in Emacs-lisp." single ((:url . "http://github.com/Bruce-Connor/html-to-markdown") (:keywords "tools" "wp" "languages"))]) (hookify . [(0 2 0) ((s (1 9 0)) (dash (1 5 0))) "Interactive commands to create temporary hooks" single ((:url . "https://github.com/Silex/hookify") (:keywords "hook" "convenience"))]) (hl-todo . [(1 3 1) nil "highlight TODO keywords" single ((:url . "http://github.com/tarsius/hl-todo") (:keywords "convenience"))]) (hl-sexp . [(1 0 0) nil "highlight the current sexp" single ((:keywords "faces" "frames" "emulation"))]) (hl-sentence . [(3) nil "highlight a sentence based on customizable face" single ((:url . "http://github.com/milkypostman/hl-sentence") (:keywords "highlighting"))]) (historyf . [(0 0 8) nil "file history library like browser" single ((:url . "https://github.com/k1LoW/emacs-historyf"))]) (hippie-namespace . [(0 5 8) nil "Special treatment for namespace prefixes in hippie-expand" single ((:url . "http://github.com/rolandwalker/hippie-namespace") (:keywords "convenience" "lisp" "tools" "completion"))]) (hippie-expand-slime . [(0 1) nil "Hook slime's completion into hippie-expand" single ((:url . "https://github.com/purcell/hippie-expand-slime"))]) (highlight-symbol . [(1 2) nil "automatic and manual symbol highlighting" single ((:url . "http://nschum.de/src/emacs/highlight-symbol/") (:keywords "faces" "matching"))]) (highlight-quoted . [(0 1) ((emacs (24))) "Highlight Lisp quotes and quoted symbols" single ((:url . "https://github.com/Fanael/highlight-quoted"))]) (highlight-parentheses . [(1 0 2) nil "highlight surrounding parentheses" single ((:url . "http://nschum.de/src/emacs/highlight-parentheses/") (:keywords "faces" "matching"))]) (highlight-numbers . [(0 2) ((emacs (24)) (parent-mode (2 0))) "Highlight numbers in source code" single ((:url . "https://github.com/Fanael/highlight-numbers"))]) (highlight-defined . [(0 1 5) ((emacs (24))) "Syntax highlighting of known Elisp symbols" single ((:url . "https://github.com/Fanael/highlight-defined"))]) (highlight-blocks . [(0 1 5) ((emacs (24))) "Highlight the blocks point is in" single ((:url . "https://github.com/Fanael/highlight-blocks"))]) (helm-themes . [(0 4) ((helm (1 0))) "Color theme selection with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-themes"))]) (helm-spaces . [(0 2) ((helm (1 0)) (spaces (0 1 0))) "helm sources for spaces" single ((:url . "https://github.com/yasuyk/helm-spaces") (:keywords "helm" "frames" "convenience"))]) (helm-rubygems-org . [(0 0 1) ((emacs (24)) (helm (1 6 3)) (cl-lib (0 5))) "Use helm to search rubygems.org" single ((:url . "https://github.com/neomantic/helm-rubygems-org") (:keywords "ruby" "rubygems" "gemfile" "helm"))]) (helm-robe . [(0 1) ((helm (1 0))) "completing read function for robe" single ((:url . "https://github.com/syohex/emacs-helm-robe"))]) (helm-pydoc . [(0 6) ((helm (1 0)) (cl-lib (0 5))) "pydoc with helm interface" tar ((:url . "https://github.com/syohex/emacs-helm-pydoc"))]) (helm-projectile . [(0 11 0) ((helm (1 4 0)) (projectile (0 11 0)) (cl-lib (0 3))) "Helm integration for Projectile" single ((:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (helm-proc . [(0 0 4) ((helm (1 6 0))) "Helm interface for managing system processes" tar nil]) (helm-perldoc . [(0 7) ((helm (1 0)) (deferred (0 3 1)) (cl-lib (0 5))) "perldoc with helm interface" tar ((:url . "https://github.com/syohex/emacs-helm-perldoc"))]) (helm-package . [(0 2) ((helm (1 0)) (cl-lib (0 3))) "Listing ELPA packages with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-package"))]) (helm-open-github . [(0 11) ((helm (1 0)) (gh (1 0)) (cl-lib (0 5))) "Utilities of Opening Github Page" single ((:url . "https://github.com/syohex/emacs-helm-open-github"))]) (helm-hayoo . [(0 0 5) ((helm (1 6 0)) (json (1 2)) (haskell-mode (13 7))) "Source and configured helm for searching hayoo" single ((:keywords "helm"))]) (helm-gtags . [(1 3 9) ((helm (1 5 6)) (cl-lib (0 5))) "GNU GLOBAL helm interface" single ((:url . "https://github.com/syohex/emacs-helm-gtags"))]) (helm-github-stars . [(1 1 1) ((helm (1 5 5))) "Helm integration for your starred repositories on github" single ((:keywords "helm" "github" "stars"))]) (helm-ghq . [(1 4 0) ((helm (1 6 2))) "ghq with helm interface" single ((:url . "https://github.com/masutaka/emacs-helm-ghq"))]) (helm-descbinds . [(1 7 1) nil "Yet Another `describe-bindings' with `helm'." single ((:keywords "helm" "help"))]) (helm-dash . [(1 0 0) ((helm (0 0 0))) "Helm extension to search dash docsets" single ((:keywords "docs"))]) (helm-backup . [(0 2 0) ((helm (1 5 5)) (s (1 8 0))) "Backup each file change using git" single ((:url . "http://github.com/antham/helm-backup") (:keywords "backup"))]) (helm-ag . [(0 28) ((helm (1 5 6)) (cl-lib (0 5))) "the silver searcher with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-ag"))]) (helm-ack . [(0 12) ((helm (1 0)) (cl-lib (0 5))) "Ack command with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-ack"))]) (helm . [(1 6 4) ((emacs (24)) (cl-lib (0 5)) (async (1 2))) "Helm is an Emacs incremental and narrowing framework" tar nil]) (header-button . [(0 3 0) nil "clickable buttons in header lines" single ((:url . "https://github.com/emacsattic/header-button") (:keywords "extensions"))]) (haskell-mode . [(13 10) nil "A Haskell editing mode" tar nil]) (hardhat . [(0 4 4) ((ignoramus (0 7 0))) "Protect against clobbering user-writable files" single ((:url . "http://github.com/rolandwalker/hardhat") (:keywords "convenience"))]) (haml-mode . [(3 1 5) ((ruby-mode (1 0))) "Major mode for editing Haml files" single ((:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "html"))]) (ham-mode . [(1 1 1) ((html-to-markdown (1 2)) (markdown-mode (2 0))) "Html As Markdown. Transparently edit an html file using markdown." single ((:url . "http://github.com/Bruce-Connor/ham-mode") (:keywords "convenience" "emulation" "wp"))]) (hackernews . [(0 2) ((json (1 2))) "Access the hackernews aggregator from Emacs" tar nil]) (guru-mode . [(0 2) nil "Become an Emacs guru" single ((:url . "https://github.com/bbatsov/guru-mode") (:keywords "convenience"))]) (gruber-darker-theme . [(0 6) nil "Gruber Darker color theme for Emacs 24." single ((:url . "http://github.com/rexim/gruber-darker-theme"))]) (groovy-mode . [(201311291207) nil "Groovy mode derived mode" tar nil]) (grizzl . [(0 1 1) nil "Fuzzy Search Library & Completing Read" tar nil]) (grin . [(1 0) nil "run grin and grind (python replacements for grep and find) putting hits in a grep buffer" single ((:url . "http://bitbucket.org/dariusp686/emacs-grin") (:keywords "python" "grin" "grind" "grep" "find"))]) (grass-mode . [(0 1) ((cl-lib (0 2))) "Provides Emacs modes for interacting with the GRASS GIS program" single ((:keywords "grass" "gis"))]) (grapnel . [(0 5 3) nil "HTTP request lib with flexible callback dispatch" single ((:url . "http://www.github.com/leathekd/grapnel"))]) (gradle-mode . [(0 5 4) ((s (1 8 0))) "Gradle integration with Emacs' compile" single ((:url . "http://github.com/jacobono/emacs-gradle-mode") (:keywords "gradle"))]) (goto-gem . [(1 2) ((s (1 9 0))) "Open dired in gem directory" single ((:keywords "gemfile" "convenience"))]) (google-translate . [(0 10 4) nil "Emacs interface to Google Translate." tar nil]) (google-this . [(1 9) ((emacs (24 1))) "A set of functions and bindings to google under point." single ((:url . "http://github.com/Bruce-Connor/emacs-google-this") (:keywords "convenience" "hypermedia"))]) (golden-ratio . [(0 0 4) nil "Automatic resizing of Emacs windows to the golden ratio" single ((:keywords "window" "resizing"))]) (go-eldoc . [(0 19) ((go-mode (0)) (cl-lib (0 5))) "eldoc for go-mode" single ((:url . "https://github.com/syohex/emacs-go-eldoc"))]) (go-direx . [(0 3) ((direx (0 1 -3)) (cl-lib (0 5))) "Tree style source code viewer for Go language" single ((:url . "https://github.com/syohex/emacs-go-direx"))]) (gnus-desktop-notify . [(1 4) ((gnus (1 0))) "Gnus Desktop Notification global minor mode" single ((:url . "http://www.thregr.org/~wavexx/hacks/gnus-desktop-notify/"))]) (gnuplot . [(0 7 0) nil "drive gnuplot from within emacs" tar ((:keywords "gnuplot" "plotting"))]) (gmail-message-mode . [(1 3 2) ((ham-mode (1 0))) "A major-mode for editing gmail messages using markdown syntax." single ((:url . "http://github.com/Bruce-Connor/gmail-message-mode") (:keywords "mail" "convenience" "emulation"))]) (gitignore-mode . [(0 15 0) nil "Major mode for editing .gitignore files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (github-clone . [(0 2) ((gh (0 7 2)) (magit (1 2 0)) (emacs (24))) "Fork and clone github repos" single ((:url . "https://github.com/dgtized/github-clone.el") (:keywords "vc" "tools"))]) (gitconfig-mode . [(0 15 0) nil "Major mode for editing .gitconfig files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (gitconfig . [(1 0 0) nil "Emacs lisp interface to work with git-config variables" single ((:keywords "git" "gitconfig" "git-config"))]) (gitattributes-mode . [(0 15 0) nil "Major mode for editing .gitattributes files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-timemachine . [(1 8) ((cl-lib (0 5))) "Walk through git revisions of a file" single ((:url . "https://github.com/pidu/git-timemachine") (:keywords "git"))]) (git-rebase-mode . [(0 15 0) nil "Major mode for editing git rebase files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-messenger . [(0 15) ((popup (0 5 0))) "Pop up last commit information of current line" single ((:url . "https://github.com/syohex/emacs-git-messenger"))]) (git-link . [(0 0 2) nil "Get the GitHub/Bitbucket/Gitorious URL for a buffer location" single ((:url . "http://github.com/sshaw/git-link"))]) (git-gutter-fringe . [(0 21) ((git-gutter (0 73)) (fringe-helper (0 1 1)) (cl-lib (0 5)) (emacs (24))) "Fringe version of git-gutter.el" single ((:url . "https://github.com/syohex/emacs-git-gutter-fringe"))]) (git-gutter-fringe+ . [(0 1) ((git-gutter+ (0 1)) (fringe-helper (20130519 1641))) "Fringe version of git-gutter+.el" single ((:url . "https://github.com/nonsequitur/git-gutter-fringe-plus"))]) (git-gutter . [(0 77) ((cl-lib (0 5)) (emacs (24))) "Port of Sublime Text plugin GitGutter" single ((:url . "https://github.com/syohex/emacs-git-gutter"))]) (git-gutter+ . [(0 2) nil "Manage Git hunks straight from the buffer" single ((:url . "https://github.com/nonsequitur/git-gutter-plus"))]) (git-commit-mode . [(0 15 0) nil "Major mode for editing git commit messages" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-auto-commit-mode . [(4 2 2) nil "Emacs Minor mode to automatically commit and push" single ((:url . "http://ryuslash.org/projects/git-auto-commit-mode/") (:keywords "vc"))]) (git . [(0 1 1) ((s (1 7 0)) (dash (2 2 0)) (f (0 10 0))) "An Elisp API for programmatically using Git" single ((:url . "http://github.com/rejeep/git.el") (:keywords "git"))]) (gist . [(1 1 0) ((eieio (1 3)) (gh (0 7 0)) (tabulated-list (0))) "Emacs integration for gist.github.com" single ((:keywords "gist" "git" "github" "paste" "pastie" "pastebin"))]) (ghc . [(5 1 1 0) nil "Sub mode for Haskell mode" tar nil]) (gh . [(0 8 0) ((eieio (1 3)) (pcache (0 2 4)) (logito (0 1))) "A GitHub library for Emacs" tar nil]) (ggtags . [(0 8 6) ((emacs (24)) (cl-lib (0 5))) "emacs frontend to GNU Global source code tagging system" single ((:url . "https://github.com/leoliu/ggtags") (:keywords "tools" "convenience"))]) (ggo-mode . [(20130521) nil "Gengetopt major mode" single ((:keywords "extensions" "convenience" "local"))]) (geiser . [(0 6) nil "GNU Emacs and Scheme talk to each other" tar nil]) (gather . [(1 0 5) nil "Gather string in buffer." single ((:url . "https://github.com/mhayashi1120/Emacs-gather/raw/master/gather.el") (:keywords "matching" "convenience" "tools"))]) (fwb-cmds . [(0 4 0) nil "misc frame, window and buffer commands" single ((:url . "http://github.com/tarsius/fwb-cmds") (:keywords "convenience"))]) (fvwm-mode . [(1 6 4) nil "major mode for editing Fvwm configuration files" single ((:keywords "files"))]) (fuzzy . [(0 1) nil "Fuzzy Matching" single ((:keywords "convenience"))]) (full-ack . [(1 0) nil "a front-end for ack" single ((:url . "http://nschum.de/src/emacs/full-ack/") (:keywords "tools" "matching"))]) (fuel . [(0 96) nil "No description available." tar nil]) (fsharp-mode . [(1 3 0) ((auto-complete (1 4)) (popup (0 5)) (pos-tip (0 4 5)) (s (1 3 1)) (dash (1 1 0))) "F# mode for Emacs" tar nil]) (fringe-helper . [(1 0 1) nil "helper functions for fringe bitmaps" single ((:url . "http://nschum.de/src/emacs/fringe-helper/") (:keywords "lisp"))]) (frame-restore . [(0 5) ((emacs (24 1))) "Restore Emacs frame" single ((:url . "https://github.com/lunaryorn/frame-restore.el") (:keywords "frames" "convenience"))]) (fountain-mode . [(1 3 3) ((s (1 9 0))) "Major mode for screenwriting in Fountain markup" single ((:url . "https://github.com/rnkn/fountain-mode") (:keywords "wp"))]) (font-utils . [(0 7 2) ((persistent-soft (0 8 8)) (pcache (0 2 3))) "Utility functions for working with fonts" single ((:url . "http://github.com/rolandwalker/font-utils") (:keywords "extensions"))]) (fold-this . [(0 2 0) nil "Just fold this region please" single ((:keywords "convenience"))]) (fold-dwim-org . [(0 6) ((fold-dwim (1 2))) "Fold DWIM bound to org key-strokes." single ((:url . "https://github.com/mlf176f2/fold-dwim-org") (:keywords "folding" "emacs" "org-mode"))]) (fold-dwim . [(1 2) nil "No description available." single nil]) (fm . [(1 0) nil "follow mode for compilation/output buffers" single ((:keywords "outlines"))]) (flyspell-lazy . [(0 6 6) nil "Improve flyspell responsiveness using idle timers" single ((:url . "http://github.com/rolandwalker/flyspell-lazy") (:keywords "spelling"))]) (flymake-shell . [(0 8) ((flymake-easy (0 1))) "A flymake syntax-checker for shell scripts" single ((:url . "https://github.com/purcell/flymake-shell"))]) (flymake-sass . [(0 6) ((flymake-easy (0 1))) "Flymake handler for sass files" single ((:url . "https://github.com/purcell/flymake-sass"))]) (flymake-ruby . [(0 8) ((flymake-easy (0 1))) "A flymake handler for ruby-mode files" single ((:url . "https://github.com/purcell/flymake-ruby"))]) (flymake-python-pyflakes . [(0 9) ((flymake-easy (0 8))) "A flymake handler for python-mode files using pyflakes (or flake8)" single ((:url . "https://github.com/purcell/flymake-python-pyflakes"))]) (flymake-php . [(0 5) ((flymake-easy (0 1))) "A flymake handler for php-mode files" single ((:url . "https://github.com/purcell/flymake-php"))]) (flymake-perlcritic . [(1 0 3) ((flymake (0 3))) "Flymake handler for Perl to invoke Perl::Critic" tar ((:url . "https://github.com/illusori/emacs-flymake-perlcritic"))]) (flymake-json . [(0 1) ((flymake-easy (0 1))) "A flymake handler for json using jsonlint" single ((:url . "https://github.com/purcell/flymake-json"))]) (flymake-jslint . [(0 23) nil "Flymake support for javascript using jslint" single ((:url . "https://github.com/purcell/flymake-jslint"))]) (flymake-hlint . [(0 2) ((flymake-easy (0 1))) "A flymake handler for haskell-mode files using hlint" single ((:url . "https://github.com/purcell/flymake-hlint"))]) (flymake-haskell-multi . [(0 3) ((flymake-easy (0 1))) "Syntax-check haskell-mode using both ghc and hlint" tar nil]) (flymake-haml . [(0 8) ((flymake-easy (0 1))) "A flymake handler for haml files" single ((:url . "https://github.com/purcell/flymake-haml"))]) (flymake-gjshint . [(0 0 6) nil "A flymake handler for javascript using both jshint and gjslint" single ((:keywords "flymake" "javascript" "jshint" "gjslint"))]) (flymake-easy . [(0 9) nil "Helpers for easily building flymake checkers" single ((:url . "https://github.com/purcell/flymake-easy") (:keywords "convenience" "internal"))]) (flymake-css . [(0 3) ((flymake-easy (0 1))) "Flymake support for css using csslint" single ((:url . "https://github.com/purcell/flymake-css"))]) (flymake-coffee . [(0 12) ((flymake-easy (0 1))) "A flymake handler for coffee script" single ((:url . "https://github.com/purcell/flymake-coffee"))]) (flycheck-ledger . [(0 4) ((flycheck (0 15))) "Flycheck integration for ledger files" single ((:keywords "convenience" "languages" "tools"))]) (flycheck-hdevtools . [(0 3) ((flycheck (0 15))) "A flycheck checker for Haskell using hdevtools" single ((:url . "https://github.com/flycheck/flycheck-hdevtools") (:keywords "convenience" "languages" "tools"))]) (flycheck-haskell . [(0 5) ((flycheck (0 19 -3)) (haskell-mode (13 7)) (dash (2 4 0))) "Flycheck: Cabal projects and sandboxes" tar ((:url . "https://github.com/flycheck/flycheck-haskell") (:keywords "tools" "convenience"))]) (flycheck-dmd-dub . [(0 7) ((flycheck (0 17))) "Sets flycheck-dmd-include-paths from dub package information" single ((:url . "http://github.com/atilaneves/flycheck-dmd-dub") (:keywords "languages"))]) (flycheck-color-mode-line . [(0 3) ((flycheck (0 15)) (dash (1 2)) (emacs (24 1))) "Change mode line color with Flycheck status" single ((:keywords "convenience" "language" "tools"))]) (flycheck-cask . [(0 1) ((flycheck (0 14)) (dash (2 0 0)) (f (0 6 0))) "Cask support in Flycheck" single ((:url . "https://github.com/flycheck/flycheck-cask") (:keywords "tools" "convenience"))]) (flycheck . [(0 20) ((dash (2 4 0)) (pkg-info (0 4)) (cl-lib (0 3)) (emacs (24 1))) "Modern on-the-fly syntax checking for GNU Emacs" tar ((:url . "https://flycheck.readthedocs.org") (:keywords "convenience" "languages" "tools"))]) (flx-ido . [(0 5) ((flx (0 1)) (cl-lib (0 3))) "flx integration for ido" single ((:url . "https://github.com/lewang/flx"))]) (flx . [(0 5) ((cl-lib (0 3))) "fuzzy matching with good sorting" single ((:url . "https://github.com/lewang/flx"))]) (floobits . [(1 5 11) ((json (1 2)) (highlight (0))) "Floobits plugin for real-time collaborative editing" tar ((:url . "http://github.com/Floobits/floobits-emacs") (:keywords "comm" "tools"))]) (fixmee . [(0 8 4) ((button-lock (1 0 0)) (nav-flash (1 0 0)) (back-button (0 6 0)) (smartrep (0 0 3)) (string-utils (0 3 2)) (tabulated-list (0))) "Quickly navigate to FIXME notices in code" single ((:url . "http://github.com/rolandwalker/fixmee") (:keywords "navigation" "convenience"))]) (fiplr . [(0 2 4) ((grizzl (0 1 0))) "Fuzzy Search for Files in Projects" tar nil]) (find-file-in-repository . [(1 2) nil "Quickly find files in a git, mercurial or other repository" single ((:url . "https://github.com/hoffstaetter/find-file-in-repository") (:keywords "files" "convenience" "repository" "project" "source control"))]) (find-file-in-project . [(3 3) nil "Find files in a project quickly." single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/FindFileInProject") (:keywords "project" "convenience"))]) (finalize . [(1 0 0) ((emacs (24 1)) (cl-lib (0 3)) (eieio (1 4))) "finalizers for Emacs Lisp" tar nil]) (fill-column-indicator . [(1 81) nil "Graphically indicate the fill column" tar ((:keywords "convenience"))]) (fastnav . [(1 0 7) nil "Fast navigation and editing routines." single ((:keywords "nav" "fast" "fastnav" "navigation"))]) (fasm-mode . [(0 1 10) nil "Fasm major mode" single ((:url . "https://github.com/Fanael/fasm-mode"))]) (fancy-narrow . [(0 9 4) nil "narrow-to-region with more eye candy." single ((:url . "http://github.com/Bruce-Connor/fancy-narrow-region") (:keywords "faces" "convenience"))]) (fancy-battery . [(0 2) ((emacs (24 1))) "Fancy battery display" single ((:url . "https://github.com/lunaryorn/fancy-battery.el") (:keywords "convenience" "tools" "hardware"))]) (factlog . [(0 0 1) nil "File activity logger" single nil]) (fabric . [(0 1 0) nil "Launch Fabric using Emacs" tar ((:url . "https://github.com/nlamirault/fabric.el") (:keywords "python" "fabric"))]) (f . [(0 17 1) ((s (1 7 0)) (dash (2 2 0))) "Modern API for working with files and directories" single ((:url . "http://github.com/rejeep/f.el") (:keywords "files" "directories"))]) (eyebrowse . [(0 3 2) ((dash (2 7 0))) "Easy window config switching" single ((:url . "https://github.com/wasamasa/eyebrowse") (:keywords "convenience"))]) (extend-dnd . [(0 5) nil "R drag and Drop" tar ((:url . "https://github.com/mlf176f2/extend-dnd") (:keywords "extend" "drag and drop"))]) (express . [(0 6 0) ((string-utils (0 3 2))) "Alternatives to `message'" single ((:url . "http://github.com/rolandwalker/express") (:keywords "extensions" "message" "interface"))]) (expand-region . [(0 10 0) nil "Increase selected region by semantic units." tar nil]) (exec-path-from-shell . [(1 8) nil "Get environment variables such as $PATH from the shell" single ((:url . "https://github.com/purcell/exec-path-from-shell") (:keywords "environment"))]) (eww-lnum . [(1 0) nil "Operations using link numbers" single ((:url . "https://github.com/m00natic/eww-lnum") (:keywords "eww" "browse" "conkeror"))]) (evm . [(0 4 2) ((dash (2 3 0)) (f (0 13 0))) "Emacs Version Manager" single ((:url . "http://github.com/rejeep/evm"))]) (evil-visualstar . [(0 0 1) ((evil (0))) "Starts a * or # search from the visual selection" single ((:url . "https://github.com/bling/evil-visualstar") (:keywords "evil" "vim" "visualstar"))]) (evil-space . [(0 0 2) ((evil (1 0 0))) "Repeat motion in Evil. Correct the behaviour of what SPC should do." single ((:url . "http://github.com/linktohack/evil-space") (:keywords "space" "repeat" "motion"))]) (evil-search-highlight-persist . [(1 1) nil "Persistent highlights after search" single nil]) (evil-org . [(0 1 1) ((evil (0)) (org (0))) "evil keybindings for org-mode" single ((:url . "https://github.com/edwtjo/evil-org-mode.git") (:keywords "evil" "vim-emulation" "org-mode" "key-bindings" "presets"))]) (evil-numbers . [(0 4) nil "increment/decrement numbers like in vim" single ((:url . "http://github.com/cofi/evil-numbers") (:keywords "numbers" "increment" "decrement" "octal" "hex" "binary"))]) (evil-nerd-commenter . [(1 5 5) nil "Comment/uncomment lines efficiently. Like Nerd Commenter in Vim" tar nil]) (evil-matchit . [(1 4 0) nil "Vim matchit ported into Emacs (requires EVIL)" tar nil]) (evil-leader . [(0 4 3) ((evil (0))) "let there be " single ((:url . "http://github.com/cofi/evil-leader") (:keywords "evil" "vim-emulation" "leader"))]) (evil-jumper . [(0 0 1) ((evil (0))) "Jump like vimmers do!" single ((:url . "https://github.com/bling/evil-jumper") (:keywords "evil" "vim" "jumplist" "jump" "list"))]) (evil-args . [(1 0) ((evil (1 0 8))) "Motions and text objects for delimited arguments in Evil." single ((:url . "http://github.com/wcsmith/evil-args") (:keywords "evil" "vim-emulation"))]) (evil . [(1 0 9) ((undo-tree (0 6 3)) (goto-last-change (1 2))) "Extensible Vi layer for Emacs." tar nil]) (eval-sexp-fu . [(0 4 0) nil "Tiny functionality enhancements for evaluating sexps." single ((:keywords "lisp" "highlight" "convenience"))]) (esup . [(0 4) nil "the Emacs StartUp Profiler (ESUP)" single ((:url . "http://github.com/jschaf/esup") (:keywords "emacs-lisp" "elisp" "profile" "startup"))]) (ess-smart-underscore . [(0 79) nil "Ess Smart Underscore" tar ((:url . "http://github.com/mlf176f2/ess-smart-underscore.el") (:keywords "ess" "underscore"))]) (ess . [(14 9) nil "No description available." tar nil]) (espuds . [(0 2 6) ((s (1 7 0)) (dash (2 2 0)) (noflet (0 0 10)) (f (0 12 1))) "Ecukes step definitions" single ((:url . "http://github.com/ecukes/espuds") (:keywords "test"))]) (es-windows . [(0 3) ((cl-lib (0 3)) (emacs (24))) "Window-management utilities" single ((:url . "https://github.com/sabof/es-windows"))]) (es-mode . [(3 1 0) nil "A major mode for editing Elasticsearch queries" tar ((:url . "http://www.github.com/dakrone/es-mode") (:keywords "elasticsearch"))]) (ert-runner . [(0 6 3) ((s (1 6 1)) (dash (1 8 0)) (f (0 10 0)) (commander (0 2 0)) (ansi (0 1 0)) (shut-up (0 1 0))) "Opinionated Ert testing workflow" tar ((:url . "http://github.com/rejeep/ert-runner.el") (:keywords "test"))]) (ert-junit . [(0 1 1) ((ert (0))) "JUnit XML reports from ert results" single ((:url . "http://bitbucket.org/olanilsson/ert-junit") (:keywords "tools" "test" "unittest" "ert"))]) (ert-async . [(0 1 1) nil "Async support for ERT" single ((:url . "http://github.com/rejeep/ert-async.el") (:keywords "test"))]) (ergoemacs-mode . [(5 14 7 3) ((emacs (24 1)) (undo-tree (0 6 5))) "Emacs mode based on common modern interface and ergonomics." tar ((:url . "https://github.com/ergoemacs/ergoemacs-mode") (:keywords "convenience"))]) (ercn . [(1 0 2) nil "Flexible ERC notifications" single ((:url . "http://www.github.com/leathekd/ercn"))]) (erc-hl-nicks . [(1 3 0) nil "ERC nick highlighter that ignores uniquifying chars when colorizing" single ((:url . "http://www.github.com/leathekd/erc-hl-nicks"))]) (erc-crypt . [(1 0) nil "Symmetric Encryption for ERC" single ((:keywords "application"))]) (epl . [(0 7) ((cl-lib (0 3))) "Emacs Package Library" single ((:url . "http://github.com/cask/epl") (:keywords "convenience"))]) (epc . [(0 1 0) ((concurrent (0 3 1)) (ctable (0 1 0))) "A RPC stack for the Emacs Lisp" tar ((:url . "https://github.com/kiwanami/emacs-epc") (:keywords "lisp" "rpc"))]) (enotify . [(0 1 3) nil "No description available." tar nil]) (emmet-mode . [(1 0 8) nil "Unofficial Emmet's support for emacs" single ((:url . "https://github.com/smihica/emmet-mode") (:keywords "convenience"))]) (emamux . [(0 12) ((cl-lib (0 5))) "Interact with tmux" single ((:url . "https://github.com/syohex/emacs-emamux"))]) (emacsql . [(1 0 2) ((emacs (24 3)) (cl-lib (0 3)) (finalize (1 0 0))) "high-level SQL database front-end" tar ((:url . "https://github.com/skeeto/emacsql"))]) (emacsc . [(1 2 20131027) nil "helper for emacsc(1)" tar ((:url . "https://github.com/knu/emacsc") (:keywords "tools"))]) (emacs-setup . [(1 0) nil "Package for maintaining your emacs configuration. Clean up your .emacs!" tar nil]) (emacs-eclim . [(0 2) nil "No description available." tar nil]) (elx . [(0 9 6) ((emacs (24 3 50))) "extract information from Emacs Lisp libraries" single ((:url . "https://github.com/tarsius/elx") (:keywords "docs" "libraries" "packages"))]) (elpy . [(1 5 1) ((company (0 8 2)) (find-file-in-project (3 3)) (highlight-indentation (0 5 0)) (idomenu (0 1)) (pyvenv (1 3)) (yasnippet (0 8 0))) "Emacs Python Development Environment" tar nil]) (elpa-mirror . [(1 1 3) nil "ELPA mirror from locally installed packages is easy" tar nil]) (elpa-audit . [(0 4) nil "Handy functions for inspecting and comparing package archives" single ((:url . "https://github.com/purcell/elpa-audit") (:keywords "maint"))]) (elmine . [(0 3) nil "No description available." single nil]) (elmacro . [(0 2 0) ((s (1 9 0)) (dash (1 5 0)) (cl-lib (0 5))) "Convert keyboard macros to elisp" single ((:url . "https://github.com/Silex/elmacro") (:keywords "macro" "elisp" "convenience"))]) (elixir-mode . [(2 0 1) nil "Major mode for editing Elixir files" tar ((:url . "https://github.com/elixir-lang/emacs-elixir") (:keywords "languages" "elixir"))]) (elixir-mix . [(1 0 0) nil "Emacs integration for Elixir's mix" single ((:url . "http://github.com/tonini/elixir-mix.el") (:keywords "elixir" "mix" "elixir-mix"))]) (elisp-slime-nav . [(0 7) ((cl-lib (0 2))) "Make M-. and M-, work in elisp like they do in slime" single ((:url . "https://github.com/purcell/elisp-slime-nav") (:keywords "navigation" "slime" "elisp" "emacs-lisp"))]) (elfeed-web . [(1 1 1) ((simple-httpd (1 4 3)) (elfeed (1 0 1)) (emacs (24 1))) "web interface to Elfeed" tar nil]) (elfeed . [(1 1 1) ((emacs (24 1))) "an Emacs Atom/RSS feed reader" tar nil]) (el-x . [(0 3 0) nil "main entry point for el-x package" tar ((:keywords "lisp"))]) (el-spice . [(0 2 2) ((thingatpt+ (0))) "Extra spice for emacs lisp programming" tar ((:url . "https://github.com/vedang/el-spice") (:keywords "configuration"))]) (el-mock . [(1 25 0) nil "Tiny Mock and Stub framework in Emacs Lisp" single ((:url . "http://github.com/rejeep/el-mock.el") (:keywords "lisp" "testing" "unittest"))]) (el-get . [(5 1) nil "Manage the external elisp bits and pieces you depend upon" tar ((:url . "http://www.emacswiki.org/emacs/el-get") (:keywords "emacs" "package" "elisp" "install" "elpa" "git" "git-svn" "bzr" "cvs" "svn" "darcs" "hg" "apt-get" "fink" "pacman" "http" "http-tar" "emacswiki"))]) (el-autoyas . [(0 5) nil "Automatically create Emacs-Lisp Yasnippets" tar ((:url . "https://github.com/mlf176f2/el-autoyas.el") (:keywords "emacs" "lisp" "mode" "yasnippet"))]) (ein . [(0 2 0) ((websocket (0 9)) (auto-complete (1 4))) "Emacs IPython Notebook" tar nil]) (eide . [(2 0 0) nil "Emacs-IDE" tar ((:url . "http://emacs-ide.tuxfamily.org/"))]) (egison-mode . [(3 3 12) nil "Egison editing mode" single ((:url . "https://github.com/egisatoshi/egison3/blob/master/elisp/egison-mode.el"))]) (edts . [(0 1 0) nil "No description available." tar nil]) (editorconfig . [(0 3) nil "EditorConfig Emacs extension" single ((:url . "http://github.com/editorconfig/editorconfig-emacs#readme"))]) (edit-server . [(1 13) nil "server that responds to edit requests from Chrome" single ((:url . "https://github.com/stsquad/emacs_chrome"))]) (edit-list . [(0 3) nil "edit a single list" single ((:url . "http://mwolson.org/static/dist/elisp/edit-list.el"))]) (edbi . [(0 1 2) ((concurrent (0 3 1)) (ctable (0 1 1)) (epc (0 1 1))) "Emacs Database Interface" tar nil]) (ecukes . [(0 6 15) ((commander (0 6 1)) (espuds (0 2 2)) (ansi (0 3 0)) (dash (2 2 0)) (s (1 8 0)) (f (0 11 0))) "Cucumber for Emacs." tar nil]) (ecb . [(2 -3 24) nil "a code browser for Emacs" tar ((:keywords "browser" "code" "programming" "tools"))]) (ebib . [(1 15 6) nil "a BibTeX database manager" tar ((:keywords "text" "bibtex"))]) (easy-kill-extras . [(0 9 3) ((easy-kill (0 9 4))) "Extra functions for easy-kill." single ((:url . "https://github.com/knu/easy-kill-extras.el") (:keywords "killing" "convenience"))]) (easy-kill . [(0 9 3) ((emacs (24)) (cl-lib (0 5))) "kill & mark things easily" tar ((:url . "https://github.com/leoliu/easy-kill") (:keywords "killing" "convenience"))]) (e2wm-R . [(0 4) ((e2wm (1 2))) "some e2wm plugin and perspective for GNU R" single ((:keywords "window manager" "convenience" "e2wm"))]) (e2wm . [(1 3) nil "simple window manager for emacs" tar ((:keywords "tools" "window manager"))]) (dynamic-fonts . [(0 6 4) ((font-utils (0 7 0)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Set faces based on available fonts" single ((:url . "http://github.com/rolandwalker/dynamic-fonts") (:keywords "faces" "frames"))]) (dvorak-mode . [(1 0 0) nil "Switch to dvorak layout easily" single ((:url . "https://github.com/proofit404/dvorak-mode"))]) (ducpel . [(0 1) ((cl-lib (0 5))) "Logic game with sokoban elements" tar ((:url . "https://github.com/alezost/ducpel") (:keywords "games"))]) (drupal-spell . [(0 2 2) nil "Aspell extra dictionary for Drupal" tar ((:url . "https://github.com/arnested/drupal-spell") (:keywords "wp"))]) (drupal-mode . [(0 5 0) ((php-mode (1 5 0))) "Advanced minor mode for Drupal development" tar ((:url . "https://github.com/arnested/drupal-mode") (:keywords "programming" "php" "drupal"))]) (drag-stuff . [(0 1 0) nil "Drag stuff (lines, words, region, etc...) around" tar nil]) (dispass . [(1 1 2) nil "Emacs wrapper for DisPass" single ((:url . "http://projects.ryuslash.org/dispass.el/") (:keywords "processes"))]) (discover . [(0 3) ((makey (0 3))) "discover more of Emacs" single nil]) (dired-k . [(0 11) ((cl-lib (0 5)) (emacs (24))) "highlight dired buffer by file size, modified time, git status" tar ((:url . "https://github.com/syohex/emacs-dired-k"))]) (dired-efap . [(0 8) nil "Edit Filename At Point in a dired buffer" single ((:keywords "dired" "environment" "files" "renaming"))]) (diminish . [(0 44) nil "Diminished modes are minor modes with no modeline display" single ((:url . "http://www.eskimo.com/~seldon") (:keywords "extensions" "diminish" "minor" "codeprose"))]) (dim-autoload . [(1 1 2) nil "dim complete autoload cookie lines" single ((:url . "http://github.com/tarsius/dim-autoload") (:keywords "convenience"))]) (digistar-mode . [(0 3) nil "major mode for Digistar scripts" single ((:keywords "languages"))]) (dictionary . [(1 10) nil "No description available." single nil]) (desktop-registry . [(1 2 0) nil "Keep a central registry of desktop files" single ((:url . "http://projects.ryuslash.org/desktop-registry/") (:keywords "convenience"))]) (demangle-mode . [(1 0) ((emacs (24)) (cl-lib (0 1))) "Automatically demangle C++ symbols" single ((:keywords "c" "tools"))]) (deft . [(0 5 1) nil "quickly browse, filter, and edit plain text notes" single ((:url . "http://jblevins.org/projects/deft/") (:keywords "plain text" "notes" "simplenote" "notational velocity"))]) (deferred . [(0 3 2) nil "Simple asynchronous functions for emacs lisp" single ((:url . "https://github.com/kiwanami/emacs-deferred") (:keywords "deferred" "async"))]) (dedicated . [(1 0 0) nil "A very simple minor mode for dedicated buffers" single ((:keywords "dedicated" "buffer"))]) (dash-functional . [(2 9 0) ((dash (2 0 0)) (emacs (24))) "Collection of useful combinators for Emacs Lisp" single ((:keywords "lisp" "functions" "combinators"))]) (dash . [(2 9 0) nil "A modern list library for Emacs" single ((:keywords "lists"))]) (dart-mode . [(0 9) nil "Major mode for editing Dart files" single ((:url . "http://code.google.com/p/dart-mode") (:keywords "language"))]) (d-mode . [(2 0 6) nil "D Programming Language mode for (X)Emacs" single ((:keywords "d" "programming" "language" "emacs" "cc-mode"))]) (cython-mode . [(0 21 2 2) nil "Major mode for editing Cython files" single nil]) (cyberpunk-theme . [(1 10) nil "Cyberpunk Color Theme" single ((:keywords "color" "theme" "cyberpunk"))]) (cuda-mode . [(1 0 0) nil "NVIDIA CUDA Major Mode" single ((:keywords "c" "languages"))]) (ctags-update . [(0 2 0) nil "(auto) update TAGS in parent directory using exuberant-ctags" single ((:url . "https://github.com/jixiuf/helm-etags-plus") (:keywords "exuberant-ctags" "etags"))]) (ctags . [(1 1 1) nil "No description available." single nil]) (ctable . [(0 1 2) nil "Table component for Emacs Lisp" single ((:url . "https://github.com/kiwanami/emacs-ctable") (:keywords "table"))]) (cryptol-mode . [(0 1 0) nil "Cryptol major mode for Emacs" single ((:url . "http://github.com/thoughtpolice/cryptol-mode") (:keywords "cryptol" "cryptography"))]) (crm-custom . [(0 4) nil "Alternate `completing-read-multiple' that uses `completing-read'" single ((:url . "https://github.com/DarwinAwardWinner") (:keywords "completion" "minibuffer" "multiple elements"))]) (creds . [(0 0 6 1) ((s (1 9 0)) (dash (2 5 0))) "A parser credentials file library (not limited to credentials entries)" tar nil]) (cpputils-cmake . [(0 4 18) nil "Easy real time C++ syntax check and intellisense if you use CMake" tar nil]) (cperl-mode . [(6 2) nil "Perl code editing commands for Emacs" single ((:keywords "languages" "perl"))]) (connection . [(1 10) nil "No description available." single nil]) (conkeror-minor-mode . [(1 6 1) nil "Mode for editing conkeror javascript files." single ((:url . "http://github.com/BruceConnor/conkeror-minor-mode") (:keywords "programming" "tools"))]) (concurrent . [(0 3 2) ((deferred (0 3 1))) "Concurrent utility functions for emacs lisp" single ((:url . "https://github.com/kiwanami/emacs-deferred/blob/master/README-concurrent.markdown") (:keywords "deferred" "async" "concurrent"))]) (company-tern . [(0 2 0) ((company (0 8 0)) (tern (0 0 1)) (dash (2 8 0)) (dash-functional (2 8 0)) (s (1 9 0)) (cl-lib (0 5 0))) "Tern backend for company-mode" single ((:url . "https://github.com/proofit404/company-tern"))]) (company-ghc . [(0 1 7) ((cl-lib (0 5)) (company (0 8 0)) (ghc (4 1 1)) (emacs (24))) "company-mode ghc-mod backend" single ((:url . "https://github.com/iquiw/company-ghc") (:keywords "haskell" "completion"))]) (company . [(0 8 6) ((emacs (24 1)) (cl-lib (0 5))) "Modular text completion framework" tar ((:url . "http://company-mode.github.io/") (:keywords "abbrev" "convenience" "matching"))]) (commander . [(0 7 0) ((s (1 6 0)) (dash (2 0 0)) (cl-lib (0 3)) (f (0 6 1))) "Emacs command line parser" single ((:url . "http://github.com/rejeep/commander.el") (:keywords "cli" "argv"))]) (colorsarenice-theme . [(1 0 12) ((emacs (24))) "A color theme." tar nil]) (color-theme-sanityinc-tomorrow . [(1 14) nil "A version of Chris Kempson's various Tomorrow themes" tar nil]) (color-theme-sanityinc-solarized . [(2 27) nil "A version of Ethan Schoonover's Solarized themes" tar nil]) (coffee-mode . [(0 5 5) ((emacs (24 1)) (cl-lib (0 5))) "Major mode to edit CoffeeScript files in Emacs" single ((:url . "http://github.com/defunkt/coffee-mode") (:keywords "coffeescript" "major" "mode"))]) (codic . [(0 2) ((cl-lib (0 5))) "Search Codic (codic.jp) naming dictionaries" tar ((:url . "https://github.com/syohex/emacs-codic"))]) (cmake-mode . [(3 0 2) nil "major-mode for editing CMake sources" single nil]) (cmake-ide . [(0 2) nil "No description available." single nil]) (cm-mode . [(1 1) nil "Minor mode for CriticMarkup" single ((:keywords "text" "markdown"))]) (clojure-test-mode . [(3 0 0) ((clojure-mode (1 7)) (cider (0 4 0))) "Minor mode for Clojure tests" single ((:url . "http://emacswiki.org/cgi-bin/wiki/ClojureTestMode") (:keywords "languages" "lisp" "test"))]) (clojure-snippets . [(1 0 0) ((yasnippet (0 8 0))) "Yasnippets for clojure" tar nil]) (clojure-mode-extra-font-locking . [(3 0 0) ((clojure-mode (3 0))) "Extra font-locking for Clojure mode" single ((:url . "http://github.com/clojure-emacs/clojure-mode") (:keywords "languages" "lisp"))]) (clojure-mode . [(3 0 0) ((emacs (24 1))) "Major mode for Clojure code" single ((:url . "http://github.com/clojure-emacs/clojure-mode") (:keywords "languages" "clojure" "clojurescript" "lisp"))]) (clojure-cheatsheet . [(0 2 2) ((helm (1 5 3)) (cider (0 1 8))) "The Clojure Cheatsheet for Emacs" single ((:url . "https://github.com/krisajenkins/clojure-cheatsheet") (:keywords "clojure" "nrepl" "cheatsheet" "helm"))]) (clj-refactor . [(0 12 0) ((s (1 8 0)) (dash (2 4 0)) (yasnippet (0 6 1)) (paredit (22)) (multiple-cursors (1 2 2))) "A collection of clojure refactoring functions" single ((:keywords "convenience"))]) (clips-mode . [(0 7) nil "Major mode for editing CLIPS code and REPL" tar nil]) (cl-lib-highlight . [(1 0 0) ((cl-lib (0 3))) "full cl-lib font-lock highlighting" single ((:url . "https://github.com/skeeto/cl-lib-highlight"))]) (cider . [(0 7 0) ((clojure-mode (2 0 0)) (cl-lib (0 3)) (dash (2 4 1)) (pkg-info (0 4)) (emacs (24))) "Clojure Integrated Development Environment and REPL" tar ((:url . "http://www.github.com/clojure-emacs/cider") (:keywords "languages" "clojure" "cider"))]) (charmap . [(0 0 1) nil "Unicode table for Emacs" single ((:url . "https://github.com/lateau/charmap") (:keywords "unicode" "character" "ucs"))]) (cfengine-code-style . [(3 6 2) nil "C code style for CFEngine project." single ((:url . "https://github.com/cfengine/core"))]) (cerbere . [(0 1 0) ((s (1 9 0)) (f (0 16 0)) (go-mode (20140409)) (pkg-info (0 5))) "Unit testing in Emacs for several programming languages" tar ((:url . "https://github.com/nlamirault/cerbere") (:keywords "python" "go" "php" "tests" "tdd"))]) (cdlatex . [(4 7) nil "Fast input methods for LaTeX environments and math" single ((:keywords "tex"))]) (cask . [(0 7 2) ((s (1 8 0)) (dash (2 2 0)) (f (0 16 0)) (epl (0 5)) (shut-up (0 1 0)) (cl-lib (0 3)) (package-build (0 1))) "Cask: Project management for Emacs package development" tar ((:url . "http://github.com/cask/cask") (:keywords "speed" "convenience"))]) (calfw . [(1 3) nil "Calendar view framework on Emacs" tar ((:keywords "calendar"))]) (cake2 . [(2 1 0) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (ht (2 0)) (json (1 2)) (cake-inflector (1 1 0)) (historyf (0 0 8)) (anything (1 3 9))) "CakePHP2 Minor Mode" tar ((:url . "http://code.101000lab.org"))]) (cake-inflector . [(1 1 1) ((s (1 9 0))) "Lazy porting CakePHP infrector.php to el" single ((:url . "https://github.com/k1LoW/emacs-cake-inflector"))]) (cake . [(1 4 3) ((cake-inflector (1 1 0)) (historyf (0 0 8)) (anything (1 3 9))) "CakePHP Minor Mode" tar ((:url . "https://github.com/k1LoW/emacs-cake"))]) (cacoo . [(2 1 2) ((concurrent (0 3 1))) "Minor mode for Cacoo : http://cacoo.com" tar nil]) (button-lock . [(1 0 0) nil "Clickable text defined by regular expression" single ((:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "extensions"))]) (butler . [(0 2 3) ((deferred (3 1)) (json (1 2)) (emacs (24))) "Emacs client for Jenkins" tar nil]) (bundler . [(1 1 0) ((inf-ruby (2 1))) "Interact with Bundler from Emacs" single ((:url . "http://github.com/tobiassvn/") (:keywords "bundler" "ruby"))]) (bug-reference-github . [(0 2 0) nil "Automatically set `bug-reference-url-format' in Github repositories." single ((:url . "https://github.com/arnested/bug-reference-github") (:keywords "programming" "tools"))]) (bufshow . [(0 1 0) nil "No description available." single nil]) (buffer-utils . [(0 1 0) nil "Buffer-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/buffer-utils") (:keywords "extensions"))]) (buffer-move . [(0 6 1) nil "" single ((:url . "https://github.com/lukhas/buffer-move") (:keywords "lisp" "convenience"))]) (browse-url-dwim . [(0 6 8) ((string-utils (0 3 2))) "Context-sensitive external browse URL or Internet search" single ((:url . "http://github.com/rolandwalker/browse-url-dwim") (:keywords "hypermedia"))]) (browse-kill-ring . [(1 6 0) nil "interactively insert items from kill-ring" single ((:url . "https://github.com/browse-kill-ring/browse-kill-ring") (:keywords "convenience"))]) (bog . [(0 6 0) ((org (8 0 0)) (dash (2 5 0))) "Extensions for research notes in Org mode" single ((:url . "https://github.com/kyleam/bog") (:keywords "bibtex" "org-mode"))]) (birds-of-paradise-plus-theme . [(0 1 1) nil "A brown/orange light-on-dark theme for Emacs 24 (deftheme)." single ((:url . "https://github.com/jimeh/birds-of-paradise-plus-theme.el") (:keywords "themes"))]) (bind-key . [(20140601) nil "A simple way to manage personal keybindings" single ((:url . "https://github.com/jwiegley/use-package") (:keywords "keys" "keybinding" "config" "dotemacs"))]) (beeminder . [(1 0 0) nil "Emacs interface for Beeminder" single ((:keywords "beeminder"))]) (bbdb2erc . [(0 1 3) ((bbdb (3 0))) "make bbdb show if pal is online with ERC, click i to chat" single ((:keywords "irc" "contacts" "chat" "client" "internet"))]) (bbdb-vcard . [(0 3) nil "vCard import/export for BBDB" tar ((:url . "http://github.com/trebb/bbdb-vcard") (:keywords "data" "calendar" "mail" "news"))]) (bbcode-mode . [(2 0 0) nil "Major mode for writing BBCode markup" single ((:url . "https://github.com/ejmr/bbcode-mode"))]) (back-button . [(0 6 6) ((nav-flash (1 0 0)) (smartrep (0 0 3)) (ucs-utils (0 7 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Visual navigation through mark rings" single ((:url . "http://github.com/rolandwalker/back-button") (:keywords "convenience" "navigation" "interface"))]) (babel . [(1 4) nil "interface to web translation services such as Babelfish" single ((:keywords "translation" "web"))]) (autopair . [(0 6 1) ((cl-lib (0 3))) "Automagically pair braces and quotes like TextMate" single ((:url . "http://autopair.googlecode.com") (:keywords "convenience" "emulations"))]) (auto-shell-command . [(1 0 0) ((deferred (20130312)) (popwin (20130329))) "Run the shell command asynchronously that you specified when you save the file." single ((:keywords "shell" "save" "async" "deferred" "auto"))]) (auto-indent-mode . [(0 126) nil "Auto indent Minor mode" tar ((:url . "https://github.com/mlf176f2/auto-indent-mode.el/") (:keywords "auto" "indentation"))]) (auto-dictionary . [(1 1) nil "automatic dictionary switcher for flyspell" single ((:url . "http://nschum.de/src/emacs/auto-dictionary/") (:keywords "wp"))]) (auto-complete-exuberant-ctags . [(0 0 7) ((auto-complete (1 4 0))) "Exuberant ctags auto-complete.el source" single ((:url . "http://code.101000lab.org") (:keywords "anto-complete" "exuberant ctags"))]) (auto-complete-clang-async . [(0 5) nil "Auto Completion source for clang for GNU Emacs" single ((:keywords "completion" "convenience"))]) (auto-complete . [(1 4 0) ((popup (0 5 0))) "Auto Completion for GNU Emacs" tar nil]) (auto-compile . [(1 2 1) ((cl-lib (0 2)) (packed (0 3 4))) "automatically compile Emacs Lisp libraries" single ((:url . "http://tarsius.github.com/auto-compile") (:keywords "compile" "convenience" "lisp"))]) (aurel . [(0 6) nil "Search, get info, vote and download AUR packages" single ((:url . "https://github.com/alezost/aurel") (:keywords "tools"))]) (async . [(1 2) nil "Asynchronous processing in Emacs" tar nil]) (apples-mode . [(0 0 2) nil "Major mode for editing and executing AppleScript code" tar ((:keywords "applescript" "languages"))]) (anzu . [(0 41) ((cl-lib (0 5)) (emacs (24))) "Show number of matches in mode-line while searching" single ((:url . "https://github.com/syohex/emacs-anzu"))]) (anything-replace-string . [(0 9 2) ((anything (1 3 9))) "`replace-string' and `query-replace' `anything.el' interface" single ((:url . "http://code.101000lab.org"))]) (anything-exuberant-ctags . [(0 1 2) ((anything (1 3 9))) "Exuberant ctags anything.el interface" single ((:url . "http://code.101000lab.org") (:keywords "anything" "exuberant ctags"))]) (anything . [(1 3 9) nil "open anything / QuickSilver-like candidate-selection framework" tar ((:url . "http://repo.or.cz/w/anything-config.git") (:keywords "files" "frames" "help" "matching" "outlines" "processes" "tools" "convenience" "anything"))]) (anyins . [(0 1 1) nil "Insert content at multiple places from shell command or kill-ring" single ((:url . "http://github.com/antham/anyins") (:keywords "insert" "rectangular"))]) (anti-zenburn-theme . [(2 1) nil "Low-contrast Zenburn-inverted theme" single ((:url . "https://github.com/m00natic/anti-zenburn-theme"))]) (ansible-doc . [(0 1) ((emacs (24 1))) "Ansible documentation Minor Mode" single ((:url . "https://github.com/lunaryorn/ansible-doc.el") (:keywords "tools" "help"))]) (ansible . [(0 0 2) ((s (1 9 0)) (f (0 16 2))) "Ansible minor mode" tar ((:url . "http://101000lab.org"))]) (ansi . [(0 4 0) ((s (1 6 1)) (dash (1 5 0)) (noflet (0 0 11))) "Turn string into ansi strings" single ((:url . "http://github.com/rejeep/ansi") (:keywords "color" "ansi"))]) (angular-snippets . [(0 2 3) ((s (1 4 0)) (dash (1 2 0))) "Yasnippets for AngularJS" tar nil]) (anaphora . [(1 0 0) nil "anaphoric macros providing implicit temp variables" single ((:url . "http://github.com/rolandwalker/anaphora") (:keywords "extensions"))]) (anaconda-mode . [(0 1 0) nil "No description available." tar nil]) (alect-themes . [(0 6) nil "Configurable color themes (light, dark and black) for Emacs 24" tar nil]) (ag . [(0 44) nil "A front-end for ag ('the silver searcher'), the C ack replacement." single nil]) (aes . [(0 6) nil "Implementation of AES" single ((:url . "https://github.com/gaddhi/aes") (:keywords "data" "tools"))]) (adoc-mode . [(0 6 2) ((markup-faces (1 0 0))) "a major-mode for editing AsciiDoc files in Emacs" single ((:url . "https://github.com/sensorflo/adoc-mode/wiki") (:keywords "wp" "asciidoc"))]) (actionscript-mode . [(7 2 2) nil "A simple mode for editing Actionscript 3 files" single ((:keywords "language" "modes"))]) (ack-and-a-half . [(1 2 0) nil "Yet another front-end for ack" single ((:url . "http://technosorcery.net"))]) (ace-window . [(0 4 0) ((ace-jump-mode (2 0))) "Quickly switch windows using `ace-jump-mode'." single ((:url . "https://github.com/abo-abo/ace-window") (:keywords "cursor" "window" "location"))]) (ace-jump-mode . [(2 0) nil "a quick cursor location minor mode for emacs" single ((:url . "https://github.com/winterTTr/ace-jump-mode/") (:keywords "motion" "location" "cursor"))]) (ac-slime . [(0 7) ((auto-complete (1 4)) (slime (2 9)) (cl-lib (0 5))) "An auto-complete source using slime completions" single ((:url . "https://github.com/purcell/ac-slime"))]) (ac-octave . [(0 4) ((auto-complete (1 4 0))) "An auto-complete source for Octave" single ((:url . "https://github.com/coldnew/ac-octave") (:keywords "octave" "auto-complete" "completion"))]) (ac-ispell . [(0 6) ((auto-complete (1 4))) "ispell completion source for auto-complete" single ((:url . "https://github.com/syohex/emacs-ac-ispell"))]) (ac-inf-ruby . [(0 4) ((inf-ruby (2 3 2)) (auto-complete (1 4))) "Enable auto-complete in inf-ruby sessions" single ((:keywords "languages" "tools"))]) (ac-helm . [(2 1) ((helm (20130328)) (auto-complete (1 4 0)) (popup (0 5 0))) "Auto Complete with Helm" single ((:keywords "completion" "convenience" "helm"))]) (ac-haskell-process . [(0 4) ((auto-complete (1 4)) (haskell-mode (13))) "Haskell auto-complete source which uses the current haskell process" single ((:keywords "languages"))]) (ac-geiser . [(0 1) ((geiser (0 5)) (auto-complete (1 4))) "Auto-complete backend for geiser" tar nil]) (ac-etags . [(0 6) ((auto-complete (1 4))) "etags/ctags completion source for auto-complete" single ((:url . "https://github.com/syohex/emacs-ac-etags"))]) (ac-dcd . [(0 4) ((auto-complete (1 3 1)) (flycheck-dmd-dub (0 7))) "Auto Completion source for dcd for GNU Emacs" single ((:url . "http://github.com/atilaneves/ac-dcd") (:keywords "languages"))]) (ac-cider . [(0 2 0) ((cider (0 6 0)) (auto-complete (1 4))) "Clojure auto-complete sources using CIDER" single ((:url . "https://github.com/clojure-emacs/ac-cider") (:keywords "languages" "clojure" "nrepl" "cider" "compliment"))]) (ac-cake2 . [(1 0 1) ((cake2 (1 1 2)) (auto-complete (1 4 0))) "CakePHP 2 Minor Mode auto-complete.el source" single ((:url . "http://code.101000lab.org"))]) (ac-cake . [(1 0 0) ((cake (1 4 2)) (auto-complete (1 4))) "CakePHP Minor Mode auto-complete.el source" single ((:url . "http://code.101000lab.org"))]) (abc-mode . [(20140225 944) nil "Major mode for editing abc music files" single ((:keywords "local" "docs"))])) +(1 (zygospore . [(0 0 3) nil "reversible C-x 1 (delete-other-windows)" single ((:url . "https://github.com/louiskottmann/zygospore.el"))]) (zenburn-theme . [(2 0) nil "A low contrast color theme for Emacs." single ((:url . "http://github.com/bbatsov/zenburn-emacs"))]) (yasnippet . [(0 9 0 1) nil "Yet another snippet extension for Emacs." tar ((:url . "http://github.com/capitaomorte/yasnippet") (:keywords "convenience" "emulation"))]) (yascroll . [(0 1) nil "Yet Another Scroll Bar Mode" single ((:keywords "convenience"))]) (yagist . [(0 8 10) ((json (1 2 0))) "Yet Another Emacs integration for gist.github.com" single ((:url . "https://github.com/mhayashi1120/yagist.el/raw/master/yagist.el") (:keywords "gist" "git" "github" "paste" "pastie" "pastebin"))]) (yafolding . [(0 1 4) nil "Yet another folding extension for Emacs" single ((:keywords "folding"))]) (xterm-color . [(1 0) nil "ANSI & XTERM 256 color support" single nil]) (xcscope . [(1 1) nil "cscope interface for (X)Emacs" single ((:url . "https://github.com/dkogan/xcscope.el") (:keywords "languages" "c"))]) (ws-butler . [(0 3) nil "Unobtrusively remove trailing whitespace." single ((:url . "https://github.com/lewang/ws-butler"))]) (writeroom-mode . [(2 5) nil "Minor mode for distraction-free writing" tar ((:keywords "text"))]) (writegood-mode . [(2 0) nil "Polish up poor writing on the fly" single ((:url . "http://github.com/bnbeckwith/writegood-mode") (:keywords "writing" "weasel-words" "grammar"))]) (wrap-region . [(0 7 3) ((dash (1 0 3))) "Wrap text with punctation or tag" single ((:url . "http://github.com/rejeep/wrap-region") (:keywords "speed" "convenience"))]) (wonderland . [(0 1 1) ((dash (2 0 0)) (dash-functional (1 0 0)) (multi (2 0 0)) (emacs (24))) "declarative configuration for Emacsen" single ((:url . "http://github.com/kurisuwhyte/emacs-wonderland") (:keywords "configuration" "profile" "wonderland"))]) (wispjs-mode . [(0 2 0) ((clojure-mode (0))) "Major mode for Wisp code." single ((:url . "https://github.com/krisajenkins/wispjs-mode"))]) (wisp-mode . [(0 6 4) nil "Tools for wisp: the Whitespace-to-Lisp preprocessor" single ((:keywords "languages" "lisp"))]) (windsize . [(0 1) nil "Simple, intuitive window resizing" single ((:url . "http://github.com/grammati/windsize") (:keywords "window" "resizing" "convenience"))]) (window-numbering . [(1 1 2) nil "No description available." single nil]) (window-layout . [(1 2) nil "window layout manager" single ((:keywords "window" "layout"))]) (window-end-visible . [(0 1 0) nil "Find the last visible point in a window" single ((:url . "http://github.com/rolandwalker/window-end-visible") (:keywords "extensions"))]) (wiki-nav . [(1 0 0) ((button-lock (1 0 0)) (nav-flash (1 0 0))) "Simple file navigation using [[WikiStrings]]" single ((:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "navigation"))]) (whitespace-cleanup-mode . [(0 9) nil "Intelligently call whitespace-cleanup on save" single ((:url . "https://github.com/purcell/whitespace-cleanup-mode") (:keywords "convenience"))]) (weechat . [(0 2) ((s (1 3 1)) (cl-lib (0 2)) (emacs (24)) (tracking (1 2))) "Chat via WeeChat's relay protocol in Emacs" tar nil]) (web-mode . [(10) nil "major mode for editing html templates" single ((:url . "http://web-mode.org") (:keywords "html" "template" "javascript" "css" "web" "php" "django" "erb" "jsp"))]) (wcheck-mode . [(2014 6 21) nil "General interface for text checkers" tar nil]) (wc-goal-mode . [(2 1) nil "Running word count with goals (minor mode)" single ((:url . "https://github.com/bnbeckwith/wc-goal-mode"))]) (wacspace . [(0 4 2) ((dash (1 2 0)) (cl-lib (0 2))) "The WACky WorkSPACE manager for emACS" tar nil]) (vlf . [(1 6) nil "View Large Files" tar ((:url . "https://github.com/m00natic/vlfi") (:keywords "large files" "utilities"))]) (vimgolf . [(0 10 0) nil "VimGolf interface for the One True Editor" single ((:keywords "games" "vimgolf" "vim"))]) (vim-region . [(0 3 0) ((expand-region (20140127))) "Select region as vim" single ((:url . "https://github.com/ongaeshi/emacs-vim-region"))]) (vector-utils . [(0 1 2) nil "Vector-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/vector-utils") (:keywords "extensions"))]) (vcomp . [(0 3 1) nil "compare version strings" single ((:url . "https://github.com/tarsius/vcomp") (:keywords "versions"))]) (uzumaki . [(0 1) ((cl-lib (0 5))) "A simple buffer cycler" single ((:url . "http://github.com/geyslan/uzumaki") (:keywords "buffer" "convenience"))]) (utop . [(1 15) ((emacs (24))) "Universal toplevel for OCaml" single ((:url . "https://github.com/diml/utop") (:keywords "ocaml" "languages"))]) (use-package . [(20140601) ((bind-key (1 0)) (diminish (0 44))) "A use-package declaration for simplifying your .emacs" single ((:url . "https://github.com/jwiegley/use-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (unicode-whitespace . [(0 2 4) ((ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "teach whitespace-mode about fancy characters" single ((:url . "http://github.com/rolandwalker/unicode-whitespace") (:keywords "faces" "wp" "interface"))]) (unicode-progress-reporter . [(0 5 4) ((emacs (24 1 0)) (ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Progress-reporter with fancy characters" single ((:url . "http://github.com/rolandwalker/unicode-progress-reporter") (:keywords "interface"))]) (unicode-fonts . [(0 4 2) ((font-utils (0 7 2)) (ucs-utils (0 8 0)) (list-utils (0 4 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Configure Unicode fonts" single ((:url . "http://github.com/rolandwalker/unicode-fonts") (:keywords "i18n" "faces" "frames" "wp" "interface"))]) (unicode-enbox . [(0 1 4) ((string-utils (0 3 2)) (ucs-utils (0 7 6)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Surround a string with box-drawing characters" single ((:url . "http://github.com/rolandwalker/unicode-enbox") (:keywords "extensions" "interface"))]) (unfill . [(0 1) nil "The inverse of fill-paragraph and fill-region" single ((:keywords "utilities"))]) (underwater-theme . [(1 1 0) nil "A gentle, deep blue color theme" single ((:keywords "faces"))]) (undercover . [(0 2 0) ((emacs (24)) (dash (2 0 0)) (shut-up (0 3 2))) "Test coverage library for Emacs" single ((:url . "https://github.com/sviridov/undercover.el") (:keywords "lisp" "tests" "coverage" "tools"))]) (ucs-utils . [(0 8 0) ((persistent-soft (0 8 8)) (pcache (0 2 3)) (list-utils (0 4 2))) "Utilities for Unicode characters" tar ((:url . "http://github.com/rolandwalker/ucs-utils") (:keywords "i18n" "extensions"))]) (typo . [(1 1) nil "Minor mode for typographic editing" single ((:url . "https://github.com/jorgenschaefer/typoel") (:keywords "convenience" "wp"))]) (twittering-mode . [(2 0 0) nil "Major mode for Twitter" single ((:url . "http://twmode.sf.net/") (:keywords "twitter" "web"))]) (twilight-anti-bright-theme . [(0 3 0) nil "A soothing Emacs 24 light-on-dark theme" single ((:url . "https://github.com/jimeh/twilight-anti-bright-theme.el") (:keywords "themes"))]) (tup-mode . [(1 3 1) nil "Major mode for editing files for Tup" single ((:url . "https://github.com/ejmr/tup-mode"))]) (tumble . [(1 5) nil "an Tumblr mode for Emacs" single ((:keywords "tumblr"))]) (tuareg . [(2 0 8) ((caml (3 12 0 1))) "OCaml mode for Emacs." tar ((:url . "http://forge.ocamlcore.org/projects/tuareg/") (:keywords "ocaml" "languages"))]) (ttrss . [(1 7 5) ((emacs (23 1))) "Tiny Tiny RSS elisp bindings" single ((:url . "https://github.com/pedros/ttrss.el") (:keywords "news" "local"))]) (truthy . [(0 2 8) ((list-utils (0 4 2))) "Test the content of a value" single ((:url . "http://github.com/rolandwalker/truthy") (:keywords "extensions"))]) (traad . [(0 4) nil "emacs interface to the traad refactoring server." single ((:url . "https://github.com/abingham/traad"))]) (thrift . [(0 9 1) nil "No description available." single nil]) (theme-changer . [(2 1 0) nil "Sunrise/Sunset Theme Changer for Emacs" single ((:url . "https://github.com/hadronzoo/theme-changer") (:keywords "color-theme" "deftheme" "solar" "sunrise" "sunset"))]) (textmate-to-yas . [(0 21) nil "Import Textmate macros into yasnippet syntax" tar ((:url . "https://github.com/mlf176f2/textmate-to-yas.el/") (:keywords "yasnippet" "textmate"))]) (textmate . [(1) nil "No description available." single nil]) (test-case-mode . [(0 1 9) nil "unit test front-end" single ((:url . "http://nschum.de/src/emacs/test-case-mode/") (:keywords "tools"))]) (terraform-mode . [(0 1) ((cl-lib (0 5))) "Major mode for terraform configuration file" single ((:url . "https://github.com/syohex/emacs-terraform-mode"))]) (tern-auto-complete . [(0 6 2) ((tern (0 0 1)) (auto-complete (1 4)) (cl-lib (0 5)) (emacs (24))) "Tern Completion by auto-complete.el" single nil]) (tern . [(0 6 2) ((json (1 2)) (cl-lib (0 5)) (emacs (24))) "Tern-powered JavaScript integration" single ((:url . "http://ternjs.net/"))]) (tempbuf . [(1 4) nil "kill unused buffers in the background" single ((:keywords "convenience"))]) (tagedit . [(1 4 0) ((s (1 3 1)) (dash (1 0 3))) "Some paredit-like features for html-mode" single ((:keywords "convenience"))]) (tabbar-ruler . [(0 40) ((tabbar (2 0 1))) "Pretty tabbar, autohide, use both tabbar/ruler" tar ((:url . "http://github.com/mlf176f2/tabbar-ruler.el") (:keywords "tabbar" "ruler mode" "menu" "tool bar."))]) (system-specific-settings . [(0 2) nil "Apply settings only on certain systems" single ((:url . "https://github.com/DarwinAwardWinner/emacs-system-specific-settings") (:keywords "configuration"))]) (syntactic-sugar . [(0 9 4) nil "Effect-free forms such as if/then/else" single ((:url . "http://github.com/rolandwalker/syntactic-sugar") (:keywords "extensions"))]) (swift-mode . [(0 2 0) ((emacs (24 1))) "Major-mode for Apple's Swift programming language." single nil]) (svg-mode-line-themes . [(0 1 1) ((xmlgen (0 4))) "SVG-based themes for mode-line" tar ((:url . "https://github.com/sabof/svg-mode-line-themes"))]) (suomalainen-kalenteri . [(2014 6 15) nil "Finnish national and Christian holidays for calendar" tar nil]) (sudden-death . [(0 2) nil "Totsuzen-no-Shi" single ((:url . "https://github.com/yewton/sudden-death.el"))]) (subshell-proc . [(0 1) nil "Functions for working with comints" single ((:url . "https://github.com/andrewmains12/subshell-proc"))]) (stumpwm-mode . [(0 9 8) nil "special lisp mode for evaluating code into running stumpwm" single ((:keywords "comm" "lisp" "tools"))]) (stripe-buffer . [(0 2 3) ((cl-lib (1 0))) "Use a different background for even and odd lines" single ((:url . "https://github.com/sabof/stripe-buffer"))]) (string-utils . [(0 3 2) ((list-utils (0 4 2))) "String-manipulation utilities" single ((:url . "http://github.com/rolandwalker/string-utils") (:keywords "extensions"))]) (string-edit . [(0 1 0) ((dash (1 2 0))) "Avoid escape nightmares by editing string in separate buffer" single nil]) (stgit . [(0 17 1) nil "No description available." single nil]) (stekene-theme . [(1 0 12) ((emacs (24))) "The stekene dark and light color themes." tar nil]) (starter-kit-ruby . [(2 0 3) ((inf-ruby (2 2 1)) (starter-kit (2 0 1))) "Saner defaults and goodies for Ruby" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-perl . [(2 0 3) nil "Some helpful Perl code" single nil]) (starter-kit-lisp . [(2 0 3) ((starter-kit (2 0 2)) (elisp-slime-nav (0 1))) "Saner defaults and goodies for lisp languages" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-js . [(2 0 3) ((starter-kit (2 0 1))) "Saner defaults and goodies for Javascript" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-eshell . [(2 0 3) nil "Saner defaults and goodies: eshell tweaks" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit-bindings . [(2 0 3) ((starter-kit (2 0 2))) "Saner defaults and goodies: bindings" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/StarterKit") (:keywords "convenience"))]) (starter-kit . [(2 0 3) ((paredit (22)) (idle-highlight-mode (1 1 1)) (find-file-in-project (3 0)) (smex (1 1 1)) (ido-ubiquitous (0 3)) (magit (0 8 1))) "Saner defaults and goodies." tar nil]) (stan-snippets . [(2 4 1) ((yasnippet (0 8 0)) (stan-mode (2 4 1))) "Yasnippets for Stan" tar ((:url . "http://github.com/stan-dev/stan-mode") (:keywords "languages"))]) (stan-mode . [(2 4 1) nil "Major mode for editing Stan files" tar ((:url . "http://github.com/stan-dev/stan-mode") (:keywords "languanges"))]) (sprintly-mode . [(0 0 4) ((furl (0 0 2))) "Major mode for dealing with sprint.ly" single ((:url . "https://github.com/sprintly/sprintly-mode"))]) (sparql-mode . [(0 9 3) nil "Edit and interactively evaluate SPARQL queries." tar ((:url . "https://github.com/ljos/sparql-mode"))]) (sourcetalk . [(1 2 0) ((request (0 2 0))) "SourceTalk (http://sourcetalk.net) plugin for Emacs" single ((:url . "https://github.com/malroc/sourcetalk_emacs") (:keywords "sourcetalk" "code" "discussion"))]) (sourcemap . [(0 2) ((cl-lib (0 5)) (emacs (24))) "Sourcemap parser" single ((:url . "https://github.com/syohex/emacs-sourcemap"))]) (solarized-theme . [(1 2 0) ((dash (2 6 0))) "The Solarized color theme, ported to Emacs." tar nil]) (smex . [(3 0) nil "M-x interface with Ido-style fuzzy matching." single ((:url . "http://github.com/nonsequitur/smex/") (:keywords "convenience" "usability"))]) (smeargle . [(0 1) ((cl-lib (0 5)) (emacs (24))) "Highlighting region by last updated time" single ((:url . "https://github.com/syohex/emacs-smeargle"))]) (smartscan . [(0 2) nil "Jumps between other symbols found at point" single ((:keywords "extensions"))]) (smartrep . [(0 0 3) nil "Support sequential operation which omitted prefix keys." single ((:url . "https://github.com/myuhe/smartrep.el") (:keywords "convenience"))]) (smart-tabs-mode . [(1 0) nil "Intelligently indent with tabs, align with spaces!" single ((:url . "http://www.emacswiki.org/emacs/SmartTabs") (:keywords "languages"))]) (smart-mode-line-powerline-theme . [(2 6) ((emacs (24 3)) (powerline (2 3)) (smart-mode-line (2 5))) "smart-mode-line theme that mimics the powerline appearance." single ((:url . "http://github.com/Bruce-Connor/smart-mode-line"))]) (smart-mode-line . [(2 6) ((emacs (24 3)) (dash (2 2 0)) (rich-minority (0 1))) "A color coded smart mode-line." tar ((:url . "http://github.com/Bruce-Connor/smart-mode-line") (:keywords "mode-line" "faces" "theme" "themes"))]) (sly . [(2 9) nil "No description available." tar nil]) (slime-volleyball . [(1 1) nil "An SVG Slime Volleyball Game" tar ((:keywords "games"))]) (slime-ritz . [(0 6 0) nil "slime extensions for ritz" single ((:url . "https://github.com/pallet/ritz") (:keywords "languages" "lisp" "slime"))]) (slime-company . [(0 8) ((slime (2 3 2)) (company (0 7))) "slime completion backend for company mode" single ((:keywords "convenience" "lisp" "abbrev"))]) (slime . [(2 10 1) ((cl-lib (0 5))) "Superior Lisp Interaction Mode for Emacs" tar ((:url . "https://github.com/slime/slime") (:keywords "languages" "lisp" "slime"))]) (slim-mode . [(1 1) nil "Major mode for editing Slim files" single ((:url . "http://github.com/minad/emacs-slim") (:keywords "markup" "language"))]) (slideview . [(0 6 1) nil "File slideshow" single ((:url . "https://github.com/mhayashi1120/Emacs-slideview/raw/master/slideview.el") (:keywords "files"))]) (slamhound . [(1 5 4) nil "Rip Clojure namespaces apart and rebuild them." single ((:url . "https://github.com/technomancy/slamhound") (:keywords "tools" "lisp"))]) (skewer-mode . [(1 6 1) ((simple-httpd (1 4 0)) (js2-mode (20090723)) (emacs (24))) "live browser JavaScript, CSS, and HTML interaction" tar nil]) (skewer-less . [(0 2) ((skewer-mode (1 5 3))) "Skewer support for live LESS stylesheet updates" single ((:keywords "languages" "tools"))]) (skeletor . [(1 4) ((s (1 7 0)) (f (0 14 0)) (dash (2 2 0)) (cl-lib (0 3)) (emacs (24 1))) "Provides project skeletons for Emacs" tar nil]) (simplezen . [(0 1 1) nil "A simple subset of zencoding-mode for Emacs." single nil]) (simpleclip . [(1 0 0) nil "Simplified access to the system clipboard" single ((:url . "http://github.com/rolandwalker/simpleclip") (:keywords "convenience"))]) (simple-httpd . [(1 4 5) ((cl-lib (0 3))) "pure elisp HTTP server" single ((:url . "https://github.com/skeeto/emacs-http-server"))]) (shut-up . [(0 3 2) ((cl-lib (0 3)) (emacs (24))) "Shut up would you!" single ((:url . "http://github.com/rejeep/shut-up.el"))]) (shm . [(1 0 1) nil "No description available." tar nil]) (shell-pop . [(0 3) nil "helps you to use shell easily on Emacs. Only one key action to work." single ((:url . "http://github.com/kyagi/shell-pop-el") (:keywords "shell" "terminal" "tools"))]) (shampoo . [(0 0 1) nil "Shampoo, a remote Smalltalk developemnt" tar nil]) (session . [(2 3 1) nil "use variables, registers and buffer places across sessions" single ((:url . "http://emacs-session.sourceforge.net/") (:keywords "session" "session management" "desktop" "data" "tools"))]) (serverspec . [(0 0 4) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (helm (1 6 1))) "Serverspec minor mode" tar ((:url . "http://101000lab.org"))]) (servant . [(0 3 0) ((s (1 8 0)) (dash (2 2 0)) (f (0 11 0)) (ansi (0 3 0)) (commander (0 5 0)) (epl (0 2)) (shut-up (0 2 1)) (web-server (0 0 1))) "ELPA server written in Emacs Lisp" tar ((:url . "http://github.com/rejeep/servant.el") (:keywords "elpa" "server"))]) (sekka . [(1 5 7) ((cl-lib (0 3)) (concurrent (0 3 1)) (popup (0 5 0))) "A client for Sekka IME server" single ((:url . "https://github.com/kiyoka/sekka") (:keywords "ime" "skk" "japanese"))]) (scss-mode . [(0 5 0) nil "Major mode for editing SCSS files" single ((:url . "https://github.com/antonj/scss-mode") (:keywords "scss" "css" "mode"))]) (scala-mode . [(2 11 3) nil "Major mode for editing Scala code." tar ((:keywords "scala" "languages" "oop"))]) (save-sexp . [(0 2 0) nil "save variables in files using setter forms like `setq'" tar ((:url . "https://github.com/tarsius/save-sexp") (:keywords "convenience"))]) (sauron . [(0 10) nil "Track (erc/org/dbus/...) events and react to them." tar nil]) (sass-mode . [(3 0 18) ((haml-mode (3 0 15))) "Major mode for editing Sass files" single ((:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "css"))]) (sackspace . [(0 8 2) nil "A better backspace" single ((:url . "http://github.com/cofi/sackspace.el") (:keywords "delete" "convenience"))]) (s . [(1 9 0) nil "The long lost Emacs string manipulation library." single ((:keywords "strings"))]) (rvm . [(1 3 0) nil "Emacs integration for rvm" single ((:url . "http://www.emacswiki.org/emacs/RvmEl") (:keywords "ruby" "rvm"))]) (rust-mode . [(0 12 0) nil "A major emacs mode for editing Rust source code" single ((:url . "https://github.com/rust-lang/rust") (:keywords "languages"))]) (ruby-tools . [(0 1 2) nil "Collection of handy functions for ruby-mode." tar nil]) (ruby-test-mode . [(1 0) nil "Minor mode for Behaviour and Test Driven" single ((:keywords "ruby" "unit" "test" "rspec"))]) (ruby-hash-syntax . [(0 4) nil "Toggle ruby hash syntax between classic and 1.9 styles" single ((:url . "https://github.com/purcell/ruby-hash-syntax") (:keywords "languages"))]) (ruby-end . [(0 4 0) nil "Automatic insertion of end blocks for Ruby" single ((:url . "http://github.com/rejeep/ruby-end") (:keywords "speed" "convenience" "ruby"))]) (ruby-compilation . [(2 11) ((inf-ruby (2 2 1))) "run a ruby process in a compilation buffer" single ((:url . "https://github.com/eschulte/rinari") (:keywords "test" "convenience"))]) (rtags . [(1 1) nil "No description available." tar nil]) (rspec-mode . [(1 11) ((ruby-mode (1 0)) (cl-lib (0 4))) "Enhance ruby-mode for RSpec" tar ((:url . "http://github.com/pezra/rspec-mode") (:keywords "rspec" "ruby"))]) (rsense . [(0 3) nil "RSense client for Emacs" single ((:keywords "convenience"))]) (roguel-ike . [(0 1 0) ((popup (0 5 0))) "A coffee-break roguelike" tar nil]) (rnc-mode . [(1 0 6) nil "A major mode for editing RELAX NG Compact syntax." single nil]) (rinari . [(2 11) ((ruby-mode (1 0)) (inf-ruby (2 2 5)) (ruby-compilation (0 16)) (jump (2 0))) "Rinari Is Not A Rails IDE" single ((:url . "https://github.com/eschulte/rinari") (:keywords "ruby" "rails" "project" "convenience" "web"))]) (rich-minority . [(0 1 1) ((cl-lib (0 5))) "Clean-up and Beautify the list of minor-modes." single ((:url . "http://github.com/Bruce-Connor/rich-minority") (:keywords "mode-line" "faces"))]) (reveal-in-finder . [(0 3 1) nil "Reveal the file associated with the buffer in the OS X Finder" single ((:url . "https://github.com/kaz-yos/elisp") (:keywords "os x" "finder"))]) (request-deferred . [(0 1 0) nil "Wrap request.el by deferred" single nil]) (request . [(0 1 0) nil "Compatible layer for URL request in Emacs" single nil]) (req-package . [(0 5) ((use-package (1 0)) (dash (2 7 0)) (log4e (0 2 0))) "A use-package wrapper for package runtime dependencies management" single ((:url . "https://github.com/edvorg/req-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (relax . [(0 2) ((json (1 2))) "For browsing and interacting with CouchDB" single ((:url . "http://github.com/technomancy/relax.el") (:keywords "database" "http"))]) (relative-line-numbers . [(0 3) ((emacs (24))) "Display relative line numbers on the margin" single ((:url . "https://github.com/Fanael/relative-line-numbers"))]) (rbenv . [(0 0 3) nil "Emacs integration for rbenv" single ((:url . "https://github.com/senny/rbenv.el") (:keywords "ruby" "rbenv"))]) (rase . [(1 1) nil "Run At Sun Event daemon" single ((:url . "https://github.com/m00natic/rase/") (:keywords "solar" "sunrise" "sunset" "midday" "midnight"))]) (rainbow-identifiers . [(0 2 1) ((emacs (24))) "Highlight identifiers according to their names" single ((:url . "https://github.com/Fanael/rainbow-identifiers"))]) (rainbow-delimiters . [(1 3 12) nil "Highlight nested parens, brackets, braces a different color at each depth." single ((:url . "http://github.com/jlr/rainbow-delimiters/raw/master/rainbow-delimiters.el") (:keywords "faces" "convenience" "lisp" "matching" "tools" "rainbow" "rainbow parentheses" "rainbow parens"))]) (r-autoyas . [(0 28) nil "Provides automatically created yasnippets for R function argument lists." tar ((:url . "https://github.com/mlf176f2/r-autoyas.el") (:keywords "r" "yasnippet"))]) (quickrun . [(2 1 0) nil "Run commands quickly" single ((:url . "https://github.com/syohex/emacs-quickrun"))]) (qml-mode . [(0 1) nil "Major mode for editing QT Declarative (QML) code." single ((:url . "https://github.com/coldnew/qml-mode") (:keywords "qml" "qt" "qt declarative"))]) (qiita . [(0 0 1) nil "No description available." single nil]) (pyvenv . [(1 3) nil "Python virtual environment interface" single ((:url . "http://github.com/jorgenschaefer/pyvenv") (:keywords "python" "virtualenv" "tools"))]) (python-environment . [(0 0 1) ((deferred (0 3 1))) "virtualenv API for Emacs Lisp" tar ((:keywords "applications" "tools"))]) (pushbullet . [(0 5 2) ((grapnel (0 5 2)) (json (1 2))) "Emacs client for the PushBullet Android app" single ((:url . "http://www.github.com/theanalyst/revolver") (:keywords "convenience"))]) (puppet-mode . [(0 3) ((emacs (24 1)) (cl-lib (0 5)) (pkg-info (0 4))) "Major mode for Puppet manifests" single ((:url . "https://github.com/lunaryorn/puppet-mode") (:keywords "languages"))]) (pungi . [(0 9 5) ((jedi (0 2 0 -3 2))) "Integrates jedi with virtualenv and buildout python environments" single ((:keywords "convenience"))]) (projectile . [(0 11 0) ((s (1 6 0)) (dash (1 5 0)) (pkg-info (0 4))) "Manage and navigate projects in Emacs easily" single ((:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (project-root . [(0 7) nil "Define a project root and take actions based upon it." single nil]) (project-explorer . [(0 13 4) ((cl-lib (0 3)) (es-lib (0 3)) (es-windows (0 1)) (emacs (24))) "A project explorer sidebar" single ((:url . "https://github.com/sabof/project-explorer"))]) (prodigy . [(0 6 0) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (emacs (24))) "Manage external services from within Emacs" single ((:url . "http://github.com/rejeep/prodigy.el"))]) (processing-mode . [(1 0) ((yasnippet (0 8 0))) "Major mode for Processing 2.0" single ((:keywords "languages" "snippets"))]) (pretty-mode . [(2 0 2) nil "Redisplay parts of the buffer as pretty symbols." single ((:url . "https://github.com/akatov/pretty-mode") (:keywords "pretty" "unicode" "symbols"))]) (powerline . [(2 2) ((cl-lib (0 2))) "Rewrite of Powerline" tar ((:url . "http://github.com/milkypostman/powerline/") (:keywords "mode-line"))]) (pov-mode . [(3 3) nil "Major mode for editing POV-Ray scene files." tar nil]) (popwin . [(0 6 2) nil "Popup Window Manager." single ((:keywords "convenience"))]) (popup . [(0 5 0) ((cl-lib (0 3))) "Visual Popup User Interface" single ((:keywords "lisp"))]) (plenv . [(0 32) nil "A plenv wrapper for Emacs" single ((:keywords "emacs" "perl"))]) (pkgbuild-mode . [(0 11) nil "Interface to the ArchLinux package manager" single nil]) (pkg-info . [(0 5) ((dash (1 6 0)) (epl (0 4))) "Information about packages" single ((:url . "https://github.com/lunaryorn/pkg-info.el") (:keywords "convenience"))]) (pip-requirements . [(0 4) ((dash (2 8 0))) "A major mode for editing pip requirements files." single nil]) (phpunit . [(0 2 0) nil "Launch PHP unit tests using phpunit" single ((:url . "https://github.com/nlamirault/phpunit.el") (:keywords "php" "tests" "phpunit"))]) (php-mode . [(1 13 5) nil "Major mode for editing PHP code" single ((:url . "https://github.com/ejmr/php-mode"))]) (php-auto-yasnippets . [(2 3 1) ((php-mode (1 11)) (yasnippet (0 8 0))) "Creates snippets for PHP functions" tar ((:url . "https://github.com/ejmr/php-auto-yasnippets"))]) (phi-search-mc . [(2 1) ((phi-search (2 0 0)) (multiple-cursors (1 2 1))) "multiple-cursors extension for phi-search" single ((:url . "https://github.com/knu/phi-search-mc.el") (:keywords "search" "cursors"))]) (ph . [(0 1 0) ((emacs (24 3))) "A global minor mode for managing multiple projects." tar nil]) (perspective . [(1 10) nil "switch between named \"perspectives\" of the editor" single ((:url . "http://github.com/nex3/perspective-el") (:keywords "workspace" "convenience" "frames"))]) (persp-projectile . [(0 11 0) ((perspective (1 9)) (projectile (0 11 0)) (cl-lib (0 3))) "Perspective integration with Projectile" single ((:keywords "project" "convenience"))]) (persistent-soft . [(0 8 8) ((pcache (0 2 3)) (list-utils (0 4 2))) "Persistent storage, returning nil on failure" single ((:url . "http://github.com/rolandwalker/persistent-soft") (:keywords "data" "extensions"))]) (pcache . [(0 2 4) ((eieio (1 3))) "persistent caching for Emacs" single nil]) (pastehub . [(0 5 2) nil "A client for the PasteHub cloud service" single ((:url . "https://github.com/kiyoka/pastehub"))]) (password-store . [(1 6 3) ((dash (1 5 0)) (f (0 11 0)) (s (1 9 0))) "Password store (pass) support" single ((:keywords "pass"))]) (passthword . [(1 3) ((cl-lib (0 5))) "Simple password manager" single nil]) (parent-mode . [(2 1) nil "get major mode's parent modes" single ((:url . "https://github.com/Fanael/parent-mode"))]) (paren-face . [(0 1 0) nil "a face for parentheses in lisp modes" single ((:url . "http://github.com/tarsius/paren-face"))]) (paredit-everywhere . [(0 4) ((paredit (22))) "Enable some paredit features in non-lisp buffers" single ((:keywords "languages" "convenience"))]) (paredit . [(23) nil "minor mode for editing parentheses" single ((:keywords "lisp"))]) (paradox . [(1 2 2) nil "No description available." tar nil]) (pangu-spacing . [(0 4) nil "Minor-mode to add space between Chinese and English characters." single ((:url . "http://github.com/coldnew/pangu-spacing"))]) (pandoc-mode . [(2 6) nil "Minor mode for interacting with Pandoc" tar ((:keywords "text" "pandoc"))]) (pallet . [(0 6) ((cask (0 6))) "A package management tool for Emacs, using Cask." tar nil]) (page-break-lines . [(0 9) nil "Display ugly ^L page breaks as tidy horizontal lines" single ((:url . "https://github.com/purcell/page-break-lines") (:keywords "convenience" "faces"))]) (packed-git . [(0 3 5) ((cl-lib (0 5)) (magit (2 1 0))) "Utilities for Emacs packages living in Git repositories" single ((:url . "http://tarsius.github.com/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (packed . [(0 3 5) ((cl-lib (0 5))) "package manager agnostic Emacs Lisp package utilities" single ((:url . "http://tarsius.github.com/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (package-utils . [(0 2 0) ((epl (0 7 -3))) "Extensions for package.el" single ((:url . "https://github.com/Silex/package-utils") (:keywords "package" "convenience"))]) (pabbrev . [(4 0) nil "Predictive abbreviation expansion" single nil]) (outshine . [(2 0) nil "outline with outshine outshines outline" single ((:url . "https://github.com/tj64/outshine"))]) (outorg . [(2 0) nil "Org-style comment editing" single ((:url . "https://github.com/tj64/outorg"))]) (osx-plist . [(1 0 0) nil "Apple plist file parser" single ((:keywords "convenience"))]) (osx-location . [(0 1) nil "Watch and respond to changes in geographical location on OS X" tar nil]) (osx-browse . [(0 8 8) ((string-utils (0 3 2)) (browse-url-dwim (0 6 6))) "Web browsing helpers for OS X" single ((:url . "http://github.com/rolandwalker/osx-browse") (:keywords "hypermedia" "external"))]) (orglink . [(0 2 1) ((dash (1 3 2)) (org (8 0))) "use Org Mode links in other modes" single ((:url . "http://github.com/tarsius/orglink") (:keywords "hypertext"))]) (orgbox . [(0 5 0) ((org (8 0)) (cl-lib (0 5))) "Mailbox-like task scheduling Org." single ((:url . "https://github.com/yasuhito/orgbox") (:keywords "org"))]) (org-trello . [(0 6 2) ((request-deferred (0 1 0)) (deferred (0 3 2)) (s (1 9 0)) (dash (2 8 0)) (emacs (24))) "Minor mode to synchronize org-mode buffer and trello board" tar nil]) (org-toodledo . [(2 16) nil "Toodledo integration for Emacs Org mode" tar ((:keywords "outlines" "data"))]) (org-readme . [(20130322 926) ((http-post-simple (1 0)) (yaoddmuse (0 1 1)) (header2 (21 0)) (lib-requires (21 0))) "Integrates Readme.org and Commentary/Change-logs." tar ((:url . "https://github.com/mlf176f2/org-readme") (:keywords "header2" "readme.org" "emacswiki" "git"))]) (org-protocol-jekyll . [(0 1) nil "Jekyll's handler for org-protocol" single nil]) (org-pomodoro . [(1 3 3) ((alert (0 5 10))) "Pomodoro implementation for org-mode." tar nil]) (org-page . [(0 41) ((ht (1 5)) (mustache (0 22)) (htmlize (1 47)) (org (8))) "a static site generator based on org mode" tar nil]) (org-outlook . [(0 11) nil "Outlook org" tar ((:url . "https://github.com/mlf176f2/org-outlook.el") (:keywords "org-outlook"))]) (org-magit . [(0 2 2) ((magit (1 2 0)) (org (6 1))) "basic support for magit links" single ((:keywords "git" "magit" "outlines"))]) (org-mac-iCal . [(7 9 3 5) nil "Imports events from iCal.app to the Emacs diary" single ((:keywords "outlines" "calendar"))]) (org-journal . [(1 5 3) nil "a simple org-mode based journaling mode" single ((:url . "http://github.com/bastibe/emacs-journal"))]) (org-elisp-help . [(0 1 0) ((cl-lib (0 2)) (org (8 0))) "org links to emacs-lisp documentation" single ((:url . "http://tarsius.github.com/org-elisp-help") (:keywords "org" "remember" "lisp"))]) (org-bullets . [(0 2 4) nil "Show bullets in org-mode as UTF-8 characters" single ((:url . "https://github.com/sabof/org-bullets"))]) (org-agenda-property . [(1 3 1) ((emacs (24 2))) "Display org properties in the agenda buffer." single ((:url . "http://github.com/Bruce-Connor/org-agenda-property") (:keywords "calendar"))]) (operate-on-number . [(1 1 0) nil "Operate on number at point with arithmetic functions" single ((:url . "https://github.com/knu/operate-on-number.el") (:keywords "editing"))]) (olivetti . [(1 0 0) nil "Minor mode for a nice writing environment" single ((:keywords "wp"))]) (octomacs . [(0 0 1) nil "Octopress interface for Emacs" single ((:url . "http://technosorcery.net"))]) (ocp-indent . [(1 4 2 2) nil "automatic indentation with ocp-indent" single ((:url . "http://www.typerex.org/ocp-indent.html") (:keywords "ocaml" "languages"))]) (object-registry . [(1 2 0) ((cl-lib (0 2))) "track data items by various instance slots" single ((:url . "https://github.com/tarsius/object-registry") (:keywords "data" "oo"))]) (ob-translate . [(0 1 2) ((google-translate (0 4)) (org (8))) "Translation of text blocks in org-mode." single ((:url . "https://github.com/krisajenkins/ob-translate") (:keywords "org" "babel" "translate" "translation"))]) (ob-sml . [(0 2) ((sml-mode (6 4))) "org-babel functions for template evaluation" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (o-blog . [(2 0) nil "" tar ((:keywords "emacs"))]) (nvm . [(0 0 3) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0))) "Manage Node versions within Emacs" single ((:url . "http://github.com/rejeep/nvm.el") (:keywords "node" "nvm"))]) (nsis-mode . [(0 44) nil "NSIS-mode" tar ((:url . "http://github.com/mlf176f2/nsis-mode") (:keywords "nsis"))]) (nrepl-sync . [(0 3 1) ((cider (0 6))) "connect to nrepl port and eval .sync.clj." single ((:url . "https://github.com/phillord/lein-sync"))]) (nrepl-ritz . [(0 6 0) ((nrepl (0 1 5))) "nrepl extensions for ritz" single ((:url . "https://github.com/pallet/ritz") (:keywords "languages" "lisp" "nrepl"))]) (notmuch . [(0 18 1) nil "No description available." tar nil]) (nose . [(0 1 1) nil "Easy Python test running in Emacs" single ((:keywords "nose" "python" "testing"))]) (nodejs-repl . [(0 0 2) nil "Run Node.js REPL" single nil]) (nix-mode . [(1 7) nil "No description available." single nil]) (ninja-mode . [(1 5 1) nil "Major mode for editing .ninja files" single nil]) (neotree . [(0 2 1) nil "A tree plugin like NerdTree for Vim" single ((:url . "https://github.com/jaypei/emacs-neotree"))]) (nemerle . [(1 2) nil "major mode for editing nemerle programs" single ((:keywords "nemerle" "mode" "languages"))]) (ncl-mode . [(0 98) nil "No description available." tar nil]) (navorski . [(0 2 7) ((s (1 9 0)) (dash (1 5 0)) (multi-term (0 8 14))) "Helping you live in the terminal, like Viktor did." single ((:keywords "terminal"))]) (navi-mode . [(2 0) nil "major-mode for easy buffer-navigation" single ((:url . "https://github.com/tj64/navi"))]) (nav-flash . [(1 1 0) nil "Briefly highlight the current line" single ((:url . "http://github.com/rolandwalker/nav-flash") (:keywords "extensions" "navigation" "interface"))]) (mykie . [(0 2 1) nil "Command multiplexer: Register multiple functions to a keybind" tar ((:url . "https://github.com/yuutayamada/mykie-el") (:keywords "emacs" "configuration" "keybind"))]) (multiple-cursors . [(1 3 0) nil "Multiple cursors for Emacs." tar nil]) (multi-web-mode . [(0 2 1) nil "multiple major mode support for web editing" tar ((:keywords "convenience" "languages" "wp"))]) (multi . [(2 0 1) ((emacs (24))) "Clojure-style multi-methods for emacs lisp" single ((:url . "http://github.com/kurisuwhyte/emacs-multi") (:keywords "multimethod" "generic" "predicate" "dispatch"))]) (moz . [(1 1 0) nil "Lets current buffer interact with inferior mozilla." single ((:url . "http://github.com/bard/mozrepl/raw/master/chrome/content/moz.el"))]) (move-dup . [(0 2 1) nil "Eclipse-like moving and duplicating lines or rectangles." single ((:keywords "convenience" "wp"))]) (morlock . [(0 4 0) nil "more font-lock keywords for elisp" single ((:url . "http://github.com/tarsius/morlock") (:keywords "convenience"))]) (mode-line-debug . [(1 2 1) nil "show status of `debug-on-error' in the mode-line" single ((:url . "https://github.com/tarsius/mode-line-debug") (:keywords "convenience" "lisp"))]) (mode-icons . [(0 1 0) nil "Show icons for modes" tar ((:url . "http://ryuslash.org/projects/mode-icons.html") (:keywords "multimedia"))]) (mocker . [(0 3 0) ((eieio (1 3)) (el-x (0 2 4))) "mocking framework for emacs" single ((:keywords "lisp" "testing"))]) (mmm-mode . [(0 5 1) nil "Allow Multiple Major Modes in a buffer" tar ((:url . "https://github.com/purcell/mmm-mode") (:keywords "convenience" "faces" "languages" "tools"))]) (mmm-mako . [(1 1) ((mmm-mode (0 4 8))) "MMM submode class for Mako Templates" single ((:url . "https://bitbucket.org/pjenvey/mmm-mako"))]) (minitest . [(0 7 1) ((dash (1 0 0))) "An Emacs mode for ruby minitest files" single ((:url . "https://github.com/arthurnn/minitest-emacs"))]) (minimal-session-saver . [(0 6 2) nil "Very lean session saver" single ((:url . "http://github.com/rolandwalker/minimal-session-saver") (:keywords "tools" "frames" "project"))]) (miniedit . [(2 0) nil "Enhanced editing for minibuffer fields." single nil]) (minibuffer-cua . [(1 0 0) nil "Make CUA mode's S-up/S-down work in minibuffer" single ((:url . "https://github.com/knu/minibuffer-cua.el") (:keywords "completion" "editing"))]) (minibuffer-complete-cycle . [(1 25 20130814) nil "Cycle through the *Completions* buffer" single ((:url . "https://github.com/knu/minibuffer-complete-cycle") (:keywords "completion"))]) (milkode . [(0 4) nil "Command line search and direct jump with Milkode" single ((:keywords "milkode" "search" "grep" "jump" "keyword"))]) (migemo . [(1 9 1) nil "Japanese incremental search through dynamic pattern expansion" single ((:url . "https://github.com/emacs-jp/migemo"))]) (mew . [(6 6) nil "Messaging in the Emacs World" tar nil]) (merlin . [(1 7 1) nil "Mode for Merlin, an assistant for OCaml." single ((:url . "http://github.com/the-lambda-church/merlin") (:keywords "ocaml" "languages"))]) (mentor . [(0 1) nil "Control rtorrent from GNU Emacs" tar ((:keywords "bittorrent" "rtorrent"))]) (mc-extras . [(1 0 3) ((multiple-cursors (1 2 1))) "Extra functions for multiple-cursors mode." tar ((:url . "https://github.com/knu/mc-extras.el") (:keywords "editing" "cursors"))]) (maxframe . [(0 5) nil "No description available." single nil]) (marmalade . [(0 0 4) ((furl (0 0 2))) "Elisp interface for the Emacs Lisp package server." single ((:url . "http://code.google.com/p/marmalade"))]) (markdown-toc . [(0 0 6) ((s (1 7 0)) (dash (2 5 0)) (markdown-mode (2 0))) "A simple TOC generator for markdown file" tar nil]) (markdown-mode . [(2 0) nil "Emacs Major mode for Markdown-formatted text files" single ((:url . "http://jblevins.org/projects/markdown-mode/") (:keywords "markdown" "github flavored markdown" "itex"))]) (mark-tools . [(0 3) nil "Some simple tools to access the mark-ring in Emacs" single ((:url . "https://github.com/stsquad/emacs-mark-tools"))]) (map-regexp . [(0 3 0) ((cl-lib (0 2))) "map over matches of a regular expression" single ((:url . "https://github.com/tarsius/map-regexp") (:keywords "convenience"))]) (map-progress . [(0 5 0) nil "mapping macros that report progress" single ((:url . "https://github.com/tarsius/map-progress/") (:keywords "convenience"))]) (mallard-mode . [(0 3 0) nil "Major mode for editing Mallard files" tar ((:url . "https://github.com/jhradilek/emacs-mallard-mode") (:keywords "xml" "mallard"))]) (malinka . [(0 2 0) ((s (1 9 0)) (dash (2 4 0)) (f (0 11 0)) (cl-lib (0 3)) (rtags (0 0)) (projectile (0 11 0))) "A C/C++ project configuration package for Emacs" single ((:url . "https://github.com/LefterisJP/malinka") (:keywords "c" "c++" "project-management"))]) (malabar-mode . [(20140303 946) ((fringe-helper (1 0 1))) "A better Java mode for Emacs" tar ((:url . "http://www.github.com/m0smith/malabar-mode") (:keywords "java" "maven" "language" "malabar"))]) (makey . [(0 3) ((cl-lib (0 2))) "interactive commandline mode" single nil]) (make-color . [(0 4) nil "Alternative to picking color - update fg/bg color by pressing r/g/b/... keys" single ((:url . "http://github.com/alezost/make-color.el") (:keywords "color"))]) (magit-tramp . [(0 1 0) ((magit (1 2 0))) "git method for TRAMP" single ((:url . "https://github.com/sigma/magit-tramp"))]) (magit-topgit . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "topgit plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-svn . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "git-svn plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-stgit . [(90141013) ((cl-lib (0 3)) (magit (1 3 0))) "StGit plug-in for Magit" single ((:keywords "vc" "tools"))]) (magit-push-remote . [(0 5 0) ((magit (1 3 0))) "push remote support for Magit" single ((:url . "https://github.com/tarsius/magit-push-remote") (:keywords "convenience"))]) (magit-gitflow . [(1 0 0) ((magit (1 3 0))) "gitflow extension for magit" single ((:url . "https://github.com/jtatarik/magit-gitflow") (:keywords "vc" "tools"))]) (magit-gh-pulls . [(0 3) ((gh (0 4 3)) (magit (1 1 0))) "GitHub pull requests extension for Magit" single ((:keywords "tools"))]) (magit-find-file . [(2 0 0) ((magit (1 2 0)) (dash (2 8 0))) "completing-read over all files in Git" single ((:url . "https://github.com/bradleywright/magit-find-file.el") (:keywords "git"))]) (magit-annex . [(0 10 0) ((cl-lib (0 3)) (magit (1 2 0))) "Use git annex within magit" single ((:url . "https://github.com/kyleam/magit-annex") (:keywords "magit" "git-annex"))]) (magit . [(90141013) ((cl-lib (0 3)) (git-commit-mode (0 14 0)) (git-rebase-mode (0 14 0))) "control Git from Emacs" tar ((:keywords "vc" "tools"))]) (macrostep . [(0 8) nil "interactive macro stepper for Emacs Lisp" single ((:url . "https://github.com/joddie/macrostep") (:keywords "lisp" "languages" "macro" "debugging"))]) (macro-math . [(1 0) nil "in-buffer mathematical operations" single ((:url . "http://nschum.de/src/emacs/macro-math/") (:keywords "convenience"))]) (m-buffer . [(0 5) ((dash (2 5 0)) (emacs (24 3))) "Buffer Manipulation Functions" single nil]) (lua-mode . [(20140514) nil "a major-mode for editing Lua scripts" single ((:url . "http://immerrr.github.com/lua-mode") (:keywords "languages" "processes" "tools"))]) (love-minor-mode . [(1 1) nil "Minor mode for working on LÖVE projects" single ((:url . "https://github.com/ejmr/love-minor-mode"))]) (logito . [(0 1) ((eieio (1 3))) "logging library for Emacs" single ((:keywords "lisp" "tool"))]) (logalimacs . [(1 0 0) nil "Front-end to logaling-command for Ruby gems" single ((:url . "https://github.com/logaling/logalimacs"))]) (log4j-mode . [(1 3) nil "major mode for viewing log files" single ((:keywords "log" "log4j" "java"))]) (literate-coffee-mode . [(0 2) ((coffee-mode (0 5 0))) "major-mode for Literate CoffeeScript" single ((:url . "https://github.com/syohex/emacs-literate-coffee-mode"))]) (list-utils . [(0 4 2) nil "List-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/list-utils") (:keywords "extensions"))]) (lispyscript-mode . [(0 3 5) nil "Major mode for LispyScript code." single ((:url . "https://github.com/krisajenkins/lispyscript-mode") (:keywords "lisp" "languages"))]) (lispy . [(0 13 0) ((helm (1 5 3)) (ace-jump-mode (2 0)) (s (1 4 0)) (noflet (0 0 10)) (multiple-cursors (1 3 0)) (iedit (0 97))) "vi-like Paredit" tar nil]) (linum-relative . [(0 4) nil "display relative line number in emacs." single ((:url . "http://github.com/coldnew/linum-relative") (:keywords "converience"))]) (linked-buffer . [(0 5) ((emacs (24)) (m-buffer (0 5)) (dash (2 5 0))) "One buffer as a view of another" tar nil]) (link . [(1 10) nil "No description available." single nil]) (lingr . [(0 2) nil "Lingr Client for GNU Emacs" single ((:url . "http://github.com/lugecy/lingr-el") (:keywords "chat" "client" "internet"))]) (lfe-mode . [(0 9 0) nil "Lisp Flavoured Erlang mode" tar nil]) (less-css-mode . [(0 19) nil "Major mode for editing LESS CSS files (lesscss.org)" single ((:url . "https://github.com/purcell/less-css-mode") (:keywords "less" "css" "mode"))]) (ledger-mode . [(3 1) nil "Helper code for use with the \"ledger\" command-line tool" tar nil]) (latex-extra . [(1 8) ((auctex (11 86 1)) (cl-lib (0 5))) "Adds several useful functionalities to LaTeX-mode." single ((:url . "http://github.com/Bruce-Connor/latex-extra") (:keywords "tex"))]) (langtool . [(1 2 1) nil "Grammer check utility using LanguageTool" single ((:url . "https://github.com/mhayashi1120/Emacs-langtool/raw/master/langtool.el") (:keywords "docs"))]) (know-your-http-well . [(0 2 0) nil "Look up the meaning of HTTP headers, methods, relations, status codes" tar nil]) (kivy-mode . [(1 8 0) nil "Emacs major mode for editing Kivy files" single nil]) (killer . [(0 2 2) nil "kill and delete text" single ((:url . "http://github.com/tarsius/killer") (:keywords "convenience"))]) (kill-ring-search . [(1 1) nil "incremental search for the kill ring" single ((:url . "http://nschum.de/src/emacs/kill-ring-search/") (:keywords "convenience" "matching"))]) (keymap-utils . [(0 4 4) ((cl-lib (0 2))) "Keymap utilities" tar nil]) (keydef . [(1 15) nil "a simpler way to define keys, with kbd syntax" single ((:keywords "convenience" "lisp" "customization" "keyboard" "keys"))]) (keychain-environment . [(2 0 1) nil "load keychain environment variables" single ((:url . "https://github.com/tarsius/keychain-environment") (:keywords "gnupg" "pgp" "ssh"))]) (key-combo . [(1 2) nil "map key sequence to commands" tar ((:url . "https://github.com/uk-ar/key-combo") (:keywords "keyboard" "input"))]) (jump-to-line . [(0 2 0) nil "Jump to line number at point." single ((:keywords "jump" "line" "back" "file" "ruby" "csharp" "python" "perl"))]) (jump . [(2 3) ((findr (0 7)) (inflections (1 1))) "build functions which contextually jump between files" single ((:url . "http://github.com/eschulte/jump.el/tree/master") (:keywords "project" "convenience" "navigation"))]) (julia-mode . [(0 3 1) nil "No description available." single nil]) (jsx-mode . [(0 1 10) nil "major mode for JSX" single ((:url . "https://github.com/jsx/jsx-mode.el"))]) (json-mode . [(1 1 0) nil "Major mode for editing JSON files" single ((:url . "https://github.com/joshwnj/json-mode"))]) (js3-mode . [(1 1 0) nil "An improved JavaScript editing mode" tar ((:keywords "javascript" "languages"))]) (js2-refactor . [(0 6 1) ((js2-mode (20101228)) (multiple-cursors (1 0 0)) (dash (1 0 0)) (s (1 0 0)) (yasnippet (20130218))) "A JavaScript refactoring library for emacs." tar nil]) (js2-mode . [(20140114) ((emacs (24 1))) "Improved JavaScript editing mode" tar ((:url . "https://github.com/mooz/js2-mode/") (:keywords "languages" "javascript"))]) (js2-closure . [(1 0) ((js2-mode (20140114))) "Google Closure dependency manager" single ((:url . "http://github.com/jart/js2-closure"))]) (jedi . [(0 1 2) ((epc (0 1 0)) (auto-complete (1 4))) "Python auto-completion for Emacs" tar nil]) (jabber . [(0 8 92) nil "A Jabber client for Emacs." tar nil]) (j-mode . [(1 1 1) nil "Major mode for editing J programs" tar ((:url . "http://github.com/zellio/j-mode") (:keywords "j" "langauges"))]) (ix . [(0 7) ((grapnel (0 5 3))) "Emacs client for http://ix.io pastebin" single ((:url . "http://www.github.com/theanalyst/ix.el"))]) (irony . [(0 1 1) ((cl-lib (0 5))) "C/C++ minor mode powered by libclang" tar ((:url . "https://github.com/Sarcasm/irony-mode") (:keywords "c" "convenience" "tools"))]) (ir-black-theme . [(1 0 1) nil "Port of ir-black theme" single ((:keywords "faces"))]) (instapaper . [(0 9 5) nil "No description available." single nil]) (insert-shebang . [(0 9 3) nil "Insert shebang line automatically." single ((:url . "http://github.com/psachin/insert-shebang") (:keywords "shebang" "tool" "convenience"))]) (inline-crypt . [(0 1 4) nil "Simple inline encryption via openssl" tar nil]) (initsplit . [(1 6) nil "No description available." single nil]) (init-loader . [(0 1) nil "Loader for configuration files" single ((:url . "https://github.com/emacs-jp/init-loader/"))]) (inflections . [(2 3) nil "convert english words between singular and plural" single ((:url . "https://github.com/eschulte/jump.el") (:keywords "ruby" "rails" "languages" "oop"))]) (inf-ruby . [(2 4 0) nil "Run a Ruby process in a buffer" single ((:url . "http://github.com/nonsequitur/inf-ruby") (:keywords "languages" "ruby"))]) (import-popwin . [(0 8) ((popwin (0 6)) (cl-lib (0 5))) "popwin buffer near by import statements with popwin" single ((:url . "https://github.com/syohex/emacs-import-popwin"))]) (immutant-server . [(1 2 0) nil "Run your Immutant server in Emacs" single ((:url . "http://www.github.com/leathekd/immutant-server.el"))]) (ignoramus . [(0 7 0) nil "Ignore backups, build files, et al." single ((:url . "http://github.com/rolandwalker/ignoramus") (:keywords "convenience" "tools"))]) (iflipb . [(1 2) nil "interactively flip between recently visited buffers" single ((:url . "http://hg.rosdahl.net/iflipb"))]) (idris-mode . [(0 9 14) ((emacs (24))) "Major mode for editing Idris code" tar ((:url . "https://github.com/idris-hackers/idris-mode") (:keywords "languages"))]) (ido-vertical-mode . [(0 1 5) nil "Makes ido-mode display vertically." single ((:url . "https://github.com/gempesaw/ido-vertical-mode.el") (:keywords "convenience"))]) (ido-ubiquitous . [(2 14) ((emacs (24 1))) "Use ido (nearly) everywhere." single ((:url . "https://github.com/DarwinAwardWinner/ido-ubiquitous") (:keywords "convenience"))]) (ido-load-library . [(0 2 0) ((persistent-soft (0 8 8)) (pcache (0 2 3))) "Load-library alternative using ido-completing-read" single ((:url . "http://github.com/rolandwalker/ido-load-library") (:keywords "maint" "completion"))]) (ido-complete-space-or-hyphen . [(1 1) nil "No description available." single nil]) (idle-highlight-mode . [(1 1 3) nil "highlight the word the point is on" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/IdleHighlight") (:keywords "convenience"))]) (identica-mode . [(1 3 1) nil "Major mode API client for status.net open microblogging" tar ((:url . "http://blog.gabrielsaldana.org/identica-mode-for-emacs/") (:keywords "identica" "web"))]) (ibuffer-vc . [(0 8) ((cl-lib (0 2))) "Group ibuffer's list by VC project, or show VC status" single ((:url . "http://github.com/purcell/ibuffer-vc") (:keywords "themes"))]) (hyde . [(0 2) nil "No description available." tar nil]) (httprepl . [(1 1) ((s (1 9 0)) (dash (2 5 0)) (emacs (24))) "An HTTP REPL" single ((:url . "https://github.com/gregsexton/httprepl.el") (:keywords "http" "repl"))]) (httpcode . [(0 1) nil "explains the meaning of an HTTP status code" single ((:url . "http://github.com/rspivak/httpcode.el"))]) (html-to-markdown . [(1 5) nil "HTML to Markdown converter written in Emacs-lisp." single ((:url . "http://github.com/Bruce-Connor/html-to-markdown") (:keywords "tools" "wp" "languages"))]) (hookify . [(0 2 0) ((s (1 9 0)) (dash (1 5 0))) "Interactive commands to create temporary hooks" single ((:url . "https://github.com/Silex/hookify") (:keywords "hook" "convenience"))]) (hl-todo . [(1 3 1) nil "highlight TODO keywords" single ((:url . "http://github.com/tarsius/hl-todo") (:keywords "convenience"))]) (hl-sexp . [(1 0 0) nil "highlight the current sexp" single ((:keywords "faces" "frames" "emulation"))]) (hl-sentence . [(3) nil "highlight a sentence based on customizable face" single ((:url . "http://github.com/milkypostman/hl-sentence") (:keywords "highlighting"))]) (historyf . [(0 0 8) nil "file history library like browser" single ((:url . "https://github.com/k1LoW/emacs-historyf"))]) (hippie-namespace . [(0 5 8) nil "Special treatment for namespace prefixes in hippie-expand" single ((:url . "http://github.com/rolandwalker/hippie-namespace") (:keywords "convenience" "lisp" "tools" "completion"))]) (hippie-expand-slime . [(0 1) nil "Hook slime's completion into hippie-expand" single ((:url . "https://github.com/purcell/hippie-expand-slime"))]) (highlight-symbol . [(1 2) nil "automatic and manual symbol highlighting" single ((:url . "http://nschum.de/src/emacs/highlight-symbol/") (:keywords "faces" "matching"))]) (highlight-quoted . [(0 1) ((emacs (24))) "Highlight Lisp quotes and quoted symbols" single ((:url . "https://github.com/Fanael/highlight-quoted"))]) (highlight-parentheses . [(1 0 2) nil "highlight surrounding parentheses" single ((:url . "http://nschum.de/src/emacs/highlight-parentheses/") (:keywords "faces" "matching"))]) (highlight-numbers . [(0 2) ((emacs (24)) (parent-mode (2 0))) "Highlight numbers in source code" single ((:url . "https://github.com/Fanael/highlight-numbers"))]) (highlight-defined . [(0 1 5) ((emacs (24))) "Syntax highlighting of known Elisp symbols" single ((:url . "https://github.com/Fanael/highlight-defined"))]) (highlight-blocks . [(0 1 5) ((emacs (24))) "Highlight the blocks point is in" single ((:url . "https://github.com/Fanael/highlight-blocks"))]) (helm-themes . [(0 4) ((helm (1 0))) "Color theme selection with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-themes"))]) (helm-spaces . [(0 2) ((helm (1 0)) (spaces (0 1 0))) "helm sources for spaces" single ((:url . "https://github.com/yasuyk/helm-spaces") (:keywords "helm" "frames" "convenience"))]) (helm-rubygems-org . [(0 0 1) ((emacs (24)) (helm (1 6 3)) (cl-lib (0 5))) "Use helm to search rubygems.org" single ((:url . "https://github.com/neomantic/helm-rubygems-org") (:keywords "ruby" "rubygems" "gemfile" "helm"))]) (helm-robe . [(0 1) ((helm (1 0))) "completing read function for robe" single ((:url . "https://github.com/syohex/emacs-helm-robe"))]) (helm-pydoc . [(0 6) ((helm (1 0)) (cl-lib (0 5))) "pydoc with helm interface" tar ((:url . "https://github.com/syohex/emacs-helm-pydoc"))]) (helm-projectile . [(0 11 0) ((helm (1 4 0)) (projectile (0 11 0)) (cl-lib (0 3))) "Helm integration for Projectile" single ((:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (helm-proc . [(0 0 4) ((helm (1 6 0))) "Helm interface for managing system processes" tar nil]) (helm-perldoc . [(0 7) ((helm (1 0)) (deferred (0 3 1)) (cl-lib (0 5))) "perldoc with helm interface" tar ((:url . "https://github.com/syohex/emacs-helm-perldoc"))]) (helm-package . [(0 2) ((helm (1 0)) (cl-lib (0 3))) "Listing ELPA packages with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-package"))]) (helm-open-github . [(0 11) ((helm (1 0)) (gh (1 0)) (cl-lib (0 5))) "Utilities of Opening Github Page" single ((:url . "https://github.com/syohex/emacs-helm-open-github"))]) (helm-hayoo . [(0 0 5) ((helm (1 6 0)) (json (1 2)) (haskell-mode (13 7))) "Source and configured helm for searching hayoo" single ((:keywords "helm"))]) (helm-gtags . [(1 3 9) ((helm (1 5 6)) (cl-lib (0 5))) "GNU GLOBAL helm interface" single ((:url . "https://github.com/syohex/emacs-helm-gtags"))]) (helm-github-stars . [(1 1 1) ((helm (1 5 5))) "Helm integration for your starred repositories on github" single ((:keywords "helm" "github" "stars"))]) (helm-ghq . [(1 4 0) ((helm (1 6 2))) "ghq with helm interface" single ((:url . "https://github.com/masutaka/emacs-helm-ghq"))]) (helm-descbinds . [(1 7 1) nil "Yet Another `describe-bindings' with `helm'." single ((:keywords "helm" "help"))]) (helm-dash . [(1 0 0) ((helm (0 0 0))) "Helm extension to search dash docsets" single ((:keywords "docs"))]) (helm-backup . [(0 2 0) ((helm (1 5 5)) (s (1 8 0))) "Backup each file change using git" single ((:url . "http://github.com/antham/helm-backup") (:keywords "backup"))]) (helm-ag . [(0 28) ((helm (1 5 6)) (cl-lib (0 5))) "the silver searcher with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-ag"))]) (helm-ack . [(0 12) ((helm (1 0)) (cl-lib (0 5))) "Ack command with helm interface" single ((:url . "https://github.com/syohex/emacs-helm-ack"))]) (helm . [(1 6 4) ((emacs (24)) (cl-lib (0 5)) (async (1 2))) "Helm is an Emacs incremental and narrowing framework" tar nil]) (header-button . [(0 3 0) nil "clickable buttons in header lines" single ((:url . "https://github.com/emacsattic/header-button") (:keywords "extensions"))]) (haskell-mode . [(13 10) nil "A Haskell editing mode" tar nil]) (hardhat . [(0 4 4) ((ignoramus (0 7 0))) "Protect against clobbering user-writable files" single ((:url . "http://github.com/rolandwalker/hardhat") (:keywords "convenience"))]) (haml-mode . [(3 1 5) ((ruby-mode (1 0))) "Major mode for editing Haml files" single ((:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "html"))]) (ham-mode . [(1 1 1) ((html-to-markdown (1 2)) (markdown-mode (2 0))) "Html As Markdown. Transparently edit an html file using markdown." single ((:url . "http://github.com/Bruce-Connor/ham-mode") (:keywords "convenience" "emulation" "wp"))]) (hackernews . [(0 2) ((json (1 2))) "Access the hackernews aggregator from Emacs" tar nil]) (guru-mode . [(0 2) nil "Become an Emacs guru" single ((:url . "https://github.com/bbatsov/guru-mode") (:keywords "convenience"))]) (gruber-darker-theme . [(0 6) nil "Gruber Darker color theme for Emacs 24." single ((:url . "http://github.com/rexim/gruber-darker-theme"))]) (groovy-mode . [(201311291207) nil "Groovy mode derived mode" tar nil]) (grizzl . [(0 1 1) nil "Fuzzy Search Library & Completing Read" tar nil]) (grin . [(1 0) nil "run grin and grind (python replacements for grep and find) putting hits in a grep buffer" single ((:url . "http://bitbucket.org/dariusp686/emacs-grin") (:keywords "python" "grin" "grind" "grep" "find"))]) (grass-mode . [(0 1) ((cl-lib (0 2))) "Provides Emacs modes for interacting with the GRASS GIS program" single ((:keywords "grass" "gis"))]) (grapnel . [(0 5 3) nil "HTTP request lib with flexible callback dispatch" single ((:url . "http://www.github.com/leathekd/grapnel"))]) (gradle-mode . [(0 5 4) ((s (1 8 0))) "Gradle integration with Emacs' compile" single ((:url . "http://github.com/jacobono/emacs-gradle-mode") (:keywords "gradle"))]) (goto-gem . [(1 2) ((s (1 9 0))) "Open dired in gem directory" single ((:keywords "gemfile" "convenience"))]) (google-translate . [(0 10 4) nil "Emacs interface to Google Translate." tar nil]) (google-this . [(1 9) ((emacs (24 1))) "A set of functions and bindings to google under point." single ((:url . "http://github.com/Bruce-Connor/emacs-google-this") (:keywords "convenience" "hypermedia"))]) (golden-ratio . [(0 0 4) nil "Automatic resizing of Emacs windows to the golden ratio" single ((:keywords "window" "resizing"))]) (go-eldoc . [(0 19) ((go-mode (0)) (cl-lib (0 5))) "eldoc for go-mode" single ((:url . "https://github.com/syohex/emacs-go-eldoc"))]) (go-direx . [(0 3) ((direx (0 1 -3)) (cl-lib (0 5))) "Tree style source code viewer for Go language" single ((:url . "https://github.com/syohex/emacs-go-direx"))]) (gnus-desktop-notify . [(1 4) ((gnus (1 0))) "Gnus Desktop Notification global minor mode" single ((:url . "http://www.thregr.org/~wavexx/hacks/gnus-desktop-notify/"))]) (gnuplot . [(0 7 0) nil "drive gnuplot from within emacs" tar ((:keywords "gnuplot" "plotting"))]) (gmail-message-mode . [(1 3 2) ((ham-mode (1 0))) "A major-mode for editing gmail messages using markdown syntax." single ((:url . "http://github.com/Bruce-Connor/gmail-message-mode") (:keywords "mail" "convenience" "emulation"))]) (gitignore-mode . [(0 15 0) nil "Major mode for editing .gitignore files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (github-clone . [(0 2) ((gh (0 7 2)) (magit (1 2 0)) (emacs (24))) "Fork and clone github repos" single ((:url . "https://github.com/dgtized/github-clone.el") (:keywords "vc" "tools"))]) (gitconfig-mode . [(0 15 0) nil "Major mode for editing .gitconfig files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (gitconfig . [(1 0 0) nil "Emacs lisp interface to work with git-config variables" single ((:keywords "git" "gitconfig" "git-config"))]) (gitattributes-mode . [(0 15 0) nil "Major mode for editing .gitattributes files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-timemachine . [(1 8) ((cl-lib (0 5))) "Walk through git revisions of a file" single ((:url . "https://github.com/pidu/git-timemachine") (:keywords "git"))]) (git-rebase-mode . [(0 15 0) nil "Major mode for editing git rebase files" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-messenger . [(0 15) ((popup (0 5 0))) "Pop up last commit information of current line" single ((:url . "https://github.com/syohex/emacs-git-messenger"))]) (git-link . [(0 0 2) nil "Get the GitHub/Bitbucket/Gitorious URL for a buffer location" single ((:url . "http://github.com/sshaw/git-link"))]) (git-gutter-fringe . [(0 21) ((git-gutter (0 73)) (fringe-helper (0 1 1)) (cl-lib (0 5)) (emacs (24))) "Fringe version of git-gutter.el" single ((:url . "https://github.com/syohex/emacs-git-gutter-fringe"))]) (git-gutter-fringe+ . [(0 1) ((git-gutter+ (0 1)) (fringe-helper (20130519 1641))) "Fringe version of git-gutter+.el" single ((:url . "https://github.com/nonsequitur/git-gutter-fringe-plus"))]) (git-gutter . [(0 77) ((cl-lib (0 5)) (emacs (24))) "Port of Sublime Text plugin GitGutter" single ((:url . "https://github.com/syohex/emacs-git-gutter"))]) (git-gutter+ . [(0 2) nil "Manage Git hunks straight from the buffer" single ((:url . "https://github.com/nonsequitur/git-gutter-plus"))]) (git-commit-mode . [(0 15 0) nil "Major mode for editing git commit messages" single ((:url . "https://github.com/magit/git-modes") (:keywords "convenience" "vc" "git"))]) (git-auto-commit-mode . [(4 2 2) nil "Emacs Minor mode to automatically commit and push" single ((:url . "http://ryuslash.org/projects/git-auto-commit-mode/") (:keywords "vc"))]) (git . [(0 1 1) ((s (1 7 0)) (dash (2 2 0)) (f (0 10 0))) "An Elisp API for programmatically using Git" single ((:url . "http://github.com/rejeep/git.el") (:keywords "git"))]) (gist . [(1 1 0) ((eieio (1 3)) (gh (0 7 0)) (tabulated-list (0))) "Emacs integration for gist.github.com" single ((:keywords "gist" "git" "github" "paste" "pastie" "pastebin"))]) (ghc . [(5 1 1 0) nil "Sub mode for Haskell mode" tar nil]) (gh . [(0 8 0) ((eieio (1 3)) (pcache (0 2 4)) (logito (0 1))) "A GitHub library for Emacs" tar nil]) (ggtags . [(0 8 6) ((emacs (24)) (cl-lib (0 5))) "emacs frontend to GNU Global source code tagging system" single ((:url . "https://github.com/leoliu/ggtags") (:keywords "tools" "convenience"))]) (ggo-mode . [(20130521) nil "Gengetopt major mode" single ((:keywords "extensions" "convenience" "local"))]) (geiser . [(0 6) nil "GNU Emacs and Scheme talk to each other" tar nil]) (gather . [(1 0 5) nil "Gather string in buffer." single ((:url . "https://github.com/mhayashi1120/Emacs-gather/raw/master/gather.el") (:keywords "matching" "convenience" "tools"))]) (fwb-cmds . [(0 4 0) nil "misc frame, window and buffer commands" single ((:url . "http://github.com/tarsius/fwb-cmds") (:keywords "convenience"))]) (fvwm-mode . [(1 6 4) nil "major mode for editing Fvwm configuration files" single ((:keywords "files"))]) (fuzzy . [(0 1) nil "Fuzzy Matching" single ((:keywords "convenience"))]) (full-ack . [(1 0) nil "a front-end for ack" single ((:url . "http://nschum.de/src/emacs/full-ack/") (:keywords "tools" "matching"))]) (fuel . [(0 96) nil "No description available." tar nil]) (fsharp-mode . [(1 3 0) ((auto-complete (1 4)) (popup (0 5)) (pos-tip (0 4 5)) (s (1 3 1)) (dash (1 1 0))) "F# mode for Emacs" tar nil]) (fringe-helper . [(1 0 1) nil "helper functions for fringe bitmaps" single ((:url . "http://nschum.de/src/emacs/fringe-helper/") (:keywords "lisp"))]) (frame-restore . [(0 5) ((emacs (24 1))) "Restore Emacs frame" single ((:url . "https://github.com/lunaryorn/frame-restore.el") (:keywords "frames" "convenience"))]) (fountain-mode . [(1 3 3) ((s (1 9 0))) "Major mode for screenwriting in Fountain markup" single ((:url . "https://github.com/rnkn/fountain-mode") (:keywords "wp"))]) (font-utils . [(0 7 2) ((persistent-soft (0 8 8)) (pcache (0 2 3))) "Utility functions for working with fonts" single ((:url . "http://github.com/rolandwalker/font-utils") (:keywords "extensions"))]) (fold-this . [(0 2 0) nil "Just fold this region please" single ((:keywords "convenience"))]) (fold-dwim-org . [(0 6) ((fold-dwim (1 2))) "Fold DWIM bound to org key-strokes." single ((:url . "https://github.com/mlf176f2/fold-dwim-org") (:keywords "folding" "emacs" "org-mode"))]) (fold-dwim . [(1 2) nil "No description available." single nil]) (fm . [(1 0) nil "follow mode for compilation/output buffers" single ((:keywords "outlines"))]) (flyspell-lazy . [(0 6 6) nil "Improve flyspell responsiveness using idle timers" single ((:url . "http://github.com/rolandwalker/flyspell-lazy") (:keywords "spelling"))]) (flymake-shell . [(0 8) ((flymake-easy (0 1))) "A flymake syntax-checker for shell scripts" single ((:url . "https://github.com/purcell/flymake-shell"))]) (flymake-sass . [(0 6) ((flymake-easy (0 1))) "Flymake handler for sass files" single ((:url . "https://github.com/purcell/flymake-sass"))]) (flymake-ruby . [(0 8) ((flymake-easy (0 1))) "A flymake handler for ruby-mode files" single ((:url . "https://github.com/purcell/flymake-ruby"))]) (flymake-python-pyflakes . [(0 9) ((flymake-easy (0 8))) "A flymake handler for python-mode files using pyflakes (or flake8)" single ((:url . "https://github.com/purcell/flymake-python-pyflakes"))]) (flymake-php . [(0 5) ((flymake-easy (0 1))) "A flymake handler for php-mode files" single ((:url . "https://github.com/purcell/flymake-php"))]) (flymake-perlcritic . [(1 0 3) ((flymake (0 3))) "Flymake handler for Perl to invoke Perl::Critic" tar ((:url . "https://github.com/illusori/emacs-flymake-perlcritic"))]) (flymake-json . [(0 1) ((flymake-easy (0 1))) "A flymake handler for json using jsonlint" single ((:url . "https://github.com/purcell/flymake-json"))]) (flymake-jslint . [(0 23) nil "Flymake support for javascript using jslint" single ((:url . "https://github.com/purcell/flymake-jslint"))]) (flymake-hlint . [(0 2) ((flymake-easy (0 1))) "A flymake handler for haskell-mode files using hlint" single ((:url . "https://github.com/purcell/flymake-hlint"))]) (flymake-haskell-multi . [(0 3) ((flymake-easy (0 1))) "Syntax-check haskell-mode using both ghc and hlint" tar nil]) (flymake-haml . [(0 8) ((flymake-easy (0 1))) "A flymake handler for haml files" single ((:url . "https://github.com/purcell/flymake-haml"))]) (flymake-gjshint . [(0 0 6) nil "A flymake handler for javascript using both jshint and gjslint" single ((:keywords "flymake" "javascript" "jshint" "gjslint"))]) (flymake-easy . [(0 9) nil "Helpers for easily building flymake checkers" single ((:url . "https://github.com/purcell/flymake-easy") (:keywords "convenience" "internal"))]) (flymake-css . [(0 3) ((flymake-easy (0 1))) "Flymake support for css using csslint" single ((:url . "https://github.com/purcell/flymake-css"))]) (flymake-coffee . [(0 12) ((flymake-easy (0 1))) "A flymake handler for coffee script" single ((:url . "https://github.com/purcell/flymake-coffee"))]) (flycheck-ledger . [(0 4) ((flycheck (0 15))) "Flycheck integration for ledger files" single ((:keywords "convenience" "languages" "tools"))]) (flycheck-hdevtools . [(0 3) ((flycheck (0 15))) "A flycheck checker for Haskell using hdevtools" single ((:url . "https://github.com/flycheck/flycheck-hdevtools") (:keywords "convenience" "languages" "tools"))]) (flycheck-haskell . [(0 5) ((flycheck (0 19 -3)) (haskell-mode (13 7)) (dash (2 4 0))) "Flycheck: Cabal projects and sandboxes" tar ((:url . "https://github.com/flycheck/flycheck-haskell") (:keywords "tools" "convenience"))]) (flycheck-dmd-dub . [(0 7) ((flycheck (0 17))) "Sets flycheck-dmd-include-paths from dub package information" single ((:url . "http://github.com/atilaneves/flycheck-dmd-dub") (:keywords "languages"))]) (flycheck-color-mode-line . [(0 3) ((flycheck (0 15)) (dash (1 2)) (emacs (24 1))) "Change mode line color with Flycheck status" single ((:keywords "convenience" "language" "tools"))]) (flycheck-cask . [(0 1) ((flycheck (0 14)) (dash (2 0 0)) (f (0 6 0))) "Cask support in Flycheck" single ((:url . "https://github.com/flycheck/flycheck-cask") (:keywords "tools" "convenience"))]) (flycheck . [(0 20) ((dash (2 4 0)) (pkg-info (0 4)) (cl-lib (0 3)) (emacs (24 1))) "Modern on-the-fly syntax checking for GNU Emacs" tar ((:url . "https://flycheck.readthedocs.org") (:keywords "convenience" "languages" "tools"))]) (flx-ido . [(0 5) ((flx (0 1)) (cl-lib (0 3))) "flx integration for ido" single ((:url . "https://github.com/lewang/flx"))]) (flx . [(0 5) ((cl-lib (0 3))) "fuzzy matching with good sorting" single ((:url . "https://github.com/lewang/flx"))]) (floobits . [(1 5 11) ((json (1 2)) (highlight (0))) "Floobits plugin for real-time collaborative editing" tar ((:url . "http://github.com/Floobits/floobits-emacs") (:keywords "comm" "tools"))]) (fixmee . [(0 8 4) ((button-lock (1 0 0)) (nav-flash (1 0 0)) (back-button (0 6 0)) (smartrep (0 0 3)) (string-utils (0 3 2)) (tabulated-list (0))) "Quickly navigate to FIXME notices in code" single ((:url . "http://github.com/rolandwalker/fixmee") (:keywords "navigation" "convenience"))]) (fiplr . [(0 2 4) ((grizzl (0 1 0))) "Fuzzy Search for Files in Projects" tar nil]) (find-file-in-repository . [(1 2) nil "Quickly find files in a git, mercurial or other repository" single ((:url . "https://github.com/hoffstaetter/find-file-in-repository") (:keywords "files" "convenience" "repository" "project" "source control"))]) (find-file-in-project . [(3 3) nil "Find files in a project quickly." single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/FindFileInProject") (:keywords "project" "convenience"))]) (finalize . [(1 0 0) ((emacs (24 1)) (cl-lib (0 3)) (eieio (1 4))) "finalizers for Emacs Lisp" tar nil]) (fill-column-indicator . [(1 81) nil "Graphically indicate the fill column" tar ((:keywords "convenience"))]) (fastnav . [(1 0 7) nil "Fast navigation and editing routines." single ((:keywords "nav" "fast" "fastnav" "navigation"))]) (fasm-mode . [(0 1 10) nil "Fasm major mode" single ((:url . "https://github.com/Fanael/fasm-mode"))]) (fancy-narrow . [(0 9 4) nil "narrow-to-region with more eye candy." single ((:url . "http://github.com/Bruce-Connor/fancy-narrow-region") (:keywords "faces" "convenience"))]) (fancy-battery . [(0 2) ((emacs (24 1))) "Fancy battery display" single ((:url . "https://github.com/lunaryorn/fancy-battery.el") (:keywords "convenience" "tools" "hardware"))]) (factlog . [(0 0 1) nil "File activity logger" single nil]) (fabric . [(0 1 0) nil "Launch Fabric using Emacs" tar ((:url . "https://github.com/nlamirault/fabric.el") (:keywords "python" "fabric"))]) (f . [(0 17 1) ((s (1 7 0)) (dash (2 2 0))) "Modern API for working with files and directories" single ((:url . "http://github.com/rejeep/f.el") (:keywords "files" "directories"))]) (eyebrowse . [(0 3 2) ((dash (2 7 0))) "Easy window config switching" single ((:url . "https://github.com/wasamasa/eyebrowse") (:keywords "convenience"))]) (extend-dnd . [(0 5) nil "R drag and Drop" tar ((:url . "https://github.com/mlf176f2/extend-dnd") (:keywords "extend" "drag and drop"))]) (express . [(0 6 0) ((string-utils (0 3 2))) "Alternatives to `message'" single ((:url . "http://github.com/rolandwalker/express") (:keywords "extensions" "message" "interface"))]) (expand-region . [(0 10 0) nil "Increase selected region by semantic units." tar nil]) (exec-path-from-shell . [(1 8) nil "Get environment variables such as $PATH from the shell" single ((:url . "https://github.com/purcell/exec-path-from-shell") (:keywords "environment"))]) (eww-lnum . [(1 0) nil "Operations using link numbers" single ((:url . "https://github.com/m00natic/eww-lnum") (:keywords "eww" "browse" "conkeror"))]) (evm . [(0 4 2) ((dash (2 3 0)) (f (0 13 0))) "Emacs Version Manager" single ((:url . "http://github.com/rejeep/evm"))]) (evil-visualstar . [(0 0 1) ((evil (0))) "Starts a * or # search from the visual selection" single ((:url . "https://github.com/bling/evil-visualstar") (:keywords "evil" "vim" "visualstar"))]) (evil-space . [(0 0 2) ((evil (1 0 0))) "Repeat motion in Evil. Correct the behaviour of what SPC should do." single ((:url . "http://github.com/linktohack/evil-space") (:keywords "space" "repeat" "motion"))]) (evil-search-highlight-persist . [(1 1) nil "Persistent highlights after search" single nil]) (evil-org . [(0 1 1) ((evil (0)) (org (0))) "evil keybindings for org-mode" single ((:url . "https://github.com/edwtjo/evil-org-mode.git") (:keywords "evil" "vim-emulation" "org-mode" "key-bindings" "presets"))]) (evil-numbers . [(0 4) nil "increment/decrement numbers like in vim" single ((:url . "http://github.com/cofi/evil-numbers") (:keywords "numbers" "increment" "decrement" "octal" "hex" "binary"))]) (evil-nerd-commenter . [(1 5 5) nil "Comment/uncomment lines efficiently. Like Nerd Commenter in Vim" tar nil]) (evil-matchit . [(1 4 0) nil "Vim matchit ported into Emacs (requires EVIL)" tar nil]) (evil-leader . [(0 4 3) ((evil (0))) "let there be " single ((:url . "http://github.com/cofi/evil-leader") (:keywords "evil" "vim-emulation" "leader"))]) (evil-jumper . [(0 0 1) ((evil (0))) "Jump like vimmers do!" single ((:url . "https://github.com/bling/evil-jumper") (:keywords "evil" "vim" "jumplist" "jump" "list"))]) (evil-args . [(1 0) ((evil (1 0 8))) "Motions and text objects for delimited arguments in Evil." single ((:url . "http://github.com/wcsmith/evil-args") (:keywords "evil" "vim-emulation"))]) (evil . [(1 0 9) ((undo-tree (0 6 3)) (goto-last-change (1 2))) "Extensible Vi layer for Emacs." tar nil]) (eval-sexp-fu . [(0 4 0) nil "Tiny functionality enhancements for evaluating sexps." single ((:keywords "lisp" "highlight" "convenience"))]) (esup . [(0 4) nil "the Emacs StartUp Profiler (ESUP)" single ((:url . "http://github.com/jschaf/esup") (:keywords "emacs-lisp" "elisp" "profile" "startup"))]) (ess-smart-underscore . [(0 79) nil "Ess Smart Underscore" tar ((:url . "http://github.com/mlf176f2/ess-smart-underscore.el") (:keywords "ess" "underscore"))]) (ess . [(14 9) nil "No description available." tar nil]) (espuds . [(0 2 6) ((s (1 7 0)) (dash (2 2 0)) (noflet (0 0 10)) (f (0 12 1))) "Ecukes step definitions" single ((:url . "http://github.com/ecukes/espuds") (:keywords "test"))]) (es-windows . [(0 3) ((cl-lib (0 3)) (emacs (24))) "Window-management utilities" single ((:url . "https://github.com/sabof/es-windows"))]) (es-mode . [(3 1 0) nil "A major mode for editing Elasticsearch queries" tar ((:url . "http://www.github.com/dakrone/es-mode") (:keywords "elasticsearch"))]) (ert-runner . [(0 6 3) ((s (1 6 1)) (dash (1 8 0)) (f (0 10 0)) (commander (0 2 0)) (ansi (0 1 0)) (shut-up (0 1 0))) "Opinionated Ert testing workflow" tar ((:url . "http://github.com/rejeep/ert-runner.el") (:keywords "test"))]) (ert-junit . [(0 1 1) ((ert (0))) "JUnit XML reports from ert results" single ((:url . "http://bitbucket.org/olanilsson/ert-junit") (:keywords "tools" "test" "unittest" "ert"))]) (ert-async . [(0 1 1) nil "Async support for ERT" single ((:url . "http://github.com/rejeep/ert-async.el") (:keywords "test"))]) (ergoemacs-mode . [(5 14 7 3) ((emacs (24 1)) (undo-tree (0 6 5))) "Emacs mode based on common modern interface and ergonomics." tar ((:url . "https://github.com/ergoemacs/ergoemacs-mode") (:keywords "convenience"))]) (ercn . [(1 0 2) nil "Flexible ERC notifications" single ((:url . "http://www.github.com/leathekd/ercn"))]) (erc-hl-nicks . [(1 3 0) nil "ERC nick highlighter that ignores uniquifying chars when colorizing" single ((:url . "http://www.github.com/leathekd/erc-hl-nicks"))]) (erc-crypt . [(1 0) nil "Symmetric Encryption for ERC" single ((:keywords "application"))]) (epl . [(0 7) ((cl-lib (0 3))) "Emacs Package Library" single ((:url . "http://github.com/cask/epl") (:keywords "convenience"))]) (epc . [(0 1 0) ((concurrent (0 3 1)) (ctable (0 1 0))) "A RPC stack for the Emacs Lisp" tar ((:url . "https://github.com/kiwanami/emacs-epc") (:keywords "lisp" "rpc"))]) (enotify . [(0 1 3) nil "No description available." tar nil]) (emmet-mode . [(1 0 8) nil "Unofficial Emmet's support for emacs" single ((:url . "https://github.com/smihica/emmet-mode") (:keywords "convenience"))]) (emamux . [(0 12) ((cl-lib (0 5))) "Interact with tmux" single ((:url . "https://github.com/syohex/emacs-emamux"))]) (emacsql . [(1 0 2) ((emacs (24 3)) (cl-lib (0 3)) (finalize (1 0 0))) "high-level SQL database front-end" tar ((:url . "https://github.com/skeeto/emacsql"))]) (emacsc . [(1 2 20131027) nil "helper for emacsc(1)" tar ((:url . "https://github.com/knu/emacsc") (:keywords "tools"))]) (emacs-setup . [(1 0) nil "Package for maintaining your emacs configuration. Clean up your .emacs!" tar nil]) (emacs-eclim . [(0 2) nil "No description available." tar nil]) (elx . [(0 9 6) ((emacs (24 3 50))) "extract information from Emacs Lisp libraries" single ((:url . "https://github.com/tarsius/elx") (:keywords "docs" "libraries" "packages"))]) (elpy . [(1 5 1) ((company (0 8 2)) (find-file-in-project (3 3)) (highlight-indentation (0 5 0)) (idomenu (0 1)) (pyvenv (1 3)) (yasnippet (0 8 0))) "Emacs Python Development Environment" tar nil]) (elpa-mirror . [(1 1 3) nil "ELPA mirror from locally installed packages is easy" tar nil]) (elpa-audit . [(0 4) nil "Handy functions for inspecting and comparing package archives" single ((:url . "https://github.com/purcell/elpa-audit") (:keywords "maint"))]) (elmine . [(0 3) nil "No description available." single nil]) (elmacro . [(0 2 0) ((s (1 9 0)) (dash (1 5 0)) (cl-lib (0 5))) "Convert keyboard macros to elisp" single ((:url . "https://github.com/Silex/elmacro") (:keywords "macro" "elisp" "convenience"))]) (elixir-mode . [(2 0 1) nil "Major mode for editing Elixir files" tar ((:url . "https://github.com/elixir-lang/emacs-elixir") (:keywords "languages" "elixir"))]) (elixir-mix . [(1 0 0) nil "Emacs integration for Elixir's mix" single ((:url . "http://github.com/tonini/elixir-mix.el") (:keywords "elixir" "mix" "elixir-mix"))]) (elisp-slime-nav . [(0 7) ((cl-lib (0 2))) "Make M-. and M-, work in elisp like they do in slime" single ((:url . "https://github.com/purcell/elisp-slime-nav") (:keywords "navigation" "slime" "elisp" "emacs-lisp"))]) (elfeed-web . [(1 1 1) ((simple-httpd (1 4 3)) (elfeed (1 0 1)) (emacs (24 1))) "web interface to Elfeed" tar nil]) (elfeed . [(1 1 1) ((emacs (24 1))) "an Emacs Atom/RSS feed reader" tar nil]) (el-x . [(0 3 0) nil "main entry point for el-x package" tar ((:keywords "lisp"))]) (el-spice . [(0 2 2) ((thingatpt+ (0))) "Extra spice for emacs lisp programming" tar ((:url . "https://github.com/vedang/el-spice") (:keywords "configuration"))]) (el-mock . [(1 25 0) nil "Tiny Mock and Stub framework in Emacs Lisp" single ((:url . "http://github.com/rejeep/el-mock.el") (:keywords "lisp" "testing" "unittest"))]) (el-get . [(5 1) nil "Manage the external elisp bits and pieces you depend upon" tar ((:url . "http://www.emacswiki.org/emacs/el-get") (:keywords "emacs" "package" "elisp" "install" "elpa" "git" "git-svn" "bzr" "cvs" "svn" "darcs" "hg" "apt-get" "fink" "pacman" "http" "http-tar" "emacswiki"))]) (el-autoyas . [(0 5) nil "Automatically create Emacs-Lisp Yasnippets" tar ((:url . "https://github.com/mlf176f2/el-autoyas.el") (:keywords "emacs" "lisp" "mode" "yasnippet"))]) (ein . [(0 2 0) ((websocket (0 9)) (auto-complete (1 4))) "Emacs IPython Notebook" tar nil]) (eide . [(2 0 0) nil "Emacs-IDE" tar ((:url . "http://emacs-ide.tuxfamily.org/"))]) (egison-mode . [(3 3 12) nil "Egison editing mode" single ((:url . "https://github.com/egisatoshi/egison3/blob/master/elisp/egison-mode.el"))]) (edts . [(0 1 0) nil "No description available." tar nil]) (editorconfig . [(0 3) nil "EditorConfig Emacs extension" single ((:url . "http://github.com/editorconfig/editorconfig-emacs#readme"))]) (edit-server . [(1 13) nil "server that responds to edit requests from Chrome" single ((:url . "https://github.com/stsquad/emacs_chrome"))]) (edit-list . [(0 3) nil "edit a single list" single ((:url . "http://mwolson.org/static/dist/elisp/edit-list.el"))]) (edbi . [(0 1 2) ((concurrent (0 3 1)) (ctable (0 1 1)) (epc (0 1 1))) "Emacs Database Interface" tar nil]) (ecukes . [(0 6 15) ((commander (0 6 1)) (espuds (0 2 2)) (ansi (0 3 0)) (dash (2 2 0)) (s (1 8 0)) (f (0 11 0))) "Cucumber for Emacs." tar nil]) (ecb . [(2 -3 24) nil "a code browser for Emacs" tar ((:keywords "browser" "code" "programming" "tools"))]) (ebib . [(1 15 6) nil "a BibTeX database manager" tar ((:keywords "text" "bibtex"))]) (easy-kill-extras . [(0 9 3) ((easy-kill (0 9 4))) "Extra functions for easy-kill." single ((:url . "https://github.com/knu/easy-kill-extras.el") (:keywords "killing" "convenience"))]) (easy-kill . [(0 9 3) ((emacs (24)) (cl-lib (0 5))) "kill & mark things easily" tar ((:url . "https://github.com/leoliu/easy-kill") (:keywords "killing" "convenience"))]) (e2wm-R . [(0 4) ((e2wm (1 2))) "some e2wm plugin and perspective for GNU R" single ((:keywords "window manager" "convenience" "e2wm"))]) (e2wm . [(1 3) nil "simple window manager for emacs" tar ((:keywords "tools" "window manager"))]) (dynamic-fonts . [(0 6 4) ((font-utils (0 7 0)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Set faces based on available fonts" single ((:url . "http://github.com/rolandwalker/dynamic-fonts") (:keywords "faces" "frames"))]) (dvorak-mode . [(1 0 0) nil "Switch to dvorak layout easily" single ((:url . "https://github.com/proofit404/dvorak-mode"))]) (ducpel . [(0 1) ((cl-lib (0 5))) "Logic game with sokoban elements" tar ((:url . "https://github.com/alezost/ducpel") (:keywords "games"))]) (drupal-spell . [(0 2 2) nil "Aspell extra dictionary for Drupal" tar ((:url . "https://github.com/arnested/drupal-spell") (:keywords "wp"))]) (drupal-mode . [(0 5 0) ((php-mode (1 5 0))) "Advanced minor mode for Drupal development" tar ((:url . "https://github.com/arnested/drupal-mode") (:keywords "programming" "php" "drupal"))]) (drag-stuff . [(0 1 0) nil "Drag stuff (lines, words, region, etc...) around" tar nil]) (dispass . [(1 1 2) nil "Emacs wrapper for DisPass" single ((:url . "http://projects.ryuslash.org/dispass.el/") (:keywords "processes"))]) (discover . [(0 3) ((makey (0 3))) "discover more of Emacs" single nil]) (dired-k . [(0 11) ((cl-lib (0 5)) (emacs (24))) "highlight dired buffer by file size, modified time, git status" tar ((:url . "https://github.com/syohex/emacs-dired-k"))]) (dired-efap . [(0 8) nil "Edit Filename At Point in a dired buffer" single ((:keywords "dired" "environment" "files" "renaming"))]) (diminish . [(0 44) nil "Diminished modes are minor modes with no modeline display" single ((:url . "http://www.eskimo.com/~seldon") (:keywords "extensions" "diminish" "minor" "codeprose"))]) (dim-autoload . [(1 1 2) nil "dim complete autoload cookie lines" single ((:url . "http://github.com/tarsius/dim-autoload") (:keywords "convenience"))]) (digistar-mode . [(0 3) nil "major mode for Digistar scripts" single ((:keywords "languages"))]) (dictionary . [(1 10) nil "No description available." single nil]) (desktop-registry . [(1 2 0) nil "Keep a central registry of desktop files" single ((:url . "http://projects.ryuslash.org/desktop-registry/") (:keywords "convenience"))]) (demangle-mode . [(1 0) ((emacs (24)) (cl-lib (0 1))) "Automatically demangle C++ symbols" single ((:keywords "c" "tools"))]) (deft . [(0 5 1) nil "quickly browse, filter, and edit plain text notes" single ((:url . "http://jblevins.org/projects/deft/") (:keywords "plain text" "notes" "simplenote" "notational velocity"))]) (deferred . [(0 3 2) nil "Simple asynchronous functions for emacs lisp" single ((:url . "https://github.com/kiwanami/emacs-deferred") (:keywords "deferred" "async"))]) (dedicated . [(1 0 0) nil "A very simple minor mode for dedicated buffers" single ((:keywords "dedicated" "buffer"))]) (dash-functional . [(2 9 0) ((dash (2 0 0)) (emacs (24))) "Collection of useful combinators for Emacs Lisp" single ((:keywords "lisp" "functions" "combinators"))]) (dash . [(2 9 0) nil "A modern list library for Emacs" single ((:keywords "lists"))]) (dart-mode . [(0 9) nil "Major mode for editing Dart files" single ((:url . "http://code.google.com/p/dart-mode") (:keywords "language"))]) (d-mode . [(2 0 6) nil "D Programming Language mode for (X)Emacs" single ((:keywords "d" "programming" "language" "emacs" "cc-mode"))]) (cython-mode . [(0 21 2 2) nil "Major mode for editing Cython files" single nil]) (cyberpunk-theme . [(1 10) nil "Cyberpunk Color Theme" single ((:keywords "color" "theme" "cyberpunk"))]) (cuda-mode . [(1 0 0) nil "NVIDIA CUDA Major Mode" single ((:keywords "c" "languages"))]) (ctags-update . [(0 2 0) nil "(auto) update TAGS in parent directory using exuberant-ctags" single ((:url . "https://github.com/jixiuf/helm-etags-plus") (:keywords "exuberant-ctags" "etags"))]) (ctags . [(1 1 1) nil "No description available." single nil]) (ctable . [(0 1 2) nil "Table component for Emacs Lisp" single ((:url . "https://github.com/kiwanami/emacs-ctable") (:keywords "table"))]) (cryptol-mode . [(0 1 0) nil "Cryptol major mode for Emacs" single ((:url . "http://github.com/thoughtpolice/cryptol-mode") (:keywords "cryptol" "cryptography"))]) (crm-custom . [(0 4) nil "Alternate `completing-read-multiple' that uses `completing-read'" single ((:url . "https://github.com/DarwinAwardWinner") (:keywords "completion" "minibuffer" "multiple elements"))]) (creds . [(0 0 6 1) ((s (1 9 0)) (dash (2 5 0))) "A parser credentials file library (not limited to credentials entries)" tar nil]) (cpputils-cmake . [(0 4 18) nil "Easy real time C++ syntax check and intellisense if you use CMake" tar nil]) (cperl-mode . [(6 2) nil "Perl code editing commands for Emacs" single ((:keywords "languages" "perl"))]) (connection . [(1 10) nil "No description available." single nil]) (conkeror-minor-mode . [(1 6 1) nil "Mode for editing conkeror javascript files." single ((:url . "http://github.com/BruceConnor/conkeror-minor-mode") (:keywords "programming" "tools"))]) (concurrent . [(0 3 2) ((deferred (0 3 1))) "Concurrent utility functions for emacs lisp" single ((:url . "https://github.com/kiwanami/emacs-deferred/blob/master/README-concurrent.markdown") (:keywords "deferred" "async" "concurrent"))]) (company-tern . [(0 2 0) ((company (0 8 0)) (tern (0 0 1)) (dash (2 8 0)) (dash-functional (2 8 0)) (s (1 9 0)) (cl-lib (0 5 0))) "Tern backend for company-mode" single ((:url . "https://github.com/proofit404/company-tern"))]) (company-ghc . [(0 1 7) ((cl-lib (0 5)) (company (0 8 0)) (ghc (4 1 1)) (emacs (24))) "company-mode ghc-mod backend" single ((:url . "https://github.com/iquiw/company-ghc") (:keywords "haskell" "completion"))]) (company . [(0 8 6) ((emacs (24 1)) (cl-lib (0 5))) "Modular text completion framework" tar ((:url . "http://company-mode.github.io/") (:keywords "abbrev" "convenience" "matching"))]) (commander . [(0 7 0) ((s (1 6 0)) (dash (2 0 0)) (cl-lib (0 3)) (f (0 6 1))) "Emacs command line parser" single ((:url . "http://github.com/rejeep/commander.el") (:keywords "cli" "argv"))]) (colorsarenice-theme . [(1 0 12) ((emacs (24))) "A color theme." tar nil]) (color-theme-sanityinc-tomorrow . [(1 14) nil "A version of Chris Kempson's various Tomorrow themes" tar nil]) (color-theme-sanityinc-solarized . [(2 27) nil "A version of Ethan Schoonover's Solarized themes" tar nil]) (coffee-mode . [(0 5 5) ((emacs (24 1)) (cl-lib (0 5))) "Major mode to edit CoffeeScript files in Emacs" single ((:url . "http://github.com/defunkt/coffee-mode") (:keywords "coffeescript" "major" "mode"))]) (codic . [(0 2) ((cl-lib (0 5))) "Search Codic (codic.jp) naming dictionaries" tar ((:url . "https://github.com/syohex/emacs-codic"))]) (cmake-mode . [(3 0 2) nil "major-mode for editing CMake sources" single nil]) (cmake-ide . [(0 2) nil "No description available." single nil]) (cm-mode . [(1 1) nil "Minor mode for CriticMarkup" single ((:keywords "text" "markdown"))]) (clojure-test-mode . [(3 0 0) ((clojure-mode (1 7)) (cider (0 4 0))) "Minor mode for Clojure tests" single ((:url . "http://emacswiki.org/cgi-bin/wiki/ClojureTestMode") (:keywords "languages" "lisp" "test"))]) (clojure-snippets . [(1 0 0) ((yasnippet (0 8 0))) "Yasnippets for clojure" tar nil]) (clojure-mode-extra-font-locking . [(3 0 0) ((clojure-mode (3 0))) "Extra font-locking for Clojure mode" single ((:url . "http://github.com/clojure-emacs/clojure-mode") (:keywords "languages" "lisp"))]) (clojure-mode . [(3 0 0) ((emacs (24 1))) "Major mode for Clojure code" single ((:url . "http://github.com/clojure-emacs/clojure-mode") (:keywords "languages" "clojure" "clojurescript" "lisp"))]) (clojure-cheatsheet . [(0 2 2) ((helm (1 5 3)) (cider (0 1 8))) "The Clojure Cheatsheet for Emacs" single ((:url . "https://github.com/krisajenkins/clojure-cheatsheet") (:keywords "clojure" "nrepl" "cheatsheet" "helm"))]) (clj-refactor . [(0 12 0) ((s (1 8 0)) (dash (2 4 0)) (yasnippet (0 6 1)) (paredit (22)) (multiple-cursors (1 2 2))) "A collection of clojure refactoring functions" single ((:keywords "convenience"))]) (clips-mode . [(0 7) nil "Major mode for editing CLIPS code and REPL" tar nil]) (cl-lib-highlight . [(1 0 0) ((cl-lib (0 3))) "full cl-lib font-lock highlighting" single ((:url . "https://github.com/skeeto/cl-lib-highlight"))]) (cider . [(0 7 0) ((clojure-mode (2 0 0)) (cl-lib (0 3)) (dash (2 4 1)) (pkg-info (0 4)) (emacs (24))) "Clojure Integrated Development Environment and REPL" tar ((:url . "http://www.github.com/clojure-emacs/cider") (:keywords "languages" "clojure" "cider"))]) (charmap . [(0 0 1) nil "Unicode table for Emacs" single ((:url . "https://github.com/lateau/charmap") (:keywords "unicode" "character" "ucs"))]) (cfengine-code-style . [(3 6 2) nil "C code style for CFEngine project." single ((:url . "https://github.com/cfengine/core"))]) (cerbere . [(0 1 0) ((s (1 9 0)) (f (0 16 0)) (go-mode (20140409)) (pkg-info (0 5))) "Unit testing in Emacs for several programming languages" tar ((:url . "https://github.com/nlamirault/cerbere") (:keywords "python" "go" "php" "tests" "tdd"))]) (cdlatex . [(4 7) nil "Fast input methods for LaTeX environments and math" single ((:keywords "tex"))]) (cask . [(0 7 2) ((s (1 8 0)) (dash (2 2 0)) (f (0 16 0)) (epl (0 5)) (shut-up (0 1 0)) (cl-lib (0 3)) (package-build (0 1))) "Cask: Project management for Emacs package development" tar ((:url . "http://github.com/cask/cask") (:keywords "speed" "convenience"))]) (calfw . [(1 3) nil "Calendar view framework on Emacs" tar ((:keywords "calendar"))]) (cake2 . [(2 1 0) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (ht (2 0)) (json (1 2)) (cake-inflector (1 1 0)) (historyf (0 0 8)) (anything (1 3 9))) "CakePHP2 Minor Mode" tar ((:url . "http://code.101000lab.org"))]) (cake-inflector . [(1 1 1) ((s (1 9 0))) "Lazy porting CakePHP infrector.php to el" single ((:url . "https://github.com/k1LoW/emacs-cake-inflector"))]) (cake . [(1 4 3) ((cake-inflector (1 1 0)) (historyf (0 0 8)) (anything (1 3 9))) "CakePHP Minor Mode" tar ((:url . "https://github.com/k1LoW/emacs-cake"))]) (cacoo . [(2 1 2) ((concurrent (0 3 1))) "Minor mode for Cacoo : http://cacoo.com" tar nil]) (button-lock . [(1 0 0) nil "Clickable text defined by regular expression" single ((:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "extensions"))]) (butler . [(0 2 3) ((deferred (3 1)) (json (1 2)) (emacs (24))) "Emacs client for Jenkins" tar nil]) (bundler . [(1 1 0) ((inf-ruby (2 1))) "Interact with Bundler from Emacs" single ((:url . "http://github.com/tobiassvn/") (:keywords "bundler" "ruby"))]) (bug-reference-github . [(0 2 0) nil "Automatically set `bug-reference-url-format' in Github repositories." single ((:url . "https://github.com/arnested/bug-reference-github") (:keywords "programming" "tools"))]) (bufshow . [(0 1 0) nil "No description available." single nil]) (buffer-utils . [(0 1 0) nil "Buffer-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/buffer-utils") (:keywords "extensions"))]) (buffer-move . [(0 6 1) nil "" single ((:url . "https://github.com/lukhas/buffer-move") (:keywords "lisp" "convenience"))]) (browse-url-dwim . [(0 6 8) ((string-utils (0 3 2))) "Context-sensitive external browse URL or Internet search" single ((:url . "http://github.com/rolandwalker/browse-url-dwim") (:keywords "hypermedia"))]) (browse-kill-ring . [(1 6 0) nil "interactively insert items from kill-ring" single ((:url . "https://github.com/browse-kill-ring/browse-kill-ring") (:keywords "convenience"))]) (bog . [(0 6 0) ((org (8 0 0)) (dash (2 5 0))) "Extensions for research notes in Org mode" single ((:url . "https://github.com/kyleam/bog") (:keywords "bibtex" "org-mode"))]) (birds-of-paradise-plus-theme . [(0 1 1) nil "A brown/orange light-on-dark theme for Emacs 24 (deftheme)." single ((:url . "https://github.com/jimeh/birds-of-paradise-plus-theme.el") (:keywords "themes"))]) (bind-key . [(20140601) nil "A simple way to manage personal keybindings" single ((:url . "https://github.com/jwiegley/use-package") (:keywords "keys" "keybinding" "config" "dotemacs"))]) (beeminder . [(1 0 0) nil "Emacs interface for Beeminder" single ((:keywords "beeminder"))]) (bbdb2erc . [(0 1 3) ((bbdb (3 0))) "make bbdb show if pal is online with ERC, click i to chat" single ((:keywords "irc" "contacts" "chat" "client" "internet"))]) (bbdb-vcard . [(0 3) nil "vCard import/export for BBDB" tar ((:url . "http://github.com/trebb/bbdb-vcard") (:keywords "data" "calendar" "mail" "news"))]) (bbcode-mode . [(2 0 0) nil "Major mode for writing BBCode markup" single ((:url . "https://github.com/ejmr/bbcode-mode"))]) (back-button . [(0 6 6) ((nav-flash (1 0 0)) (smartrep (0 0 3)) (ucs-utils (0 7 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Visual navigation through mark rings" single ((:url . "http://github.com/rolandwalker/back-button") (:keywords "convenience" "navigation" "interface"))]) (babel . [(1 4) nil "interface to web translation services such as Babelfish" single ((:keywords "translation" "web"))]) (autopair . [(0 6 1) ((cl-lib (0 3))) "Automagically pair braces and quotes like TextMate" single ((:url . "http://autopair.googlecode.com") (:keywords "convenience" "emulations"))]) (auto-shell-command . [(1 0 0) ((deferred (20130312)) (popwin (20130329))) "Run the shell command asynchronously that you specified when you save the file." single ((:keywords "shell" "save" "async" "deferred" "auto"))]) (auto-indent-mode . [(0 126) nil "Auto indent Minor mode" tar ((:url . "https://github.com/mlf176f2/auto-indent-mode.el/") (:keywords "auto" "indentation"))]) (auto-dictionary . [(1 1) nil "automatic dictionary switcher for flyspell" single ((:url . "http://nschum.de/src/emacs/auto-dictionary/") (:keywords "wp"))]) (auto-complete-exuberant-ctags . [(0 0 7) ((auto-complete (1 4 0))) "Exuberant ctags auto-complete.el source" single ((:url . "http://code.101000lab.org") (:keywords "anto-complete" "exuberant ctags"))]) (auto-complete-clang-async . [(0 5) nil "Auto Completion source for clang for GNU Emacs" single ((:keywords "completion" "convenience"))]) (auto-complete . [(1 4 0) ((popup (0 5 0))) "Auto Completion for GNU Emacs" tar nil]) (auto-compile . [(1 2 1) ((cl-lib (0 2)) (packed (0 3 4))) "automatically compile Emacs Lisp libraries" single ((:url . "http://tarsius.github.com/auto-compile") (:keywords "compile" "convenience" "lisp"))]) (aurel . [(0 6) nil "Search, get info, vote and download AUR packages" single ((:url . "https://github.com/alezost/aurel") (:keywords "tools"))]) (async . [(1 2) nil "Asynchronous processing in Emacs" tar nil]) (apples-mode . [(0 0 2) nil "Major mode for editing and executing AppleScript code" tar ((:keywords "applescript" "languages"))]) (anzu . [(0 41) ((cl-lib (0 5)) (emacs (24))) "Show number of matches in mode-line while searching" single ((:url . "https://github.com/syohex/emacs-anzu"))]) (anything-replace-string . [(0 9 2) ((anything (1 3 9))) "`replace-string' and `query-replace' `anything.el' interface" single ((:url . "http://code.101000lab.org"))]) (anything-exuberant-ctags . [(0 1 2) ((anything (1 3 9))) "Exuberant ctags anything.el interface" single ((:url . "http://code.101000lab.org") (:keywords "anything" "exuberant ctags"))]) (anything . [(1 3 9) nil "open anything / QuickSilver-like candidate-selection framework" tar ((:url . "http://repo.or.cz/w/anything-config.git") (:keywords "files" "frames" "help" "matching" "outlines" "processes" "tools" "convenience" "anything"))]) (anyins . [(0 1 1) nil "Insert content at multiple places from shell command or kill-ring" single ((:url . "http://github.com/antham/anyins") (:keywords "insert" "rectangular"))]) (anti-zenburn-theme . [(2 1) nil "Low-contrast Zenburn-inverted theme" single ((:url . "https://github.com/m00natic/anti-zenburn-theme"))]) (ansible-doc . [(0 1) ((emacs (24 1))) "Ansible documentation Minor Mode" single ((:url . "https://github.com/lunaryorn/ansible-doc.el") (:keywords "tools" "help"))]) (ansible . [(0 0 2) ((s (1 9 0)) (f (0 16 2))) "Ansible minor mode" tar ((:url . "http://101000lab.org"))]) (ansi . [(0 4 0) ((s (1 6 1)) (dash (1 5 0)) (noflet (0 0 11))) "Turn string into ansi strings" single ((:url . "http://github.com/rejeep/ansi") (:keywords "color" "ansi"))]) (angular-snippets . [(0 2 3) ((s (1 4 0)) (dash (1 2 0))) "Yasnippets for AngularJS" tar nil]) (anaphora . [(1 0 0) nil "anaphoric macros providing implicit temp variables" single ((:url . "http://github.com/rolandwalker/anaphora") (:keywords "extensions"))]) (anaconda-mode . [(0 1 0) nil "No description available." tar nil]) (alect-themes . [(0 6) nil "Configurable color themes (light, dark and black) for Emacs 24" tar nil]) (ag . [(0 44) nil "A front-end for ag ('the silver searcher'), the C ack replacement." single nil]) (aes . [(0 6) nil "Implementation of AES" single ((:url . "https://github.com/gaddhi/aes") (:keywords "data" "tools"))]) (adoc-mode . [(0 6 2) ((markup-faces (1 0 0))) "a major-mode for editing AsciiDoc files in Emacs" single ((:url . "https://github.com/sensorflo/adoc-mode/wiki") (:keywords "wp" "asciidoc"))]) (actionscript-mode . [(7 2 2) nil "A simple mode for editing Actionscript 3 files" single ((:keywords "language" "modes"))]) (ack-and-a-half . [(1 2 0) nil "Yet another front-end for ack" single ((:url . "http://technosorcery.net"))]) (ace-window . [(0 4 0) ((ace-jump-mode (2 0))) "Quickly switch windows using `ace-jump-mode'." single ((:url . "https://github.com/abo-abo/ace-window") (:keywords "cursor" "window" "location"))]) (ace-jump-mode . [(2 0) nil "a quick cursor location minor mode for emacs" single ((:url . "https://github.com/winterTTr/ace-jump-mode/") (:keywords "motion" "location" "cursor"))]) (ac-slime . [(0 7) ((auto-complete (1 4)) (slime (2 9)) (cl-lib (0 5))) "An auto-complete source using slime completions" single ((:url . "https://github.com/purcell/ac-slime"))]) (ac-octave . [(0 4) ((auto-complete (1 4 0))) "An auto-complete source for Octave" single ((:url . "https://github.com/coldnew/ac-octave") (:keywords "octave" "auto-complete" "completion"))]) (ac-ispell . [(0 6) ((auto-complete (1 4))) "ispell completion source for auto-complete" single ((:url . "https://github.com/syohex/emacs-ac-ispell"))]) (ac-inf-ruby . [(0 4) ((inf-ruby (2 3 2)) (auto-complete (1 4))) "Enable auto-complete in inf-ruby sessions" single ((:keywords "languages" "tools"))]) (ac-helm . [(2 1) ((helm (20130328)) (auto-complete (1 4 0)) (popup (0 5 0))) "Auto Complete with Helm" single ((:keywords "completion" "convenience" "helm"))]) (ac-haskell-process . [(0 4) ((auto-complete (1 4)) (haskell-mode (13))) "Haskell auto-complete source which uses the current haskell process" single ((:keywords "languages"))]) (ac-geiser . [(0 1) ((geiser (0 5)) (auto-complete (1 4))) "Auto-complete backend for geiser" tar nil]) (ac-etags . [(0 6) ((auto-complete (1 4))) "etags/ctags completion source for auto-complete" single ((:url . "https://github.com/syohex/emacs-ac-etags"))]) (ac-dcd . [(0 4) ((auto-complete (1 3 1)) (flycheck-dmd-dub (0 7))) "Auto Completion source for dcd for GNU Emacs" single ((:url . "http://github.com/atilaneves/ac-dcd") (:keywords "languages"))]) (ac-cider . [(0 2 0) ((cider (0 6 0)) (auto-complete (1 4))) "Clojure auto-complete sources using CIDER" single ((:url . "https://github.com/clojure-emacs/ac-cider") (:keywords "languages" "clojure" "nrepl" "cider" "compliment"))]) (ac-cake2 . [(1 0 1) ((cake2 (1 1 2)) (auto-complete (1 4 0))) "CakePHP 2 Minor Mode auto-complete.el source" single ((:url . "http://code.101000lab.org"))]) (ac-cake . [(1 0 0) ((cake (1 4 2)) (auto-complete (1 4))) "CakePHP Minor Mode auto-complete.el source" single ((:url . "http://code.101000lab.org"))]) (abc-mode . [(20140225 944) nil "Major mode for editing abc music files" single ((:keywords "local" "docs"))])) diff --git a/elpa/python-mode-6.1.3/INSTALL b/elpa/python-mode-6.1.3/INSTALL deleted file mode 100644 index 375bd860c..000000000 --- a/elpa/python-mode-6.1.3/INSTALL +++ /dev/null @@ -1,24 +0,0 @@ -Put the respective lines into your Emacs initialisation file: - -(add-to-list 'load-path "PATH/TO/PYTHON-MODE/") -(setq py-install-directory "PATH/TO/PYTHON-MODE/") -(require 'python-mode) - -To change the Python default shell use - -M-x customize-variable py-shell-name - -or write - -(setq py-shell-name "MY-PYTHON") -resp. -(setq py-shell-name "PATH/TO/MY-PYTHON") - -IPython users for example may insert "ipython" with -M-x customize-variable py-shell-name - -or in init-file - -(setq py-shell-name "ipython") -resp. -(setq py-shell-name "PATH/TO/ipython") diff --git a/elpa/python-mode-6.1.3/LICENSE b/elpa/python-mode-6.1.3/LICENSE deleted file mode 100644 index 94a9ed024..000000000 --- a/elpa/python-mode-6.1.3/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/elpa/python-mode-6.1.3/NEWS b/elpa/python-mode-6.1.3/NEWS deleted file mode 100644 index 540d1d424..000000000 --- a/elpa/python-mode-6.1.3/NEWS +++ /dev/null @@ -1,915 +0,0 @@ -Python Mode News -================ - -New in version 6.1.3 ---------------------- - -PEP8 indent-alternatives when closing a list implemented - -Boolean `py-close-at-start-column-p', default is nil - -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) - -When non-nil, it will be lined up under the first character of the line that starts the multi-line construct, as in: - -my_list = [ - 1, 2, 3, - 4, 5, 6, -] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', -) - -- Keys C-M-a, C-M-e usable for all top-level form, lp:1191078 - - Boolean `py-defun-use-top-level-p' - If non-nil, beginning- end-of-defun forms will use - `py-beginning-of-top-level', `py-end-of-top-level', - mark-defun marks top-level form at point etc. - -Keys C-M-a, C-M-e usable for all top-level form, lp:1191078 - -- New commands: - py-beginning-of-block-current-column - "Reach the beginning of block which starts at current column " - - py-beginning-of-top-level - py-beginning-of-top-level - py-end-of-top-level - py-mark-top-level - py-copy-top-level - py-delete-top-level - py-kill-top-level - py-execute-top-level - py-top-level-form-p - py-comment-top-level - py-beginning-of-top-level-p - -- `minor-block' commands added - A minor block is started by a `for', `if', `try' or `with', - while block covers also `def' or `class' - -- variable `py-keep-windows-configuration', default is nil - Setting `py-keep-windows-configuration' to `t' will - restore windows-configuration regardless of - `py-switch-buffers-on-execute-p' and - `py-split-windows-on-execute-p' settings. However, if - an error occurs, it's displayed. - - To suppres window-changes due to error-signaling - also, set `py-keep-windows-configuration' onto 'force - -- boolean empty-line-closes-p, default is nil - When non-nil, dedent after empty line following block - If non-nil, a C-j from empty line would dedent. - - if True: - print("Part of the if-statement") - - print("Not part of the if-statement") - -- boolean py-debug-p, default is nil - When non-nil, keep resp. store information useful for - debugging. Temporary files are not deleted. Other - functions might implement some logging etc. - -- heuristic exit - new var `py-max-specpdl-size', default is `max-specpdl-size' - py-end-of-statement will error if number of - `py-max-specpdl-size' loops is completed, thus avoiding - a hang from a possibly eternal loop. - -- `py-statement' no longer refferred to `py-copy-statement' - Same with block, def, expression etc. `py-statement' made - own command, which returns statement, a string. - -- boolean `py-max-help-buffer-p', default is nil - If "*Python-Help*"-buffer be the only visible. - -New in version 6.1.2 ---------------------- -- simplified menu - -- `py-execute-...'-commands return result as string - Controlled by boolean `py-store-result-p', Default is nil - When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. - -- commands deleting all commented lines: - `py-delete-comments-in-def-or-class' - `py-delete-comments-in-class' - `py-delete-comments-in-block' - `py-delete-comments-in-region' - -- boolean `py-indent-paren-spanned-multilines-p, default is nil - If non-nil, indents elements of list a value of `py-indent-offset' to first element: - def foo(): - if (foo && - baz): - bar() - - Default lines up with first element: - - def foo(): - if (foo && - baz): - bar() - -- `py-output-buffer' made customizable - See boolean `py-enforce-output-buffer-p' - -- exceptions following executed regions made point to source - -- command `py-empty-out-list-backward' - Deletes all elements from list before point - With when cursor after - mystring[0:1] - -------------^ - ==> - mystring[] - ---------^ - In result cursor is insided emptied delimited form." - -- `py-minor-expression' reconsidered, numeric args dropped - grasps keyword-arguments - -- boolean `py-electric-kill-backward-p', default is nil. - If behind a delimited form of braces, brackets or parentheses, - `py-electric-backspace' runs `py-empty-out-list-backward' - -- py-flake8-run, flake8 API - -- customizable `py-backslashed-lines-indent-offset' - -- boolean `py-pylint-offer-current-p' - If current buffers file should be offered for check. - Otherwise `py-pylint-run' looks up filename from history - -- boolean `py-prompt-on-changed-p' - When called interactively, ask for save before a - changed buffer is sent to interpreter. - -- customizable `py-closing-list-space' - Number of chars, closing parentesis outdent from opening - -- customizable `py-uncomment-indents-p' - When non-nil, after uncomment indent lines. - -- boolean `py-load-skeletons-p' - If skeleton definitions should be loaded - -- boolean `py-if-name-main-permission-p' - Allows execution of code inside blocks started by - if __name__== '__main__' - -- boolean `py-highlight-error-source-p', default is nil - When py-execute-... commands raise an error, respective code in source-buffer will be highlighted. - -- `py-remove-overlays-at-point', command - Remove overlays as set when `py-highlight-error-source-p' is non-nil. - -- `py-which-def-or-class', command, now used `which-function-mode' - -- unused variable `py-backspace-function' removed - -- Bundled third-party-stuff removed as reported conflicting at emacs-mirror, lp:1153998 - affects autopair.el, smart-operator.el - Kept menu switches resp. commands will issue a warning - -- dropped `py-paragraph-fill-docstring-p'; just `fill-paragraph' should DTRT - -- `py-set-pager-cat-p', default is nil - If non-nil, $PAGER is set to 'cat' - -- in directory doc customizable variables are listed: - variables-python-mode.org, variables-python-mode.rst - -New in version 6.1.1 ---------------------- - -- comment-related commands: - py-uncomment - py-comment-block, py-comment-clause, - py-comment-block-or-clause, py-comment-def, - py-comment-class, py-comment-def-or-class, - py-comment-statement - -- boolean `py-set-fill-column-p' - If `t', enables use Python specific `fill-column' according to - `py-docstring-fill-column', default is 72 - and `py-comment-fill-column, default is 79 - -- boolean `py-tab-shifts-region-p' - when `t', TAB will indent/cycle the region, not just the current line. - -- boolean `py-tab-indents-region-p' - when `t', when first TAB doesn't shift, `indent-region' is called - -- command from RET customizable via `py-return-key': - `py-newline-and-indent', `newline' or `py-newline-and-dedent' - -- boolean `py-use-font-lock-doc-face-p', default is nil - If non-nil, documention strings get `font-lock-doc-face' - -- boolean `py-newline-delete-trailing-whitespace-p' - Delete trailing whitespace maybe left by `py-newline-and-indent' - -- `py-electric-comment-p' new default nil - -- py-up minor API change - If inside a delimited form --string or list-- go to it's beginning - If not at beginning of a statement or block, go to it's beginning - If at beginning of a statement or block, go to beginning one level above of c - -- py-down minor API change: - Go to beginning of one level below of compound statement or definition at point. - If no statement or block below, but a delimited form --string or list-- go to it's beginning. - Repeated call from there will behave like down-list. - -- commands make underscore syntax changes easier: - toggle-py-underscore-word-syntax-p - py-underscore-word-syntax-p-on - py-underscore-word-syntax-p-off - -- py-update-imports removed - Do not maintain a static variable containing needed imports - Determine imports on the fly rather, as it might have changed - -- variable `py-fill-docstring-style' renamed `py-docstring-style' - -New in version 6.1.0 ---------------------- - -- py-up - Go to beginning one level above of compound statement or definition at point. -- py-down - Go to beginning one level below of compound statement or definition at point. - -- Customizable output directory - After checking for a remote shell, the following variables are consulted: - - py-use-current-dir-when-execute-p, default t - When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands - - py-fileless-buffer-use-default-directory-p, default t - When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shell" - - py-keep-shell-dir-when-execute-p, default nil - Don't change Python shell's current working directory when sending code. - - `py-execute-directory', default nil - - If nothing was set so far, $VIRTUAL_ENV and $HOME are queried. - -- Set of commands calling Python3.3 - -- fill docstrings according to style, commands - py-fill-string-django - py-fill-string-onetwo - py-fill-string-pep-257 - py-fill-string-pep-257-nn - py-fill-string-symmetric - - Customizable variable `py-fill-docstring-style' provides default value - used by `py-fill-string', `py-fill-paragraph' - - DJANGO: - - \"\"\" - Process foo, return bar. - \"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - - ONETWO: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - - PEP-257: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - - PEP-257-NN: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - - SYMMETRIC: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\"" - - Built upon code seen at python.el, thanks Fabian - -- `py-down-statement', `py-up-statement' - -- toggle-py-split-windows-on-execute-p -- py-split-windows-on-execute-p-off -- py-split-windows-on-execute-p-on - -- toggle-py-switch-buffers-on-execute-p -- py-switch-buffers-on-execute-p-on -- py-switch-buffers-on-execute-p-off - -- `py-shell-switch-buffers-on-execute-p' renamed `py-switch-buffers-on-execute-p' - -New in version 6.0.12 ---------------------- - -- py-sexp-function, - When set, it's value is called instead of `forward-sexp', `backward-sexp - Choices are py-partial-expression, py-expression, default nil - -- `py-partial-expression' reconsidered. - Beside common moves like `defun', `statement' specific Python-mode edits are delivered: - - `py-expression' and `py-partial-expression'. - - Statement below is considered composed of two `py-expression' - - a = ['spam', 'eggs', 100, 1234] - |_| |_________________________| - - Assigment operator and all inside comments is ignored. - - `py-partial-expression' would match six sections - - a = ['spam', 'eggs', 100, 1234] - |_| |_____| |____| |__| |__| - |_________________________| - - When traversing code, `py-partial-expression' climbs down and up - all levels encountered, i.e. at opening `[' `py-expression' would return ['spam', 'eggs', 100, 1234], while one char behind at `'' - it yields `'spam',' - -- `py-find-definition' also detects non-imported definition in current buffer - -- Choice between `py-imenu-create-index-new' and series 5. - py-imenu-create-index-function made easier. - Customizable variable `py-imenu-create-index-function' provided, see also - command in PyTools - -- New commands addressing BOL as start/end: - py-beginning-of-block-bol - py-end-of-block-bol - py-mark-block-bol - py-copy-block-bol - py-kill-block-bol - py-delete-block-bol - py-end-of-clause-bol - etc. - -- While commands "py-beginning..." resp. "py-end..." compute the context, - selecting the corresponding beginning or end, - new "py-up...", "py-down..." jump regexp-based to the - next element in buffer. - See also menu PyEdit. - -New in version 6.0.11 ---------------------- - -- improved Pymacs based code completion: - - Completion of symbols from imported modules, functions, classes, - module/class-level data members and instance variables in the current - buffer. The information for this completion is updated whenever the file - is saved. - - Completion of local variables and function parameters. - - Type deduction from constructor calls and literals. - - Show help for modules, classes and functions. - - Go to definition of modules, classes and functions. - - Show signature of functions. - - Support for auto-complete and company. - -- remote shell support - -- extended version of smart-operator added - original smart-operator.el authored by - William Xu - Url: http://xwl.appspot.com/ref/smart-operator.el - -- py-electric-colon extended - if `py-electric-colon-newline-and-indent-p' is non-nil, - `py-electric-colon' calls `newline-and-indent' - -- boolean `py-no-completion-calls-dabbrev-expand-p' - If completion function should call dabbrev-expand - when no completion found. Default is `t' - -- boolean `py-shell-prompt-read-only', default t - sets `comint-prompt-read-only', avoid unintentional edits - -- customizable history variables/files - py-python-history defaults to "~/.python_history" - py-ipython-history defaults to "~/.ipython/history" - - If py-honor-PYTHONHISTORY-p is `t', $PYTHONHISTORY takes precedence, default is nil - If py-honor-IPYTHONDIR-p is `t', $IPYTHONHISTORY precedes, default is nil - -- customizable boolean `py-trailing-whitespace-smart-delete-p' - Default is nil. Some commands may delete trailing - whitespaces by the way. When editing other peoples - code, this may produce a larger diff than expected - -New in version 6.0.10 --------------------- - -addresses bugs and speed issues - -New in version 6.0.9 --------------------- - -- autopair-mode delivered - Credits to Joao Tavora http://autopair.googlecode.com - see README-AUTOPAIR.org for details - -- Syntax highlighting in Python-shell buffers enabled - boolean `py-fontify-shell-buffer-p', default is nil - -- py-add-abbrev, new command - Similar to `add-mode-abbrev', but uses - `py-partial-expression' before point for expansion to - store, not `word'. Also provides a proposal for new - abbrevs. - - Proposal for an abbrev is composed from the downcased - initials of expansion - provided they are of char-class - [:alpha:] - - For example code below would be recognised as a - `py-expression' composed by three - py-partial-expressions. - - OrderedDict.popitem(last=True) - - Putting the curser at the EOL, M-3 M-x py-add-abbrev - - would prompt "op" for an abbrev to store, as first - `py-partial-expression' beginns with a "(", which is - not taken as proposal. - -- py-edit-abbrevs - Jumps to `python-mode-abbrev-table' - -- modeline enhanced - when a path/to/my/favoured/Python is given with `py-shell-name' - the Python-shell buffer before would display - - *ND path/to/my/favoured/Python* - - now: - - *ptmfP Python* - - boolean `py-modeline-display-full-path-p' - boolean `py-modeline-acronym-display-home-p' - If the modeline acronym should contain chars indicating the home-directory. - -- mode-line indicates "Py" by default - customize `python-mode-modeline-display' - -- Pymacs intergration dropped from trunk - conflicts with classic install being reported - -New in version 6.0.8 - --------------------- - -- `py-pep8-run', new command checking formatting - `py-pep8-help' - -- `py-pyflake-run', new command - Pyflakes is a simple program which checks Python - source files for errors. - It is similar to - PyChecker in scope, but differs in - that it does - not execute the modules to check them. - `py-pyflake-help' - -- `py-pylint-run', new command calls Pylint, - a Python source code analyzer which looks for - programming errors, helps enforcing a coding standard - and sniffs for some code smells (as defined in Martin - Fowler's Refactoring book) . - - Pylint checks length of lines of code, if variable - names are well-formed according to your coding - standard, if declared interfaces are truly - implemented, and much more. Additionally, it is - possible to write plugins. - `py-pylint-doku', `py-pylint-help' - -- py-pyflakespep8-run, combines calls to pyflakes and pep8 - -- respective flymake-modes, - `pyflakespep8-flymake-mode', `pylint-flymake-mode' - etc. See meny PyTools - -New in version 6.0.7 --------------------- - -- make every Python shell acces its own history-file - .python3_history - .python_history - .ipython_history etc. - -- related to shell used - `toggle-force-py-shell-name-p' - `force-py-shell-name-p-on'/off - - making it easier to enforce default py-shell upon execution - - `toggle-force-local-shell' - `py-force-local-shell-on'/off - - If locally indicated Python shell should be taken and - enforced upon sessions execute commands, lp:988091 - -- specific completion: - py-python2-shell-complete, py-python3-shell-complete, - py-python2-script-complete, py-python3-script-complete - -New in version 6.0.6 --------------------- - -- files inside a virtual machine made visible for pdbtrack - -- new commands `py-toggle-split-windows-on-execute', ...-on, ...-off - `py-toggle-shell-switch-buffers-on-execute', ...-on, ...-off - allow `py-execute-buffer' etc. to split/not-split windows, - move cursor onto output or not - -- Behavior of C-u M-x `py-shell' closer to common shell - - C-u 4 prompts for a buffer, - i.e. when a "*Python*" shell is running, - C-u M-x `py-shell' opens a "*Python<2>*" per default - C-u 2 M-x py-shell promts for command-arguments as known from 5th-series - -- `py-intend-tabs-mode' sets default of `indent-tabs-mode', lp:953765 - --- New boolean variable `py-intend-tabs-mode' - Permits value independent from Emacs-wide `indent-tabs-mode' - Commands `py-toggle-indent-tabs-mode', ...-on, ...-off - menu PyTools "Toggle indent-tabs-mode" - -- Extended py-execute-... forms provided for "line" - -- new commands py-beginning/end-of-line - while introduced for internal reasons --because of it's - return values-- they allow repeats, i.e. when already - at end-of-line, jumping to next end etc. - -- new boolean `py-force-py-shell-name-p' - When `t', execution with Python specified in `py-shell-name' is en forced, shebang will have no effect. Default is nil. - -- customizable `py-separator-char', a string, see report lp:975539 - Precedes guessing when not empty, is returned by - function `py-separator-char' - -- nicer `org-cycle' behavior: when new `py-org-cycle-p' it `t', - command `org-cycle' is available at shift-TAB, - -New in version 6.0.5 --------------------- - -- Menu reworked and extended - -- extended commands combine executing statement/block... with dedidi cated/switch... etc. This may remove some need of customization. - -- local environments support started - If calls to common `py-shell' should use local executable - instead of default system Python set - `py-use-local-default' alongside with - `py-shell-local-path' - -- `py-toggle-shells' alias of more powerful `py-switch-shells' - Toggles between the interpreter customized in `py-shell-toggle-1' resp. `py-shell-toggle-2'. Was hard-coded CPython and Jython in earlier versions, now starts with Python2 and Python3 by default. - -- `py-shell-name' accepts PATH/TO/EXECUTABLE - in addition to name of an installed default Python-Shell. - Permits installing commands like - (defun python-XYZ-shell (&optional argprompt) - "Start an Python-XYZ interpreter ... " - (interactive) - (let ((py-shell-name "PATH/TO/PYTHON-XYZ")) - (py-shell argprompt))) - -- new commands `indent-tabs-mode', `toggle-indent-tabs-mode', - `indent-tabs-mode-on', `indent-tabs-mode-off' - - feature after a request at Stack Exchange asked Jul - 13 '11 at 13:23 saying - `tab-width' now follows `py-indent-offset' - -- new command `py-execute-region-default' forces the - systems default Python interpreter to execute, ignores - shebang - - related functions redesigned, `async' argument dropped - `py-execute-region' now reads: - - (defun py-execute-region (start end &optional shell dedicated) - "Send the region to a Python interpreter. - - When called with \\[univeral-argument], execution through `default-value' of `py-shell-name' is forced. - When called with \\[univeral-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. - - When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. " - [ ... ] - -- new `py-number-face', - visible only when customized and `py-use-number-face-p' is `t', - inherits default face - With large files fontifying numbers may cause a delay - Credits to github.com/fgallina/python.el/issues42 - -- new boolean `py-verbose-p' - if `t', reached indent level etc. is messaged - -- new commands py-execute-buffer-dedicated, py-execute-buffer-switch -dedicated - -- `toggle-py-smart-indentation' new command - also `py-smart-indentation-on', -off - -New in version 6.0.4 --------------------- - -- Python shell starts with `python-mode' - that's needed by completion for now - boolean customizable `py-start-run-py-shell' - -- outline-(minor-)mode enabled providing regular - expressions. Customize `py-outline-minor-mode-p' to - switch it on with python-mode - -- Hook delivered to start hs-minor-mode from python-mode - Customize `py-hide-show-minor-mode-p' - Key setting example: - (global-set-key [(super s)] 'hs-hide-all) - (global-set-key [(super S)] 'hs-show-all) - -- Listing of available commands in org-mode and reST - format in directory "doc" - -- Python shells and executing forms may be called as - dedicated process. See commands available \w suffix - "-dedicated". - -- completion fixed: M-TAB completes in Python buffer, TAB - completes in Python shells - -- py-down-FORM-lc commands - Goto beginning of line following end of FORM. - \"-lc\" stands for \"left-corner\" - a complementary command travelling left, whilst `py-end-of-FORM' stops at right corner. - Implemented forms are "block", "clause", "def", "class", "statement". - -- py-down-FORM commands - - like py-down-block introduced in version 6.0.3, - implemented also for "clause", "def", "class", - "statement". - Go to the beginning of next block below - current level. - -New in version 6.0.3 --------------------- - -- ipython integration started - -- commands `ipython', `python2', `python3', `jython', `python' - opening a respective python shell - -- py-shift-block-left, py-shift-block-right etc. - Implemented forms that way are - "paragraph" "block" "clause" "def" "class" "line" "statement" - -- py-dedent - Dedent line according to `py-indent-offset'. With - arg, do it that many times. If point is between - indent levels, dedent to next level. Stops at BOL. - Returns column reached, if dedent done, nil otherwise. - -- py-indent-forward-line - Indent line and move one line forward. If - `py-kill-empty-line' is non-nil, delete an empty - line. When closing a form, use py-close-block et al, - which will move and indent likewise. Returns position. - -- py-close-block, -clause, -def, class - Set indent level to that of beginning of definition. - If final line isn't empty and - `py-close-block-provides-newline' non-nil, insert a - newline. Returns column. - -- new commands specifying the shell override - `py-shell-name' for execution - implemented shells are "python" "python2" "python2.7" - "python3" "python3.2" "jython" - - available with default, -switch and -no-switch - option, i.e. - py-execute-region-python3.2 - py-execute-region-python3.2-switch - py-execute-region-python3.2-no-switch etc. - - Docstring of py-execute-region-python3.2-switch for - example: "Send the region to a common shell calling the - python3.2 interpreter. Ignores setting of - `py-shell-switch-buffers-on-execute', output-buffer - will being switched to." - -- Declarations - Deal with assigments resp. statements in current - level which don't open blocks. Provides common edit - functions as copy, mark, kill, goto beg/end. - - Functions will be used typically to grasp - initialisations resp. assignements of variables - between the definition of a class or method and it's - body, likewise global stuff at the head of a file. - -- column-marker.el - Commands `column-marker-1', `column-marker-2', and - `column-marker-3' each highlight a given column - (using different background colors by default). - - M-x column-marker-1 highlights the column where the - cursor is, in face `column-marker-1'. - - C-u 70 M-x column-marker-2 highlights column 70 in - face `column-marker-2'. - - C-u 70 M-x column-marker-3 highlights column 70 in - face `column-marker-3'. The face `column-marker-2' - highlighting no longer shows. - - C-u M-x column-marker-3 turns off highlighting for - column-marker-3, so face `column-marker-2' - highlighting shows again for column 70. - - C-u C-u M-x column-marker-1 (or -2 or -3) erases all - column highlighting. - - ;; - - Thanks a lot to it's author Rick Bielawski , - to Drew Adams for his care and Emacs Wiki hosting it. - -New in version 6.0.2 --------------------- - -- py-electric-comment - - "Insert a comment. If starting a comment, indent - accordingly. If a numeric argument ARG is provided, - that many colons are inserted non-electrically. With - universal-prefix-key C-u a \"#\" Electric behavior - is inhibited inside a string or comment." - -- New commands `py-partial-expression': - - "." operators delimit a partial-expression on it's - level. - - Given the function below, `py-partial-expression' - called at pipe symbol would copy and return: - - def usage(): - print """Usage: %s - ....""" % ( - os.path.basename(sys.argv[0])) - ------------|------------------------- - ==> path - - os.path.basename(sys.argv[0])) - ------------------|------------------- - ==> basename(sys.argv[0])) - - os.path.basename(sys.argv[0])) - --------------------------|----------- - ==> sys - - os.path.basename(sys.argv[0])) - ------------------------------|------- - ==> argv[0] - - while `py-expression' would copy and return - - ( - os.path.basename(sys.argv[0])) - - ;;;;; - - Also for existing commands a shorthand is defined: - - (defalias 'py-statement 'py-copy-statement) - - which will mark, copy and return. - -- Commands implementing a behavior which customizing of - `py-shell-switch-buffers-on-execute' would do: - - py-execute-buffer-no-switch - py-execute-buffer-switch - py-execute-region-no-switch - py-execute-region-switch - -- Several bugfixes. - -New in version 6.0.1 --------------------- - -- New commands py-expression: - - py-copy-expression - py-mark-expression - py-beginning-of-expression - py-end-of-expression - py-kill-expression - - Also several of bugfixes are done. - -New in version 6.0 --------------------- - -- Finer grained commands, core re-write. - - As shown below for the `mark'-command, delete, - copy, jump to beginning and end of the respective - programming-expressions: - - py-mark-statement - py-mark-block - py-mark-block-or-clause - py-mark-def - py-mark-def-or-class - py-mark-class - py-mark-clause - -- Also a couple of bugfixes are done. - -New in version 5.2.1 --------------------- - -- Syntax highlight as a keyword "lambda:" just like "lambda x:". Given by Dan - Davison. -- Add "python3" as a key for python-mode in interpreter-mode-alist and - auto-mode-alist. - -New in version 5.2.0 --------------------- - -- Fixed filling of triple-quoted strings. - -- Add new font-lock faces for class names and exception names. - -- Do not fill when calling fill-paragraph with point in a region of code. - -- Fixed font-locking of exception names in parenthesized lists. - -- Fixed font-locking of decorators with arguments. - -- Fixed font-locking of triple-quoted strings; single quotes appearing in - triple-quoted strings no longer upset font-locking. - -- Fixed the stack-entry regexp used by pdbtrack so that it now works with - module-level frames. - -- Do not bind C-c C-h; `py-help-at-point' is now on C-c C-e by default. - -- hide-show mode is now supported. - -- When shifting regions right and left, keep the region active in Emacs. diff --git a/elpa/python-mode-6.1.3/PKG-INFO b/elpa/python-mode-6.1.3/PKG-INFO deleted file mode 100644 index 492231c7c..000000000 --- a/elpa/python-mode-6.1.3/PKG-INFO +++ /dev/null @@ -1,11 +0,0 @@ -Metadata-Version: 1.1 -Name: python-mode.el -Version: 6.1.3 -Summary: Major mode for editing Python programs -Home-page: http://launchpad.net/python-mode -Author: Andreas Roehler -Author-email: andreas.roehler@online.de -License: GNU GPLv3, Python License -Download-URL: http://launchpad.net/python-mode/trunk/6.1.3/+download/python-mode.el-6.1.3.tar.gz -Description: UNKNOWN -Platform: UNKNOWN diff --git a/elpa/python-mode-6.1.3/README b/elpa/python-mode-6.1.3/README deleted file mode 100644 index 76e4af0dc..000000000 --- a/elpa/python-mode-6.1.3/README +++ /dev/null @@ -1,197 +0,0 @@ -Put the following into your initialization file: - - (setq py-install-directory "PATH/TO/PYTHON-MODE/") - (add-to-list 'load-path py-install-directory) - (require 'python-mode) - - -Unless other libraries depend on python.el, unloading 'python is recommended, as it seems to destroy python-mode user defined abbreviations: - - (when (featurep 'python) (unload-feature 'python t)) - - - -;;;;;;;;; - -Customize default Python shell as `py-shell-name' - -`py-shell-name' might be an installed executable as -shell command `type' would display, but also a -PATH/TO/(I)PYTHON, of a virtualenv for example - -To change the Python default shell see also INSTALL - -Most python-mode.el commands start with prefix `py-' - -`M-x py- TAB' -displays a list of them in completion-buffer. -See also commands list delivered in directory doc. - -List virtualenv related `M-x virtualenv- TAB' -resp. Pymacs commands `M-x pymacs-' - -Commands related to a specific shell start with -it's name as `ipython-complete'. -Open an installed shell by - -M-x SHELL - -With prefix C-u user is prompted to specify a PATH-TO-LOCAL-SHELL -Also evaluating - -(py-shell nil DEDICATED PATH-TO-LOCAL-SHELL) - -if DEDICATED is set to `t', shell will get an unique name. - -Install a local shell by evaluating - -(defun MY-LOCAL-SHELL () - (interactive) - (py-shell nil DEDICATED PATH-TO-LOCAL-SHELL)) - -;;;;;;;;; - -When code is executed from current buffer, either - -- python-mode-v5-behavior, a quite simple and effective way. - Setting `python-mode-v5-behavior-p' to `t' makes it the default. - -- if a buffer-file exists and buffer is unchanged, it's file is executed as is. - -- in all other cases a temporary file is created. - Setback: in case of error, returned error code points - here, i.e. indicated error-line-numbers are not that of - orginal buffer. - -;;;;;;;;; -To enable code auto-completion: - - (setq py-load-pymacs-p t) - -To use auto-complete, just prepend the following lines: - - (require 'auto-complete-config) - (ac-config-default) - -or for company: - - (autoload 'company-mode "company" nil t) - -If you do not use one of those visual completion interfaces, key bindings exist: - - C-tab complete symbol - - f1 show help - - S-f1 show signature - - f2 go to - -If `py-complete-function' is set, it takes precedence - -;;;;;;;;; - -smart-operator minor mode - -for example with key "+" -inserts " + " - -smart-operator extended by augmented-assigments -C-u + -inserts " += " - -customizable boolean `py-smart-operator-mode-p' - -;;;;;;;;; - -Beside common moves like `defun', `statement' specific Python-mode edits are delivered: - -`py-expression' and `py-partial-expression'. - -Statement below is considered composed of two `py-expression' - -a = ['spam', 'eggs', 100, 1234] -|_| |_________________________| - -Assigment operator and all inside comments is ignored. - -`py-partial-expression' would match six sections - - a = ['spam', 'eggs', 100, 1234] -|_| |_____| |____| |__| |__| - |_________________________| - -When traversing code, `py-partial-expression' climbs down and up -all levels encountered, i.e. at opening `[' `py-expression' would return ['spam', 'eggs', 100, 1234], while one char behind at `'' -it yields `'spam',' - -- py-sexp-function, - When set, it's value is called instead of `forward-sexp', `backward-sexp - Choices are py-partial-expression, py-expression, default nil - -;;;;;;;;; - -Moving, copying, deleting - -When moving over or mark code, commands with suffix -"-bol" take the correspond beginning of line as start -resp. end. Commands without that suffix take the -indentation at the beginning resp. the last printable -character the end - see in menu PyEdit whats implemented. - -While commands "py-beginning..." resp. "py-end..." compute the context, -selecting the corresponding beginning or end -new "py-up...", "py-down..." jump regexp-based to the -next element in buffer. -Listed in PyMenu. - -;;;;;;;;; - -Customize boolean `py-set-fill-column-p' - -If `t', enables use Python specific `fill-column' according to - -`py-docstring-fill-column', default is 72 - -and `py-comment-fill-column, default is 79 - -Comment- and docstring settings might be disabled by -any non-integer value, which means: do not use a -different value of `fill-column' than emacs-wide - -;;;;;;;;; - -- customizable `py-output-buffer'. - - `py-execute-...'-commands arrive in buffer created by - `py-shell'. It's name is composed WRT to Python - version used, it's path etc. If boolean - `py-enforce-output-buffer-p' is non-nil, value of - `py-output-buffer' is taken instead. - -;;;;;;;;; - -Python and IPython - -Start IPython shell after loading python-mode via M-x -ipython, not from plain shell. - -Executing code through IPython should work as with -regular Python, also getting completions from. However, -with IPython, it feels a demi-second slower. Also when -starting a session, first completion might fail, while -succeeding afterwards. Any bug reports, which might -help truck down the issue, are highly appreciated. - -;;;;;;;;; - -Troubleshooting - -Start with Emacs -Q from the directory where python-mode.el lives. -Open python-mode.el and evaluate it. - -Open a file with ending ".py". - -M-x python RET - -a regular Python-shell should appear - -M-x IPython RET - -an IPython-shell should be opened diff --git a/elpa/python-mode-6.1.3/byte-compile-directory.sh b/elpa/python-mode-6.1.3/byte-compile-directory.sh deleted file mode 100644 index 2447de6a2..000000000 --- a/elpa/python-mode-6.1.3/byte-compile-directory.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - # -- byte-compile Emacs Lisp files delivered with python-mode.el - -# Author: Andreas Roehler - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Commentary: Edit the vars pointing to the directories/files -# holding your python-mode for test -# assumes python-mode files in or below current directory - -# Code: - - -# the path -PDIR=`pwd` - -# python-mode file to load -if [ -s "python-components-mode.el" ]; - then - PYTHONMODE='python-components-mode.el' - else - PYTHONMODE='python-mode.el' -fi - -EMACS=emacs -PYMACSDIR=Pymacs - -$EMACS -Q --batch --eval "(message (emacs-version))" --eval "(when (featurep 'python-mode)(unload-feature 'python-mode t))" --eval "(add-to-list 'load-path \"$PDIR/\")" --eval "(add-to-list 'load-path \"$PYMACSDIR/\")" -load "$PDIR/$PYTHONMODE" --eval '(byte-recompile-directory default-directory 1 t)' - - diff --git a/elpa/python-mode-6.1.3/completion/auto-complete-pycomplete.el b/elpa/python-mode-6.1.3/completion/auto-complete-pycomplete.el deleted file mode 100644 index 9b14bc009..000000000 --- a/elpa/python-mode-6.1.3/completion/auto-complete-pycomplete.el +++ /dev/null @@ -1,47 +0,0 @@ -;;; auto-complete-pycomplete.el --- an auto-complete source for pycomplete.el - -;; Copyright (C) 2012 Urs Fleisch - -;; Author: Urs Fleisch -;; Keywords: languages, processes, python, oop - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; The ac-source can be enabled solely using -;; (setq ac-sources '(ac-source-pycomplete)) -;; or before the other sources using -;; (add-to-list 'ac-sources 'ac-source-pycomplete). - -;;; Code: - -(require 'pycomplete) -(require 'auto-complete) - -(defun ac-pycomplete-document (symbol) - (let* ((full-prefix (py-complete-enhanced-symbol-before-point)) - (full-symbol (concat (substring full-prefix 0 (- (length ac-prefix))) symbol))) - (py-complete-docstring-for-symbol full-symbol))) - -(defun ac-pycomplete-candidates () - (py-complete-completions-for-symbol - (py-complete-enhanced-symbol-before-point))) - -(ac-define-source pycomplete - '((candidates . ac-pycomplete-candidates) - (document . ac-pycomplete-document))) - -(provide 'auto-complete-pycomplete) -;;; auto-complete-pycomplete.el ends here diff --git a/elpa/python-mode-6.1.3/completion/company-pycomplete.el b/elpa/python-mode-6.1.3/completion/company-pycomplete.el deleted file mode 100644 index 802cfb413..000000000 --- a/elpa/python-mode-6.1.3/completion/company-pycomplete.el +++ /dev/null @@ -1,74 +0,0 @@ -;;; company-pycomplete.el --- a company-mode completion back-end for pycomplete.el - -;; Copyright (C) 2012 Urs Fleisch - -;; Author: Urs Fleisch -;; Keywords: languages, processes, python, oop - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; The backend can be enabled using -;; (setq company-backends '((company-pycomplete))) - -;;; Code: - -(require 'pycomplete) -(require 'company) - -(defun company-pycomplete--grab-symbol () - ;; stolen from company-pysmell--grab-symbol - (let ((symbol (company-grab-symbol))) - (when symbol - (cons symbol - (save-excursion - (let ((pos (point))) - (goto-char (- (point) (length symbol))) - (while (eq (char-before) ?.) - (goto-char (1- (point))) - (skip-syntax-backward "w_")) - (- pos (point)))))))) - - -(defun company-pycomplete-doc-buffer (candidate) - "Return buffer with docstring of CANDIDATE if it is available." - (let* ((full-prefix (py-complete-enhanced-symbol-before-point)) - (full-symbol (concat full-prefix (company-strip-prefix candidate))) - (doc (py-complete-docstring-for-symbol full-symbol))) - (when (and (stringp doc) (> (length doc) 0)) - (with-current-buffer (company-doc-buffer) - (insert doc) - (current-buffer))))) - -(defun company-pycomplete-location (candidate) - "Return location of CANDIDATE in cons form (FILE . LINE) if it is available." - (let* ((full-prefix (py-complete-enhanced-symbol-before-point)) - (full-symbol (concat full-prefix (company-strip-prefix candidate)))) - (py-complete-location full-symbol))) - -(defun company-pycomplete (command &optional arg &rest ignored) - "A `company-mode' completion back-end for pycomplete." - (interactive (list 'interactive)) - (case command - ('interactive (company-begin-backend 'company-pycomplete)) - ('prefix (and (derived-mode-p 'python-mode) - (not (company-in-string-or-comment)) - (company-pycomplete--grab-symbol))) - ('candidates (py-complete-completions)) - ('doc-buffer (company-pycomplete-doc-buffer arg)) - ('location (company-pycomplete-location arg)))) - -(provide 'company-pycomplete) -;;; company-pycomplete.el ends here diff --git a/elpa/python-mode-6.1.3/completion/pycomplete.el b/elpa/python-mode-6.1.3/completion/pycomplete.el deleted file mode 100644 index 4acfc4d25..000000000 --- a/elpa/python-mode-6.1.3/completion/pycomplete.el +++ /dev/null @@ -1,436 +0,0 @@ -;;; Complete symbols at point using Pymacs. - -;; Copyright (C) 2007 Skip Montanaro - -;; Original Author: Skip Montanaro -;; Maintainer: Urs Fleisch -;; Created: Oct 2004 -;; Keywords: python pymacs emacs - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: -;; Along with pycomplete.py this file allows programmers to complete Python -;; symbols within the current buffer. See pycomplete.py for the Python side -;; of things and a short description of what to expect. - -;; BAW 2012-09-28: pymacs may not be installed on Debian. -(condition-case nil - (require 'pymacs) - (file-error nil)) - -(eval-when-compile (require 'cl)) - -(pymacs-load "pycomplete") - -(defcustom py-complete-set-keymap-p nil - "If keys shall be defined when calling `py-complete-initialize'. -Default is nil. - -See also `py-complete-set-keymap'" - :type 'boolean - :group 'python-mode) - -(defvar py-complete-variable-index nil - "An alist with mappings of local variable names to types.") -(defvar py-complete-variable-index-position 0 - "The line-beginning-position when py-complete-variable-index was last updated. -This can be used to skip updating the index when still on the same line.") - -(defun py-complete-type-for-value (val) - "Return name of type for variable assignment value. -If the type cannot be deduced, nil is returned." - (let ((firstchar (string-to-char val)) - (case-fold-search nil)) - (cond - ((or (equal 0 firstchar) (string= val "None")) nil) - ((equal ?\[ firstchar) "list") - ((equal ?{ firstchar) "dict") - ((or (equal ?' firstchar) (equal ?\" firstchar)) "str") - ((string-match "^[rR]['\"]" val) "str") - ((string-match "^[uU][rR]?['\"]" val) "unicode") - ((or (string= val "True") (string= val "False")) "bool") - ((string-match "^[+\\-]?[0-9]+$" val) "int") - ((string-match "^[+\\-]?[0-9]+[lL]$" val) "long") - ((string-match "^[+\\-]?[0-9]+\\(?:\\.[0-9]+\\)?" val) "float") - ((string-match "^\\(\\(?:[[:word:]\\.]+\\.\\)?_?[A-Z][A-Za-z0-9]+\\)($" val) - (match-string-no-properties 1 val)) - ((string= "(" (substring-no-properties val -1)) - (concat "_PYCFRT(" (substring-no-properties val 0 -1) ")"))))) - -(defun py-complete-variables-in-def (&optional limit) - "Return an alist with mappings of local variable names to types. -Local variable assignments and parameters of the current function are -parsed. If limit is given, it limits the size of the returned alist." - (let ((pos (point)) - (i 0) - (beg 0) - candidates - (variable-assignment-re (concat "^[ \t]+\\(\\w+\\)[ \t]*\\(?:=\\|+=\\|*=\\|%=\\|&=\\|^=\\|<<=\\|-=\\|/=\\|**=\\||=\\|>>=\\|//=\\)[ \t]*\\([({[]\\|[rRuU]*['\"]\\|[+\\-]?[[:word:].]+(?\\)"))) - (save-excursion - ;; First get the current def and its parameters - (py-beginning-of-def) - (when (looking-at (concat py-def-re " *\\([^( ]+\\) *\\(([^:]+\\) *:")) - (setq beg (match-end 0)) - (let ((params (replace-regexp-in-string - "[ )]+$" "" - (replace-regexp-in-string - "^[ (]+" "" - (match-string-no-properties 3))))) - (dolist (param (split-string params "[ \t\r\n]*,[ \t\r\n]*")) - ;; Transform param into an assignment string - (setq param (concat " " param - (unless (memq ?= (string-to-list param)) - "=None"))) - (if (string-match variable-assignment-re param) - (push `(,(match-string-no-properties 1 param) . - ,(py-complete-type-for-value (match-string-no-properties 2 param))) - candidates))))) - ;; Search backward - (goto-char pos) - (while (and (or (not (integerp limit)) (< i limit)) - (re-search-backward variable-assignment-re nil t) - (> (point) beg)) - (let* ((candidate (match-string-no-properties 1)) - (entry (assoc candidate candidates))) - (cond ((null entry) - (push `(,(match-string-no-properties 1) . - ,(py-complete-type-for-value (match-string-no-properties 2))) - candidates) - (incf i)) - ((not (cdr entry)) - (setcdr entry (py-complete-type-for-value (match-string-no-properties 2))))))) - (nreverse candidates)))) - -(defun py-complete-update-variable-index (&optional limit) - "Update py-complete-variable-index from the local variables of the current -function. An update is only performed if point was on a different line for -the last update. If limit is given, it limits the size of the index." - (unless (local-variable-p 'py-complete-variable-index) - (make-local-variable 'py-complete-variable-index)) - (unless (local-variable-p 'py-complete-variable-index-position) - (make-local-variable 'py-complete-variable-index-position)) - (let ((linebeg (line-beginning-position))) - (unless (eq linebeg py-complete-variable-index-position) - (setq py-complete-variable-index (py-complete-variables-in-def limit)) - (setq py-complete-variable-index-position linebeg)))) - -(defun py-complete-variable-completions-for-symbol (sym) - "Get completions for local variables in current def. -If sym is an empty string, all local variables are returned, -else those starting with sym." - (when (and (stringp sym) (string-match "^\\w*$" sym)) - (py-complete-update-variable-index) - (let ((symlen (length sym))) - (if (zerop symlen) - (mapcar 'car py-complete-variable-index) - (remove-if-not - #'(lambda (s) (and (>= (length s) symlen) (string= sym (substring s 0 symlen)))) - (mapcar 'car py-complete-variable-index)))))) - -(defun py-complete-which-class () - "Return current class name based on point. -If no class name is found, return nil." - (interactive) - (let (classname) - (save-excursion - (save-restriction - (py-beginning-of-class) - (when (looking-at (concat py-class-re " *\\([^( ]+\\)")) - (setq classname (match-string-no-properties 2)) - (if (interactive-p) - (message "%s" classname))))) - classname)) - -(defun py-complete-type-before-dotexpr (&optional pos) - "Get type for expression before dot expression. -The character after pos (point if omitted) must be a dot. -Returns list, str or dict if such an expression is before -the dot, else nil." - (let ((dotchar (char-after pos))) - (if (and dotchar (char-equal ?. dotchar)) - (save-excursion - (if pos - (goto-char pos)) - (cond - ((looking-back "\\(\\[\\|,[^[]*\\)\\]") "list") - ((looking-back "['\"]") "str") - ((looking-back "}") "dict")))))) - -(defun py-complete-substitute-type-for-var (word) - "Substitute the type for the variable starting the dot-expression word. -Returns the word with replaced variable if known, else the unchanged word." - (let* (type - (firstsym (car (split-string word "\\."))) - (firstlen (length firstsym))) - (if (string= firstsym "self") - (setq type (py-complete-which-class)) - (py-complete-update-variable-index) - (setq type (cdr (assoc firstsym py-complete-variable-index)))) - (if (stringp type) - (concat type (substring word firstlen)) - word))) - -(defun py-complete-python-dotexpr-begin nil - (re-search-backward "[^a-zA-Z_0-9\\.]") - (forward-char)) - -(defun py-complete-python-dotexpr-end nil - (re-search-forward "[a-zA-Z_0-9\\.]*")) - -(put 'python-dotexpr 'beginning-op 'py-complete-python-dotexpr-begin) -(put 'python-dotexpr 'end-op 'py-complete-python-dotexpr-end) - -(defun py-complete-enhanced-dotexpr-at-point () - "Enhanced (thing-at-point 'python-dotexpr). -The returned word starts with a type if an expression is found before the dot -or if the dot-expression starts with a variable for which the type is known." - (require 'thingatpt) - (let ((bounds (bounds-of-thing-at-point 'python-dotexpr))) - (if bounds - (let* ((beg (car bounds)) - (end (cdr bounds)) - (word (buffer-substring-no-properties beg end)) - (prefix (py-complete-type-before-dotexpr beg))) - (if prefix - (concat prefix word) - (py-complete-substitute-type-for-var word)))))) - -(defun py-complete-enhanced-symbol-before-point () - "Return the dotted python symbol before point. -The returned word starts with a type if an expression is found before the dot -or if the dot-expression starts with a variable for which the type is known." - (let* (prefix - (word (buffer-substring-no-properties - (save-excursion - (skip-chars-backward "a-zA-Z0-9_.") - (setq prefix (py-complete-type-before-dotexpr)) - (point)) - (point)))) - (if prefix - (concat prefix word) - (py-complete-substitute-type-for-var word)))) - -;; Not used anymore -(defun py-find-global-imports () - "Find Python import statements in buffer." - (save-excursion - (let (first-class-or-def imports) - (goto-char (point-min)) - (setq first-class-or-def - (re-search-forward "^ *\\(def\\|class\\) " nil t)) - (goto-char (point-min)) - (setq imports nil) - (while (re-search-forward - "^\\(import \\|from \\([A-Za-z_\\.][A-Za-z_0-9\\.]*\\) import \\).*" - first-class-or-def t) - (setq imports (cons (buffer-substring-no-properties - (match-beginning 0) - (match-end 0)) - imports))) - (nreverse imports)))) - -(defun py-complete () - "Complete symbol before point using Pymacs. " - (interactive) - (setq py-completion-last-window-configuration - (current-window-configuration)) - (let ((symbol (py-complete-enhanced-symbol-before-point))) - (if (string= "" symbol) - (tab-to-tab-stop) - (let ((completions - (py-complete-completions-for-symbol symbol))) - (if completions - (let* (completion - (lastsym (car (last (split-string symbol "\\.")))) - (lastlen (length lastsym))) - (cond ((null (cdr completions)) - (setq completion (car completions))) - (t - (setq completion (try-completion lastsym completions)) - (message "Making completion list...") - (with-output-to-temp-buffer "*PythonCompletions*" - (display-completion-list completions)) - (message "Making completion list...%s" "done"))) - (when (and (stringp completion) - (> (length completion) lastlen)) - (insert (substring completion lastlen)))) - (message "Can't find completion for \"%s\"" symbol) - (ding)))))) - -(defun py-complete-completions-for-symbol (sym &optional imports) - "Get possible completions for symbol using statements given in imports." - (let ((pymacs-forget-mutability t)) - (append - (py-complete-variable-completions-for-symbol sym) - (pycomplete-pycompletions - sym (buffer-file-name) - imports)))) - -(defun py-complete-docstring-for-symbol (sym &optional imports) - "Get docstring for symbol using statements given in imports." - (let ((pymacs-forget-mutability t)) - (pycomplete-pydocstring - sym (buffer-file-name) - imports))) - -(defun py-complete-completions () - "Get possible completions for current statement." - (py-complete-completions-for-symbol - (py-complete-enhanced-symbol-before-point))) - -(defun py-complete-completion-at-point () - "Return a (start end collection) list, so that this function -can be used as a hook for completion-at-point-functions." - (setq py-completion-last-window-configuration - (current-window-configuration)) - (let ((symbol (py-complete-enhanced-symbol-before-point))) - (when (not (string= "" symbol)) - (let ((completions (py-complete-completions-for-symbol symbol))) - (when completions - (when (> (length completions) 1) - ;; this-command is changed to avoid the following situation: - ;; This function is invoked via indent-for-tab-command (because - ;; tab-always-indent is complete) and there is a "Complete, but - ;; not unique" case (e.g. "for" is completed and the next TAB key - ;; press shall display a list with "for", "format"). In such a - ;; case, py-indent-line would detect a repeated indentation - ;; request and thus change the indentation. The changed - ;; indentation would then prevent indent-for-tab-command - ;; from calling the completion function. - (setq this-command 'py-complete-completion-at-point)) - (list (- (point) (length (car (last (split-string symbol "\\."))))) - (point) - completions)))))) - -(defun py-complete-show (string) - (display-message-or-buffer string "*PythonHelp*")) - -(defun py-complete-help (string) - "get help on a python expression" - (interactive "sHelp: ") - (let* ((pymacs-forget-mutability t) - (help-string - (pycomplete-pyhelp string (buffer-file-name)))) - (if (and help-string (> (length help-string) 300)) - (with-output-to-temp-buffer "*Python Help*" - (princ help-string)) - (py-complete-show help-string)))) - -(defun py-complete-help-thing-at-point nil - (interactive) - (let ((sym (py-complete-enhanced-dotexpr-at-point))) - (if sym - (py-complete-help sym)))) - -(set 'py-complete-current-signature nil) - -(defun py-complete-signature (function) - "get signature of a python function or method" - (let ((pymacs-forget-mutability t)) - (set 'py-complete-current-signature - (pycomplete-pysignature function (buffer-file-name))))) - -(defun py-complete-signature-show nil - (let ((sym (py-complete-enhanced-dotexpr-at-point))) - (if sym - (progn - (py-complete-show (py-complete-signature sym)))))) - -(defun py-complete-signature-expr nil - (interactive) - (let ((dotexpr (read-string "signature on: " - (py-complete-enhanced-dotexpr-at-point)))) - (if dotexpr - (py-complete-show - (py-complete-signature dotexpr))))) - -(defun py-complete-electric-lparen nil - "electricly insert '(', and try to get a signature for the stuff to the left" - (interactive) - (py-complete-signature-show) - (self-insert-command 1)) - -(defun py-complete-electric-comma nil - "electricly insert ',', and redisplay latest signature" - (interactive) - (self-insert-command 1) - (if py-complete-current-signature - (py-complete-show (format "%s" py-complete-current-signature)))) - -(defun py-complete-location (sym) - "Get definition location of sym in cons form (FILE . LINE)." - (let ((location (pycomplete-pylocation sym (buffer-file-name)))) - (when (and location (vectorp location) (= (length location) 2)) - (cons (aref location 0) (aref location 1))))) - -(defun py-complete-goto-definition nil - "Got to definition of Python function." - (interactive) - (let ((sym (py-complete-enhanced-dotexpr-at-point))) - (if sym - (let ((location - (pycomplete-pylocation sym (buffer-file-name)))) - (if (and location (vectorp location) (= (length location) 2)) - (progn - (find-file (aref location 0)) - (goto-line (aref location 1))) - (message "Cannot find the definition!")))))) - -(defun py-complete-parse-source () - "Parse source code of Python file to get imports and completions." - (let ((errstr (pycomplete-pyparse (buffer-file-name) t))) - (if errstr - (message "%s" errstr)))) - -(defun py-complete-set-keymap () - "Define key map with pycomplete functions." - (interactive) - (define-key python-mode-map [C-tab] 'py-complete) - (define-key python-mode-map [f1] 'py-complete-help-thing-at-point) - (define-key python-mode-map "(" 'py-complete-electric-lparen) - (define-key python-mode-map "," 'py-complete-electric-comma) - (define-key python-mode-map [S-f1] 'py-complete-signature-expr) - (define-key python-mode-map [f2] 'py-complete-goto-definition) - (define-key python-mode-map [f3] 'py-complete-help)) - -(defun py-complete-initialize () - "Initialize pycomplete hooks. -Should be called from python-mode-hook. Keys are set when -`py-complete-set-keymap-p' is non-nil." - (interactive) - (when py-set-complete-keymap-p - (py-complete-set-keymap)) - (when py-complete-set-keymap-p - (py-complete-set-keymap)) - ;; Parse source file after it is saved - (add-hook 'after-save-hook 'py-complete-parse-source nil 'local) - ;; Set up auto-complete or company if enabled - (cond - ((fboundp 'auto-complete-mode) - (require 'auto-complete-pycomplete) - (setq ac-sources - (if (boundp 'py-complete-ac-sources) - py-complete-ac-sources - '(ac-source-pycomplete)))) - ((fboundp 'company-mode) - (company-mode t) - (require 'company-pycomplete) - (set (make-local-variable 'company-backends) - '((company-pycomplete)))) - ((or py-set-complete-keymap-p py-complete-set-keymap-p) - (set (make-local-variable 'tab-always-indent) 'complete) - (define-key python-mode-map [tab] 'indent-for-tab-command)))) - -(provide 'pycomplete) diff --git a/elpa/python-mode-6.1.3/completion/pycomplete.elc b/elpa/python-mode-6.1.3/completion/pycomplete.elc deleted file mode 100644 index e294cec69f52657f8375501171fe205f9f8a5e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14647 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 diff --git a/elpa/python-mode-6.1.3/completion/pycomplete.py b/elpa/python-mode-6.1.3/completion/pycomplete.py deleted file mode 100644 index a7a118bf1..000000000 --- a/elpa/python-mode-6.1.3/completion/pycomplete.py +++ /dev/null @@ -1,776 +0,0 @@ -""" -Python dot expression completion using Pymacs. - -This almost certainly needs work, but if you add - - (require 'pycomplete) - -to your init.el file and have Pymacs installed, when you hit M-TAB it will -try to complete the dot expression before point. For example, given this -import at the top of the file: - - import time - -typing "time.cl" then hitting M-TAB should complete "time.clock". - -This is unlikely to be done the way Emacs completion ought to be done, but -it's a start. Perhaps someone with more Emacs mojo can take this stuff and -do it right. - -See pycomplete.el for the Emacs Lisp side of things. - -Most of the public functions in this module have the signature - -(s, fname=None, imports=None) - -where s is the symbol to complete, fname is the file path and imports -the list of import statements to use. The fname parameter is used as a -key to cache the global and local context and the symbols imported or -evaluated so far. The cache for an fname is cleared when its imports -are changed. When not passing a list of imports (or None), the currently -used imports are preserved. The caching should make subsequent operations -(e.g. another completion or signature lookup after a completion) less -expensive. -""" - -# Original Author: Skip Montanaro -# Maintainer: Urs Fleisch -# Created: Oct 2004 -# Keywords: python pymacs emacs - -# This software is provided as-is, without express or implied warranty. -# Permission to use, copy, modify, distribute or sell this software, without -# fee, for any purpose and by any individual or organization, is hereby -# granted, provided that the above copyright notice and this paragraph -# appear in all copies. - -# Along with pycomplete.el this file allows programmers to complete Python -# symbols within the current buffer. - -import sys -import types -import inspect -import keyword -import os -import pydoc -import ast -import re - -if sys.version_info[0] >= 3: # Python 3 - import io -else: # Python 2 - import StringIO - -try: - x = set -except NameError: - from sets import Set as set -else: - del x - - -class _PyCompleteDocument(object): - """Completion data for Python source file.""" - - if sys.version_info[0] >= 3: # Python 3 - _helpout = io.StringIO - @staticmethod - def is_num_or_str(obj): - return isinstance(obj, (int, float, str)) - @staticmethod - def is_class_type(obj): - return type(obj) == type - @staticmethod - def get_unbound_function(unbound): - return unbound - @staticmethod - def get_method_function(meth): - return meth.__func__ - @staticmethod - def get_function_code(func): - return func.__code__ - @staticmethod - def update_with_builtins(keys): - import builtins - keys.update(dir(builtins)) - else: # Python 2 - _helpout = StringIO.StringIO - @staticmethod - def is_num_or_str(obj): - return isinstance(obj, (int, long, float, basestring)) - @staticmethod - def is_class_type(obj): - return type(obj) in (types.ClassType, types.TypeType) - @staticmethod - def get_unbound_function(unbound): - return unbound.im_func - @staticmethod - def get_method_function(meth): - return meth.im_func - @staticmethod - def get_function_code(func): - return func.func_code - @staticmethod - def update_with_builtins(keys): - import __builtin__ - keys.update(dir(__builtin__)) - - _sre_SRE_Pattern = type(re.compile('')) - _sre_SRE_Match = type(re.match('', '')) - - # Class name in CapCase, as suggested by PEP8 Python style guide - _class_name_re = re.compile(r'(?:^|\.)_?[A-Z][A-Za-z0-9]+$') - - _return_type_of_func = { - 'bin': 'str', - 'bytearray': 'bytearray', - 'bytes': 'bytes', - 'compile': 'types.CodeType', - 'complex': 'complex', - 'dict': 'dict', - 'frozenset': 'frozenset', - 'oct': 'str', - 'open': 'io.BufferedIOBase' if sys.version_info[0] >= 3 else 'file', - 'list': 'list', - 'repr': 'str', - 'set': 'set', - 'sorted': 'list', - 'str': 'str', - 'tuple': 'tuple', - 'vars': 'dict', - 're.compile': '_PyCompleteDocument._sre_SRE_Pattern', - 're.escape': 'str', - 're.findall': 'list', - 're.match': '_PyCompleteDocument._sre_SRE_Match', - 're.search': '_PyCompleteDocument._sre_SRE_Match', - 're.split': 'list', - 're.sub': 'str', - 're.subn': 'tuple', - 'datetime.datetime': 'datetime.datetime', - 'datetime.date': 'datetime.date', - 'datetime.time': 'datetime.time', - 'datetime.timedelta': 'datetime.timedelta', - 'sys.exc_info': 'tuple', - 'os.getcwd': 'str', - 'os.getenv': 'str', - 'os.urandom': 'bytes', - 'os.path.abspath': 'str', - 'os.path.basename': 'str', - 'os.path.commonprefix': 'str', - 'os.path.dirname': 'str', - 'os.path.expanduser': 'str', - 'os.path.expandvars': 'str', - 'os.path.join': 'str', - 'os.path.normcase': 'str', - 'os.path.normpath': 'str', - 'os.path.realpath': 'str', - 'os.path.relpath': 'str', - 'os.path.split': 'tuple', - 'os.path.splitdrive': 'tuple', - 'os.path.splitext': 'tuple', - 'collections.defaultdict': 'collections.defaultdict', - 'collections.deque': 'collections.deque', - 'collections.namedtuple': 'collections.namedtuple', - 'socket.socket': 'socket.socket', - 'csv.excel': 'csv.excel', - 'csv.excel_tab': 'csv.excel_tab' - } - - @staticmethod - def _get_type_for_function(funcname): - typename = _PyCompleteDocument._return_type_of_func.get(funcname) - if not typename and \ - _PyCompleteDocument._class_name_re.search(funcname): - typename = funcname - return typename - - @staticmethod - def _replace_pycfrt_with_typename(s): - """Replace _PYCFRT(..) expressions with function return type. - - The names of variables assigned from function calls can be replaced by - _PYCFRT(name.of.function). This function tries to replace such expressions - with the corresponding function return type (PYCFRT = pycomplete function - return type). If no such expression can be found, s is returned unchanged. - If the type cannot be deduced, None is returned, else the substituted - string.""" - pycfrt_re = re.compile(r'_PYCFRT\(([^()]+)\)') - return pycfrt_re.sub(lambda m: _PyCompleteDocument._get_type_for_function(m.group(1)), s) - - class ImportExtractor(ast.NodeVisitor): - """NodeVisitor to extract the top-level import statements from an AST. - - To generate code containing all imports in try-except statements, - call get_import_code(node), where node is a parsed AST. - """ - def visit_FunctionDef(self, node): - # Ignore imports inside functions or methods. - pass - - def visit_ClassDef(self, node): - # Ignore imports inside classes. - pass - - def generic_visit(self, node): - # Store import statement nodes. - if isinstance(node, (ast.Import, ast.ImportFrom)): - self._import_nodes.append(node) - ast.NodeVisitor.generic_visit(self, node) - - def get_import_code(self, node, fname=''): - """Get compiled code of all top-level import statements found in the - AST of node.""" - self._import_nodes = [] - self.visit(node) - body = [] - for imp_node in self._import_nodes: - if isinstance(imp_node, ast.ImportFrom) and \ - imp_node.module == '__future__': - # 'SyntaxError: from __future__ imports must occur at the - # beginning of the file' is raised if a 'from __future__ import' - # is wrapped in try-except, so use only the import statement. - body.append(imp_node) - else: - body.append(ast.TryExcept(body=[imp_node], handlers=[ - ast.ExceptHandler(type=None, name=None, body=[ast.Pass()])], - orelse=[])) - node = ast.Module(body=body) - ast.fix_missing_locations(node) - code = compile(node, fname, 'exec') - return code - - - class CodeRemover(ast.NodeTransformer): - """NodeTransformer which replaces function statements with 'pass' - and keeps only safe assignments, so that the resulting code can - be used for code completion. - - To reduce the code from the node of a parsed AST, call - get_transformed_code(node). - """ - def visit_FunctionDef(self, node): - # Replace all function statements except doc string by 'pass'. - if node.body: - if isinstance(node.body[0], ast.Expr) and \ - isinstance(node.body[0].value, ast.Str): - # Keep doc string. - first_stmt = node.body[1] if len(node.body) > 1 else node.body[0] - node.body = [node.body[0]] - else: - first_stmt = node.body[0] - node.body = [] - node.body.append(ast.copy_location(ast.Pass(), first_stmt)) - return node - return None - - def visit_Expr(self, node): - # Remove all expressions except strings to keep doc strings. - if isinstance(node.value, ast.Str): - return node - return None - - @staticmethod - def _get_type_node_for_function_node(node): - # Convert node to dot expression - attrs = [] - while isinstance(node, ast.Attribute): - attrs.insert(0, node.attr) - node = node.value - if isinstance(node, ast.Name): - attrs.insert(0, node.id) - funcname = '.'.join(attrs) - typename = _PyCompleteDocument._get_type_for_function(funcname) - if typename: - # Convert dot expression to node - attrs = typename.split('.') - node = None - if attrs: - node = ast.Name(id=attrs.pop(0), ctx=ast.Load()) - while attrs: - node = ast.Attribute(value=node, attr=attrs.pop(0), - ctx=ast.Load()) - return node - return None - - @staticmethod - def replace_unsafe_value(node, replace_self=None): - """Modify value from assignment if unsafe. - - If replace_self is given, only assignments starting with 'self.' are - processed, the assignment node is returned with 'self.' replaced by - the value of replace_self (typically the class name). - For other assignments, None is returned.""" - for i, target in enumerate(node.targets): - if not isinstance(target, (ast.Name, ast.Attribute)): - # Only process assignments to names and attributes, - # not tuples. - return None - if replace_self: - if isinstance(target, ast.Attribute) and \ - isinstance(target.value, ast.Name) and \ - target.value.id == 'self' and \ - isinstance(target.value.ctx, ast.Load): - node.targets[i].value.id = replace_self - if target.attr == '__name__': - node.value = ast.copy_location(ast.Str(s=''), - node.value) - elif target.attr in ('__dict__', '__class__', '__bases__', - '__doc__'): - return None - else: - return None - elif isinstance(target, ast.Name) and \ - isinstance(target.ctx, ast.Store): - if target.id == '__metaclass__': - # Do not modify __metaclass__ assignments - return node - elif target.id == '__slots__': - node.value = ast.copy_location( - ast.List(elts=[], ctx=ast.Load()), node.value) - if isinstance(node.value, (ast.Str, ast.Num)): - pass - elif isinstance(node.value, (ast.List, ast.Tuple)): - node.value.elts = [] - elif isinstance(node.value, ast.Dict): - node.value.keys = [] - node.value.values = [] - elif isinstance(node.value, ast.ListComp): - node.value = ast.copy_location(ast.List(elts=[], ctx=ast.Load()), node.value) - elif isinstance(node.value, ast.Call): - type_node = _PyCompleteDocument.CodeRemover._get_type_node_for_function_node(node.value.func) - if type_node: - # Wrap class lookup in try-except because it is not fail-safe. - node.value = ast.copy_location(type_node, node.value) - node = ast.copy_location(ast.TryExcept(body=[node], handlers=[ - ast.ExceptHandler(type=None, name=None, body=[ast.Pass()])], - orelse=[]), node) - ast.fix_missing_locations(node) - else: - node.value = ast.copy_location( - ast.Name(id='None', ctx=ast.Load()), node.value) - else: - node.value = ast.copy_location(ast.Name(id='None', ctx=ast.Load()), node.value) - return node - - def visit_Assign(self, node): - # Replace unsafe values of assignements by None. - return self.replace_unsafe_value(node) - - def visit_Name(self, node): - # Pass names for bases in ClassDef. - return node - - def visit_Attribute(self, node): - # Pass attributes for bases in ClassDef. - return node - - def visit_ClassDef(self, node): - # Visit nodes of class. - # Store instance member assignments to be added later to generated code. - self_assignments = {} - for child in ast.walk(node): - if isinstance(child, ast.Assign): - new_child = self.replace_unsafe_value(child, - replace_self=node.name) - if new_child: - new_var = child.targets[0].attr - old_assign = self_assignments.get(new_var) - if not old_assign or ( - isinstance(old_assign, ast.Assign) and - isinstance(old_assign.value, ast.Name) and - old_assign.value.id == 'None'): - self_assignments[new_var] = new_child - self._class_assignments.extend(list(self_assignments.values())) - return ast.NodeTransformer.generic_visit(self, node) - - def visit_Module(self, node): - # Visit nodes of module - return ast.NodeTransformer.generic_visit(self, node) - - def generic_visit(self, node): - # Remove everything which is not handled by the methods above - return None - - def get_transformed_code(self, node, fname=''): - """Get compiled code containing only empty functions and methods - and safe assignments found in the AST of node.""" - self._class_assignments = [] - node = self.visit(node) - # The self members are added as attributes to the class objects - # rather than included as class variables inside the class definition - # so that names starting with '__' are not mangled. - node.body.extend(self._class_assignments) - code = compile(node, fname, 'exec') - return code - - _stdout = sys.stdout - - _instances = {} - - def __init__(self, fname=None): - """Constructor for internal use. - The factory method instance() shall be used instead. - """ - self._fname = fname - self._imports = None - self._globald = globals().copy() - self._symnames = [] - self._symobjs = {} - self._parse_source_called = False - - @classmethod - def instance(cls, fname): - """Get _PyCompleteDocument object for fname. - If no object for this file name exists, a new object is created and - registered. - """ - obj = cls._instances.get(fname) - if obj is None: - obj = _PyCompleteDocument(fname) - cls._instances[fname] = obj - return obj - - def _import_modules(self, imports): - """Import modules using the statements in imports. - If the imports are the same as in the last call, the methods - immediately returns, also if imports is None. - """ - if imports is None and not self._parse_source_called: - self.parse_source() - if imports is None or imports == self._imports: - return - # changes to where the file is - if self._fname: - os.chdir(os.path.dirname(self._fname)) - self._globald = globals().copy() - self._symnames = [] - self._symobjs = {} - for stmt in imports: - try: - exec(stmt, self._globald) - except TypeError: - raise TypeError('invalid type: %s' % stmt) - except Exception: - continue - self._imports = imports - - def _collect_symbol_names(self): - """Collect the global, local, builtin symbols in _symnames. - If _symnames is already set, the method immediately returns. - """ - if not self._symnames: - keys = set(keyword.kwlist) - keys.update(list(self._globald.keys())) - self.update_with_builtins(keys) - self._symnames = list(keys) - self._symnames.sort() - - def _get_symbol_object(self, s): - """Get a symbol by evaluating its name or importing a module - or submodule with the name s. - """ - sym = self._symobjs.get(s) - if sym is not None: - return sym - # changes to where the file is - if self._fname: - os.chdir(os.path.dirname(self._fname)) - try: - sym = eval(s, self._globald) - except NameError: - try: - sym = __import__(s, self._globald) - self._globald[s] = sym - except ImportError: - pass - except AttributeError: - try: - sym = __import__(s, self._globald) - except ImportError: - pass - except SyntaxError: - pass - if sym is not None: - self._symobjs[s] = sym - return sym - - def _load_symbol(self, s, strict=False): - """Get a symbol for a dotted expression. - - Returns the last successfully found symbol object in the - dotted chain. If strict is set True, it returns True as - soon as a symbol is not found. Therefore strict=True can - be used to find exactly the symbol for s, otherwise a - symbol for a parent can be returned, which may be enough - if searching for help on symbol. - """ - s = self._replace_pycfrt_with_typename(s) - sym = self._symobjs.get(s) - if sym is not None: - return sym - dots = s.split('.') - if not s or len(dots) == 1: - sym = self._get_symbol_object(s) - else: - for i in range(1, len(dots) + 1): - s = '.'.join(dots[:i]) - if not s: - continue - sym_i = self._get_symbol_object(s) - if sym_i is not None: - sym = sym_i - elif strict: - return None - return sym - - def _get_help(self, s, imports=None): - """Return string printed by help function.""" - if not s: - return '' - if s == 'pydoc.help': - # Prevent pydoc from going into interactive mode - s = 'pydoc.Helper' - obj = None - if not keyword.iskeyword(s): - try: - self._import_modules(imports) - obj = self._load_symbol(s, strict=False) - except Exception as ex: - return '%s' % ex - if not obj: - obj = str(s) - out = self._helpout() - try: - sys.stdout = out - pydoc.help(obj) - finally: - sys.stdout = self._stdout - return out.getvalue() - - @staticmethod - def _find_constructor(class_ob): - """Given a class object, return a function object used for the - constructor (ie, __init__() ) or None if we can't find one.""" - try: - return _PyCompleteDocument.get_unbound_function(class_ob.__init__) - except AttributeError: - for base in class_ob.__bases__: - rc = _PyCompleteDocument._find_constructor(base) - if rc is not None: - return rc - return None - - def get_all_completions(self, s, imports=None): - """Return contextual completion of s (string of >= zero chars). - - If given, imports is a list of import statements to be executed - first. - """ - self._import_modules(imports) - - s = self._replace_pycfrt_with_typename(s) - last_dot_pos = s.rfind('.') - if last_dot_pos == -1: - self._collect_symbol_names() - if s: - return [k for k in self._symnames if k.startswith(s)] - else: - return self._symnames - - sym = self._load_symbol(s[:last_dot_pos], strict=True) - if sym is not None: - s = s[last_dot_pos + 1:] - return [k for k in dir(sym) if k.startswith(s)] - return [] - - def complete(self, s, imports=None): - """Complete symbol if unique, else return list of completions.""" - if not s: - return '' - - completions = self.get_all_completions(s, imports) - if len(completions) == 0: - return None - else: - dots = s.split(".") - prefix = os.path.commonprefix([k for k in completions]) - if len(completions) == 1 or len(prefix) > len(dots[-1]): - return [prefix[len(dots[-1]):]] - return completions - - def help(self, s, imports=None): - """Return help on object.""" - try: - return self._get_help(s, imports) - except Exception as ex: - return '%s' % ex - - def get_docstring(self, s, imports=None): - """Return docstring for symbol s.""" - if s and not keyword.iskeyword(s): - try: - self._import_modules(imports) - obj = self._load_symbol(s, strict=True) - if obj and not self.is_num_or_str(obj): - doc = inspect.getdoc(obj) - if doc: - return doc - except: - pass - return '' - - def get_signature(self, s, imports=None): - """Return info about function parameters.""" - if not s or keyword.iskeyword(s): - return '' - obj = None - sig = "" - - try: - self._import_modules(imports) - obj = self._load_symbol(s, strict=False) - except Exception as ex: - return '%s' % ex - - if self.is_class_type(obj): - # Look for the highest __init__ in the class chain. - ctr = self._find_constructor(obj) - if ctr is not None and type(ctr) in ( - types.MethodType, types.FunctionType, types.LambdaType): - obj = ctr - elif type(obj) == types.MethodType: - # bit of a hack for methods - turn it into a function - # but we drop the "self" param. - obj = self.get_method_function(obj) - - if type(obj) in [types.FunctionType, types.LambdaType]: - (args, varargs, varkw, defaults) = inspect.getargspec(obj) - sig = ('%s: %s' % (obj.__name__, - inspect.formatargspec(args, varargs, varkw, - defaults))) - doc = getattr(obj, '__doc__', '') - if doc and not sig: - doc = doc.lstrip() - pos = doc.find('\n') - if pos < 0 or pos > 70: - pos = 70 - sig = doc[:pos] - return sig - - def get_location(self, s, imports=None): - """Return file path and line number of symbol, None if not found.""" - if not s or keyword.iskeyword(s): - return None - try: - self._import_modules(imports) - obj = self._load_symbol(s, strict=False) - if obj is not None: - if self.is_class_type(obj): - obj = obj.__init__ - if type(obj) == types.MethodType: - obj = self.get_method_function(obj) - if type(obj) in [types.FunctionType, types.LambdaType]: - code = self.get_function_code(obj) - return (os.path.abspath(code.co_filename), code.co_firstlineno) - # If not found, try using inspect. - return (inspect.getsourcefile(obj), inspect.getsourcelines(obj)[1]) - except: - pass - return None - - def parse_source(self, only_reload=False): - """Parse source code to get imports and completions. - - If this method is called, the imports parameter for the other methods - must be omitted (or None), so that the imports are taken from the - parsed source code. If only_reload is True, the source is only parsed - if it has been parsed before. - None is returned if OK, else a string describing the error. - """ - if only_reload and not self._parse_source_called: - return None - self._parse_source_called = True - if not self._fname: - return None - - try: - with open(self._fname) as fh: - src = fh.read() - except IOError as ex: - return '%s' % ex - - # changes to where the file is - os.chdir(os.path.dirname(self._fname)) - - try: - node = ast.parse(src, self._fname) - import_code = self.ImportExtractor().get_import_code(node, self._fname) - except (SyntaxError, TypeError) as ex: - return '%s' % ex - - old_globald = self._globald.copy() - self._globald = globals().copy() - try: - exec(import_code, self._globald) - except Exception as ex: - self._globald = old_globald - return '%s' % ex - - self._symnames = [] - self._symobjs = {} - - reduced_code = self.CodeRemover().get_transformed_code(node, self._fname) - try: - exec(reduced_code, self._globald) - except Exception as ex: - return '%s' % ex - return None - -def pycompletions(s, fname=None, imports=None): - """Get a list of possible completions for s. - - The completions extend the expression s after the last dot. - """ - return _PyCompleteDocument.instance(fname).get_all_completions( - s, imports) - -def pycomplete(s, fname=None, imports=None): - """Complete the Python expression s. - - If multiple completions are found, a list of possible completions - (names after the last dot) is returned. - If one completion is found, a list with a string containing the - remaining characters is returned. - If no completion is found, None is returned. - """ - return _PyCompleteDocument.instance(fname).complete(s, imports) - -def pyhelp(s, fname=None, imports=None): - """Return help on object s.""" - return _PyCompleteDocument.instance(fname).help(s, imports) - -def pydocstring(s, fname=None, imports=None): - """Return docstring of symbol.""" - return _PyCompleteDocument.instance(fname).get_docstring(s, imports) - -def pysignature(s, fname=None, imports=None): - """Return info about function parameters.""" - return _PyCompleteDocument.instance(fname).get_signature(s, imports) - -def pylocation(s, fname=None, imports=None): - """Return file path and line number of symbol, None if not found.""" - return _PyCompleteDocument.instance(fname).get_location(s, imports) - -def pyparse(fname, only_reload=False): - """Parse source code to get imports and completions. - - If this function is called, the imports parameter for the other functions - must be omitted (or None), so that the imports are taken from the - parsed source code. If only_reload is True, the source is only parsed if - it has been parsed before. - """ - return _PyCompleteDocument.instance(fname).parse_source(only_reload) - -# Local Variables : -# pymacs-auto-reload : t -# End : diff --git a/elpa/python-mode-6.1.3/completion/test_pycomplete.py b/elpa/python-mode-6.1.3/completion/test_pycomplete.py deleted file mode 100755 index 68a1a89a3..000000000 --- a/elpa/python-mode-6.1.3/completion/test_pycomplete.py +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env python - -import os -import linecache -import tempfile -from pycomplete import * - -def test_signature(): - assert pysignature('') == '' - assert pysignature('os.path.join') == 'join: (a, *p)' - assert pysignature('json.dump').startswith( - 'dump: (obj, fp, skipkeys=False, ensure_ascii=True, ') - assert pysignature('json.JSONEncoder.encode') == 'encode: (self, o)' - assert pysignature('json.JSONEncoder').startswith( - '__init__: (self, skipkeys=False, ensure_ascii=True, ') - assert pysignature('xml.dom.minidom.parse') == \ - 'parse: (file, parser=None, bufsize=None)' - assert pysignature('csv.reader') == \ - 'csv_reader = reader(iterable [, dialect=\'excel\']' - assert pysignature('super') in ( - 'super(type) -> unbound super object', - 'super() -> same as super(__class__, )') - -def test_help(): - assert pyhelp('os.path.join').startswith('Help on function join') - assert pyhelp('logging', imports=('import logging',)).startswith( - 'Help on package logging:\n\nNAME\n logging\n') - assert pyhelp('csv', imports=('import csv',)).startswith( - 'Help on module csv:\n\nNAME\n csv - CSV parsing and writing.\n') - assert pyhelp('import').startswith( - 'The ``import`` statement\n************************\n') - assert pyhelp('pydoc.help').startswith( - 'Help on class Helper in module pydoc') - assert pyhelp('') == '' - -def test_complete(): - assert pycomplete('') == '' - assert pycomplete('sys.getd') == ['getdefaultencoding', 'getdlopenflags'] - assert pycomplete('set') == ['set', 'setattr'] - assert pycomplete('settr') is None - assert pycomplete('settr', imports=['from sys import settrace']) == [ - 'ace'] - # Test with cached imports - assert pycomplete('settr') == ['ace'] - # Not cached for other files - fpath = os.path.abspath(__file__) - assert pycomplete('settr', fname=fpath) is None - assert pycomplete('settr', fname=fpath, - imports=['from sys import settrace']) == ['ace'] - assert pycomplete('foo.') is None - assert pycomplete('JSONEnc') is None - assert pycomplete('JSONEnc', imports=['from json import *']) == ['oder'] - assert pycomplete('A') == [ - 'ArithmeticError', 'AssertionError', 'AttributeError'] - -def test_completions(): - all_completions = pycompletions('') - assert all_completions[0] == 'ArithmeticError' - assert all_completions[-1] == 'zip' - assert pycompletions('os.path.jo') == ['join'] - assert pycompletions('settr', imports=['']) == [] - assert pycompletions('settr', - imports=['from sys import settrace']) == ['settrace'] - # Check if imports are still cached. - assert pycompletions('settr', imports=None) == ['settrace'] - # Change list of imports, so that cache is invalidated. - assert pycompletions('settr', imports=['']) == [] - -def test_location(): - fn, line = pylocation('os.path.join') - assert os.path.exists(fn) - assert linecache.getline(fn, line).startswith('def join') - assert pylocation('io.StringIO') is None - fn, line = pylocation('json') - assert os.path.exists(fn) - assert pylocation('for') is None - -def test_docstring(): - assert pydocstring('os.path.abspath') == 'Return an absolute path.' - assert pydocstring('os.path').startswith( - 'Common operations on Posix pathnames.\n') - assert pydocstring('json.JSONEncoder.encode').startswith( - 'Return a JSON string representation of a Python data structure.\n') - assert pydocstring('yield') == '' - assert pydocstring('numbers.Real.real') == \ - 'Real numbers are their real component.' - assert pydocstring('notexisting') == '' - assert pydocstring('re.IGNORECASE') == '' - -def test_parse_source(): - tmp_file = tempfile.NamedTemporaryFile(suffix='.py', mode='w') - name = tmp_file.name - with tmp_file.file as fh: - assert pyparse('not_existing', only_reload=True) == None - assert pyparse('not_existing') == \ - "[Errno 2] No such file or directory: 'not_existing'" - assert pyparse(name) is None - # Nothing imported so far - assert pycompletions('dat' , name) == [] - src = """ -"Doc for module." -from __future__ import print_function -import sys, os, io, re -from datetime import date, \ -time -import argparse -if os.getenv('LC'): - import linecache - -modvar = 1 -mod_re = re.compile(r'^test') - -def testfunc(): - "Doc for testfunc." - import urllib - -def emptyfunc(): - "Function with only docstring." - -class TestClass(date): - "Doc for TestClass." - CONST1 = 7 - CONST2 = 'abc' - CONST3 = ['a', ] - - def __init__(self): - self._member1 = 'string member' - self._member2 = None - self.__member3 = [ None, open('not_existing') ] - self.member4 = argparse.ArgumentParser() - self.member4 = None - self.member5 = open('not_existing') - self.member6 = self.member7 = { 'multiple': 'targets' } - self.member8, self.member9 = 'tuple', 'assignment' - self.member10 = [ n for n in range(3) ] - self.member11 = SyntaxError() - self.member12 = testfunc() - def testmeth(self, arg1=modvar): - "Doc for testmeth." - sys.stdout.write('From testmeth %d' % arg1) - if arg1 == 2: - self._member1 = None - @staticmethod - def teststaticmeth(arg1=2): - "Doc for teststaticmeth." - sys.stdout.write('From teststaticmeth %d' % arg1) - @classmethod - def testclassmeth(cls, arg1=3): - "Doc for testclassmeth." - open('not_existing') - @property - def testprop(self): - "Doc for testprop." - return 4 * 8 - -if __name__ == '__main__': - testfunc() -""" - num_src_lines = len(src.splitlines()) - fh.write(src) - fh.flush() - assert pyparse(name) == None - # Check if only global imports are visible - assert pycompletions('dat' , name) == ['date'] - assert pycompletions('tim' , name) == ['time'] - assert pycompletions('url' , name) == [] - assert pycompletions('line' , name) == ['linecache'] - assert pycompletions('os' , name) == ['os'] - # Check for definitions in local file - assert pycompletions('test' , name) == ['testfunc'] - assert pycompletions('TestClass.CO' , name) == \ - ['CONST1', 'CONST2', 'CONST3'] - assert pycompletions('TestClass.test' , name) == \ - ['testclassmeth', 'testmeth', 'testprop', 'teststaticmeth'] - # Check for instance members - assert pycompletions('TestClass._mem', name) == \ - ['_member1', '_member2'] - assert pycompletions('TestClass.__mem', name) == ['__member3'] - assert pycompletions('TestClass._member1.start', name) == \ - ['startswith'] - assert pycompletions('TestClass._member2.', name) == [] - assert pycompletions('TestClass.__member3.ext', name) == \ - ['extend'] - assert pycompletions('TestClass.member4.prin', name) == \ - ['print_help', 'print_usage', 'print_version'] - assert pycompletions('TestClass.member5.writel', name) == \ - ['writelines'] - assert pycompletions('TestClass.member6.from', name) == \ - ['fromkeys'] - assert pycompletions('TestClass.member7.from', name) == \ - ['fromkeys'] - assert pycompletions('TestClass.member10.ext', name) == \ - ['extend'] - assert pycompletions('TestClass.member11.ar', name) == \ - ['args'] - assert pycompletions('modvar.num', name) == ['numerator'] - assert pycompletions('mod_re.ma', name) == ['match'] - assert pydocstring('TestClass._member1', name) == '' - assert pydocstring('TestClass._member2', name) == '' - assert pydocstring('TestClass.__member3', name) == '' - # Check for super class - assert pycompletions('TestClass.week' , name) == ['weekday'] - assert pycompletions('TestClass.utc' , name) == [] - # Check signature, documentation and location - assert pysignature('TestClass.testmeth', name) == \ - 'testmeth: (self, arg1=1)' - assert pydocstring('testfunc', name) == \ - 'Doc for testfunc.' - assert pylocation('TestClass.testclassmeth', name) == \ - (name, num_src_lines - 10) - # Verify that loaded symbols are not affected by transient - # syntax error - fh.write('while') - fh.flush() - assert pyparse(name) == \ - 'invalid syntax (%s, line %d)' % (os.path.basename(name), - num_src_lines + 1) - assert pycompletions('dat' , name) == ['date'] - # Replace file contents and check new imports - fh.seek(0) - fh.truncate(0) - fh.write('import urllib\n') - fh.flush() - assert pyparse(name) == None - assert pycompletions('dat' , name) == [] - assert pycompletions('url' , name) == ['urllib'] - -def run_tests(): - test_complete() - test_completions() - test_help() - test_signature() - test_location() - test_docstring() - test_parse_source() - -if __name__ == "__main__": - run_tests() diff --git a/elpa/python-mode-6.1.3/doc/commands-python-mode.org b/elpa/python-mode-6.1.3/doc/commands-python-mode.org deleted file mode 100644 index cc17a53c9..000000000 --- a/elpa/python-mode-6.1.3/doc/commands-python-mode.org +++ /dev/null @@ -1,5088 +0,0 @@ -python-mode.el commands - -** py-smart-operator-check - Check, if smart-operator-mode is loaded resp. available. - -Give some hints, if not. - -** py-autopair-check - Check, if autopair-mode is available. - -Give some hints, if not. - -** (defun p - - -* Toggle -** toggle-py-nil-docstring-style - If nil docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -** py-nil-docstring-style-on - Make sure, nil docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** py-nil-docstring-style-off - Make sure, nil docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** toggle-py-onetwo-docstring-style - If onetwo docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -** py-onetwo-docstring-style-on - Make sure, onetwo docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** py-onetwo-docstring-style-off - Make sure, onetwo docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** toggle-py-pep-257-docstring-style - If pep-257 docstring-style should be on or off. - - Returns value of `py-pep-257-docstring-style' switched to. - -** py-pep-257-docstring-style-on - Make sure, pep-257 docstring-style' is on. - -Returns value of `py-pep-257-docstring-style'. - -** py-pep-257-docstring-style-off - Make sure, pep-257 docstring-style is off. - -Returns value of `py-pep-257-docstring-style'. - -** toggle-py-pep-257-nn-docstring-style - If pep-257-nn docstring-style should be on or off. - - Returns value of `py-pep-257-nn-docstring-style' switched to. - -** py-pep-257-nn-docstring-style-on - Make sure, pep-257-nn docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** py-pep-257-nn-docstring-style-off - Make sure, pep-257-nn docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** toggle-py-symmetric-docstring-style - If symmetric docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -** py-symmetric-docstring-style-on - Make sure, symmetric docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** py-symmetric-docstring-style-off - Make sure, symmetric docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** toggle-py-django-docstring-style - If django docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -** py-django-docstring-style-on - Make sure, django docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** py-django-docstring-style-off - Make sure, django docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -** toggle-py-underscore-word-syntax-p - If `py-underscore-word-syntax-p' should be on or off. - - Returns value of `py-underscore-word-syntax-p' switched to. - -** py-underscore-word-syntax-p-on - Make sure, py-underscore-word-syntax-p' is on. - -Returns value of `py-underscore-word-syntax-p'. - -** py-underscore-word-syntax-p-off - Make sure, `py-underscore-word-syntax-p' is off. - -Returns value of `py-underscore-word-syntax-p'. - -** toggle-py-electric-comment-p - If `py-electric-comment-p' should be on or off. - - Returns value of `py-electric-comment-p' switched to. - -** py-electric-comment-p-on - Make sure, py-electric-comment-p' is on. - -Returns value of `py-electric-comment-p'. - -** py-electric-comment-p-off - Make sure, `py-electric-comment-p' is off. - -Returns value of `py-electric-comment-p'. - -** toggle-force-local-shell - If locally indicated Python shell should be taken and -enforced upon sessions execute commands. - -Toggles boolean `py-force-local-shell-p' along with `py-force-py-shell-name-p' -Returns value of `toggle-force-local-shell' switched to. - -When on, kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards. - -See also commands -`py-force-local-shell-on' -`py-force-local-shell-off' - - -** py-force-local-shell-on - Make sure, `py-py-force-local-shell-p' is on. - -Returns value of `py-force-local-shell-p'. - -Kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards - -** py-force-local-shell-off - Restore `py-shell-name' default value and `behaviour'. - -** toggle-force-py-shell-name-p - If customized default `py-shell-name' should be enforced upon execution. - -If `py-force-py-shell-name-p' should be on or off. -Returns value of `py-force-py-shell-name-p' switched to. - -See also commands -force-py-shell-name-p-on -force-py-shell-name-p-off - -Caveat: Completion might not work that way. - - -** force-py-shell-name-p-on - Switches `py-force-py-shell-name-p' on. - -Customized default `py-shell-name' will be enforced upon execution. -Returns value of `py-force-py-shell-name-p'. - -Caveat: Completion might not work that way. - - -** force-py-shell-name-p-off - Make sure, `py-force-py-shell-name-p' is off. - -Function to use by executes will be guessed from environment. -Returns value of `py-force-py-shell-name-p'. - -** py-toggle-indent-tabs-mode - Toggle `indent-tabs-mode'. - -Returns value of `indent-tabs-mode' switched to. - -** py-indent-tabs-mode-on - Switch `indent-tabs-mode' on. - -** py-indent-tabs-mode-off - Switch `indent-tabs-mode' on. - -** toggle-py-jump-on-exception - If `py-jump-on-exception' should be on or off. - - Returns value of `py-jump-on-exception' switched to. - -** py-jump-on-exception-on - Make sure, py-jump-on-exception' is on. - -Returns value of `py-jump-on-exception'. - -** py-jump-on-exception-off - Make sure, `py-jump-on-exception' is off. - -Returns value of `py-jump-on-exception'. - -** toggle-python-mode-v5-behavior-p - If `python-mode-v5-behavior-p' should be on or off. - - Returns value of `python-mode-v5-behavior-p' switched to. - -** python-mode-v5-behavior-p-on - Make sure, `python-mode-v5-behavior-p' is on. - -Returns value of `python-mode-v5-behavior-p'. - -** python-mode-v5-behavior-p-off - Make sure, `python-mode-v5-behavior-p' is off. - -Returns value of `python-mode-v5-behavior-p'. - -** py-toggle-shell-switch-buffers-on-execute - If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. - -** py-shell-switch-buffers-on-execute-on - Make sure, `py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. - -** py-shell-switch-buffers-on-execute-off - Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. - -** py-toggle-split-windows-on-execute - If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. - -** py-split-windows-on-execute-on - Make sure, `py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. - -** py-split-windows-on-execute-off - Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. - -** py-toggle-highlight-indentation - If `highlight-indentation-p' should be on or off. - -** py-highlight-indentation-off - If `highlight-indentation-p' should be on or off. - -** py-highlight-indentation-on - If `highlight-indentation-p' should be on or off. - -** py-toggle-smart-indentation - If `py-smart-indentation' should be on or off. - -Returns value of `py-smart-indentation' switched to. - -** py-smart-indentation-on - Make sure, `py-smart-indentation' is on. - -Returns value of `py-smart-indentation'. - -** py-smart-indentation-off - Make sure, `py-smart-indentation' is off. - -Returns value of `py-smart-indentation'. - -** toggle-py-smart-operator-mode-p - If `py-smart-operator-mode-p' should be on or off. - - Returns value of `py-smart-operator-mode-p' switched to. - -** py-smart-operator-mode-p-on - Make sure, py-smart-operator-mode-p' is on. - -Returns value of `py-smart-operator-mode-p'. - -** py-smart-operator-mode-p-off - Make sure, py-smart-operator-mode-p' is off. - -Returns value of `py-smart-operator-mode-p'. - -** toggle-py-use-current-dir-when-execute-p - If `py-use-current-dir-when-execute-p' should be on or off. - - Returns value of `py-use-current-dir-when-execute-p' switched to. - -** py-use-current-dir-when-execute-p-on - Make sure, py-use-current-dir-when-execute-p' is on. - -Returns value of `py-use-current-dir-when-execute-p'. - -** py-use-current-dir-when-execute-p-off - Make sure, `py-use-current-dir-when-execute-p' is off. - -Returns value of `py-use-current-dir-when-execute-p'. - -** py-toggle-autopair-mode - If `py-autopair-mode' should be on or off. - - Returns value of `py-autopair-mode' switched to. - -** py-autopair-mode-on - Make sure, py-autopair-mode' is on. - -Returns value of `py-autopair-mode'. - -** py-autopair-mode-off - Make sure, py-autopair-mode' is off. - -Returns value of `py-autopair-mode'. - -** toggle-py-switch-buffers-on-execute-p - If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. - -** py-switch-buffers-on-execute-p-on - Make sure, `py-py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. - -** py-switch-buffers-on-execute-p-off - Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. - -** toggle-py-split-windows-on-execute-p - If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. - -** py-split-windows-on-execute-p-on - Make sure, `py-py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. - -** py-split-windows-on-execute-p-off - Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. - -** py-toggle-sexp-function - Opens customization - -** py-shell-get-process - Get appropriate Python process for current buffer and return it. - -** py-shell-send-string - Send STRING to inferior Python PROCESS. -When `py-verbose-p' and MSG is non-nil messages the first line of STRING. - -** py-shell-send-file - Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME. - -** py-switch-to-shell - Switch to inferior Python process buffer. - -** python-shell-completion-complete-or-indent - Complete or indent depending on the context. -If content before pointer is all whitespace indent. If not try -to complete. - -* Helper commands -** py-guess-pdb-path - If py-pdb-path isn't set, find location of pdb.py. - -** (defun s - - -** py-forward-line - Goes to end of line after forward move. - -Travels right-margin comments. - -** py-go-to-beginning-of-comment - Go to the beginning of current line's comment, if any. - -From a programm use `py-beginning-of-comment' instead - -** py-leave-comment-or-string-backward - If inside a comment or string, leave it backward. - -** py-beginning-of-list-pps - Go to the beginning of a list. -Optional ARG indicates a start-position for `parse-partial-sexp'. -Return beginning position, nil if not inside. - -** empty-line-p - Returns t if cursor is at an line with nothing but whitespace-characters, nil otherwise. - -** py-count-lines - Count lines in accessible part until current line. - -See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7115 - -** py-send-region - Send the region to the inferior Python process. - -** py-send-region-and-go - Send the region to the inferior Python process. - -Then switch to the process buffer. - -** python-send-string - Evaluate STRING in inferior Python process. - -** py-switch-to-python - Switch to the Python process buffer, maybe starting new process. - -With prefix arg, position cursor at end of buffer. - -** py-proc - Return the current Python process. - -Start a new process if necessary. - -* Keymap and syntax -** py-insert-default-shebang - Insert in buffer shebang of installed default Python. - -** py-electric-comment - Insert a comment. If starting a comment, indent accordingly. - -If a numeric argument ARG is provided, that many "#" are inserted -non-electrically. -With C-u "#" electric behavior is inhibited inside a string or comment. - -** py-electric-colon - Insert a colon and indent accordingly. - -If a numeric argument ARG is provided, that many colons are inserted -non-electrically. - -Electric behavior is inhibited inside a string or -comment or by universal prefix C-u. - -Switched by `py-electric-colon-active-p', default is nil -See also `py-electric-colon-greedy-p' - -** py-empty-out-list-backward - Deletes all elements from list before point. - -** py-electric-backspace - Delete preceding character or level of indentation. - -With ARG do that ARG times. -Returns column reached. - -** py-electric-delete - Delete following character or levels of whitespace. - -With ARG do that ARG times. - -** py-indent-line-outmost - Indent the current line to the outmost reasonable indent. - -With optional C-u an indent with length `py-indent-offset' is inserted unconditionally - -** py-indent-line - Indent the current line according to Python rules. - -When called interactivly with C-u, ignore dedenting rules for block closing statements -(e.g. return, raise, break, continue, pass) - -An optional C-u followed by a numeric argument neither 1 nor 4 will switch off `py-smart-indentation' for this execution. This permits to correct allowed but unwanted indents. -Similar to `toggle-py-smart-indentation' resp. `py-smart-indentation-off' followed by TAB. - -This function is normally used by `indent-line-function' resp. -TAB. -Returns current indentation - -When `py-tab-shifts-region-p' is `t', not just the current line, -but the region is shiftet that way. - -If `py-tab-indents-region-p' is `t' and first TAB doesn't shift ---as indent is at outmost reasonable--, indent-region is called. - -** py-newline-and-indent - Add a newline and indent to outmost reasonable indent. -When indent is set back manually, this is honoured in following lines. - -** py-newline-and-dedent - Add a newline and indent to one level below current. -Returns column. - -** py-indent-tabs-mode - With positive ARG switch `indent-tabs-mode' on. - -With negative ARG switch `indent-tabs-mode' off. -Returns value of `indent-tabs-mode' switched to. - -** py-guess-indent-forward - Called when moving to end of a form and `py-smart-indentation' is on. - -** py-guess-indent-offset - Guess `py-indent-offset'. - -Set local value of `py-indent-offset', return it - -Might change local value of `py-indent-offset' only when called -downwards from beginning of block followed by a statement. Otherwise default-value is returned. - - -** py-narrow-to-defun - Make text outside current def or class invisible. - -The defun visible is the one that contains point or follows point. - -* Shifting -** py-shift-left - Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. - -** py-shift-right - Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. - -** py-shift-paragraph-right - Indent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-paragraph-left - Dedent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-block-right - Indent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-block-left - Dedent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-minor-block-left - Dedent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. - -** py-shift-minor-block-right - Indent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. - -** py-shift-clause-right - Indent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-clause-left - Dedent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-block-or-clause-right - Indent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-block-or-clause-left - Dedent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-def-right - Indent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-def-left - Dedent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-class-right - Indent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-class-left - Dedent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-def-or-class-right - Indent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-def-or-class-left - Dedent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-line-right - Indent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-line-left - Dedent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-statement-right - Indent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-shift-statement-left - Dedent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -** py-indent-and-forward - Indent current line according to mode, move one line forward. - -** py-indent-region - Reindent a region of Python code. - -With optional INDENT-OFFSET specify a different value than `py-indent-offset' at place. - -Guesses the outmost reasonable indent -Returns and keeps relative position - -* Positions -** py-beginning-of-paragraph-position - Returns beginning of paragraph position. - -** py-end-of-paragraph-position - Returns end of paragraph position. - -** py-beginning-of-block-position - Returns beginning of block position. - -** py-end-of-block-position - Returns end of block position. - -** py-beginning-of-minor-block-position - Returns beginning of minor-block position. - -** py-end-of-minor-block-position - Returns end of minor-block position. - -** py-beginning-of-clause-position - Returns beginning of clause position. - -** py-end-of-clause-position - Returns end of clause position. - -** py-beginning-of-block-or-clause-position - Returns beginning of block-or-clause position. - -** py-end-of-block-or-clause-position - Returns end of block-or-clause position. - -** py-beginning-of-def-position - Returns beginning of def position. - -** py-end-of-def-position - Returns end of def position. - -** py-beginning-of-class-position - Returns beginning of class position. - -** py-end-of-class-position - Returns end of class position. - -** py-beginning-of-def-or-class-position - Returns beginning of def-or-class position. - -** py-end-of-def-or-class-position - Returns end of def-or-class position. - -** py-beginning-of-line-position - Returns beginning of line position. - -** py-end-of-line-position - Returns end of line position. - -** py-beginning-of-statement-position - Returns beginning of statement position. - -** py-end-of-statement-position - Returns end of statement position. - -** py-beginning-of-comment-position - Returns beginning of comment position. - -** py-end-of-comment-position - Returns end of comment position. - -** py-beginning-of-top-level-position - Returns beginning of top-level position. - -** py-end-of-top-level-position - Returns end of top-level position. - -** py-beginning-of-partial-expression-position - Returns beginning of partial-expression position. - -** py-end-of-partial-expression-position - Returns end of partial-expression position. - -** py-beginning-of-expression-position - Returns beginning of expression position. - -** py-end-of-expression-position - Returns end of expression position. - -* some more Positions not generated by -** py-list-beginning-position - Return lists beginning position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'. - -** py-end-of-list-position - Return end position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'. - -** py-in-triplequoted-string-p - Returns character address of start tqs-string, nil if not inside. - -** py-in-string-p - Returns character address of start of string, nil if not inside. - -** py-in-statement-p - Returns list of beginning and end-position if inside. - -Result is useful for booleans too: (when (py-in-statement-p)...) -will work. - - -* Bounds -** py-bounds-of-statement - Returns bounds of statement at point. - -With optional POSITION, a number, report bounds of statement at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-statements - Bounds of consecutive multitude of statements around point. - -Indented same level, which don't open blocks. - -** py-bounds-of-block - Returns bounds of block at point. - -With optional POSITION, a number, report bounds of block at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-clause - Returns bounds of clause at point. - -With optional POSITION, a number, report bounds of clause at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-block-or-clause - Returns bounds of block-or-clause at point. - -With optional POSITION, a number, report bounds of block-or-clause at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-def - Returns bounds of def at point. - -With optional POSITION, a number, report bounds of def at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-class - Returns bounds of class at point. - -With optional POSITION, a number, report bounds of class at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-region - Returns bounds of region at point. - -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-buffer - Returns bounds of buffer at point. - -With optional POSITION, a number, report bounds of buffer at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-expression - Returns bounds of expression at point. - -With optional POSITION, a number, report bounds of expression at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-partial-expression - Returns bounds of partial-expression at point. - -With optional POSITION, a number, report bounds of partial-expression at POSITION. -Returns a list, whose car is beg, cdr - end. - -** py-bounds-of-declarations - Bounds of consecutive multitude of assigments resp. statements around point. - -Indented same level, which don't open blocks. -Typically declarations resp. initialisations of variables following -a class or function definition. -See also py-bounds-of-statements - -* Comments, Filling -** py-beginning-of-comment - Go to the beginning of current line's comment, if any. - -Returns position if succesful. - -** py-end-of-comment - Go to the end of comment at point. - -Returns position, nil if not in comment. - -* Comment forms -** py-comment-region - Like `comment-region' but uses double hash (`#') comment starter. - -** py-comment-block - Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-minor-block - Comments minor-block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-top-level - Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-clause - Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-block-or-clause - Comments block-or-clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-def - Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-class - Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-def-or-class - Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-comment-statement - Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -** py-uncomment - Uncomment commented lines at point. - -If region is active, restrict uncommenting at region - -** py-delete-comments-in-def-or-class - Delete all commented lines in def-or-class at point - -** py-delete-comments-in-class - Delete all commented lines in class at point - -** py-delete-comments-in-block - Delete all commented lines in block at point - -** py-delete-comments-in-region - Delete all commented lines in region. - -** py-fill-comment - Fill the comment paragraph at point - -** py-end-of-string - Go to end of string at point, return position. - -Takes the result of (syntax-ppss) - -** py-fill-this-paragraph - Fill just the paragraph at point. - -** py-fill-paragraph - `fill-paragraph-function' - -If `py-paragraph-fill-docstring-p' and inside a docstring, the whole docstring is formatted. -See also `py-fill-string' - -** py-fill-labelled-string - Fill string or paragraph containing lines starting with label - -See lp:1066489 - -** py-fill-string - String fill function for `py-fill-paragraph'. -JUSTIFY should be used (if applicable) as in `fill-paragraph'. - -DOCSTRING is either a boolean or 'no -If `py-paragraph-fill-docstring-p' is `t', `M-q` fills the -complete docstring according to setting of `py-docstring-style' - -** py-fill-string-django - Fill docstring according to Django's coding standards style. - - """ - Process foo, return bar. - """ - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -** py-fill-string-onetwo - One newline and start and Two at end style. - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -** py-fill-string-pep-257 - PEP-257 with 2 newlines at end of string. - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -** py-fill-string-pep-257-nn - PEP-257 with 1 newline at end of string. - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -** py-fill-string-symmetric - Symmetric style. - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -** py-beginning-of-top-level-p - Returns position, if cursor is at the beginning of a top-level, nil otherwise. - -* Opens-p -** py-statement-opens-block-p - Return position if the current statement opens a block -in stricter or wider sense. - -For stricter sense specify regexp. - -** py-statement-opens-clause-p - Return position if the current statement opens block or clause. - -** py-statement-opens-block-or-clause-p - Return position if the current statement opens block or clause. - -** py-statement-opens-class-p - Return `t' if the statement opens a functions or class definition, nil otherwise. - -** py-statement-opens-def-p - Return `t' if the statement opens a functions or class definition, nil otherwise. - -** py-statement-opens-def-or-class-p - Return `t' if the statement opens a functions or class definition, nil otherwise. - -** py-look-downward-for-clause - If beginning of other clause exists downward in current block. - -If succesful return position. - -** py-current-defun - Go to the outermost method or class definition in current scope. - -Python value for `add-log-current-defun-function'. -This tells add-log.el how to find the current function/method/variable. -Returns name of class or methods definition, if found, nil otherwise. - -See customizable variables `py-current-defun-show' and `py-current-defun-delay'. - -** py-sort-imports - Sort multiline imports. - -Put point inside the parentheses of a multiline import and hit -M-x py-sort-imports to sort the imports lexicographically - -** py-which-def-or-class - Returns concatenated `def' and `class' names in hierarchical order, if cursor is inside. - -Returns "???" otherwise -Used by variable `which-func-functions' - -** py-which-function - Return the name of the function or class, if curser is in, return nil otherwise. - -* Beginning/End -** py-beginning-of-statements - Got to the beginning of statements in current level which don't open blocks. - -** py-end-of-statements - Got to the end of statements in current level which don't open blocks. - -** py-beginning-of-expression - Go to the beginning of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by "." operator, thus composed by minor python expressions. - -If already at the beginning or before a expression, go to next expression in buffer upwards - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes. - - -** py-end-of-expression - Go to the end of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by "." operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference - -Operators however are left aside resp. limit py-expression designed for edit-purposes. - -** py-beginning-of-partial-expression - - -** py-end-of-partial-expression - - -** py-beginning-of-line - Go to beginning-of-line, return position. - -If already at beginning-of-line and not at BOB, go to beginning of previous line. - -** py-end-of-line - Go to end-of-line, return position. - -If already at end-of-line and not at EOB, go to end of next line. - -** py-beginning-of-statement - Go to the initial line of a simple statement. - -For beginning of compound statement use py-beginning-of-block. -For beginning of clause py-beginning-of-clause. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - - -** py-beginning-of-declarations - Got to the beginning of assigments resp. statements in current level which don't open blocks. - - -** py-end-of-declarations - Got to the end of assigments resp. statements in current level which don't open blocks. - -* Beginning of forms -** py-beginning-of-form-intern - Go to beginning of FORM. - -With INDENT, go to beginning one level above. -Whit IACT, print result in message buffer. - -Returns beginning of FORM if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-block - Go to beginning block, skip whitespace at BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-clause - Go to beginning clause, skip whitespace at BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-block-or-clause - Go to beginning block-or-clause, skip whitespace at BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-def - Go to beginning def, skip whitespace at BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-class - Go to beginning class, skip whitespace at BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-def-or-class - Go to beginning def-or-class, skip whitespace at BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-if-block - Go to beginning if-block, skip whitespace at BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-try-block - Go to beginning try-block, skip whitespace at BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-minor-block - Go to beginning minor-block, skip whitespace at BOL. - -Returns beginning of minor-block if successful, nil otherwise -A minor block is started by a `for', `if', `try' or `with'. - - -** py-beginning-of-block-lc - Go to beginning block, go to BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-clause-lc - Go to beginning clause, go to BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-block-or-clause-lc - Go to beginning block-or-clause, go to BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-def-lc - Go to beginning def, go to BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-class-lc - Go to beginning class, go to BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-def-or-class-lc - Go to beginning def-or-class, go to BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-if-block-lc - Go to beginning if-block, go to BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-try-block-lc - Go to beginning try-block, go to BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-minor-block-lc - Go to beginning minor-block, go to BOL. - -Returns beginning of minor-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning-of-top-level - Go up to beginning of statments until level of indentation is null. - -Returns position if successful, nil otherwise - -** py-end-of-top-level - Go to end of top-level form at point. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-beginning - Go to beginning of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end - Go to end of of compound statement or definition at point. - -Returns position block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-up - Go up or to beginning of form if inside. - -If inside a delimited form --string or list-- go to it's beginning. -If not at beginning of a statement or block, go to it's beginning. -If at beginning of a statement or block, go to beginning one level above of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-down - Go to beginning one level below of compound statement or definition at point. - -If no statement or block below, but a delimited form --string or list-- go to it's beginning. Repeated call from there will behave like down-list. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-block - Go to end of block. - -Returns end of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-clause - Go to end of clause. - -Returns end of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-block-or-clause - Go to end of block-or-clause. - -Returns end of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-def - Go to end of def. - -Returns end of def if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-class - Go to end of class. - -Returns end of class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-def-or-class - Go to end of def-or-class. - -Returns end of def-or-class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-if-block - Go to end of if-block. - -Returns end of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-try-block - Go to end of try-block. - -Returns end of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -** py-end-of-minor-block - Go to end of minor-block. - -Returns end of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. - - -* Forms -** py-declarations - Copy and mark assigments resp. statements in current level which don't open blocks or start with a keyword. - -See also `py-statements', which is more general, taking also simple statements starting with a keyword. - -** py-statements - Copy and mark simple statements in current level which don't open blocks. - -More general than py-declarations, which would stop at keywords like a print-statement. - -** py-end-of-statement - Go to the last char of current statement. - -To go just beyond the final line of the current statement, use `py-down-statement-bol'. - -** py-goto-statement-below - Goto beginning of next statement. - -** py-beginning-of-decorator - Go to the beginning of a decorator. - -Returns position if succesful - -** py-end-of-decorator - Go to the end of a decorator. - -Returns position if succesful - -* Mark -** py-mark-paragraph - Mark paragraph at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-block - Mark block at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-minor-block - Mark minor-block at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-clause - Mark clause at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-block-or-clause - Mark block-or-clause at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-def - Mark def at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -** py-mark-class - Mark class at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -** py-mark-def-or-class - Mark def-or-class at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -** py-mark-line - Mark line at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-statement - Mark statement at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-top-level - Mark top-level form at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-expression - Mark expression at point. - -Returns beginning and end positions of marked area, a cons. - -** py-mark-partial-expression - Mark partial-expression at point. - -Returns beginning and end positions of marked area, a cons. - -* Copy -** py-copy-statement - Copy statement at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-top-level - Copy top-level at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-block - Copy block at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-clause - Copy clause at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-block-or-clause - Copy block-or-clause at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-def - Copy def at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-class - Copy class at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-def-or-class - Copy def-or-class at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-expression - Copy expression at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-partial-expression - Copy partial-expression at point. - -Store data in kill ring, so it might yanked back. - -** py-copy-minor-block - Copy minor-block at point. - -Store data in kill ring, so it might yanked back. - -* Delete -** py-delete-statement - Delete STATEMENT at point. - -Don't store data in kill ring. - -** py-delete-top-level - Delete TOP-LEVEL at point. - -Don't store data in kill ring. - -** py-delete-block - Delete BLOCK at point. - -Don't store data in kill ring. - -** py-delete-block-or-clause - Delete BLOCK-OR-CLAUSE at point. - -Don't store data in kill ring. - -** py-delete-def - Delete DEF at point. - -Don't store data in kill ring. - -** py-delete-class - Delete CLASS at point. - -Don't store data in kill ring. - -** py-delete-def-or-class - Delete DEF-OR-CLASS at point. - -Don't store data in kill ring. - -** py-delete-expression - Delete EXPRESSION at point. - -Don't store data in kill ring. - -** py-delete-partial-expression - Delete PARTIAL-EXPRESSION at point. - -Don't store data in kill ring. - -** py-delete-minor-block - Delete MINOR-BLOCK at point. - -Don't store data in kill ring. -A minor block is started by a `for', `if', `try' or `with'. - -* Kill -** py-kill-statements - Delete statements declared in current level. - -Store deleted statements in kill-ring - -** py-kill-declarations - Delete variables declared in current level. - -Store deleted variables in kill-ring - -** py-kill-expression - Delete expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-partial-expression - Delete partial-expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. - -"." operators delimit a partial-expression expression on it's level, that's the difference to compound expressions. - -** py-kill-statement - Delete statement at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-top-level - Delete top-level form at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-block - Delete block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-minor-block - Delete minor-block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-block-or-clause - Delete block-or-clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-def-or-class - Delete def-or-class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-class - Delete class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-def - Delete def at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-clause - Delete clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -* Beginning of line forms -** py-beginning-of-block-bol-p - Returns position, if cursor is at the beginning of block, at beginning of line, nil otherwise. - -** py-end-of-block-bol - Goto beginning of line following end of block. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block': down from current definition to next beginning of block below. - -** py-mark-block-bol - Mark block, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -** py-copy-block-bol - Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-block-bol - Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-block-bol - Delete block bol at point. - -Don't store data in kill ring. - -** py-beginning-of-clause-bol-p - Returns position, if cursor is at the beginning of clause, at beginning of line, nil otherwise. - -** py-end-of-clause-bol - Goto beginning of line following end of clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-clause': down from current definition to next beginning of clause below. - -** py-mark-clause-bol - Mark clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -** py-copy-clause-bol - Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-clause-bol - Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-clause-bol - Delete clause bol at point. - -Don't store data in kill ring. - -** py-beginning-of-block-or-clause-bol-p - Returns position, if cursor is at the beginning of block-or-clause, at beginning of line, nil otherwise. - -** py-end-of-block-or-clause-bol - Goto beginning of line following end of block-or-clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block-or-clause': down from current definition to next beginning of block-or-clause below. - -** py-mark-block-or-clause-bol - Mark block-or-clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -** py-copy-block-or-clause-bol - Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-block-or-clause-bol - Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-block-or-clause-bol - Delete block-or-clause bol at point. - -Don't store data in kill ring. - -** py-beginning-of-def-bol-p - Returns position, if cursor is at the beginning of def, at beginning of line, nil otherwise. - -** py-end-of-def-bol - Goto beginning of line following end of def. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def': down from current definition to next beginning of def below. - -** py-mark-def-bol - Mark def, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -** py-copy-def-bol - Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-def-bol - Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-def-bol - Delete def bol at point. - -Don't store data in kill ring. - -** py-beginning-of-class-bol-p - Returns position, if cursor is at the beginning of class, at beginning of line, nil otherwise. - -** py-end-of-class-bol - Goto beginning of line following end of class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-class': down from current definition to next beginning of class below. - -** py-mark-class-bol - Mark class, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -** py-copy-class-bol - Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-class-bol - Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-class-bol - Delete class bol at point. - -Don't store data in kill ring. - -** py-beginning-of-def-or-class-bol-p - Returns position, if cursor is at the beginning of def-or-class, at beginning of line, nil otherwise. - -** py-end-of-def-or-class-bol - Goto beginning of line following end of def-or-class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def-or-class': down from current definition to next beginning of def-or-class below. - -** py-mark-def-or-class-bol - Mark def-or-class, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -** py-copy-def-or-class-bol - Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-def-or-class-bol - Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-def-or-class-bol - Delete def-or-class bol at point. - -Don't store data in kill ring. - -** py-beginning-of-statement-bol-p - Returns position, if cursor is at the beginning of statement, at beginning of line, nil otherwise. - -** py-beginning-of-statement-bol - Goto beginning of line where statement starts. - Returns position reached, if successful, nil otherwise. - -See also `py-up-statement': up from current definition to next beginning of statement above. - -** py-end-of-statement-bol - Goto beginning of line following end of statement. - Returns position reached, if successful, nil otherwise. - -See also `py-down-statement': down from current definition to next beginning of statement below. - -** py-mark-statement-bol - Mark statement, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -** py-copy-statement-bol - Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-kill-statement-bol - Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -** py-delete-statement-bol - Delete statement bol at point. - -Don't store data in kill ring. - -* Up/Down -** py-up-statement - Go to the beginning of next statement upwards in buffer. - -Return position if statement found, nil otherwise. - -** py-down-statement - Go to the beginning of next statement downwards in buffer. - -Return position if statement found, nil otherwise. - -** py-up-block - Go to the beginning of next block upwards in buffer. - -Return position if block found, nil otherwise. - -** py-up-minor-block - Go to the beginning of next minor-block upwards in buffer. - -Return position if minor-block found, nil otherwise. - -** py-up-clause - Go to the beginning of next clause upwards in buffer. - -Return position if clause found, nil otherwise. - -** py-up-block-or-clause - Go to the beginning of next block-or-clause upwards in buffer. - -Return position if block-or-clause found, nil otherwise. - -** py-up-def - Go to the beginning of next def upwards in buffer. - -Return position if def found, nil otherwise. - -** py-up-class - Go to the beginning of next class upwards in buffer. - -Return position if class found, nil otherwise. - -** py-up-def-or-class - Go to the beginning of next def-or-class upwards in buffer. - -Return position if def-or-class found, nil otherwise. - -** py-down-block - Go to the beginning of next block below in buffer. - -Return position if block found, nil otherwise. - -** py-down-minor-block - Go to the beginning of next minor-block below in buffer. - -Return position if minor-block found, nil otherwise. - -** py-down-clause - Go to the beginning of next clause below in buffer. - -Return position if clause found, nil otherwise. - -** py-down-block-or-clause - Go to the beginning of next block-or-clause below in buffer. - -Return position if block-or-clause found, nil otherwise. - -** py-down-def - Go to the beginning of next def below in buffer. - -Return position if def found, nil otherwise. - -** py-down-class - Go to the beginning of next class below in buffer. - -Return position if class found, nil otherwise. - -** py-down-def-or-class - Go to the beginning of next def-or-class below in buffer. - -Return position if def-or-class found, nil otherwise. - -** py-up-block-bol - Go to the beginning of next block upwards in buffer. - -Go to beginning of line. -Return position if block found, nil otherwise. - -** py-up-minor-block-bol - Go to the beginning of next minor-block upwards in buffer. - -Go to beginning of line. -Return position if minor-block found, nil otherwise. - -** py-up-clause-bol - Go to the beginning of next clause upwards in buffer. - -Go to beginning of line. -Return position if clause found, nil otherwise. - -** py-up-block-or-clause-bol - Go to the beginning of next block-or-clause upwards in buffer. - -Go to beginning of line. -Return position if block-or-clause found, nil otherwise. - -** py-up-def-bol - Go to the beginning of next def upwards in buffer. - -Go to beginning of line. -Return position if def found, nil otherwise. - -** py-up-class-bol - Go to the beginning of next class upwards in buffer. - -Go to beginning of line. -Return position if class found, nil otherwise. - -** py-up-def-or-class-bol - Go to the beginning of next def-or-class upwards in buffer. - -Go to beginning of line. -Return position if def-or-class found, nil otherwise. - -** py-down-block-bol - Go to the beginning of next block below in buffer. - -Go to beginning of line -Return position if block found, nil otherwise - -** py-down-minor-block-bol - Go to the beginning of next minor-block below in buffer. - -Go to beginning of line -Return position if minor-block found, nil otherwise - -** py-down-clause-bol - Go to the beginning of next clause below in buffer. - -Go to beginning of line -Return position if clause found, nil otherwise - -** py-down-block-or-clause-bol - Go to the beginning of next block-or-clause below in buffer. - -Go to beginning of line -Return position if block-or-clause found, nil otherwise - -** py-down-def-bol - Go to the beginning of next def below in buffer. - -Go to beginning of line -Return position if def found, nil otherwise - -** py-down-class-bol - Go to the beginning of next class below in buffer. - -Go to beginning of line -Return position if class found, nil otherwise - -** py-down-def-or-class-bol - Go to the beginning of next def-or-class below in buffer. - -Go to beginning of line -Return position if def-or-class found, nil otherwise - -** py-forward-into-nomenclature - Move forward to end of a nomenclature section or word. - -With C-u (programmatically, optional argument ARG), do it that many times. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores. - -** py-backward-into-nomenclature - Move backward to beginning of a nomenclature section or word. - -With optional ARG, move that many times. If ARG is negative, move -forward. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores. - -** match-paren - Go to the matching brace, bracket or parenthesis if on its counterpart. - -Otherwise insert the character, the key is assigned to, here `%'. -With universal arg  insert a `%'. - -* Python named shells -** python - Start an Python interpreter. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -** ipython - Start an IPython interpreter. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -** python3 - Start an Python3 interpreter. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -** python2 - Start an Python2 interpreter. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -** python2\.7 - Start an Python2.7 interpreter. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -** jython - Start an Jython interpreter. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -** python3\.2 - Start an Python3.2 interpreter. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -** python3\.3 - Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** python3\.4 - Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** bpython - Start an Bpython interpreter. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -** python-dedicated - Start an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -** ipython-dedicated - Start an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -** python3-dedicated - Start an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -** python2-dedicated - Start an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -** python2\.7-dedicated - Start an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -** jython-dedicated - Start an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -** python3\.2-dedicated - Start an unique Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -** python3\.3-dedicated - Start an unique Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** bpython-dedicated - Start an unique Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -** python-switch - Switch to Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -** ipython-switch - Switch to IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -** python3-switch - Switch to Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -** python2-switch - Switch to Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -** python2\.7-switch - Switch to Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -** jython-switch - Switch to Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -** python3\.2-switch - Switch to Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -** python3\.3-switch - Switch to Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** bpython-switch - Switch to Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -** python-no-switch - Open an Python interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -** ipython-no-switch - Open an IPython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -** python3-no-switch - Open an Python3 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -** python2-no-switch - Open an Python2 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -** python2\.7-no-switch - Open an Python2.7 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -** jython-no-switch - Open an Jython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -** python3\.2-no-switch - Open an Python3.2 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -** python3\.3-no-switch - Open an Python3.3 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** bpython-no-switch - Open an Bpython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -** python-switch-dedicated - Switch to an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -** ipython-switch-dedicated - Switch to an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -** python3-switch-dedicated - Switch to an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -** python2-switch-dedicated - Switch to an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -** python2\.7-switch-dedicated - Switch to an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -** jython-switch-dedicated - Switch to an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -** python3\.2-switch-dedicated - Switch to an unique Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -** python3\.3-switch-dedicated - Switch to an unique Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -** bpython-switch-dedicated - Switch to an unique Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -** py-which-execute-file-command - Return the command appropriate to Python version. - -Per default it's "(format "execfile(r'%s') # PYTHON-MODE\n" filename)" for Python 2 series. - -** py-execute-region-no-switch - Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', buffer with region stays current. - - -** py-execute-region-switch - Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', output-buffer will being switched to. - - -** py-execute-region - Send the region to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. - -Optional DEDICATED (boolean) - - -** py-execute-region-default - Send the region to the systems default Python interpreter. - -** py-execute-region-dedicated - Get the region processed by an unique Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. - -** py-execute-region-default-dedicated - Send the region to an unique shell of systems default Python. - -** py-execute-python-mode-v5 - - -** py-execute-string - Send the argument STRING to a Python interpreter. - -See also `py-execute-region'. - -** py-execute-string-dedicated - Send the argument STRING to an unique Python interpreter. - -See also `py-execute-region'. - -** py-fetch-py-master-file - Lookup if a `py-master-file' is specified. - -See also doku of variable `py-master-file' - -** py-execute-import-or-reload - Import the current buffer's file in a Python interpreter. - -If the file has already been imported, then do reload instead to get -the latest version. - -If the file's name does not end in ".py", then do execfile instead. - -If the current buffer is not visiting a file, do `py-execute-buffer' -instead. - -If the file local variable `py-master-file' is non-nil, import or -reload the named file instead of the buffer's file. The file may be -saved based on the value of `py-execute-import-or-reload-save-p'. - -See also `M-x py-execute-region'. - -This may be preferable to `M-x py-execute-buffer' because: - - - Definitions stay in their module rather than appearing at top - level, where they would clutter the global namespace and not affect - uses of qualified names (MODULE.NAME). - - - The Python debugger gets line number information about the functions. - -** py-execute-buffer-dedicated - Send the contents of the buffer to a unique Python interpreter. - -** py-execute-buffer-switch - Send the contents of the buffer to a Python interpreter and switches to output. - -** py-execute-buffer-dedicated-switch - Send the contents of the buffer to an unique Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p'. - -** py-execute-buffer - Send the contents of the buffer to a Python interpreter. - -** py-execute-buffer-no-switch - Send the contents of the buffer to a Python interpreter but don't switch to output. - -** py-execute-defun - Send the current defun (class or method) to the inferior Python process. - -** py-process-file - Process "python filename". - -Optional OUTPUT-BUFFER and ERROR-BUFFER might be given. - -** py-execute-line - Send current line from beginning of indent to Python interpreter. - -** py-output-filter - Clear output buffer from py-shell-input prompt etc. - -** py-execute-file - When called interactively, user is prompted for filename. - -* Pdb -** py-pdbtrack-toggle-stack-tracking - Set variable `py-pdbtrack-do-tracking-p'. - -** turn-on-pdbtrack - - -** turn-off-pdbtrack - - -* Documentation -** py-documentation - Launch PyDOC on the Word at Point - -** py-fetch-docu - Lookup in current buffer for the doku for the symbol at point. - -Useful for newly defined symbol, not known to python yet. - -** py-find-imports - Find top-level imports. - -Returns imports - -** py-eldoc-function - Print help on symbol at point. - -** py-describe-symbol - Print help on symbol at point. - -If symbol is defined in current buffer, jump to it's definition -Optional C-u used for debugging, will prevent deletion of temp file. - -** py-describe-mode - Dump long form of `python-mode' docs. - -** py-load-file - Load a Python file FILE-NAME into the inferior Python process. - -If the file has extension `.py' import or reload it as a module. -Treating it as a module keeps the global namespace clean, provides -function location information for debugging, and supports users of -module-qualified names. - -** py-find-definition - Find source of definition of SYMBOL. - -Interactively, prompt for SYMBOL. - -* Miscellanus -** py-insert-super - Insert a function "super()" from current environment. - -As example given in Python v3.1 documentation » The Python Standard Library » - -class C(B): - def method(self, arg): - super().method(arg) # This does the same thing as: - # super(C, self).method(arg) - -Returns the string inserted. - -** py-nesting-level - Accepts the output of `parse-partial-sexp'. - -** py-beginning-of-commented-section - Leave upwards comments and/or empty lines. - -** py-continuation-offset - With numeric ARG different from 1 py-continuation-offset is set to that value; returns py-continuation-offset. - -** py-compute-indentation - Compute Python indentation. - -When HONOR-BLOCK-CLOSE-P is non-nil, statements such as `return', -`raise', `break', `continue', and `pass' force one level of dedenting. - -Optional arguments are flags resp. values set and used by `py-compute-indentation' internally - - -** py-indentation-of-statement - Returns the indenation of the statement at point. - -** py-guess-default-python - Defaults to "python", if guessing didn't succeed. - -** py-set-ipython-completion-command-string - Set and return `ipython-completion-command-string'. - -** py-shell-dedicated - Start an interactive Python interpreter in another window. - -With optional C-u user is prompted by -`py-choose-shell' for command and options to pass to the Python -interpreter. - - -** py-shell - Start an interactive Python interpreter in another window. -Interactively, C-u 4 prompts for a buffer. -C-u 2 prompts for `py-python-command-args'. -If `default-directory' is a remote file name, it is also prompted -to change if called with a prefix arg. - -Returns py-shell's buffer-name. -Optional string PYSHELLNAME overrides default `py-shell-name'. -BUFFER allows specifying a name, the Python process is connected to -When DONE is `t', `py-shell-manage-windows' is omitted - - -** py-indent-forward-line - Indent and move one line forward to next indentation. -Returns column of line reached. - -If `py-kill-empty-line' is non-nil, delete an empty line. -When closing a form, use py-close-block et al, which will move and indent likewise. -With M-x universal argument just indent. - - -** py-dedent-forward-line - Dedent line and move one line forward. - -** py-dedent - Dedent line according to `py-indent-offset'. - -With arg, do it that many times. -If point is between indent levels, dedent to next level. -Return indentation reached, if dedent done, nil otherwise. - -Affected by `py-dedent-keep-relative-column'. - -** py-close-def - Set indent level to that of beginning of function definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -** py-close-class - Set indent level to that of beginning of class definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -** py-close-clause - Set indent level to that of beginning of clause definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -** py-close-block - Set indent level to that of beginning of block definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -** py-class-at-point - Return class definition as string. - -With interactive call, send it to the message buffer too. - -** py-line-at-point - Return line as string. - With interactive call, send it to the message buffer too. - -** py-looking-at-keywords-p - If looking at a python keyword. Returns t or nil. - -** py-match-paren-mode - py-match-paren-mode nil oder t - -** py-match-paren - Goto to the opening or closing of block before or after point. - -With arg, do it that many times. - Closes unclosed block if jumping from beginning. - -** py-printform-insert - Inserts a print statement out of current `(car kill-ring)' by default, inserts ARG instead if delivered. - -** eva - Put "eval(...)" forms around strings at point. - -** pst-here - Kill previous "pdb.set_trace()" and insert it at point. - -** py-line-to-printform-python2 - Transforms the item on current in a print statement. - -* Imenu -** py-switch-imenu-index-function - Switch between series 5. index machine `py-imenu-create-index' and `py-imenu-create-index-new', which also lists modules variables - -** py-toggle-local-default-use - - -** py-choose-shell-by-path - Select Python executable according to version desplayed in path, current buffer-file is selected from. - -Returns versioned string, nil if nothing appropriate found - -** py-choose-shell-by-shebang - Choose shell by looking at #! on the first line. - -Returns the specified Python resp. Jython shell command name. - -** py-which-python - Returns version of Python of current environment, a number. - -** py-python-current-environment - Returns path of current Python installation. - -** py-switch-shell - Toggles between the interpreter customized in `py-shell-toggle-1' resp. `py-shell-toggle-2'. Was hard-coded CPython and Jython in earlier versions, now starts with Python2 and Python3 by default. - -ARG might be a python-version string to set to. - -C-u `py-toggle-shell' prompts to specify a reachable Python command. -C-u followed by numerical arg 2 or 3, `py-toggle-shell' opens a respective Python shell. -C-u followed by numerical arg 5 opens a Jython shell. - -Should you need more shells to select, extend this command by adding inside the first cond: - - ((eq NUMBER (prefix-numeric-value arg)) - "MY-PATH-TO-SHELL") - - -** py-choose-shell - Return an appropriate executable as a string. - -Returns nil, if no executable found. - -This does the following: - - look for an interpreter with `py-choose-shell-by-shebang' - - examine imports using `py-choose-shell-by-import' - - look if Path/To/File indicates a Python version - - if not successful, return default value of `py-shell-name' - -When interactivly called, messages the shell name, Emacs would in the given circtumstances. - -With C-u 4 is called `py-switch-shell' see docu there. - - -** py-install-directory-check - Do some sanity check for `py-install-directory'. - -Returns `t' if successful. - -** py-guess-py-install-directory - Takes value of user directory aka $HOME -if `(locate-library "python-mode")' is not succesful. - -Used only, if `py-install-directory' is empty. - -** py-set-load-path - Include needed subdirs of python-mode directory. - -* Abbrevs -** py-edit-abbrevs - Jumps to `python-mode-abbrev-table' in a buffer containing lists of abbrev definitions. -You can edit them and type C-c C-c to redefine abbrevs -according to your editing. -Buffer contains a header line for each abbrev table, - which is the abbrev table name in parentheses. -This is followed by one line per abbrev in that table: -NAME USECOUNT EXPANSION HOOK -where NAME and EXPANSION are strings with quotes, -USECOUNT is an integer, and HOOK is any valid function -or may be omitted (it is usually omitted). - -** py-add-abbrev - Defines python-mode specific abbrev for last expressions before point. -Argument is how many `py-partial-expression's form the expansion; or zero means the region is the expansion. - -Reads the abbreviation in the minibuffer; with numeric arg it displays a proposal for an abbrev. -Proposal is composed from the initial character(s) of the -expansion. - -Don't use this function in a Lisp program; use `define-abbrev' instead. - -** py-python-version - Returns versions number of a Python EXECUTABLE, string. - -If no EXECUTABLE given, `py-shell-name' is used. -Interactively output of `--version' is displayed. - -** py-version - Echo the current version of `python-mode' in the minibuffer. - -** py-install-search-local - - -** py-install-local-shells - Builds Python-shell commands from executable found in LOCAL. - -If LOCAL is empty, shell-command `find' searches beneath current directory. -Eval resulting buffer to install it, see customizable `py-extensions'. - -* Completion -** py-python-script-complete - Complete word before point, if any. - -When `py-no-completion-calls-dabbrev-expand-p' is non-nil, try dabbrev-expand. Otherwise, when `py-indent-no-completion-p' is non-nil, call `tab-to-tab-stop'. - -** py-python2-shell-complete - - -** py-python3-shell-complete - Complete word before point, if any. Otherwise insert TAB. - -** py-shell-complete - Complete word before point, if any. Otherwise insert TAB. - -** ipython-complete - Complete the python symbol before point. - -If no completion available, insert a TAB. -Returns the completed symbol, a string, if successful, nil otherwise. - -* Checker -** pylint-flymake-mode - Toggle `pylint' `flymake-mode'. - -** pyflakes-flymake-mode - Toggle `pyflakes' `flymake-mode'. - -** pychecker-flymake-mode - Toggle `pychecker' `flymake-mode'. - -** pep8-flymake-mode - Toggle `pep8' `flymake-mode'. - -** pyflakespep8-flymake-mode - Toggle `pyflakespep8' `flymake-mode'. - -Joint call to pyflakes and pep8 as proposed by - -Keegan Carruthers-Smith - - - -** py-pep8-run - Run pep8, check formatting (default on the file currently visited). - - -** py-pep8-help - Display pep8 command line help messages. - -** py-pylint-run - Run pylint (default on the file currently visited). - -For help see M-x pylint-help resp. M-x pylint-long-help. -Home-page: http://www.logilab.org/project/pylint - -** py-pylint-help - Display Pylint command line help messages. - -Let's have this until more Emacs-like help is prepared - -** py-pylint-doku - Display Pylint Documentation. - -Calls `pylint --full-documentation' - -** py-pyflakes-run - Run pyflakes (default on the file currently visited). - -For help see M-x pyflakes-help resp. M-x pyflakes-long-help. -Home-page: http://www.logilab.org/project/pyflakes - -** py-pyflakes-help - Display Pyflakes command line help messages. - -Let's have this until more Emacs-like help is prepared - -** py-pyflakespep8-run - Run pyflakespep8, check formatting (default on the file currently visited). - - -** py-pyflakespep8-help - Display pyflakespep8 command line help messages. - -** py-flake8-run - Run flake8, check formatting (default on the file currently visited). - - -** py-flake8-help - Display flake8 command line help messages. - -** py-pychecker-run - Run pychecker (default on the file currently visited). - -* Skeletons -** py-load-skeletons - These skeletons are loaded by python-mode, if `py-load-skeletons-p' is non-nil. - -* Virtualenv -** (defun v - - -** virtualenv-current - Barfs the current activated virtualenv - -** virtualenv-activate - Activate the virtualenv located in DIR - -** virtualenv-deactivate - Deactivate the current virtual enviroment - -** virtualenv-workon - Issue a virtualenvwrapper-like virtualenv-workon command - -* Execute forms at point -** py-execute-statement - Send statement at point to a Python interpreter. - -** py-execute-top-level - Send top-level at point to a Python interpreter. - -** py-execute-block - Send block at point to a Python interpreter. - -** py-execute-minor-block - Send minor-block at point to a Python interpreter. - -A minor block is started by a `for', `if', `try' or `with'. - - -** py-execute-block-or-clause - Send block-or-clause at point to a Python interpreter. - -** py-execute-def - Send def at point to a Python interpreter. - -** py-execute-class - Send class at point to a Python interpreter. - -** py-execute-def-or-class - Send def-or-class at point to a Python interpreter. - -** py-execute-expression - Send expression at point to a Python interpreter. - -** py-execute-partial-expression - Send partial-expression at point to a Python interpreter. - -* Execute line -* Execute file commands -** py-execute-file-python - Send file to a Python interpreter. - -** py-execute-file-python-switch - Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python-no-switch - Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python-dedicated - Send file to a Python interpreter. - -Uses a dedicated shell. - -** py-execute-file-python-dedicated-switch - Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-ipython - Send file to a Ipython interpreter. - -** py-execute-file-ipython-switch - Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-ipython-no-switch - Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-ipython-dedicated - Send file to a Ipython interpreter. - -Uses a dedicated shell. - -** py-execute-file-ipython-dedicated-switch - Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3 - Send file to a Python3 interpreter. - -** py-execute-file-python3-switch - Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3-no-switch - Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python3-dedicated - Send file to a Python3 interpreter. - -Uses a dedicated shell. - -** py-execute-file-python3-dedicated-switch - Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python2 - Send file to a Python2 interpreter. - -** py-execute-file-python2-switch - Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python2-no-switch - Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python2-dedicated - Send file to a Python2 interpreter. - -Uses a dedicated shell. - -** py-execute-file-python2-dedicated-switch - Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python2\.7 - Send file to a Python2.7 interpreter. - -** py-execute-file-python2\.7-switch - Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python2\.7-no-switch - Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python2\.7-dedicated - Send file to a Python2.7 interpreter. - -Uses a dedicated shell. - -** py-execute-file-python2\.7-dedicated-switch - Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-jython - Send file to a Jython interpreter. - -** py-execute-file-jython-switch - Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-jython-no-switch - Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-jython-dedicated - Send file to a Jython interpreter. - -Uses a dedicated shell. - -** py-execute-file-jython-dedicated-switch - Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3\.2 - Send file to a Python3.2 interpreter. - -** py-execute-file-python3\.2-switch - Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3\.2-no-switch - Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python3\.2-dedicated - Send file to a Python3.2 interpreter. - -Uses a dedicated shell. - -** py-execute-file-python3\.2-dedicated-switch - Send file to a Python3.2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3\.3 - Send file to a Python3.3 interpreter. - -** py-execute-file-python3\.3-switch - Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-python3\.3-no-switch - Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-python3\.3-dedicated - Send file to a Python3.3 interpreter. - -Uses a dedicated shell. - -** py-execute-file-python3\.3-dedicated-switch - Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-bpython - Send file to a Bpython interpreter. - -** py-execute-file-bpython-switch - Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -** py-execute-file-bpython-no-switch - Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -** py-execute-file-bpython-dedicated - Send file to a Bpython interpreter. - -Uses a dedicated shell. - -** py-execute-file-bpython-dedicated-switch - Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -* Extended executes -** py-execute-statement-python - Send statement at point to Python interpreter. - -** py-execute-statement-python-switch - Send statement at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python-no-switch - Send statement at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python-dedicated - Send statement at point to Python unique interpreter. - -** py-execute-statement-python-dedicated-switch - Send statement at point to Python unique interpreter and switch to result. - -** py-execute-statement-ipython - Send statement at point to IPython interpreter. - -** py-execute-statement-ipython-switch - Send statement at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-ipython-no-switch - Send statement at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-ipython-dedicated - Send statement at point to IPython unique interpreter. - -** py-execute-statement-ipython-dedicated-switch - Send statement at point to IPython unique interpreter and switch to result. - -** py-execute-statement-python3 - Send statement at point to Python3 interpreter. - -** py-execute-statement-python3-switch - Send statement at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python3-no-switch - Send statement at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python3-dedicated - Send statement at point to Python3 unique interpreter. - -** py-execute-statement-python3-dedicated-switch - Send statement at point to Python3 unique interpreter and switch to result. - -** py-execute-statement-python2 - Send statement at point to Python2 interpreter. - -** py-execute-statement-python2-switch - Send statement at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python2-no-switch - Send statement at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python2-dedicated - Send statement at point to Python2 unique interpreter. - -** py-execute-statement-python2-dedicated-switch - Send statement at point to Python2 unique interpreter and switch to result. - -** py-execute-statement-python2\.7 - Send statement at point to Python2.7 interpreter. - -** py-execute-statement-python2\.7-switch - Send statement at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python2\.7-no-switch - Send statement at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python2\.7-dedicated - Send statement at point to Python2.7 unique interpreter. - -** py-execute-statement-python2\.7-dedicated-switch - Send statement at point to Python2.7 unique interpreter and switch to result. - -** py-execute-statement-jython - Send statement at point to Jython interpreter. - -** py-execute-statement-jython-switch - Send statement at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-jython-no-switch - Send statement at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-jython-dedicated - Send statement at point to Jython unique interpreter. - -** py-execute-statement-jython-dedicated-switch - Send statement at point to Jython unique interpreter and switch to result. - -** py-execute-statement-python3\.2 - Send statement at point to Python3.2 interpreter. - -** py-execute-statement-python3\.2-switch - Send statement at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python3\.2-no-switch - Send statement at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python3\.2-dedicated - Send statement at point to Python3.2 unique interpreter. - -** py-execute-statement-python3\.2-dedicated-switch - Send statement at point to Python3.2 unique interpreter and switch to result. - -** py-execute-statement-python3\.3 - Send statement at point to Python3.3 interpreter. - -** py-execute-statement-python3\.3-switch - Send statement at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-python3\.3-no-switch - Send statement at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-python3\.3-dedicated - Send statement at point to Python3.3 unique interpreter. - -** py-execute-statement-python3\.3-dedicated-switch - Send statement at point to Python3.3 unique interpreter and switch to result. - -** py-execute-statement-bpython - Send statement at point to Bpython interpreter. - -** py-execute-statement-bpython-switch - Send statement at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-statement-bpython-no-switch - Send statement at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-statement-bpython-dedicated - Send statement at point to Bpython unique interpreter. - -** py-execute-statement-bpython-dedicated-switch - Send statement at point to Bpython unique interpreter and switch to result. - -** py-execute-block-python - Send block at point to Python interpreter. - -** py-execute-block-python-switch - Send block at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python-no-switch - Send block at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python-dedicated - Send block at point to Python unique interpreter. - -** py-execute-block-python-dedicated-switch - Send block at point to Python unique interpreter and switch to result. - -** py-execute-block-ipython - Send block at point to IPython interpreter. - -** py-execute-block-ipython-switch - Send block at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-ipython-no-switch - Send block at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-ipython-dedicated - Send block at point to IPython unique interpreter. - -** py-execute-block-ipython-dedicated-switch - Send block at point to IPython unique interpreter and switch to result. - -** py-execute-block-python3 - Send block at point to Python3 interpreter. - -** py-execute-block-python3-switch - Send block at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python3-no-switch - Send block at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python3-dedicated - Send block at point to Python3 unique interpreter. - -** py-execute-block-python3-dedicated-switch - Send block at point to Python3 unique interpreter and switch to result. - -** py-execute-block-python2 - Send block at point to Python2 interpreter. - -** py-execute-block-python2-switch - Send block at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python2-no-switch - Send block at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python2-dedicated - Send block at point to Python2 unique interpreter. - -** py-execute-block-python2-dedicated-switch - Send block at point to Python2 unique interpreter and switch to result. - -** py-execute-block-python2\.7 - Send block at point to Python2.7 interpreter. - -** py-execute-block-python2\.7-switch - Send block at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python2\.7-no-switch - Send block at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python2\.7-dedicated - Send block at point to Python2.7 unique interpreter. - -** py-execute-block-python2\.7-dedicated-switch - Send block at point to Python2.7 unique interpreter and switch to result. - -** py-execute-block-jython - Send block at point to Jython interpreter. - -** py-execute-block-jython-switch - Send block at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-jython-no-switch - Send block at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-jython-dedicated - Send block at point to Jython unique interpreter. - -** py-execute-block-jython-dedicated-switch - Send block at point to Jython unique interpreter and switch to result. - -** py-execute-block-python3\.2 - Send block at point to Python3.2 interpreter. - -** py-execute-block-python3\.2-switch - Send block at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python3\.2-no-switch - Send block at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python3\.2-dedicated - Send block at point to Python3.2 unique interpreter. - -** py-execute-block-python3\.2-dedicated-switch - Send block at point to Python3.2 unique interpreter and switch to result. - -** py-execute-block-python3\.3 - Send block at point to Python3.3 interpreter. - -** py-execute-block-python3\.3-switch - Send block at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-python3\.3-no-switch - Send block at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-python3\.3-dedicated - Send block at point to Python3.3 unique interpreter. - -** py-execute-block-python3\.3-dedicated-switch - Send block at point to Python3.3 unique interpreter and switch to result. - -** py-execute-block-bpython - Send block at point to Bpython interpreter. - -** py-execute-block-bpython-switch - Send block at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-bpython-no-switch - Send block at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-bpython-dedicated - Send block at point to Bpython unique interpreter. - -** py-execute-block-bpython-dedicated-switch - Send block at point to Bpython unique interpreter and switch to result. - -** py-execute-clause-python - Send clause at point to Python interpreter. - -** py-execute-clause-python-switch - Send clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python-no-switch - Send clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python-dedicated - Send clause at point to Python unique interpreter. - -** py-execute-clause-python-dedicated-switch - Send clause at point to Python unique interpreter and switch to result. - -** py-execute-clause-ipython - Send clause at point to IPython interpreter. - -** py-execute-clause-ipython-switch - Send clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-ipython-no-switch - Send clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-ipython-dedicated - Send clause at point to IPython unique interpreter. - -** py-execute-clause-ipython-dedicated-switch - Send clause at point to IPython unique interpreter and switch to result. - -** py-execute-clause-python3 - Send clause at point to Python3 interpreter. - -** py-execute-clause-python3-switch - Send clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python3-no-switch - Send clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python3-dedicated - Send clause at point to Python3 unique interpreter. - -** py-execute-clause-python3-dedicated-switch - Send clause at point to Python3 unique interpreter and switch to result. - -** py-execute-clause-python2 - Send clause at point to Python2 interpreter. - -** py-execute-clause-python2-switch - Send clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python2-no-switch - Send clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python2-dedicated - Send clause at point to Python2 unique interpreter. - -** py-execute-clause-python2-dedicated-switch - Send clause at point to Python2 unique interpreter and switch to result. - -** py-execute-clause-python2\.7 - Send clause at point to Python2.7 interpreter. - -** py-execute-clause-python2\.7-switch - Send clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python2\.7-no-switch - Send clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python2\.7-dedicated - Send clause at point to Python2.7 unique interpreter. - -** py-execute-clause-python2\.7-dedicated-switch - Send clause at point to Python2.7 unique interpreter and switch to result. - -** py-execute-clause-jython - Send clause at point to Jython interpreter. - -** py-execute-clause-jython-switch - Send clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-jython-no-switch - Send clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-jython-dedicated - Send clause at point to Jython unique interpreter. - -** py-execute-clause-jython-dedicated-switch - Send clause at point to Jython unique interpreter and switch to result. - -** py-execute-clause-python3\.2 - Send clause at point to Python3.2 interpreter. - -** py-execute-clause-python3\.2-switch - Send clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python3\.2-no-switch - Send clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python3\.2-dedicated - Send clause at point to Python3.2 unique interpreter. - -** py-execute-clause-python3\.2-dedicated-switch - Send clause at point to Python3.2 unique interpreter and switch to result. - -** py-execute-clause-python3\.3 - Send clause at point to Python3.3 interpreter. - -** py-execute-clause-python3\.3-switch - Send clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-python3\.3-no-switch - Send clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-python3\.3-dedicated - Send clause at point to Python3.3 unique interpreter. - -** py-execute-clause-python3\.3-dedicated-switch - Send clause at point to Python3.3 unique interpreter and switch to result. - -** py-execute-clause-bpython - Send clause at point to Bpython interpreter. - -** py-execute-clause-bpython-switch - Send clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-clause-bpython-no-switch - Send clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-clause-bpython-dedicated - Send clause at point to Bpython unique interpreter. - -** py-execute-clause-bpython-dedicated-switch - Send clause at point to Bpython unique interpreter and switch to result. - -** py-execute-block-or-clause-python - Send block-or-clause at point to Python interpreter. - -** py-execute-block-or-clause-python-switch - Send block-or-clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python-no-switch - Send block-or-clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python-dedicated - Send block-or-clause at point to Python unique interpreter. - -** py-execute-block-or-clause-python-dedicated-switch - Send block-or-clause at point to Python unique interpreter and switch to result. - -** py-execute-block-or-clause-ipython - Send block-or-clause at point to IPython interpreter. - -** py-execute-block-or-clause-ipython-switch - Send block-or-clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-ipython-no-switch - Send block-or-clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-ipython-dedicated - Send block-or-clause at point to IPython unique interpreter. - -** py-execute-block-or-clause-ipython-dedicated-switch - Send block-or-clause at point to IPython unique interpreter and switch to result. - -** py-execute-block-or-clause-python3 - Send block-or-clause at point to Python3 interpreter. - -** py-execute-block-or-clause-python3-switch - Send block-or-clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python3-no-switch - Send block-or-clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python3-dedicated - Send block-or-clause at point to Python3 unique interpreter. - -** py-execute-block-or-clause-python3-dedicated-switch - Send block-or-clause at point to Python3 unique interpreter and switch to result. - -** py-execute-block-or-clause-python2 - Send block-or-clause at point to Python2 interpreter. - -** py-execute-block-or-clause-python2-switch - Send block-or-clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python2-no-switch - Send block-or-clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python2-dedicated - Send block-or-clause at point to Python2 unique interpreter. - -** py-execute-block-or-clause-python2-dedicated-switch - Send block-or-clause at point to Python2 unique interpreter and switch to result. - -** py-execute-block-or-clause-python2\.7 - Send block-or-clause at point to Python2.7 interpreter. - -** py-execute-block-or-clause-python2\.7-switch - Send block-or-clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python2\.7-no-switch - Send block-or-clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python2\.7-dedicated - Send block-or-clause at point to Python2.7 unique interpreter. - -** py-execute-block-or-clause-python2\.7-dedicated-switch - Send block-or-clause at point to Python2.7 unique interpreter and switch to result. - -** py-execute-block-or-clause-jython - Send block-or-clause at point to Jython interpreter. - -** py-execute-block-or-clause-jython-switch - Send block-or-clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-jython-no-switch - Send block-or-clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-jython-dedicated - Send block-or-clause at point to Jython unique interpreter. - -** py-execute-block-or-clause-jython-dedicated-switch - Send block-or-clause at point to Jython unique interpreter and switch to result. - -** py-execute-block-or-clause-python3\.2 - Send block-or-clause at point to Python3.2 interpreter. - -** py-execute-block-or-clause-python3\.2-switch - Send block-or-clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python3\.2-no-switch - Send block-or-clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python3\.2-dedicated - Send block-or-clause at point to Python3.2 unique interpreter. - -** py-execute-block-or-clause-python3\.2-dedicated-switch - Send block-or-clause at point to Python3.2 unique interpreter and switch to result. - -** py-execute-block-or-clause-python3\.3 - Send block-or-clause at point to Python3.3 interpreter. - -** py-execute-block-or-clause-python3\.3-switch - Send block-or-clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-python3\.3-no-switch - Send block-or-clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-python3\.3-dedicated - Send block-or-clause at point to Python3.3 unique interpreter. - -** py-execute-block-or-clause-python3\.3-dedicated-switch - Send block-or-clause at point to Python3.3 unique interpreter and switch to result. - -** py-execute-block-or-clause-bpython - Send block-or-clause at point to Bpython interpreter. - -** py-execute-block-or-clause-bpython-switch - Send block-or-clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-block-or-clause-bpython-no-switch - Send block-or-clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-block-or-clause-bpython-dedicated - Send block-or-clause at point to Bpython unique interpreter. - -** py-execute-block-or-clause-bpython-dedicated-switch - Send block-or-clause at point to Bpython unique interpreter and switch to result. - -** py-execute-def-python - Send def at point to Python interpreter. - -** py-execute-def-python-switch - Send def at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python-no-switch - Send def at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python-dedicated - Send def at point to Python unique interpreter. - -** py-execute-def-python-dedicated-switch - Send def at point to Python unique interpreter and switch to result. - -** py-execute-def-ipython - Send def at point to IPython interpreter. - -** py-execute-def-ipython-switch - Send def at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-ipython-no-switch - Send def at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-ipython-dedicated - Send def at point to IPython unique interpreter. - -** py-execute-def-ipython-dedicated-switch - Send def at point to IPython unique interpreter and switch to result. - -** py-execute-def-python3 - Send def at point to Python3 interpreter. - -** py-execute-def-python3-switch - Send def at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python3-no-switch - Send def at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python3-dedicated - Send def at point to Python3 unique interpreter. - -** py-execute-def-python3-dedicated-switch - Send def at point to Python3 unique interpreter and switch to result. - -** py-execute-def-python2 - Send def at point to Python2 interpreter. - -** py-execute-def-python2-switch - Send def at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python2-no-switch - Send def at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python2-dedicated - Send def at point to Python2 unique interpreter. - -** py-execute-def-python2-dedicated-switch - Send def at point to Python2 unique interpreter and switch to result. - -** py-execute-def-python2\.7 - Send def at point to Python2.7 interpreter. - -** py-execute-def-python2\.7-switch - Send def at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python2\.7-no-switch - Send def at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python2\.7-dedicated - Send def at point to Python2.7 unique interpreter. - -** py-execute-def-python2\.7-dedicated-switch - Send def at point to Python2.7 unique interpreter and switch to result. - -** py-execute-def-jython - Send def at point to Jython interpreter. - -** py-execute-def-jython-switch - Send def at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-jython-no-switch - Send def at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-jython-dedicated - Send def at point to Jython unique interpreter. - -** py-execute-def-jython-dedicated-switch - Send def at point to Jython unique interpreter and switch to result. - -** py-execute-def-python3\.2 - Send def at point to Python3.2 interpreter. - -** py-execute-def-python3\.2-switch - Send def at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python3\.2-no-switch - Send def at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python3\.2-dedicated - Send def at point to Python3.2 unique interpreter. - -** py-execute-def-python3\.2-dedicated-switch - Send def at point to Python3.2 unique interpreter and switch to result. - -** py-execute-def-python3\.3 - Send def at point to Python3.3 interpreter. - -** py-execute-def-python3\.3-switch - Send def at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-python3\.3-no-switch - Send def at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-python3\.3-dedicated - Send def at point to Python3.3 unique interpreter. - -** py-execute-def-python3\.3-dedicated-switch - Send def at point to Python3.3 unique interpreter and switch to result. - -** py-execute-def-bpython - Send def at point to Bpython interpreter. - -** py-execute-def-bpython-switch - Send def at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-def-bpython-no-switch - Send def at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-def-bpython-dedicated - Send def at point to Bpython unique interpreter. - -** py-execute-def-bpython-dedicated-switch - Send def at point to Bpython unique interpreter and switch to result. - -** py-execute-class-python - Send class at point to Python interpreter. - -** py-execute-class-python-switch - Send class at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python-no-switch - Send class at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python-dedicated - Send class at point to Python unique interpreter. - -** py-execute-class-python-dedicated-switch - Send class at point to Python unique interpreter and switch to result. - -** py-execute-class-ipython - Send class at point to IPython interpreter. - -** py-execute-class-ipython-switch - Send class at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-ipython-no-switch - Send class at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-ipython-dedicated - Send class at point to IPython unique interpreter. - -** py-execute-class-ipython-dedicated-switch - Send class at point to IPython unique interpreter and switch to result. - -** py-execute-class-python3 - Send class at point to Python3 interpreter. - -** py-execute-class-python3-switch - Send class at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python3-no-switch - Send class at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python3-dedicated - Send class at point to Python3 unique interpreter. - -** py-execute-class-python3-dedicated-switch - Send class at point to Python3 unique interpreter and switch to result. - -** py-execute-class-python2 - Send class at point to Python2 interpreter. - -** py-execute-class-python2-switch - Send class at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python2-no-switch - Send class at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python2-dedicated - Send class at point to Python2 unique interpreter. - -** py-execute-class-python2-dedicated-switch - Send class at point to Python2 unique interpreter and switch to result. - -** py-execute-class-python2\.7 - Send class at point to Python2.7 interpreter. - -** py-execute-class-python2\.7-switch - Send class at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python2\.7-no-switch - Send class at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python2\.7-dedicated - Send class at point to Python2.7 unique interpreter. - -** py-execute-class-python2\.7-dedicated-switch - Send class at point to Python2.7 unique interpreter and switch to result. - -** py-execute-class-jython - Send class at point to Jython interpreter. - -** py-execute-class-jython-switch - Send class at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-jython-no-switch - Send class at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-jython-dedicated - Send class at point to Jython unique interpreter. - -** py-execute-class-jython-dedicated-switch - Send class at point to Jython unique interpreter and switch to result. - -** py-execute-class-python3\.2 - Send class at point to Python3.2 interpreter. - -** py-execute-class-python3\.2-switch - Send class at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python3\.2-no-switch - Send class at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python3\.2-dedicated - Send class at point to Python3.2 unique interpreter. - -** py-execute-class-python3\.2-dedicated-switch - Send class at point to Python3.2 unique interpreter and switch to result. - -** py-execute-class-python3\.3 - Send class at point to Python3.3 interpreter. - -** py-execute-class-python3\.3-switch - Send class at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-python3\.3-no-switch - Send class at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-python3\.3-dedicated - Send class at point to Python3.3 unique interpreter. - -** py-execute-class-python3\.3-dedicated-switch - Send class at point to Python3.3 unique interpreter and switch to result. - -** py-execute-class-bpython - Send class at point to Bpython interpreter. - -** py-execute-class-bpython-switch - Send class at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-class-bpython-no-switch - Send class at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-class-bpython-dedicated - Send class at point to Bpython unique interpreter. - -** py-execute-class-bpython-dedicated-switch - Send class at point to Bpython unique interpreter and switch to result. - -** py-execute-region-python - Send region at point to Python interpreter. - -** py-execute-region-python-switch - Send region at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python-no-switch - Send region at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python-dedicated - Send region at point to Python unique interpreter. - -** py-execute-region-python-dedicated-switch - Send region at point to Python unique interpreter and switch to result. - -** py-execute-region-ipython - Send region at point to IPython interpreter. - -** py-execute-region-ipython-switch - Send region at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-ipython-no-switch - Send region at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-ipython-dedicated - Send region at point to IPython unique interpreter. - -** py-execute-region-ipython-dedicated-switch - Send region at point to IPython unique interpreter and switch to result. - -** py-execute-region-python3 - Send region at point to Python3 interpreter. - -** py-execute-region-python3-switch - Send region at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python3-no-switch - Send region at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python3-dedicated - Send region at point to Python3 unique interpreter. - -** py-execute-region-python3-dedicated-switch - Send region at point to Python3 unique interpreter and switch to result. - -** py-execute-region-python2 - Send region at point to Python2 interpreter. - -** py-execute-region-python2-switch - Send region at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python2-no-switch - Send region at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python2-dedicated - Send region at point to Python2 unique interpreter. - -** py-execute-region-python2-dedicated-switch - Send region at point to Python2 unique interpreter and switch to result. - -** py-execute-region-python2\.7 - Send region at point to Python2.7 interpreter. - -** py-execute-region-python2\.7-switch - Send region at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python2\.7-no-switch - Send region at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python2\.7-dedicated - Send region at point to Python2.7 unique interpreter. - -** py-execute-region-python2\.7-dedicated-switch - Send region at point to Python2.7 unique interpreter and switch to result. - -** py-execute-region-jython - Send region at point to Jython interpreter. - -** py-execute-region-jython-switch - Send region at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-jython-no-switch - Send region at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-jython-dedicated - Send region at point to Jython unique interpreter. - -** py-execute-region-jython-dedicated-switch - Send region at point to Jython unique interpreter and switch to result. - -** py-execute-region-python3\.2 - Send region at point to Python3.2 interpreter. - -** py-execute-region-python3\.2-switch - Send region at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python3\.2-no-switch - Send region at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python3\.2-dedicated - Send region at point to Python3.2 unique interpreter. - -** py-execute-region-python3\.2-dedicated-switch - Send region at point to Python3.2 unique interpreter and switch to result. - -** py-execute-region-python3\.3 - Send region at point to Python3.3 interpreter. - -** py-execute-region-python3\.3-switch - Send region at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-python3\.3-no-switch - Send region at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-python3\.3-dedicated - Send region at point to Python3.3 unique interpreter. - -** py-execute-region-python3\.3-dedicated-switch - Send region at point to Python3.3 unique interpreter and switch to result. - -** py-execute-region-bpython - Send region at point to Bpython interpreter. - -** py-execute-region-bpython-switch - Send region at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-region-bpython-no-switch - Send region at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-region-bpython-dedicated - Send region at point to Bpython unique interpreter. - -** py-execute-region-bpython-dedicated-switch - Send region at point to Bpython unique interpreter and switch to result. - -** py-execute-buffer-python - Send buffer at point to Python interpreter. - -** py-execute-buffer-python-switch - Send buffer at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python-no-switch - Send buffer at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python-dedicated - Send buffer at point to Python unique interpreter. - -** py-execute-buffer-python-dedicated-switch - Send buffer at point to Python unique interpreter and switch to result. - -** py-execute-buffer-ipython - Send buffer at point to IPython interpreter. - -** py-execute-buffer-ipython-switch - Send buffer at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-ipython-no-switch - Send buffer at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-ipython-dedicated - Send buffer at point to IPython unique interpreter. - -** py-execute-buffer-ipython-dedicated-switch - Send buffer at point to IPython unique interpreter and switch to result. - -** py-execute-buffer-python3 - Send buffer at point to Python3 interpreter. - -** py-execute-buffer-python3-switch - Send buffer at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python3-no-switch - Send buffer at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python3-dedicated - Send buffer at point to Python3 unique interpreter. - -** py-execute-buffer-python3-dedicated-switch - Send buffer at point to Python3 unique interpreter and switch to result. - -** py-execute-buffer-python2 - Send buffer at point to Python2 interpreter. - -** py-execute-buffer-python2-switch - Send buffer at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python2-no-switch - Send buffer at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python2-dedicated - Send buffer at point to Python2 unique interpreter. - -** py-execute-buffer-python2-dedicated-switch - Send buffer at point to Python2 unique interpreter and switch to result. - -** py-execute-buffer-python2\.7 - Send buffer at point to Python2.7 interpreter. - -** py-execute-buffer-python2\.7-switch - Send buffer at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python2\.7-no-switch - Send buffer at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python2\.7-dedicated - Send buffer at point to Python2.7 unique interpreter. - -** py-execute-buffer-python2\.7-dedicated-switch - Send buffer at point to Python2.7 unique interpreter and switch to result. - -** py-execute-buffer-jython - Send buffer at point to Jython interpreter. - -** py-execute-buffer-jython-switch - Send buffer at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-jython-no-switch - Send buffer at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-jython-dedicated - Send buffer at point to Jython unique interpreter. - -** py-execute-buffer-jython-dedicated-switch - Send buffer at point to Jython unique interpreter and switch to result. - -** py-execute-buffer-python3\.2 - Send buffer at point to Python3.2 interpreter. - -** py-execute-buffer-python3\.2-switch - Send buffer at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python3\.2-no-switch - Send buffer at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python3\.2-dedicated - Send buffer at point to Python3.2 unique interpreter. - -** py-execute-buffer-python3\.2-dedicated-switch - Send buffer at point to Python3.2 unique interpreter and switch to result. - -** py-execute-buffer-python3\.3 - Send buffer at point to Python3.3 interpreter. - -** py-execute-buffer-python3\.3-switch - Send buffer at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-python3\.3-no-switch - Send buffer at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-python3\.3-dedicated - Send buffer at point to Python3.3 unique interpreter. - -** py-execute-buffer-python3\.3-dedicated-switch - Send buffer at point to Python3.3 unique interpreter and switch to result. - -** py-execute-buffer-bpython - Send buffer at point to Bpython interpreter. - -** py-execute-buffer-bpython-switch - Send buffer at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-buffer-bpython-no-switch - Send buffer at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-buffer-bpython-dedicated - Send buffer at point to Bpython unique interpreter. - -** py-execute-buffer-bpython-dedicated-switch - Send buffer at point to Bpython unique interpreter and switch to result. - -** py-execute-expression-python - Send expression at point to Python interpreter. - -** py-execute-expression-python-switch - Send expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python-no-switch - Send expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python-dedicated - Send expression at point to Python unique interpreter. - -** py-execute-expression-python-dedicated-switch - Send expression at point to Python unique interpreter and switch to result. - -** py-execute-expression-ipython - Send expression at point to IPython interpreter. - -** py-execute-expression-ipython-switch - Send expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-ipython-no-switch - Send expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-ipython-dedicated - Send expression at point to IPython unique interpreter. - -** py-execute-expression-ipython-dedicated-switch - Send expression at point to IPython unique interpreter and switch to result. - -** py-execute-expression-python3 - Send expression at point to Python3 interpreter. - -** py-execute-expression-python3-switch - Send expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python3-no-switch - Send expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python3-dedicated - Send expression at point to Python3 unique interpreter. - -** py-execute-expression-python3-dedicated-switch - Send expression at point to Python3 unique interpreter and switch to result. - -** py-execute-expression-python2 - Send expression at point to Python2 interpreter. - -** py-execute-expression-python2-switch - Send expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python2-no-switch - Send expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python2-dedicated - Send expression at point to Python2 unique interpreter. - -** py-execute-expression-python2-dedicated-switch - Send expression at point to Python2 unique interpreter and switch to result. - -** py-execute-expression-python2\.7 - Send expression at point to Python2.7 interpreter. - -** py-execute-expression-python2\.7-switch - Send expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python2\.7-no-switch - Send expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python2\.7-dedicated - Send expression at point to Python2.7 unique interpreter. - -** py-execute-expression-python2\.7-dedicated-switch - Send expression at point to Python2.7 unique interpreter and switch to result. - -** py-execute-expression-jython - Send expression at point to Jython interpreter. - -** py-execute-expression-jython-switch - Send expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-jython-no-switch - Send expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-jython-dedicated - Send expression at point to Jython unique interpreter. - -** py-execute-expression-jython-dedicated-switch - Send expression at point to Jython unique interpreter and switch to result. - -** py-execute-expression-python3\.2 - Send expression at point to Python3.2 interpreter. - -** py-execute-expression-python3\.2-switch - Send expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python3\.2-no-switch - Send expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python3\.2-dedicated - Send expression at point to Python3.2 unique interpreter. - -** py-execute-expression-python3\.2-dedicated-switch - Send expression at point to Python3.2 unique interpreter and switch to result. - -** py-execute-expression-python3\.3 - Send expression at point to Python3.3 interpreter. - -** py-execute-expression-python3\.3-switch - Send expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-python3\.3-no-switch - Send expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-python3\.3-dedicated - Send expression at point to Python3.3 unique interpreter. - -** py-execute-expression-python3\.3-dedicated-switch - Send expression at point to Python3.3 unique interpreter and switch to result. - -** py-execute-expression-bpython - Send expression at point to Bpython interpreter. - -** py-execute-expression-bpython-switch - Send expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-expression-bpython-no-switch - Send expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-expression-bpython-dedicated - Send expression at point to Bpython unique interpreter. - -** py-execute-expression-bpython-dedicated-switch - Send expression at point to Bpython unique interpreter and switch to result. - -** py-execute-partial-expression-python - Send partial-expression at point to Python interpreter. - -** py-execute-partial-expression-python-switch - Send partial-expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python-no-switch - Send partial-expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python-dedicated - Send partial-expression at point to Python unique interpreter. - -** py-execute-partial-expression-python-dedicated-switch - Send partial-expression at point to Python unique interpreter and switch to result. - -** py-execute-partial-expression-ipython - Send partial-expression at point to IPython interpreter. - -** py-execute-partial-expression-ipython-switch - Send partial-expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-ipython-no-switch - Send partial-expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-ipython-dedicated - Send partial-expression at point to IPython unique interpreter. - -** py-execute-partial-expression-ipython-dedicated-switch - Send partial-expression at point to IPython unique interpreter and switch to result. - -** py-execute-partial-expression-python3 - Send partial-expression at point to Python3 interpreter. - -** py-execute-partial-expression-python3-switch - Send partial-expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python3-no-switch - Send partial-expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python3-dedicated - Send partial-expression at point to Python3 unique interpreter. - -** py-execute-partial-expression-python3-dedicated-switch - Send partial-expression at point to Python3 unique interpreter and switch to result. - -** py-execute-partial-expression-python2 - Send partial-expression at point to Python2 interpreter. - -** py-execute-partial-expression-python2-switch - Send partial-expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python2-no-switch - Send partial-expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python2-dedicated - Send partial-expression at point to Python2 unique interpreter. - -** py-execute-partial-expression-python2-dedicated-switch - Send partial-expression at point to Python2 unique interpreter and switch to result. - -** py-execute-partial-expression-python2\.7 - Send partial-expression at point to Python2.7 interpreter. - -** py-execute-partial-expression-python2\.7-switch - Send partial-expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python2\.7-no-switch - Send partial-expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python2\.7-dedicated - Send partial-expression at point to Python2.7 unique interpreter. - -** py-execute-partial-expression-python2\.7-dedicated-switch - Send partial-expression at point to Python2.7 unique interpreter and switch to result. - -** py-execute-partial-expression-jython - Send partial-expression at point to Jython interpreter. - -** py-execute-partial-expression-jython-switch - Send partial-expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-jython-no-switch - Send partial-expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-jython-dedicated - Send partial-expression at point to Jython unique interpreter. - -** py-execute-partial-expression-jython-dedicated-switch - Send partial-expression at point to Jython unique interpreter and switch to result. - -** py-execute-partial-expression-python3\.2 - Send partial-expression at point to Python3.2 interpreter. - -** py-execute-partial-expression-python3\.2-switch - Send partial-expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python3\.2-no-switch - Send partial-expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python3\.2-dedicated - Send partial-expression at point to Python3.2 unique interpreter. - -** py-execute-partial-expression-python3\.2-dedicated-switch - Send partial-expression at point to Python3.2 unique interpreter and switch to result. - -** py-execute-partial-expression-python3\.3 - Send partial-expression at point to Python3.3 interpreter. - -** py-execute-partial-expression-python3\.3-switch - Send partial-expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-python3\.3-no-switch - Send partial-expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-python3\.3-dedicated - Send partial-expression at point to Python3.3 unique interpreter. - -** py-execute-partial-expression-python3\.3-dedicated-switch - Send partial-expression at point to Python3.3 unique interpreter and switch to result. - -** py-execute-partial-expression-bpython - Send partial-expression at point to Bpython interpreter. - -** py-execute-partial-expression-bpython-switch - Send partial-expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-partial-expression-bpython-no-switch - Send partial-expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-partial-expression-bpython-dedicated - Send partial-expression at point to Bpython unique interpreter. - -** py-execute-partial-expression-bpython-dedicated-switch - Send partial-expression at point to Bpython unique interpreter and switch to result. - -** py-execute-line-python - Send line at point to Python interpreter. - -** py-execute-line-python-switch - Send line at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python-no-switch - Send line at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python-dedicated - Send line at point to Python unique interpreter. - -** py-execute-line-python-dedicated-switch - Send line at point to Python unique interpreter and switch to result. - -** py-execute-line-ipython - Send line at point to IPython interpreter. - -** py-execute-line-ipython-switch - Send line at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-ipython-no-switch - Send line at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-ipython-dedicated - Send line at point to IPython unique interpreter. - -** py-execute-line-ipython-dedicated-switch - Send line at point to IPython unique interpreter and switch to result. - -** py-execute-line-python3 - Send line at point to Python3 interpreter. - -** py-execute-line-python3-switch - Send line at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python3-no-switch - Send line at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python3-dedicated - Send line at point to Python3 unique interpreter. - -** py-execute-line-python3-dedicated-switch - Send line at point to Python3 unique interpreter and switch to result. - -** py-execute-line-python2 - Send line at point to Python2 interpreter. - -** py-execute-line-python2-switch - Send line at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python2-no-switch - Send line at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python2-dedicated - Send line at point to Python2 unique interpreter. - -** py-execute-line-python2-dedicated-switch - Send line at point to Python2 unique interpreter and switch to result. - -** py-execute-line-python2\.7 - Send line at point to Python2.7 interpreter. - -** py-execute-line-python2\.7-switch - Send line at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python2\.7-no-switch - Send line at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python2\.7-dedicated - Send line at point to Python2.7 unique interpreter. - -** py-execute-line-python2\.7-dedicated-switch - Send line at point to Python2.7 unique interpreter and switch to result. - -** py-execute-line-jython - Send line at point to Jython interpreter. - -** py-execute-line-jython-switch - Send line at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-jython-no-switch - Send line at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-jython-dedicated - Send line at point to Jython unique interpreter. - -** py-execute-line-jython-dedicated-switch - Send line at point to Jython unique interpreter and switch to result. - -** py-execute-line-python3\.2 - Send line at point to Python3.2 interpreter. - -** py-execute-line-python3\.2-switch - Send line at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python3\.2-no-switch - Send line at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python3\.2-dedicated - Send line at point to Python3.2 unique interpreter. - -** py-execute-line-python3\.2-dedicated-switch - Send line at point to Python3.2 unique interpreter and switch to result. - -** py-execute-line-python3\.3 - Send line at point to Python3.3 interpreter. - -** py-execute-line-python3\.3-switch - Send line at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-python3\.3-no-switch - Send line at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-python3\.3-dedicated - Send line at point to Python3.3 unique interpreter. - -** py-execute-line-python3\.3-dedicated-switch - Send line at point to Python3.3 unique interpreter and switch to result. - -** py-execute-line-bpython - Send line at point to Bpython interpreter. - -** py-execute-line-bpython-switch - Send line at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -** py-execute-line-bpython-no-switch - Send line at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -** py-execute-line-bpython-dedicated - Send line at point to Bpython unique interpreter. - -** py-execute-line-bpython-dedicated-switch - Send line at point to Bpython unique interpreter and switch to result. - -* Subprocess utilities and filters -** py-remove-overlays-at-point - Remove overlays as set when `py-highlight-error-source-p' is non-nil. - -** py-down-exception - Go to the next line down in the traceback. - -With C-u (programmatically, optional argument -BOTTOM), jump to the bottom (innermost) exception in the exception -stack. - -** py-up-exception - Go to the previous line up in the traceback. - -With C-u (programmatically, optional argument TOP) -jump to the top (outermost) exception in the exception stack. - -** py-mouseto-exception - Jump to the code which caused the Python exception at EVENT. -EVENT is usually a mouse click. - -** py-goto-exception - Go to the line indicated by the traceback. - -** py-output-buffer-filter - Clear output buffer from py-shell-input prompt etc. - -** py-send-string - Evaluate STRING in inferior Python process. - -** py-send-file - Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME. - diff --git a/elpa/python-mode-6.1.3/doc/commands-python-mode.rst b/elpa/python-mode-6.1.3/doc/commands-python-mode.rst deleted file mode 100644 index f7d611ba5..000000000 --- a/elpa/python-mode-6.1.3/doc/commands-python-mode.rst +++ /dev/null @@ -1,6309 +0,0 @@ -Python-mode commands - -==================== - -;;; Commentary: ---------------- - - -;;; Code --------- - - -;;; Customization ------------------ - - -py-smart-operator-check ------------------------ -Check, if smart-operator-mode is loaded resp. available. - -Give some hints, if not. - -py-autopair-check ------------------ -Check, if autopair-mode is available. - -Give some hints, if not. - -(defun p --------- - - -;;; Constants -------------- - - -;;; Macro definitions ---------------------- - - -;;; Toggle ----------- - - -toggle-py-nil-docstring-style ------------------------------ -If nil docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -py-nil-docstring-style-on -------------------------- -Make sure, nil docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -py-nil-docstring-style-off --------------------------- -Make sure, nil docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -toggle-py-onetwo-docstring-style --------------------------------- -If onetwo docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -py-onetwo-docstring-style-on ----------------------------- -Make sure, onetwo docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -py-onetwo-docstring-style-off ------------------------------ -Make sure, onetwo docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -toggle-py-pep-257-docstring-style ---------------------------------- -If pep-257 docstring-style should be on or off. - - Returns value of `py-pep-257-docstring-style' switched to. - -py-pep-257-docstring-style-on ------------------------------ -Make sure, pep-257 docstring-style' is on. - -Returns value of `py-pep-257-docstring-style'. - -py-pep-257-docstring-style-off ------------------------------- -Make sure, pep-257 docstring-style is off. - -Returns value of `py-pep-257-docstring-style'. - -toggle-py-pep-257-nn-docstring-style ------------------------------------- -If pep-257-nn docstring-style should be on or off. - - Returns value of `py-pep-257-nn-docstring-style' switched to. - -py-pep-257-nn-docstring-style-on --------------------------------- -Make sure, pep-257-nn docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -py-pep-257-nn-docstring-style-off ---------------------------------- -Make sure, pep-257-nn docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -toggle-py-symmetric-docstring-style ------------------------------------ -If symmetric docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -py-symmetric-docstring-style-on -------------------------------- -Make sure, symmetric docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -py-symmetric-docstring-style-off --------------------------------- -Make sure, symmetric docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -toggle-py-django-docstring-style --------------------------------- -If django docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable - -py-django-docstring-style-on ----------------------------- -Make sure, django docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -py-django-docstring-style-off ------------------------------ -Make sure, django docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable - -toggle-py-underscore-word-syntax-p ----------------------------------- -If `py-underscore-word-syntax-p' should be on or off. - - Returns value of `py-underscore-word-syntax-p' switched to. - -py-underscore-word-syntax-p-on ------------------------------- -Make sure, py-underscore-word-syntax-p' is on. - -Returns value of `py-underscore-word-syntax-p'. - -py-underscore-word-syntax-p-off -------------------------------- -Make sure, `py-underscore-word-syntax-p' is off. - -Returns value of `py-underscore-word-syntax-p'. - -toggle-py-electric-comment-p ----------------------------- -If `py-electric-comment-p' should be on or off. - - Returns value of `py-electric-comment-p' switched to. - -py-electric-comment-p-on ------------------------- -Make sure, py-electric-comment-p' is on. - -Returns value of `py-electric-comment-p'. - -py-electric-comment-p-off -------------------------- -Make sure, `py-electric-comment-p' is off. - -Returns value of `py-electric-comment-p'. - -toggle-force-local-shell ------------------------- -If locally indicated Python shell should be taken and -enforced upon sessions execute commands. - -Toggles boolean `py-force-local-shell-p' along with `py-force-py-shell-name-p' -Returns value of `toggle-force-local-shell' switched to. - -When on, kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards. - -See also commands -`py-force-local-shell-on' -`py-force-local-shell-off' - - -py-force-local-shell-on ------------------------ -Make sure, `py-py-force-local-shell-p' is on. - -Returns value of `py-force-local-shell-p'. - -Kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards - -py-force-local-shell-off ------------------------- -Restore `py-shell-name' default value and `behaviour'. - -toggle-force-py-shell-name-p ----------------------------- -If customized default `py-shell-name' should be enforced upon execution. - -If `py-force-py-shell-name-p' should be on or off. -Returns value of `py-force-py-shell-name-p' switched to. - -See also commands -force-py-shell-name-p-on -force-py-shell-name-p-off - -Caveat: Completion might not work that way. - - -force-py-shell-name-p-on ------------------------- -Switches `py-force-py-shell-name-p' on. - -Customized default `py-shell-name' will be enforced upon execution. -Returns value of `py-force-py-shell-name-p'. - -Caveat: Completion might not work that way. - - -force-py-shell-name-p-off -------------------------- -Make sure, `py-force-py-shell-name-p' is off. - -Function to use by executes will be guessed from environment. -Returns value of `py-force-py-shell-name-p'. - -py-toggle-indent-tabs-mode --------------------------- -Toggle `indent-tabs-mode'. - -Returns value of `indent-tabs-mode' switched to. - -py-indent-tabs-mode-on ----------------------- -Switch `indent-tabs-mode' on. - -py-indent-tabs-mode-off ------------------------ -Switch `indent-tabs-mode' on. - -toggle-py-jump-on-exception ---------------------------- -If `py-jump-on-exception' should be on or off. - - Returns value of `py-jump-on-exception' switched to. - -py-jump-on-exception-on ------------------------ -Make sure, py-jump-on-exception' is on. - -Returns value of `py-jump-on-exception'. - -py-jump-on-exception-off ------------------------- -Make sure, `py-jump-on-exception' is off. - -Returns value of `py-jump-on-exception'. - -toggle-python-mode-v5-behavior-p --------------------------------- -If `python-mode-v5-behavior-p' should be on or off. - - Returns value of `python-mode-v5-behavior-p' switched to. - -python-mode-v5-behavior-p-on ----------------------------- -Make sure, `python-mode-v5-behavior-p' is on. - -Returns value of `python-mode-v5-behavior-p'. - -python-mode-v5-behavior-p-off ------------------------------ -Make sure, `python-mode-v5-behavior-p' is off. - -Returns value of `python-mode-v5-behavior-p'. - -py-toggle-shell-switch-buffers-on-execute ------------------------------------------ -If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. - -py-shell-switch-buffers-on-execute-on -------------------------------------- -Make sure, `py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. - -py-shell-switch-buffers-on-execute-off --------------------------------------- -Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. - -py-toggle-split-windows-on-execute ----------------------------------- -If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. - -py-split-windows-on-execute-on ------------------------------- -Make sure, `py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. - -py-split-windows-on-execute-off -------------------------------- -Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. - -py-toggle-highlight-indentation -------------------------------- -If `highlight-indentation-p' should be on or off. - -py-highlight-indentation-off ----------------------------- -If `highlight-indentation-p' should be on or off. - -py-highlight-indentation-on ---------------------------- -If `highlight-indentation-p' should be on or off. - -py-toggle-smart-indentation ---------------------------- -If `py-smart-indentation' should be on or off. - -Returns value of `py-smart-indentation' switched to. - -py-smart-indentation-on ------------------------ -Make sure, `py-smart-indentation' is on. - -Returns value of `py-smart-indentation'. - -py-smart-indentation-off ------------------------- -Make sure, `py-smart-indentation' is off. - -Returns value of `py-smart-indentation'. - -toggle-py-smart-operator-mode-p -------------------------------- -If `py-smart-operator-mode-p' should be on or off. - - Returns value of `py-smart-operator-mode-p' switched to. - -py-smart-operator-mode-p-on ---------------------------- -Make sure, py-smart-operator-mode-p' is on. - -Returns value of `py-smart-operator-mode-p'. - -py-smart-operator-mode-p-off ----------------------------- -Make sure, py-smart-operator-mode-p' is off. - -Returns value of `py-smart-operator-mode-p'. - -toggle-py-use-current-dir-when-execute-p ----------------------------------------- -If `py-use-current-dir-when-execute-p' should be on or off. - - Returns value of `py-use-current-dir-when-execute-p' switched to. - -py-use-current-dir-when-execute-p-on ------------------------------------- -Make sure, py-use-current-dir-when-execute-p' is on. - -Returns value of `py-use-current-dir-when-execute-p'. - -py-use-current-dir-when-execute-p-off -------------------------------------- -Make sure, `py-use-current-dir-when-execute-p' is off. - -Returns value of `py-use-current-dir-when-execute-p'. - -py-toggle-autopair-mode ------------------------ -If `py-autopair-mode' should be on or off. - - Returns value of `py-autopair-mode' switched to. - -py-autopair-mode-on -------------------- -Make sure, py-autopair-mode' is on. - -Returns value of `py-autopair-mode'. - -py-autopair-mode-off --------------------- -Make sure, py-autopair-mode' is off. - -Returns value of `py-autopair-mode'. - -toggle-py-switch-buffers-on-execute-p -------------------------------------- -If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. - -py-switch-buffers-on-execute-p-on ---------------------------------- -Make sure, `py-py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. - -py-switch-buffers-on-execute-p-off ----------------------------------- -Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. - -toggle-py-split-windows-on-execute-p ------------------------------------- -If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. - -py-split-windows-on-execute-p-on --------------------------------- -Make sure, `py-py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. - -py-split-windows-on-execute-p-off ---------------------------------- -Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. - -py-toggle-sexp-function ------------------------ -Opens customization - -py-shell-get-process --------------------- -Get appropriate Python process for current buffer and return it. - -py-shell-send-string --------------------- -Send STRING to inferior Python PROCESS. -When `py-verbose-p' and MSG is non-nil messages the first line of STRING. - -py-shell-send-file ------------------- -Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME. - -py-switch-to-shell ------------------- -Switch to inferior Python process buffer. - -python-shell-completion-complete-or-indent ------------------------------------------- -Complete or indent depending on the context. -If content before pointer is all whitespace indent. If not try -to complete. - -;;; Helper commands -------------------- - - -py-guess-pdb-path ------------------ -If py-pdb-path isn't set, find location of pdb.py. - -(defun s --------- - - -py-forward-line ---------------- -Goes to end of line after forward move. - -Travels right-margin comments. - -py-go-to-beginning-of-comment ------------------------------ -Go to the beginning of current line's comment, if any. - -From a programm use `py-beginning-of-comment' instead - -py-leave-comment-or-string-backward ------------------------------------ -If inside a comment or string, leave it backward. - -py-beginning-of-list-pps ------------------------- -Go to the beginning of a list. -Optional ARG indicates a start-position for `parse-partial-sexp'. -Return beginning position, nil if not inside. - -empty-line-p ------------- -Returns t if cursor is at an line with nothing but whitespace-characters, nil otherwise. - -py-count-lines --------------- -Count lines in accessible part until current line. - -See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7115 - -py-send-region --------------- -Send the region to the inferior Python process. - -py-send-region-and-go ---------------------- -Send the region to the inferior Python process. - -Then switch to the process buffer. - -python-send-string ------------------- -Evaluate STRING in inferior Python process. - -py-switch-to-python -------------------- -Switch to the Python process buffer, maybe starting new process. - -With prefix arg, position cursor at end of buffer. - -py-proc -------- -Return the current Python process. - -Start a new process if necessary. - -;;; Keymap and syntax ---------------------- - - -py-insert-default-shebang -------------------------- -Insert in buffer shebang of installed default Python. - -py-electric-comment -------------------- -Insert a comment. If starting a comment, indent accordingly. - -If a numeric argument ARG is provided, that many "#" are inserted -non-electrically. -With C-u "#" electric behavior is inhibited inside a string or comment. - -py-electric-colon ------------------ -Insert a colon and indent accordingly. - -If a numeric argument ARG is provided, that many colons are inserted -non-electrically. - -Electric behavior is inhibited inside a string or -comment or by universal prefix C-u. - -Switched by `py-electric-colon-active-p', default is nil -See also `py-electric-colon-greedy-p' - -py-empty-out-list-backward --------------------------- -Deletes all elements from list before point. - -py-electric-backspace ---------------------- -Delete preceding character or level of indentation. - -With ARG do that ARG times. -Returns column reached. - -py-electric-delete ------------------- -Delete following character or levels of whitespace. - -With ARG do that ARG times. - -py-indent-line-outmost ----------------------- -Indent the current line to the outmost reasonable indent. - -With optional C-u an indent with length `py-indent-offset' is inserted unconditionally - -py-indent-line --------------- -Indent the current line according to Python rules. - -When called interactivly with C-u, ignore dedenting rules for block closing statements -(e.g. return, raise, break, continue, pass) - -An optional C-u followed by a numeric argument neither 1 nor 4 will switch off `py-smart-indentation' for this execution. This permits to correct allowed but unwanted indents. -Similar to `toggle-py-smart-indentation' resp. `py-smart-indentation-off' followed by TAB. - -This function is normally used by `indent-line-function' resp. -TAB. -Returns current indentation - -When `py-tab-shifts-region-p' is `t', not just the current line, -but the region is shiftet that way. - -If `py-tab-indents-region-p' is `t' and first TAB doesn't shift ---as indent is at outmost reasonable--, indent-region is called. - -py-newline-and-indent ---------------------- -Add a newline and indent to outmost reasonable indent. -When indent is set back manually, this is honoured in following lines. - -py-newline-and-dedent ---------------------- -Add a newline and indent to one level below current. -Returns column. - -py-indent-tabs-mode -------------------- -With positive ARG switch `indent-tabs-mode' on. - -With negative ARG switch `indent-tabs-mode' off. -Returns value of `indent-tabs-mode' switched to. - -py-guess-indent-forward ------------------------ -Called when moving to end of a form and `py-smart-indentation' is on. - -py-guess-indent-offset ----------------------- -Guess `py-indent-offset'. - -Set local value of `py-indent-offset', return it - -Might change local value of `py-indent-offset' only when called -downwards from beginning of block followed by a statement. Otherwise default-value is returned. - - -py-narrow-to-defun ------------------- -Make text outside current def or class invisible. - -The defun visible is the one that contains point or follows point. - -;;; Shifting ------------- - - -py-shift-left -------------- -Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. - -py-shift-right --------------- -Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. - -py-shift-paragraph-right ------------------------- -Indent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-paragraph-left ------------------------ -Dedent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-block-right --------------------- -Indent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-block-left -------------------- -Dedent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-minor-block-left -------------------------- -Dedent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. - -py-shift-minor-block-right --------------------------- -Indent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. - -py-shift-clause-right ---------------------- -Indent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-clause-left --------------------- -Dedent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-block-or-clause-right ------------------------------- -Indent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-block-or-clause-left ------------------------------ -Dedent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-def-right ------------------- -Indent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-def-left ------------------ -Dedent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-class-right --------------------- -Indent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-class-left -------------------- -Dedent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-def-or-class-right ---------------------------- -Indent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-def-or-class-left --------------------------- -Dedent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-line-right -------------------- -Indent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-line-left ------------------- -Dedent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-statement-right ------------------------- -Indent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-shift-statement-left ------------------------ -Dedent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use [universal-argument] to specify a different value. - -Returns outmost indentation reached. - -py-indent-and-forward ---------------------- -Indent current line according to mode, move one line forward. - -py-indent-region ----------------- -Reindent a region of Python code. - -With optional INDENT-OFFSET specify a different value than `py-indent-offset' at place. - -Guesses the outmost reasonable indent -Returns and keeps relative position - -;;; Positions -------------- - - -py-beginning-of-paragraph-position ----------------------------------- -Returns beginning of paragraph position. - -py-end-of-paragraph-position ----------------------------- -Returns end of paragraph position. - -py-beginning-of-block-position ------------------------------- -Returns beginning of block position. - -py-end-of-block-position ------------------------- -Returns end of block position. - -py-beginning-of-minor-block-position ------------------------------------- -Returns beginning of minor-block position. - -py-end-of-minor-block-position ------------------------------- -Returns end of minor-block position. - -py-beginning-of-clause-position -------------------------------- -Returns beginning of clause position. - -py-end-of-clause-position -------------------------- -Returns end of clause position. - -py-beginning-of-block-or-clause-position ----------------------------------------- -Returns beginning of block-or-clause position. - -py-end-of-block-or-clause-position ----------------------------------- -Returns end of block-or-clause position. - -py-beginning-of-def-position ----------------------------- -Returns beginning of def position. - -py-end-of-def-position ----------------------- -Returns end of def position. - -py-beginning-of-class-position ------------------------------- -Returns beginning of class position. - -py-end-of-class-position ------------------------- -Returns end of class position. - -py-beginning-of-def-or-class-position -------------------------------------- -Returns beginning of def-or-class position. - -py-end-of-def-or-class-position -------------------------------- -Returns end of def-or-class position. - -py-beginning-of-line-position ------------------------------ -Returns beginning of line position. - -py-end-of-line-position ------------------------ -Returns end of line position. - -py-beginning-of-statement-position ----------------------------------- -Returns beginning of statement position. - -py-end-of-statement-position ----------------------------- -Returns end of statement position. - -py-beginning-of-comment-position --------------------------------- -Returns beginning of comment position. - -py-end-of-comment-position --------------------------- -Returns end of comment position. - -py-beginning-of-top-level-position ----------------------------------- -Returns beginning of top-level position. - -py-end-of-top-level-position ----------------------------- -Returns end of top-level position. - -py-beginning-of-partial-expression-position -------------------------------------------- -Returns beginning of partial-expression position. - -py-end-of-partial-expression-position -------------------------------------- -Returns end of partial-expression position. - -py-beginning-of-expression-position ------------------------------------ -Returns beginning of expression position. - -py-end-of-expression-position ------------------------------ -Returns end of expression position. - -;;; some more Positions not generated by ----------------------------------------- - - -py-list-beginning-position --------------------------- -Return lists beginning position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'. - -py-end-of-list-position ------------------------ -Return end position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'. - -py-in-triplequoted-string-p ---------------------------- -Returns character address of start tqs-string, nil if not inside. - -py-in-string-p --------------- -Returns character address of start of string, nil if not inside. - -py-in-statement-p ------------------ -Returns list of beginning and end-position if inside. - -Result is useful for booleans too: (when (py-in-statement-p)...) -will work. - - -;;; Bounds ----------- - - -py-bounds-of-statement ----------------------- -Returns bounds of statement at point. - -With optional POSITION, a number, report bounds of statement at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-statements ------------------------ -Bounds of consecutive multitude of statements around point. - -Indented same level, which don't open blocks. - -py-bounds-of-block ------------------- -Returns bounds of block at point. - -With optional POSITION, a number, report bounds of block at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-clause -------------------- -Returns bounds of clause at point. - -With optional POSITION, a number, report bounds of clause at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-block-or-clause ----------------------------- -Returns bounds of block-or-clause at point. - -With optional POSITION, a number, report bounds of block-or-clause at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-def ----------------- -Returns bounds of def at point. - -With optional POSITION, a number, report bounds of def at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-class ------------------- -Returns bounds of class at point. - -With optional POSITION, a number, report bounds of class at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-region -------------------- -Returns bounds of region at point. - -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-buffer -------------------- -Returns bounds of buffer at point. - -With optional POSITION, a number, report bounds of buffer at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-expression ------------------------ -Returns bounds of expression at point. - -With optional POSITION, a number, report bounds of expression at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-partial-expression -------------------------------- -Returns bounds of partial-expression at point. - -With optional POSITION, a number, report bounds of partial-expression at POSITION. -Returns a list, whose car is beg, cdr - end. - -py-bounds-of-declarations -------------------------- -Bounds of consecutive multitude of assigments resp. statements around point. - -Indented same level, which don't open blocks. -Typically declarations resp. initialisations of variables following -a class or function definition. -See also py-bounds-of-statements - -;;; Comments, Filling ---------------------- - - -py-beginning-of-comment ------------------------ -Go to the beginning of current line's comment, if any. - -Returns position if succesful. - -py-end-of-comment ------------------ -Go to the end of comment at point. - -Returns position, nil if not in comment. - -;;; Comment forms ------------------ - - -py-comment-region ------------------ -Like `comment-region' but uses double hash (`#') comment starter. - -py-comment-block ----------------- -Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-minor-block ----------------------- -Comments minor-block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-top-level --------------------- -Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-clause ------------------ -Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-block-or-clause --------------------------- -Comments block-or-clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-def --------------- -Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-class ----------------- -Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-def-or-class ------------------------ -Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-comment-statement --------------------- -Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default - -py-uncomment ------------- -Uncomment commented lines at point. - -If region is active, restrict uncommenting at region - -py-delete-comments-in-def-or-class ----------------------------------- -Delete all commented lines in def-or-class at point - -py-delete-comments-in-class ---------------------------- -Delete all commented lines in class at point - -py-delete-comments-in-block ---------------------------- -Delete all commented lines in block at point - -py-delete-comments-in-region ----------------------------- -Delete all commented lines in region. - -py-fill-comment ---------------- -Fill the comment paragraph at point - -py-end-of-string ----------------- -Go to end of string at point, return position. - -Takes the result of (syntax-ppss) - -py-fill-this-paragraph ----------------------- -Fill just the paragraph at point. - -py-fill-paragraph ------------------ -`fill-paragraph-function' - -If `py-paragraph-fill-docstring-p' and inside a docstring, the whole docstring is formatted. -See also `py-fill-string' - -py-fill-labelled-string ------------------------ -Fill string or paragraph containing lines starting with label - -See lp:1066489 - -py-fill-string --------------- -String fill function for `py-fill-paragraph'. -JUSTIFY should be used (if applicable) as in `fill-paragraph'. - -DOCSTRING is either a boolean or 'no -If `py-paragraph-fill-docstring-p' is `t', `M-q` fills the -complete docstring according to setting of `py-docstring-style' - -py-fill-string-django ---------------------- -Fill docstring according to Django's coding standards style. - - """ - Process foo, return bar. - """ - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -py-fill-string-onetwo ---------------------- -One newline and start and Two at end style. - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -py-fill-string-pep-257 ----------------------- -PEP-257 with 2 newlines at end of string. - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -py-fill-string-pep-257-nn -------------------------- -PEP-257 with 1 newline at end of string. - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -py-fill-string-symmetric ------------------------- -Symmetric style. - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - - -py-beginning-of-top-level-p ---------------------------- -Returns position, if cursor is at the beginning of a top-level, nil otherwise. - -;;; Opens-p ------------ - - -py-statement-opens-block-p --------------------------- -Return position if the current statement opens a block -in stricter or wider sense. - -For stricter sense specify regexp. - -py-statement-opens-clause-p ---------------------------- -Return position if the current statement opens block or clause. - -py-statement-opens-block-or-clause-p ------------------------------------- -Return position if the current statement opens block or clause. - -py-statement-opens-class-p --------------------------- -Return `t' if the statement opens a functions or class definition, nil otherwise. - -py-statement-opens-def-p ------------------------- -Return `t' if the statement opens a functions or class definition, nil otherwise. - -py-statement-opens-def-or-class-p ---------------------------------- -Return `t' if the statement opens a functions or class definition, nil otherwise. - -py-look-downward-for-clause ---------------------------- -If beginning of other clause exists downward in current block. - -If succesful return position. - -py-current-defun ----------------- -Go to the outermost method or class definition in current scope. - -Python value for `add-log-current-defun-function'. -This tells add-log.el how to find the current function/method/variable. -Returns name of class or methods definition, if found, nil otherwise. - -See customizable variables `py-current-defun-show' and `py-current-defun-delay'. - -py-sort-imports ---------------- -Sort multiline imports. - -Put point inside the parentheses of a multiline import and hit -M-x py-sort-imports to sort the imports lexicographically - -py-which-def-or-class ---------------------- -Returns concatenated `def' and `class' names in hierarchical order, if cursor is inside. - -Returns "???" otherwise -Used by variable `which-func-functions' - -py-which-function ------------------ -Return the name of the function or class, if curser is in, return nil otherwise. - -;;; Beginning/End ------------------ - - -py-beginning-of-statements --------------------------- -Got to the beginning of statements in current level which don't open blocks. - -py-end-of-statements --------------------- -Got to the end of statements in current level which don't open blocks. - -py-beginning-of-expression --------------------------- -Go to the beginning of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by "." operator, thus composed by minor python expressions. - -If already at the beginning or before a expression, go to next expression in buffer upwards - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes. - - -py-end-of-expression --------------------- -Go to the end of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by "." operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference - -Operators however are left aside resp. limit py-expression designed for edit-purposes. - -py-beginning-of-partial-expression ----------------------------------- - - -py-end-of-partial-expression ----------------------------- - - -py-beginning-of-line --------------------- -Go to beginning-of-line, return position. - -If already at beginning-of-line and not at BOB, go to beginning of previous line. - -py-end-of-line --------------- -Go to end-of-line, return position. - -If already at end-of-line and not at EOB, go to end of next line. - -py-beginning-of-statement -------------------------- -Go to the initial line of a simple statement. - -For beginning of compound statement use py-beginning-of-block. -For beginning of clause py-beginning-of-clause. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - - -py-beginning-of-declarations ----------------------------- -Got to the beginning of assigments resp. statements in current level which don't open blocks. - - -py-end-of-declarations ----------------------- -Got to the end of assigments resp. statements in current level which don't open blocks. - -;;; Beginning of forms ----------------------- - - -py-beginning-of-form-intern ---------------------------- -Go to beginning of FORM. - -With INDENT, go to beginning one level above. -Whit IACT, print result in message buffer. - -Returns beginning of FORM if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-block ---------------------- -Go to beginning block, skip whitespace at BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-clause ----------------------- -Go to beginning clause, skip whitespace at BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-block-or-clause -------------------------------- -Go to beginning block-or-clause, skip whitespace at BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-def -------------------- -Go to beginning def, skip whitespace at BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-class ---------------------- -Go to beginning class, skip whitespace at BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-def-or-class ----------------------------- -Go to beginning def-or-class, skip whitespace at BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-if-block ------------------------- -Go to beginning if-block, skip whitespace at BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-try-block -------------------------- -Go to beginning try-block, skip whitespace at BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-minor-block ---------------------------- -Go to beginning minor-block, skip whitespace at BOL. - -Returns beginning of minor-block if successful, nil otherwise -A minor block is started by a `for', `if', `try' or `with'. - - -py-beginning-of-block-lc ------------------------- -Go to beginning block, go to BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-clause-lc -------------------------- -Go to beginning clause, go to BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-block-or-clause-lc ----------------------------------- -Go to beginning block-or-clause, go to BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-def-lc ----------------------- -Go to beginning def, go to BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-class-lc ------------------------- -Go to beginning class, go to BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-def-or-class-lc -------------------------------- -Go to beginning def-or-class, go to BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-if-block-lc ---------------------------- -Go to beginning if-block, go to BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-try-block-lc ----------------------------- -Go to beginning try-block, go to BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-minor-block-lc ------------------------------- -Go to beginning minor-block, go to BOL. - -Returns beginning of minor-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning-of-top-level -------------------------- -Go up to beginning of statments until level of indentation is null. - -Returns position if successful, nil otherwise - -py-end-of-top-level -------------------- -Go to end of top-level form at point. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-beginning ------------- -Go to beginning of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end ------- -Go to end of of compound statement or definition at point. - -Returns position block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-up ------ -Go up or to beginning of form if inside. - -If inside a delimited form --string or list-- go to it's beginning. -If not at beginning of a statement or block, go to it's beginning. -If at beginning of a statement or block, go to beginning one level above of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-down -------- -Go to beginning one level below of compound statement or definition at point. - -If no statement or block below, but a delimited form --string or list-- go to it's beginning. Repeated call from there will behave like down-list. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-block ---------------- -Go to end of block. - -Returns end of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-clause ----------------- -Go to end of clause. - -Returns end of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-block-or-clause -------------------------- -Go to end of block-or-clause. - -Returns end of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-def -------------- -Go to end of def. - -Returns end of def if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-class ---------------- -Go to end of class. - -Returns end of class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-def-or-class ----------------------- -Go to end of def-or-class. - -Returns end of def-or-class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-if-block ------------------- -Go to end of if-block. - -Returns end of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-try-block -------------------- -Go to end of try-block. - -Returns end of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html - -py-end-of-minor-block ---------------------- -Go to end of minor-block. - -Returns end of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. - - -;;; Forms ---------- - - -py-declarations ---------------- -Copy and mark assigments resp. statements in current level which don't open blocks or start with a keyword. - -See also `py-statements', which is more general, taking also simple statements starting with a keyword. - -py-statements -------------- -Copy and mark simple statements in current level which don't open blocks. - -More general than py-declarations, which would stop at keywords like a print-statement. - -py-end-of-statement -------------------- -Go to the last char of current statement. - -To go just beyond the final line of the current statement, use `py-down-statement-bol'. - -py-goto-statement-below ------------------------ -Goto beginning of next statement. - -py-beginning-of-decorator -------------------------- -Go to the beginning of a decorator. - -Returns position if succesful - -py-end-of-decorator -------------------- -Go to the end of a decorator. - -Returns position if succesful - -;;; Mark --------- - - -py-mark-paragraph ------------------ -Mark paragraph at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-block -------------- -Mark block at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-minor-block -------------------- -Mark minor-block at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-clause --------------- -Mark clause at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-block-or-clause ------------------------ -Mark block-or-clause at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-def ------------ -Mark def at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -py-mark-class -------------- -Mark class at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -py-mark-def-or-class --------------------- -Mark def-or-class at point. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. - -py-mark-line ------------- -Mark line at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-statement ------------------ -Mark statement at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-top-level ------------------ -Mark top-level form at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-expression ------------------- -Mark expression at point. - -Returns beginning and end positions of marked area, a cons. - -py-mark-partial-expression --------------------------- -Mark partial-expression at point. - -Returns beginning and end positions of marked area, a cons. - -;;; Copy --------- - - -py-copy-statement ------------------ -Copy statement at point. - -Store data in kill ring, so it might yanked back. - -py-copy-top-level ------------------ -Copy top-level at point. - -Store data in kill ring, so it might yanked back. - -py-copy-block -------------- -Copy block at point. - -Store data in kill ring, so it might yanked back. - -py-copy-clause --------------- -Copy clause at point. - -Store data in kill ring, so it might yanked back. - -py-copy-block-or-clause ------------------------ -Copy block-or-clause at point. - -Store data in kill ring, so it might yanked back. - -py-copy-def ------------ -Copy def at point. - -Store data in kill ring, so it might yanked back. - -py-copy-class -------------- -Copy class at point. - -Store data in kill ring, so it might yanked back. - -py-copy-def-or-class --------------------- -Copy def-or-class at point. - -Store data in kill ring, so it might yanked back. - -py-copy-expression ------------------- -Copy expression at point. - -Store data in kill ring, so it might yanked back. - -py-copy-partial-expression --------------------------- -Copy partial-expression at point. - -Store data in kill ring, so it might yanked back. - -py-copy-minor-block -------------------- -Copy minor-block at point. - -Store data in kill ring, so it might yanked back. - -;;; Delete ----------- - - -py-delete-statement -------------------- -Delete STATEMENT at point. - -Don't store data in kill ring. - -py-delete-top-level -------------------- -Delete TOP-LEVEL at point. - -Don't store data in kill ring. - -py-delete-block ---------------- -Delete BLOCK at point. - -Don't store data in kill ring. - -py-delete-block-or-clause -------------------------- -Delete BLOCK-OR-CLAUSE at point. - -Don't store data in kill ring. - -py-delete-def -------------- -Delete DEF at point. - -Don't store data in kill ring. - -py-delete-class ---------------- -Delete CLASS at point. - -Don't store data in kill ring. - -py-delete-def-or-class ----------------------- -Delete DEF-OR-CLASS at point. - -Don't store data in kill ring. - -py-delete-expression --------------------- -Delete EXPRESSION at point. - -Don't store data in kill ring. - -py-delete-partial-expression ----------------------------- -Delete PARTIAL-EXPRESSION at point. - -Don't store data in kill ring. - -py-delete-minor-block ---------------------- -Delete MINOR-BLOCK at point. - -Don't store data in kill ring. -A minor block is started by a `for', `if', `try' or `with'. - -;;; Kill --------- - - -py-kill-statements ------------------- -Delete statements declared in current level. - -Store deleted statements in kill-ring - -py-kill-declarations --------------------- -Delete variables declared in current level. - -Store deleted variables in kill-ring - -py-kill-expression ------------------- -Delete expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-partial-expression --------------------------- -Delete partial-expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. - -"." operators delimit a partial-expression expression on it's level, that's the difference to compound expressions. - -py-kill-statement ------------------ -Delete statement at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-top-level ------------------ -Delete top-level form at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-block -------------- -Delete block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-minor-block -------------------- -Delete minor-block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-block-or-clause ------------------------ -Delete block-or-clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-def-or-class --------------------- -Delete def-or-class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-class -------------- -Delete class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-def ------------ -Delete def at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-clause --------------- -Delete clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -;;; Beginning of line forms ---------------------------- - - -py-beginning-of-block-bol-p ---------------------------- -Returns position, if cursor is at the beginning of block, at beginning of line, nil otherwise. - -py-end-of-block-bol -------------------- -Goto beginning of line following end of block. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block': down from current definition to next beginning of block below. - -py-mark-block-bol ------------------ -Mark block, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -py-copy-block-bol ------------------ -Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-block-bol ------------------ -Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-block-bol -------------------- -Delete block bol at point. - -Don't store data in kill ring. - -py-beginning-of-clause-bol-p ----------------------------- -Returns position, if cursor is at the beginning of clause, at beginning of line, nil otherwise. - -py-end-of-clause-bol --------------------- -Goto beginning of line following end of clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-clause': down from current definition to next beginning of clause below. - -py-mark-clause-bol ------------------- -Mark clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -py-copy-clause-bol ------------------- -Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-clause-bol ------------------- -Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-clause-bol --------------------- -Delete clause bol at point. - -Don't store data in kill ring. - -py-beginning-of-block-or-clause-bol-p -------------------------------------- -Returns position, if cursor is at the beginning of block-or-clause, at beginning of line, nil otherwise. - -py-end-of-block-or-clause-bol ------------------------------ -Goto beginning of line following end of block-or-clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block-or-clause': down from current definition to next beginning of block-or-clause below. - -py-mark-block-or-clause-bol ---------------------------- -Mark block-or-clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -py-copy-block-or-clause-bol ---------------------------- -Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-block-or-clause-bol ---------------------------- -Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-block-or-clause-bol ------------------------------ -Delete block-or-clause bol at point. - -Don't store data in kill ring. - -py-beginning-of-def-bol-p -------------------------- -Returns position, if cursor is at the beginning of def, at beginning of line, nil otherwise. - -py-end-of-def-bol ------------------ -Goto beginning of line following end of def. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def': down from current definition to next beginning of def below. - -py-mark-def-bol ---------------- -Mark def, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -py-copy-def-bol ---------------- -Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-def-bol ---------------- -Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-def-bol ------------------ -Delete def bol at point. - -Don't store data in kill ring. - -py-beginning-of-class-bol-p ---------------------------- -Returns position, if cursor is at the beginning of class, at beginning of line, nil otherwise. - -py-end-of-class-bol -------------------- -Goto beginning of line following end of class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-class': down from current definition to next beginning of class below. - -py-mark-class-bol ------------------ -Mark class, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -py-copy-class-bol ------------------ -Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-class-bol ------------------ -Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-class-bol -------------------- -Delete class bol at point. - -Don't store data in kill ring. - -py-beginning-of-def-or-class-bol-p ----------------------------------- -Returns position, if cursor is at the beginning of def-or-class, at beginning of line, nil otherwise. - -py-end-of-def-or-class-bol --------------------------- -Goto beginning of line following end of def-or-class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def-or-class': down from current definition to next beginning of def-or-class below. - -py-mark-def-or-class-bol ------------------------- -Mark def-or-class, take beginning of line positions. - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. - -py-copy-def-or-class-bol ------------------------- -Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-def-or-class-bol ------------------------- -Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-def-or-class-bol --------------------------- -Delete def-or-class bol at point. - -Don't store data in kill ring. - -py-beginning-of-statement-bol-p -------------------------------- -Returns position, if cursor is at the beginning of statement, at beginning of line, nil otherwise. - -py-beginning-of-statement-bol ------------------------------ -Goto beginning of line where statement starts. - Returns position reached, if successful, nil otherwise. - -See also `py-up-statement': up from current definition to next beginning of statement above. - -py-end-of-statement-bol ------------------------ -Goto beginning of line following end of statement. - Returns position reached, if successful, nil otherwise. - -See also `py-down-statement': down from current definition to next beginning of statement below. - -py-mark-statement-bol ---------------------- -Mark statement, take beginning of line positions. - -Returns beginning and end positions of region, a cons. - -py-copy-statement-bol ---------------------- -Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-kill-statement-bol ---------------------- -Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. - -py-delete-statement-bol ------------------------ -Delete statement bol at point. - -Don't store data in kill ring. - -;;; Up/Down ------------ - - -py-up-statement ---------------- -Go to the beginning of next statement upwards in buffer. - -Return position if statement found, nil otherwise. - -py-down-statement ------------------ -Go to the beginning of next statement downwards in buffer. - -Return position if statement found, nil otherwise. - -py-up-block ------------ -Go to the beginning of next block upwards in buffer. - -Return position if block found, nil otherwise. - -py-up-minor-block ------------------ -Go to the beginning of next minor-block upwards in buffer. - -Return position if minor-block found, nil otherwise. - -py-up-clause ------------- -Go to the beginning of next clause upwards in buffer. - -Return position if clause found, nil otherwise. - -py-up-block-or-clause ---------------------- -Go to the beginning of next block-or-clause upwards in buffer. - -Return position if block-or-clause found, nil otherwise. - -py-up-def ---------- -Go to the beginning of next def upwards in buffer. - -Return position if def found, nil otherwise. - -py-up-class ------------ -Go to the beginning of next class upwards in buffer. - -Return position if class found, nil otherwise. - -py-up-def-or-class ------------------- -Go to the beginning of next def-or-class upwards in buffer. - -Return position if def-or-class found, nil otherwise. - -py-down-block -------------- -Go to the beginning of next block below in buffer. - -Return position if block found, nil otherwise. - -py-down-minor-block -------------------- -Go to the beginning of next minor-block below in buffer. - -Return position if minor-block found, nil otherwise. - -py-down-clause --------------- -Go to the beginning of next clause below in buffer. - -Return position if clause found, nil otherwise. - -py-down-block-or-clause ------------------------ -Go to the beginning of next block-or-clause below in buffer. - -Return position if block-or-clause found, nil otherwise. - -py-down-def ------------ -Go to the beginning of next def below in buffer. - -Return position if def found, nil otherwise. - -py-down-class -------------- -Go to the beginning of next class below in buffer. - -Return position if class found, nil otherwise. - -py-down-def-or-class --------------------- -Go to the beginning of next def-or-class below in buffer. - -Return position if def-or-class found, nil otherwise. - -py-up-block-bol ---------------- -Go to the beginning of next block upwards in buffer. - -Go to beginning of line. -Return position if block found, nil otherwise. - -py-up-minor-block-bol ---------------------- -Go to the beginning of next minor-block upwards in buffer. - -Go to beginning of line. -Return position if minor-block found, nil otherwise. - -py-up-clause-bol ----------------- -Go to the beginning of next clause upwards in buffer. - -Go to beginning of line. -Return position if clause found, nil otherwise. - -py-up-block-or-clause-bol -------------------------- -Go to the beginning of next block-or-clause upwards in buffer. - -Go to beginning of line. -Return position if block-or-clause found, nil otherwise. - -py-up-def-bol -------------- -Go to the beginning of next def upwards in buffer. - -Go to beginning of line. -Return position if def found, nil otherwise. - -py-up-class-bol ---------------- -Go to the beginning of next class upwards in buffer. - -Go to beginning of line. -Return position if class found, nil otherwise. - -py-up-def-or-class-bol ----------------------- -Go to the beginning of next def-or-class upwards in buffer. - -Go to beginning of line. -Return position if def-or-class found, nil otherwise. - -py-down-block-bol ------------------ -Go to the beginning of next block below in buffer. - -Go to beginning of line -Return position if block found, nil otherwise - -py-down-minor-block-bol ------------------------ -Go to the beginning of next minor-block below in buffer. - -Go to beginning of line -Return position if minor-block found, nil otherwise - -py-down-clause-bol ------------------- -Go to the beginning of next clause below in buffer. - -Go to beginning of line -Return position if clause found, nil otherwise - -py-down-block-or-clause-bol ---------------------------- -Go to the beginning of next block-or-clause below in buffer. - -Go to beginning of line -Return position if block-or-clause found, nil otherwise - -py-down-def-bol ---------------- -Go to the beginning of next def below in buffer. - -Go to beginning of line -Return position if def found, nil otherwise - -py-down-class-bol ------------------ -Go to the beginning of next class below in buffer. - -Go to beginning of line -Return position if class found, nil otherwise - -py-down-def-or-class-bol ------------------------- -Go to the beginning of next def-or-class below in buffer. - -Go to beginning of line -Return position if def-or-class found, nil otherwise - -py-forward-into-nomenclature ----------------------------- -Move forward to end of a nomenclature section or word. - -With C-u (programmatically, optional argument ARG), do it that many times. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores. - -py-backward-into-nomenclature ------------------------------ -Move backward to beginning of a nomenclature section or word. - -With optional ARG, move that many times. If ARG is negative, move -forward. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores. - -match-paren ------------ -Go to the matching brace, bracket or parenthesis if on its counterpart. - -Otherwise insert the character, the key is assigned to, here `%'. -With universal arg  insert a `%'. - -;;; Python named shells ------------------------ - - -python ------- -Start an Python interpreter. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -ipython -------- -Start an IPython interpreter. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -python3 -------- -Start an Python3 interpreter. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -python2 -------- -Start an Python2 interpreter. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -python2\.7 ----------- -Start an Python2.7 interpreter. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -jython ------- -Start an Jython interpreter. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -python3\.2 ----------- -Start an Python3.2 interpreter. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -python3\.3 ----------- -Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -python3\.4 ----------- -Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -bpython -------- -Start an Bpython interpreter. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -python-dedicated ----------------- -Start an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -ipython-dedicated ------------------ -Start an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -python3-dedicated ------------------ -Start an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -python2-dedicated ------------------ -Start an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -python2\.7-dedicated --------------------- -Start an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -jython-dedicated ----------------- -Start an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -python3\.2-dedicated --------------------- -Start an unique Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -python3\.3-dedicated --------------------- -Start an unique Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -bpython-dedicated ------------------ -Start an unique Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -python-switch -------------- -Switch to Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -ipython-switch --------------- -Switch to IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -python3-switch --------------- -Switch to Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -python2-switch --------------- -Switch to Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -python2\.7-switch ------------------ -Switch to Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -jython-switch -------------- -Switch to Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -python3\.2-switch ------------------ -Switch to Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -python3\.3-switch ------------------ -Switch to Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -bpython-switch --------------- -Switch to Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -python-no-switch ----------------- -Open an Python interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -ipython-no-switch ------------------ -Open an IPython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -python3-no-switch ------------------ -Open an Python3 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -python2-no-switch ------------------ -Open an Python2 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -python2\.7-no-switch --------------------- -Open an Python2.7 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -jython-no-switch ----------------- -Open an Jython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -python3\.2-no-switch --------------------- -Open an Python3.2 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -python3\.3-no-switch --------------------- -Open an Python3.3 interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -bpython-no-switch ------------------ -Open an Bpython interpreter in another window, but do not switch to it. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -python-switch-dedicated ------------------------ -Switch to an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'. - -ipython-switch-dedicated ------------------------- -Switch to an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'. - -python3-switch-dedicated ------------------------- -Switch to an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. - -python2-switch-dedicated ------------------------- -Switch to an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. - -python2\.7-switch-dedicated ---------------------------- -Switch to an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. - -jython-switch-dedicated ------------------------ -Switch to an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'. - -python3\.2-switch-dedicated ---------------------------- -Switch to an unique Python3.2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. - -python3\.3-switch-dedicated ---------------------------- -Switch to an unique Python3.3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. - -bpython-switch-dedicated ------------------------- -Switch to an unique Bpython interpreter in another window. - -Optional C-u prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. - -;;; Code execution ------------------- - - -py-which-execute-file-command ------------------------------ -Return the command appropriate to Python version. - -Per default it's "(format "execfile(r'%s') # PYTHON-MODE\n" filename)" for Python 2 series. - -py-execute-region-no-switch ---------------------------- -Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', buffer with region stays current. - - -py-execute-region-switch ------------------------- -Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', output-buffer will being switched to. - - -py-execute-region ------------------ -Send the region to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. - -Optional DEDICATED (boolean) - - -py-execute-region-default -------------------------- -Send the region to the systems default Python interpreter. - -py-execute-region-dedicated ---------------------------- -Get the region processed by an unique Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. - -py-execute-region-default-dedicated ------------------------------------ -Send the region to an unique shell of systems default Python. - -py-execute-python-mode-v5 -------------------------- - - -py-execute-string ------------------ -Send the argument STRING to a Python interpreter. - -See also `py-execute-region'. - -py-execute-string-dedicated ---------------------------- -Send the argument STRING to an unique Python interpreter. - -See also `py-execute-region'. - -py-fetch-py-master-file ------------------------ -Lookup if a `py-master-file' is specified. - -See also doku of variable `py-master-file' - -py-execute-import-or-reload ---------------------------- -Import the current buffer's file in a Python interpreter. - -If the file has already been imported, then do reload instead to get -the latest version. - -If the file's name does not end in ".py", then do execfile instead. - -If the current buffer is not visiting a file, do `py-execute-buffer' -instead. - -If the file local variable `py-master-file' is non-nil, import or -reload the named file instead of the buffer's file. The file may be -saved based on the value of `py-execute-import-or-reload-save-p'. - -See also `M-x py-execute-region'. - -This may be preferable to `M-x py-execute-buffer' because: - - - Definitions stay in their module rather than appearing at top - level, where they would clutter the global namespace and not affect - uses of qualified names (MODULE.NAME). - - - The Python debugger gets line number information about the functions. - -py-execute-buffer-dedicated ---------------------------- -Send the contents of the buffer to a unique Python interpreter. - -py-execute-buffer-switch ------------------------- -Send the contents of the buffer to a Python interpreter and switches to output. - -py-execute-buffer-dedicated-switch ----------------------------------- -Send the contents of the buffer to an unique Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p'. - -py-execute-buffer ------------------ -Send the contents of the buffer to a Python interpreter. - -py-execute-buffer-no-switch ---------------------------- -Send the contents of the buffer to a Python interpreter but don't switch to output. - -py-execute-defun ----------------- -Send the current defun (class or method) to the inferior Python process. - -py-process-file ---------------- -Process "python filename". - -Optional OUTPUT-BUFFER and ERROR-BUFFER might be given. - -py-execute-line ---------------- -Send current line from beginning of indent to Python interpreter. - -py-output-filter ----------------- -Clear output buffer from py-shell-input prompt etc. - -py-execute-file ---------------- -When called interactively, user is prompted for filename. - -;;; Pdb -------- - - -py-pdbtrack-toggle-stack-tracking ---------------------------------- -Set variable `py-pdbtrack-do-tracking-p'. - -turn-on-pdbtrack ----------------- - - -turn-off-pdbtrack ------------------ - - -;;; Documentation ------------------ - - -py-documentation ----------------- -Launch PyDOC on the Word at Point - -py-fetch-docu -------------- -Lookup in current buffer for the doku for the symbol at point. - -Useful for newly defined symbol, not known to python yet. - -py-find-imports ---------------- -Find top-level imports. - -Returns imports - -py-eldoc-function ------------------ -Print help on symbol at point. - -py-describe-symbol ------------------- -Print help on symbol at point. - -If symbol is defined in current buffer, jump to it's definition -Optional C-u used for debugging, will prevent deletion of temp file. - -py-describe-mode ----------------- -Dump long form of `python-mode' docs. - -py-load-file ------------- -Load a Python file FILE-NAME into the inferior Python process. - -If the file has extension `.py' import or reload it as a module. -Treating it as a module keeps the global namespace clean, provides -function location information for debugging, and supports users of -module-qualified names. - -py-find-definition ------------------- -Find source of definition of SYMBOL. - -Interactively, prompt for SYMBOL. - -;;; Miscellanus ---------------- - - -py-insert-super ---------------- -Insert a function "super()" from current environment. - -As example given in Python v3.1 documentation » The Python Standard Library » - -class C(B): - def method(self, arg): - super().method(arg) # This does the same thing as: - # super(C, self).method(arg) - -Returns the string inserted. - -py-nesting-level ----------------- -Accepts the output of `parse-partial-sexp'. - -py-beginning-of-commented-section ---------------------------------- -Leave upwards comments and/or empty lines. - -py-continuation-offset ----------------------- -With numeric ARG different from 1 py-continuation-offset is set to that value; returns py-continuation-offset. - -py-compute-indentation ----------------------- -Compute Python indentation. - -When HONOR-BLOCK-CLOSE-P is non-nil, statements such as `return', -`raise', `break', `continue', and `pass' force one level of dedenting. - -Optional arguments are flags resp. values set and used by `py-compute-indentation' internally - - -py-indentation-of-statement ---------------------------- -Returns the indenation of the statement at point. - -py-guess-default-python ------------------------ -Defaults to "python", if guessing didn't succeed. - -py-set-ipython-completion-command-string ----------------------------------------- -Set and return `ipython-completion-command-string'. - -py-shell-dedicated ------------------- -Start an interactive Python interpreter in another window. - -With optional C-u user is prompted by -`py-choose-shell' for command and options to pass to the Python -interpreter. - - -py-shell --------- -Start an interactive Python interpreter in another window. -Interactively, C-u 4 prompts for a buffer. -C-u 2 prompts for `py-python-command-args'. -If `default-directory' is a remote file name, it is also prompted -to change if called with a prefix arg. - -Returns py-shell's buffer-name. -Optional string PYSHELLNAME overrides default `py-shell-name'. -BUFFER allows specifying a name, the Python process is connected to -When DONE is `t', `py-shell-manage-windows' is omitted - - -py-indent-forward-line ----------------------- -Indent and move one line forward to next indentation. -Returns column of line reached. - -If `py-kill-empty-line' is non-nil, delete an empty line. -When closing a form, use py-close-block et al, which will move and indent likewise. -With M-x universal argument just indent. - - -py-dedent-forward-line ----------------------- -Dedent line and move one line forward. - -py-dedent ---------- -Dedent line according to `py-indent-offset'. - -With arg, do it that many times. -If point is between indent levels, dedent to next level. -Return indentation reached, if dedent done, nil otherwise. - -Affected by `py-dedent-keep-relative-column'. - -py-close-def ------------- -Set indent level to that of beginning of function definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -py-close-class --------------- -Set indent level to that of beginning of class definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -py-close-clause ---------------- -Set indent level to that of beginning of clause definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -py-close-block --------------- -Set indent level to that of beginning of block definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. - -py-class-at-point ------------------ -Return class definition as string. - -With interactive call, send it to the message buffer too. - -py-line-at-point ----------------- -Return line as string. - With interactive call, send it to the message buffer too. - -py-looking-at-keywords-p ------------------------- -If looking at a python keyword. Returns t or nil. - -py-match-paren-mode -------------------- -py-match-paren-mode nil oder t - -py-match-paren --------------- -Goto to the opening or closing of block before or after point. - -With arg, do it that many times. - Closes unclosed block if jumping from beginning. - -py-printform-insert -------------------- -Inserts a print statement out of current `(car kill-ring)' by default, inserts ARG instead if delivered. - -eva ---- -Put "eval(...)" forms around strings at point. - -pst-here --------- -Kill previous "pdb.set_trace()" and insert it at point. - -py-line-to-printform-python2 ----------------------------- -Transforms the item on current in a print statement. - -;;; Imenu ---------- - - -py-switch-imenu-index-function ------------------------------- -Switch between series 5. index machine `py-imenu-create-index' and `py-imenu-create-index-new', which also lists modules variables - -py-toggle-local-default-use ---------------------------- - - -py-choose-shell-by-path ------------------------ -Select Python executable according to version desplayed in path, current buffer-file is selected from. - -Returns versioned string, nil if nothing appropriate found - -py-choose-shell-by-shebang --------------------------- -Choose shell by looking at #! on the first line. - -Returns the specified Python resp. Jython shell command name. - -py-which-python ---------------- -Returns version of Python of current environment, a number. - -py-python-current-environment ------------------------------ -Returns path of current Python installation. - -py-switch-shell ---------------- -Toggles between the interpreter customized in `py-shell-toggle-1' resp. `py-shell-toggle-2'. Was hard-coded CPython and Jython in earlier versions, now starts with Python2 and Python3 by default. - -ARG might be a python-version string to set to. - -C-u `py-toggle-shell' prompts to specify a reachable Python command. -C-u followed by numerical arg 2 or 3, `py-toggle-shell' opens a respective Python shell. -C-u followed by numerical arg 5 opens a Jython shell. - -Should you need more shells to select, extend this command by adding inside the first cond: - - ((eq NUMBER (prefix-numeric-value arg)) - "MY-PATH-TO-SHELL") - - -py-choose-shell ---------------- -Return an appropriate executable as a string. - -Returns nil, if no executable found. - -This does the following: - - look for an interpreter with `py-choose-shell-by-shebang' - - examine imports using `py-choose-shell-by-import' - - look if Path/To/File indicates a Python version - - if not successful, return default value of `py-shell-name' - -When interactivly called, messages the shell name, Emacs would in the given circtumstances. - -With C-u 4 is called `py-switch-shell' see docu there. - - -py-install-directory-check --------------------------- -Do some sanity check for `py-install-directory'. - -Returns `t' if successful. - -py-guess-py-install-directory ------------------------------ -Takes value of user directory aka $HOME -if `(locate-library "python-mode")' is not succesful. - -Used only, if `py-install-directory' is empty. - -py-set-load-path ----------------- -Include needed subdirs of python-mode directory. - -;;; Abbrevs ------------ - - -py-edit-abbrevs ---------------- -Jumps to `python-mode-abbrev-table' in a buffer containing lists of abbrev definitions. -You can edit them and type C-c C-c to redefine abbrevs -according to your editing. -Buffer contains a header line for each abbrev table, - which is the abbrev table name in parentheses. -This is followed by one line per abbrev in that table: -NAME USECOUNT EXPANSION HOOK -where NAME and EXPANSION are strings with quotes, -USECOUNT is an integer, and HOOK is any valid function -or may be omitted (it is usually omitted). - -py-add-abbrev -------------- -Defines python-mode specific abbrev for last expressions before point. -Argument is how many `py-partial-expression's form the expansion; or zero means the region is the expansion. - -Reads the abbreviation in the minibuffer; with numeric arg it displays a proposal for an abbrev. -Proposal is composed from the initial character(s) of the -expansion. - -Don't use this function in a Lisp program; use `define-abbrev' instead. - -py-python-version ------------------ -Returns versions number of a Python EXECUTABLE, string. - -If no EXECUTABLE given, `py-shell-name' is used. -Interactively output of `--version' is displayed. - -py-version ----------- -Echo the current version of `python-mode' in the minibuffer. - -py-install-search-local ------------------------ - - -py-install-local-shells ------------------------ -Builds Python-shell commands from executable found in LOCAL. - -If LOCAL is empty, shell-command `find' searches beneath current directory. -Eval resulting buffer to install it, see customizable `py-extensions'. - -;;; Completion --------------- - - -py-python-script-complete -------------------------- -Complete word before point, if any. - -When `py-no-completion-calls-dabbrev-expand-p' is non-nil, try dabbrev-expand. Otherwise, when `py-indent-no-completion-p' is non-nil, call `tab-to-tab-stop'. - -py-python2-shell-complete -------------------------- - - -py-python3-shell-complete -------------------------- -Complete word before point, if any. Otherwise insert TAB. - -py-shell-complete ------------------ -Complete word before point, if any. Otherwise insert TAB. - -ipython-complete ----------------- -Complete the python symbol before point. - -If no completion available, insert a TAB. -Returns the completed symbol, a string, if successful, nil otherwise. - -;;; Checker ------------ - - -pylint-flymake-mode -------------------- -Toggle `pylint' `flymake-mode'. - -pyflakes-flymake-mode ---------------------- -Toggle `pyflakes' `flymake-mode'. - -pychecker-flymake-mode ----------------------- -Toggle `pychecker' `flymake-mode'. - -pep8-flymake-mode ------------------ -Toggle `pep8' `flymake-mode'. - -pyflakespep8-flymake-mode -------------------------- -Toggle `pyflakespep8' `flymake-mode'. - -Joint call to pyflakes and pep8 as proposed by - -Keegan Carruthers-Smith - - - -py-pep8-run ------------ -Run pep8, check formatting (default on the file currently visited). - - -py-pep8-help ------------- -Display pep8 command line help messages. - -py-pylint-run -------------- -Run pylint (default on the file currently visited). - -For help see M-x pylint-help resp. M-x pylint-long-help. -Home-page: http://www.logilab.org/project/pylint - -py-pylint-help --------------- -Display Pylint command line help messages. - -Let's have this until more Emacs-like help is prepared - -py-pylint-doku --------------- -Display Pylint Documentation. - -Calls `pylint --full-documentation' - -py-pyflakes-run ---------------- -Run pyflakes (default on the file currently visited). - -For help see M-x pyflakes-help resp. M-x pyflakes-long-help. -Home-page: http://www.logilab.org/project/pyflakes - -py-pyflakes-help ----------------- -Display Pyflakes command line help messages. - -Let's have this until more Emacs-like help is prepared - -py-pyflakespep8-run -------------------- -Run pyflakespep8, check formatting (default on the file currently visited). - - -py-pyflakespep8-help --------------------- -Display pyflakespep8 command line help messages. - -py-flakes8-run --------------- -Run flakes8, check formatting (default on the file currently visited). - - -py-flakes8-help ---------------- -Display flakes8 command line help messages. - -py-pychecker-run ----------------- -Run pychecker (default on the file currently visited). - -;;; Skeletons -------------- - - -py-load-skeletons ------------------ -These skeletons are loaded by python-mode, if `py-load-skeletons-p' is non-nil. - -;;; Virtualenv --------------- - - -(defun v --------- - - -virtualenv-current ------------------- -Barfs the current activated virtualenv - -virtualenv-activate -------------------- -Activate the virtualenv located in DIR - -virtualenv-deactivate ---------------------- -Deactivate the current virtual enviroment - -virtualenv-workon ------------------ -Issue a virtualenvwrapper-like virtualenv-workon command - -;;; Execute forms at point --------------------------- - - -py-execute-statement --------------------- -Send statement at point to a Python interpreter. - -py-execute-top-level --------------------- -Send top-level at point to a Python interpreter. - -py-execute-block ----------------- -Send block at point to a Python interpreter. - -py-execute-minor-block ----------------------- -Send minor-block at point to a Python interpreter. - -A minor block is started by a `for', `if', `try' or `with'. - - -py-execute-block-or-clause --------------------------- -Send block-or-clause at point to a Python interpreter. - -py-execute-def --------------- -Send def at point to a Python interpreter. - -py-execute-class ----------------- -Send class at point to a Python interpreter. - -py-execute-def-or-class ------------------------ -Send def-or-class at point to a Python interpreter. - -py-execute-expression ---------------------- -Send expression at point to a Python interpreter. - -py-execute-partial-expression ------------------------------ -Send partial-expression at point to a Python interpreter. - -;;; Execute line ----------------- - - -;;; Execute file commands -------------------------- - - -py-execute-file-python ----------------------- -Send file to a Python interpreter. - -py-execute-file-python-switch ------------------------------ -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python-no-switch --------------------------------- -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python-dedicated --------------------------------- -Send file to a Python interpreter. - -Uses a dedicated shell. - -py-execute-file-python-dedicated-switch ---------------------------------------- -Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-ipython ------------------------ -Send file to a Ipython interpreter. - -py-execute-file-ipython-switch ------------------------------- -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-ipython-no-switch ---------------------------------- -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-ipython-dedicated ---------------------------------- -Send file to a Ipython interpreter. - -Uses a dedicated shell. - -py-execute-file-ipython-dedicated-switch ----------------------------------------- -Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3 ------------------------ -Send file to a Python3 interpreter. - -py-execute-file-python3-switch ------------------------------- -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3-no-switch ---------------------------------- -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python3-dedicated ---------------------------------- -Send file to a Python3 interpreter. - -Uses a dedicated shell. - -py-execute-file-python3-dedicated-switch ----------------------------------------- -Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python2 ------------------------ -Send file to a Python2 interpreter. - -py-execute-file-python2-switch ------------------------------- -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python2-no-switch ---------------------------------- -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python2-dedicated ---------------------------------- -Send file to a Python2 interpreter. - -Uses a dedicated shell. - -py-execute-file-python2-dedicated-switch ----------------------------------------- -Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python2\.7 --------------------------- -Send file to a Python2.7 interpreter. - -py-execute-file-python2\.7-switch ---------------------------------- -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python2\.7-no-switch ------------------------------------- -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python2\.7-dedicated ------------------------------------- -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. - -py-execute-file-python2\.7-dedicated-switch -------------------------------------------- -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-jython ----------------------- -Send file to a Jython interpreter. - -py-execute-file-jython-switch ------------------------------ -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-jython-no-switch --------------------------------- -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-jython-dedicated --------------------------------- -Send file to a Jython interpreter. - -Uses a dedicated shell. - -py-execute-file-jython-dedicated-switch ---------------------------------------- -Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3\.2 --------------------------- -Send file to a Python3.2 interpreter. - -py-execute-file-python3\.2-switch ---------------------------------- -Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3\.2-no-switch ------------------------------------- -Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python3\.2-dedicated ------------------------------------- -Send file to a Python3.2 interpreter. - -Uses a dedicated shell. - -py-execute-file-python3\.2-dedicated-switch -------------------------------------------- -Send file to a Python3.2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3\.3 --------------------------- -Send file to a Python3.3 interpreter. - -py-execute-file-python3\.3-switch ---------------------------------- -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-python3\.3-no-switch ------------------------------------- -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-python3\.3-dedicated ------------------------------------- -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. - -py-execute-file-python3\.3-dedicated-switch -------------------------------------------- -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-bpython ------------------------ -Send file to a Bpython interpreter. - -py-execute-file-bpython-switch ------------------------------- -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -py-execute-file-bpython-no-switch ---------------------------------- -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil" - -py-execute-file-bpython-dedicated ---------------------------------- -Send file to a Bpython interpreter. - -Uses a dedicated shell. - -py-execute-file-bpython-dedicated-switch ----------------------------------------- -Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil" - -;;; Extended executes ---------------------- - - -py-execute-statement-python ---------------------------- -Send statement at point to Python interpreter. - -py-execute-statement-python-switch ----------------------------------- -Send statement at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python-no-switch -------------------------------------- -Send statement at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python-dedicated -------------------------------------- -Send statement at point to Python unique interpreter. - -py-execute-statement-python-dedicated-switch --------------------------------------------- -Send statement at point to Python unique interpreter and switch to result. - -py-execute-statement-ipython ----------------------------- -Send statement at point to IPython interpreter. - -py-execute-statement-ipython-switch ------------------------------------ -Send statement at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-ipython-no-switch --------------------------------------- -Send statement at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-ipython-dedicated --------------------------------------- -Send statement at point to IPython unique interpreter. - -py-execute-statement-ipython-dedicated-switch ---------------------------------------------- -Send statement at point to IPython unique interpreter and switch to result. - -py-execute-statement-python3 ----------------------------- -Send statement at point to Python3 interpreter. - -py-execute-statement-python3-switch ------------------------------------ -Send statement at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python3-no-switch --------------------------------------- -Send statement at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python3-dedicated --------------------------------------- -Send statement at point to Python3 unique interpreter. - -py-execute-statement-python3-dedicated-switch ---------------------------------------------- -Send statement at point to Python3 unique interpreter and switch to result. - -py-execute-statement-python2 ----------------------------- -Send statement at point to Python2 interpreter. - -py-execute-statement-python2-switch ------------------------------------ -Send statement at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python2-no-switch --------------------------------------- -Send statement at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python2-dedicated --------------------------------------- -Send statement at point to Python2 unique interpreter. - -py-execute-statement-python2-dedicated-switch ---------------------------------------------- -Send statement at point to Python2 unique interpreter and switch to result. - -py-execute-statement-python2\.7 -------------------------------- -Send statement at point to Python2.7 interpreter. - -py-execute-statement-python2\.7-switch --------------------------------------- -Send statement at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python2\.7-no-switch ------------------------------------------ -Send statement at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python2\.7-dedicated ------------------------------------------ -Send statement at point to Python2.7 unique interpreter. - -py-execute-statement-python2\.7-dedicated-switch ------------------------------------------------- -Send statement at point to Python2.7 unique interpreter and switch to result. - -py-execute-statement-jython ---------------------------- -Send statement at point to Jython interpreter. - -py-execute-statement-jython-switch ----------------------------------- -Send statement at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-jython-no-switch -------------------------------------- -Send statement at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-jython-dedicated -------------------------------------- -Send statement at point to Jython unique interpreter. - -py-execute-statement-jython-dedicated-switch --------------------------------------------- -Send statement at point to Jython unique interpreter and switch to result. - -py-execute-statement-python3\.2 -------------------------------- -Send statement at point to Python3.2 interpreter. - -py-execute-statement-python3\.2-switch --------------------------------------- -Send statement at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python3\.2-no-switch ------------------------------------------ -Send statement at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python3\.2-dedicated ------------------------------------------ -Send statement at point to Python3.2 unique interpreter. - -py-execute-statement-python3\.2-dedicated-switch ------------------------------------------------- -Send statement at point to Python3.2 unique interpreter and switch to result. - -py-execute-statement-python3\.3 -------------------------------- -Send statement at point to Python3.3 interpreter. - -py-execute-statement-python3\.3-switch --------------------------------------- -Send statement at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-python3\.3-no-switch ------------------------------------------ -Send statement at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-python3\.3-dedicated ------------------------------------------ -Send statement at point to Python3.3 unique interpreter. - -py-execute-statement-python3\.3-dedicated-switch ------------------------------------------------- -Send statement at point to Python3.3 unique interpreter and switch to result. - -py-execute-statement-bpython ----------------------------- -Send statement at point to Bpython interpreter. - -py-execute-statement-bpython-switch ------------------------------------ -Send statement at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-statement-bpython-no-switch --------------------------------------- -Send statement at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-statement-bpython-dedicated --------------------------------------- -Send statement at point to Bpython unique interpreter. - -py-execute-statement-bpython-dedicated-switch ---------------------------------------------- -Send statement at point to Bpython unique interpreter and switch to result. - -py-execute-block-python ------------------------ -Send block at point to Python interpreter. - -py-execute-block-python-switch ------------------------------- -Send block at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python-no-switch ---------------------------------- -Send block at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python-dedicated ---------------------------------- -Send block at point to Python unique interpreter. - -py-execute-block-python-dedicated-switch ----------------------------------------- -Send block at point to Python unique interpreter and switch to result. - -py-execute-block-ipython ------------------------- -Send block at point to IPython interpreter. - -py-execute-block-ipython-switch -------------------------------- -Send block at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-ipython-no-switch ----------------------------------- -Send block at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-ipython-dedicated ----------------------------------- -Send block at point to IPython unique interpreter. - -py-execute-block-ipython-dedicated-switch ------------------------------------------ -Send block at point to IPython unique interpreter and switch to result. - -py-execute-block-python3 ------------------------- -Send block at point to Python3 interpreter. - -py-execute-block-python3-switch -------------------------------- -Send block at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python3-no-switch ----------------------------------- -Send block at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python3-dedicated ----------------------------------- -Send block at point to Python3 unique interpreter. - -py-execute-block-python3-dedicated-switch ------------------------------------------ -Send block at point to Python3 unique interpreter and switch to result. - -py-execute-block-python2 ------------------------- -Send block at point to Python2 interpreter. - -py-execute-block-python2-switch -------------------------------- -Send block at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python2-no-switch ----------------------------------- -Send block at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python2-dedicated ----------------------------------- -Send block at point to Python2 unique interpreter. - -py-execute-block-python2-dedicated-switch ------------------------------------------ -Send block at point to Python2 unique interpreter and switch to result. - -py-execute-block-python2\.7 ---------------------------- -Send block at point to Python2.7 interpreter. - -py-execute-block-python2\.7-switch ----------------------------------- -Send block at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python2\.7-no-switch -------------------------------------- -Send block at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python2\.7-dedicated -------------------------------------- -Send block at point to Python2.7 unique interpreter. - -py-execute-block-python2\.7-dedicated-switch --------------------------------------------- -Send block at point to Python2.7 unique interpreter and switch to result. - -py-execute-block-jython ------------------------ -Send block at point to Jython interpreter. - -py-execute-block-jython-switch ------------------------------- -Send block at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-jython-no-switch ---------------------------------- -Send block at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-jython-dedicated ---------------------------------- -Send block at point to Jython unique interpreter. - -py-execute-block-jython-dedicated-switch ----------------------------------------- -Send block at point to Jython unique interpreter and switch to result. - -py-execute-block-python3\.2 ---------------------------- -Send block at point to Python3.2 interpreter. - -py-execute-block-python3\.2-switch ----------------------------------- -Send block at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python3\.2-no-switch -------------------------------------- -Send block at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python3\.2-dedicated -------------------------------------- -Send block at point to Python3.2 unique interpreter. - -py-execute-block-python3\.2-dedicated-switch --------------------------------------------- -Send block at point to Python3.2 unique interpreter and switch to result. - -py-execute-block-python3\.3 ---------------------------- -Send block at point to Python3.3 interpreter. - -py-execute-block-python3\.3-switch ----------------------------------- -Send block at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-python3\.3-no-switch -------------------------------------- -Send block at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-python3\.3-dedicated -------------------------------------- -Send block at point to Python3.3 unique interpreter. - -py-execute-block-python3\.3-dedicated-switch --------------------------------------------- -Send block at point to Python3.3 unique interpreter and switch to result. - -py-execute-block-bpython ------------------------- -Send block at point to Bpython interpreter. - -py-execute-block-bpython-switch -------------------------------- -Send block at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-bpython-no-switch ----------------------------------- -Send block at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-bpython-dedicated ----------------------------------- -Send block at point to Bpython unique interpreter. - -py-execute-block-bpython-dedicated-switch ------------------------------------------ -Send block at point to Bpython unique interpreter and switch to result. - -py-execute-clause-python ------------------------- -Send clause at point to Python interpreter. - -py-execute-clause-python-switch -------------------------------- -Send clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python-no-switch ----------------------------------- -Send clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python-dedicated ----------------------------------- -Send clause at point to Python unique interpreter. - -py-execute-clause-python-dedicated-switch ------------------------------------------ -Send clause at point to Python unique interpreter and switch to result. - -py-execute-clause-ipython -------------------------- -Send clause at point to IPython interpreter. - -py-execute-clause-ipython-switch --------------------------------- -Send clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-ipython-no-switch ------------------------------------ -Send clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-ipython-dedicated ------------------------------------ -Send clause at point to IPython unique interpreter. - -py-execute-clause-ipython-dedicated-switch ------------------------------------------- -Send clause at point to IPython unique interpreter and switch to result. - -py-execute-clause-python3 -------------------------- -Send clause at point to Python3 interpreter. - -py-execute-clause-python3-switch --------------------------------- -Send clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python3-no-switch ------------------------------------ -Send clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python3-dedicated ------------------------------------ -Send clause at point to Python3 unique interpreter. - -py-execute-clause-python3-dedicated-switch ------------------------------------------- -Send clause at point to Python3 unique interpreter and switch to result. - -py-execute-clause-python2 -------------------------- -Send clause at point to Python2 interpreter. - -py-execute-clause-python2-switch --------------------------------- -Send clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python2-no-switch ------------------------------------ -Send clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python2-dedicated ------------------------------------ -Send clause at point to Python2 unique interpreter. - -py-execute-clause-python2-dedicated-switch ------------------------------------------- -Send clause at point to Python2 unique interpreter and switch to result. - -py-execute-clause-python2\.7 ----------------------------- -Send clause at point to Python2.7 interpreter. - -py-execute-clause-python2\.7-switch ------------------------------------ -Send clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python2\.7-no-switch --------------------------------------- -Send clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python2\.7-dedicated --------------------------------------- -Send clause at point to Python2.7 unique interpreter. - -py-execute-clause-python2\.7-dedicated-switch ---------------------------------------------- -Send clause at point to Python2.7 unique interpreter and switch to result. - -py-execute-clause-jython ------------------------- -Send clause at point to Jython interpreter. - -py-execute-clause-jython-switch -------------------------------- -Send clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-jython-no-switch ----------------------------------- -Send clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-jython-dedicated ----------------------------------- -Send clause at point to Jython unique interpreter. - -py-execute-clause-jython-dedicated-switch ------------------------------------------ -Send clause at point to Jython unique interpreter and switch to result. - -py-execute-clause-python3\.2 ----------------------------- -Send clause at point to Python3.2 interpreter. - -py-execute-clause-python3\.2-switch ------------------------------------ -Send clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python3\.2-no-switch --------------------------------------- -Send clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python3\.2-dedicated --------------------------------------- -Send clause at point to Python3.2 unique interpreter. - -py-execute-clause-python3\.2-dedicated-switch ---------------------------------------------- -Send clause at point to Python3.2 unique interpreter and switch to result. - -py-execute-clause-python3\.3 ----------------------------- -Send clause at point to Python3.3 interpreter. - -py-execute-clause-python3\.3-switch ------------------------------------ -Send clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-python3\.3-no-switch --------------------------------------- -Send clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-python3\.3-dedicated --------------------------------------- -Send clause at point to Python3.3 unique interpreter. - -py-execute-clause-python3\.3-dedicated-switch ---------------------------------------------- -Send clause at point to Python3.3 unique interpreter and switch to result. - -py-execute-clause-bpython -------------------------- -Send clause at point to Bpython interpreter. - -py-execute-clause-bpython-switch --------------------------------- -Send clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-clause-bpython-no-switch ------------------------------------ -Send clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-clause-bpython-dedicated ------------------------------------ -Send clause at point to Bpython unique interpreter. - -py-execute-clause-bpython-dedicated-switch ------------------------------------------- -Send clause at point to Bpython unique interpreter and switch to result. - -py-execute-block-or-clause-python ---------------------------------- -Send block-or-clause at point to Python interpreter. - -py-execute-block-or-clause-python-switch ----------------------------------------- -Send block-or-clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python-no-switch -------------------------------------------- -Send block-or-clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python-dedicated -------------------------------------------- -Send block-or-clause at point to Python unique interpreter. - -py-execute-block-or-clause-python-dedicated-switch --------------------------------------------------- -Send block-or-clause at point to Python unique interpreter and switch to result. - -py-execute-block-or-clause-ipython ----------------------------------- -Send block-or-clause at point to IPython interpreter. - -py-execute-block-or-clause-ipython-switch ------------------------------------------ -Send block-or-clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-ipython-no-switch --------------------------------------------- -Send block-or-clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-ipython-dedicated --------------------------------------------- -Send block-or-clause at point to IPython unique interpreter. - -py-execute-block-or-clause-ipython-dedicated-switch ---------------------------------------------------- -Send block-or-clause at point to IPython unique interpreter and switch to result. - -py-execute-block-or-clause-python3 ----------------------------------- -Send block-or-clause at point to Python3 interpreter. - -py-execute-block-or-clause-python3-switch ------------------------------------------ -Send block-or-clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python3-no-switch --------------------------------------------- -Send block-or-clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python3-dedicated --------------------------------------------- -Send block-or-clause at point to Python3 unique interpreter. - -py-execute-block-or-clause-python3-dedicated-switch ---------------------------------------------------- -Send block-or-clause at point to Python3 unique interpreter and switch to result. - -py-execute-block-or-clause-python2 ----------------------------------- -Send block-or-clause at point to Python2 interpreter. - -py-execute-block-or-clause-python2-switch ------------------------------------------ -Send block-or-clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python2-no-switch --------------------------------------------- -Send block-or-clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python2-dedicated --------------------------------------------- -Send block-or-clause at point to Python2 unique interpreter. - -py-execute-block-or-clause-python2-dedicated-switch ---------------------------------------------------- -Send block-or-clause at point to Python2 unique interpreter and switch to result. - -py-execute-block-or-clause-python2\.7 -------------------------------------- -Send block-or-clause at point to Python2.7 interpreter. - -py-execute-block-or-clause-python2\.7-switch --------------------------------------------- -Send block-or-clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python2\.7-no-switch ------------------------------------------------ -Send block-or-clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python2\.7-dedicated ------------------------------------------------ -Send block-or-clause at point to Python2.7 unique interpreter. - -py-execute-block-or-clause-python2\.7-dedicated-switch ------------------------------------------------------- -Send block-or-clause at point to Python2.7 unique interpreter and switch to result. - -py-execute-block-or-clause-jython ---------------------------------- -Send block-or-clause at point to Jython interpreter. - -py-execute-block-or-clause-jython-switch ----------------------------------------- -Send block-or-clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-jython-no-switch -------------------------------------------- -Send block-or-clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-jython-dedicated -------------------------------------------- -Send block-or-clause at point to Jython unique interpreter. - -py-execute-block-or-clause-jython-dedicated-switch --------------------------------------------------- -Send block-or-clause at point to Jython unique interpreter and switch to result. - -py-execute-block-or-clause-python3\.2 -------------------------------------- -Send block-or-clause at point to Python3.2 interpreter. - -py-execute-block-or-clause-python3\.2-switch --------------------------------------------- -Send block-or-clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python3\.2-no-switch ------------------------------------------------ -Send block-or-clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python3\.2-dedicated ------------------------------------------------ -Send block-or-clause at point to Python3.2 unique interpreter. - -py-execute-block-or-clause-python3\.2-dedicated-switch ------------------------------------------------------- -Send block-or-clause at point to Python3.2 unique interpreter and switch to result. - -py-execute-block-or-clause-python3\.3 -------------------------------------- -Send block-or-clause at point to Python3.3 interpreter. - -py-execute-block-or-clause-python3\.3-switch --------------------------------------------- -Send block-or-clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-python3\.3-no-switch ------------------------------------------------ -Send block-or-clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-python3\.3-dedicated ------------------------------------------------ -Send block-or-clause at point to Python3.3 unique interpreter. - -py-execute-block-or-clause-python3\.3-dedicated-switch ------------------------------------------------------- -Send block-or-clause at point to Python3.3 unique interpreter and switch to result. - -py-execute-block-or-clause-bpython ----------------------------------- -Send block-or-clause at point to Bpython interpreter. - -py-execute-block-or-clause-bpython-switch ------------------------------------------ -Send block-or-clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-block-or-clause-bpython-no-switch --------------------------------------------- -Send block-or-clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-block-or-clause-bpython-dedicated --------------------------------------------- -Send block-or-clause at point to Bpython unique interpreter. - -py-execute-block-or-clause-bpython-dedicated-switch ---------------------------------------------------- -Send block-or-clause at point to Bpython unique interpreter and switch to result. - -py-execute-def-python ---------------------- -Send def at point to Python interpreter. - -py-execute-def-python-switch ----------------------------- -Send def at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python-no-switch -------------------------------- -Send def at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python-dedicated -------------------------------- -Send def at point to Python unique interpreter. - -py-execute-def-python-dedicated-switch --------------------------------------- -Send def at point to Python unique interpreter and switch to result. - -py-execute-def-ipython ----------------------- -Send def at point to IPython interpreter. - -py-execute-def-ipython-switch ------------------------------ -Send def at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-ipython-no-switch --------------------------------- -Send def at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-ipython-dedicated --------------------------------- -Send def at point to IPython unique interpreter. - -py-execute-def-ipython-dedicated-switch ---------------------------------------- -Send def at point to IPython unique interpreter and switch to result. - -py-execute-def-python3 ----------------------- -Send def at point to Python3 interpreter. - -py-execute-def-python3-switch ------------------------------ -Send def at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python3-no-switch --------------------------------- -Send def at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python3-dedicated --------------------------------- -Send def at point to Python3 unique interpreter. - -py-execute-def-python3-dedicated-switch ---------------------------------------- -Send def at point to Python3 unique interpreter and switch to result. - -py-execute-def-python2 ----------------------- -Send def at point to Python2 interpreter. - -py-execute-def-python2-switch ------------------------------ -Send def at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python2-no-switch --------------------------------- -Send def at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python2-dedicated --------------------------------- -Send def at point to Python2 unique interpreter. - -py-execute-def-python2-dedicated-switch ---------------------------------------- -Send def at point to Python2 unique interpreter and switch to result. - -py-execute-def-python2\.7 -------------------------- -Send def at point to Python2.7 interpreter. - -py-execute-def-python2\.7-switch --------------------------------- -Send def at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python2\.7-no-switch ------------------------------------ -Send def at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python2\.7-dedicated ------------------------------------ -Send def at point to Python2.7 unique interpreter. - -py-execute-def-python2\.7-dedicated-switch ------------------------------------------- -Send def at point to Python2.7 unique interpreter and switch to result. - -py-execute-def-jython ---------------------- -Send def at point to Jython interpreter. - -py-execute-def-jython-switch ----------------------------- -Send def at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-jython-no-switch -------------------------------- -Send def at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-jython-dedicated -------------------------------- -Send def at point to Jython unique interpreter. - -py-execute-def-jython-dedicated-switch --------------------------------------- -Send def at point to Jython unique interpreter and switch to result. - -py-execute-def-python3\.2 -------------------------- -Send def at point to Python3.2 interpreter. - -py-execute-def-python3\.2-switch --------------------------------- -Send def at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python3\.2-no-switch ------------------------------------ -Send def at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python3\.2-dedicated ------------------------------------ -Send def at point to Python3.2 unique interpreter. - -py-execute-def-python3\.2-dedicated-switch ------------------------------------------- -Send def at point to Python3.2 unique interpreter and switch to result. - -py-execute-def-python3\.3 -------------------------- -Send def at point to Python3.3 interpreter. - -py-execute-def-python3\.3-switch --------------------------------- -Send def at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-python3\.3-no-switch ------------------------------------ -Send def at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-python3\.3-dedicated ------------------------------------ -Send def at point to Python3.3 unique interpreter. - -py-execute-def-python3\.3-dedicated-switch ------------------------------------------- -Send def at point to Python3.3 unique interpreter and switch to result. - -py-execute-def-bpython ----------------------- -Send def at point to Bpython interpreter. - -py-execute-def-bpython-switch ------------------------------ -Send def at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-def-bpython-no-switch --------------------------------- -Send def at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-def-bpython-dedicated --------------------------------- -Send def at point to Bpython unique interpreter. - -py-execute-def-bpython-dedicated-switch ---------------------------------------- -Send def at point to Bpython unique interpreter and switch to result. - -py-execute-class-python ------------------------ -Send class at point to Python interpreter. - -py-execute-class-python-switch ------------------------------- -Send class at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python-no-switch ---------------------------------- -Send class at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python-dedicated ---------------------------------- -Send class at point to Python unique interpreter. - -py-execute-class-python-dedicated-switch ----------------------------------------- -Send class at point to Python unique interpreter and switch to result. - -py-execute-class-ipython ------------------------- -Send class at point to IPython interpreter. - -py-execute-class-ipython-switch -------------------------------- -Send class at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-ipython-no-switch ----------------------------------- -Send class at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-ipython-dedicated ----------------------------------- -Send class at point to IPython unique interpreter. - -py-execute-class-ipython-dedicated-switch ------------------------------------------ -Send class at point to IPython unique interpreter and switch to result. - -py-execute-class-python3 ------------------------- -Send class at point to Python3 interpreter. - -py-execute-class-python3-switch -------------------------------- -Send class at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python3-no-switch ----------------------------------- -Send class at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python3-dedicated ----------------------------------- -Send class at point to Python3 unique interpreter. - -py-execute-class-python3-dedicated-switch ------------------------------------------ -Send class at point to Python3 unique interpreter and switch to result. - -py-execute-class-python2 ------------------------- -Send class at point to Python2 interpreter. - -py-execute-class-python2-switch -------------------------------- -Send class at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python2-no-switch ----------------------------------- -Send class at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python2-dedicated ----------------------------------- -Send class at point to Python2 unique interpreter. - -py-execute-class-python2-dedicated-switch ------------------------------------------ -Send class at point to Python2 unique interpreter and switch to result. - -py-execute-class-python2\.7 ---------------------------- -Send class at point to Python2.7 interpreter. - -py-execute-class-python2\.7-switch ----------------------------------- -Send class at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python2\.7-no-switch -------------------------------------- -Send class at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python2\.7-dedicated -------------------------------------- -Send class at point to Python2.7 unique interpreter. - -py-execute-class-python2\.7-dedicated-switch --------------------------------------------- -Send class at point to Python2.7 unique interpreter and switch to result. - -py-execute-class-jython ------------------------ -Send class at point to Jython interpreter. - -py-execute-class-jython-switch ------------------------------- -Send class at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-jython-no-switch ---------------------------------- -Send class at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-jython-dedicated ---------------------------------- -Send class at point to Jython unique interpreter. - -py-execute-class-jython-dedicated-switch ----------------------------------------- -Send class at point to Jython unique interpreter and switch to result. - -py-execute-class-python3\.2 ---------------------------- -Send class at point to Python3.2 interpreter. - -py-execute-class-python3\.2-switch ----------------------------------- -Send class at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python3\.2-no-switch -------------------------------------- -Send class at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python3\.2-dedicated -------------------------------------- -Send class at point to Python3.2 unique interpreter. - -py-execute-class-python3\.2-dedicated-switch --------------------------------------------- -Send class at point to Python3.2 unique interpreter and switch to result. - -py-execute-class-python3\.3 ---------------------------- -Send class at point to Python3.3 interpreter. - -py-execute-class-python3\.3-switch ----------------------------------- -Send class at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-python3\.3-no-switch -------------------------------------- -Send class at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-python3\.3-dedicated -------------------------------------- -Send class at point to Python3.3 unique interpreter. - -py-execute-class-python3\.3-dedicated-switch --------------------------------------------- -Send class at point to Python3.3 unique interpreter and switch to result. - -py-execute-class-bpython ------------------------- -Send class at point to Bpython interpreter. - -py-execute-class-bpython-switch -------------------------------- -Send class at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-class-bpython-no-switch ----------------------------------- -Send class at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-class-bpython-dedicated ----------------------------------- -Send class at point to Bpython unique interpreter. - -py-execute-class-bpython-dedicated-switch ------------------------------------------ -Send class at point to Bpython unique interpreter and switch to result. - -py-execute-region-python ------------------------- -Send region at point to Python interpreter. - -py-execute-region-python-switch -------------------------------- -Send region at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python-no-switch ----------------------------------- -Send region at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python-dedicated ----------------------------------- -Send region at point to Python unique interpreter. - -py-execute-region-python-dedicated-switch ------------------------------------------ -Send region at point to Python unique interpreter and switch to result. - -py-execute-region-ipython -------------------------- -Send region at point to IPython interpreter. - -py-execute-region-ipython-switch --------------------------------- -Send region at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-ipython-no-switch ------------------------------------ -Send region at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-ipython-dedicated ------------------------------------ -Send region at point to IPython unique interpreter. - -py-execute-region-ipython-dedicated-switch ------------------------------------------- -Send region at point to IPython unique interpreter and switch to result. - -py-execute-region-python3 -------------------------- -Send region at point to Python3 interpreter. - -py-execute-region-python3-switch --------------------------------- -Send region at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python3-no-switch ------------------------------------ -Send region at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python3-dedicated ------------------------------------ -Send region at point to Python3 unique interpreter. - -py-execute-region-python3-dedicated-switch ------------------------------------------- -Send region at point to Python3 unique interpreter and switch to result. - -py-execute-region-python2 -------------------------- -Send region at point to Python2 interpreter. - -py-execute-region-python2-switch --------------------------------- -Send region at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python2-no-switch ------------------------------------ -Send region at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python2-dedicated ------------------------------------ -Send region at point to Python2 unique interpreter. - -py-execute-region-python2-dedicated-switch ------------------------------------------- -Send region at point to Python2 unique interpreter and switch to result. - -py-execute-region-python2\.7 ----------------------------- -Send region at point to Python2.7 interpreter. - -py-execute-region-python2\.7-switch ------------------------------------ -Send region at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python2\.7-no-switch --------------------------------------- -Send region at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python2\.7-dedicated --------------------------------------- -Send region at point to Python2.7 unique interpreter. - -py-execute-region-python2\.7-dedicated-switch ---------------------------------------------- -Send region at point to Python2.7 unique interpreter and switch to result. - -py-execute-region-jython ------------------------- -Send region at point to Jython interpreter. - -py-execute-region-jython-switch -------------------------------- -Send region at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-jython-no-switch ----------------------------------- -Send region at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-jython-dedicated ----------------------------------- -Send region at point to Jython unique interpreter. - -py-execute-region-jython-dedicated-switch ------------------------------------------ -Send region at point to Jython unique interpreter and switch to result. - -py-execute-region-python3\.2 ----------------------------- -Send region at point to Python3.2 interpreter. - -py-execute-region-python3\.2-switch ------------------------------------ -Send region at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python3\.2-no-switch --------------------------------------- -Send region at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python3\.2-dedicated --------------------------------------- -Send region at point to Python3.2 unique interpreter. - -py-execute-region-python3\.2-dedicated-switch ---------------------------------------------- -Send region at point to Python3.2 unique interpreter and switch to result. - -py-execute-region-python3\.3 ----------------------------- -Send region at point to Python3.3 interpreter. - -py-execute-region-python3\.3-switch ------------------------------------ -Send region at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-python3\.3-no-switch --------------------------------------- -Send region at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-python3\.3-dedicated --------------------------------------- -Send region at point to Python3.3 unique interpreter. - -py-execute-region-python3\.3-dedicated-switch ---------------------------------------------- -Send region at point to Python3.3 unique interpreter and switch to result. - -py-execute-region-bpython -------------------------- -Send region at point to Bpython interpreter. - -py-execute-region-bpython-switch --------------------------------- -Send region at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-region-bpython-no-switch ------------------------------------ -Send region at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-region-bpython-dedicated ------------------------------------ -Send region at point to Bpython unique interpreter. - -py-execute-region-bpython-dedicated-switch ------------------------------------------- -Send region at point to Bpython unique interpreter and switch to result. - -py-execute-buffer-python ------------------------- -Send buffer at point to Python interpreter. - -py-execute-buffer-python-switch -------------------------------- -Send buffer at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python-no-switch ----------------------------------- -Send buffer at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python-dedicated ----------------------------------- -Send buffer at point to Python unique interpreter. - -py-execute-buffer-python-dedicated-switch ------------------------------------------ -Send buffer at point to Python unique interpreter and switch to result. - -py-execute-buffer-ipython -------------------------- -Send buffer at point to IPython interpreter. - -py-execute-buffer-ipython-switch --------------------------------- -Send buffer at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-ipython-no-switch ------------------------------------ -Send buffer at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-ipython-dedicated ------------------------------------ -Send buffer at point to IPython unique interpreter. - -py-execute-buffer-ipython-dedicated-switch ------------------------------------------- -Send buffer at point to IPython unique interpreter and switch to result. - -py-execute-buffer-python3 -------------------------- -Send buffer at point to Python3 interpreter. - -py-execute-buffer-python3-switch --------------------------------- -Send buffer at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python3-no-switch ------------------------------------ -Send buffer at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python3-dedicated ------------------------------------ -Send buffer at point to Python3 unique interpreter. - -py-execute-buffer-python3-dedicated-switch ------------------------------------------- -Send buffer at point to Python3 unique interpreter and switch to result. - -py-execute-buffer-python2 -------------------------- -Send buffer at point to Python2 interpreter. - -py-execute-buffer-python2-switch --------------------------------- -Send buffer at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python2-no-switch ------------------------------------ -Send buffer at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python2-dedicated ------------------------------------ -Send buffer at point to Python2 unique interpreter. - -py-execute-buffer-python2-dedicated-switch ------------------------------------------- -Send buffer at point to Python2 unique interpreter and switch to result. - -py-execute-buffer-python2\.7 ----------------------------- -Send buffer at point to Python2.7 interpreter. - -py-execute-buffer-python2\.7-switch ------------------------------------ -Send buffer at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python2\.7-no-switch --------------------------------------- -Send buffer at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python2\.7-dedicated --------------------------------------- -Send buffer at point to Python2.7 unique interpreter. - -py-execute-buffer-python2\.7-dedicated-switch ---------------------------------------------- -Send buffer at point to Python2.7 unique interpreter and switch to result. - -py-execute-buffer-jython ------------------------- -Send buffer at point to Jython interpreter. - -py-execute-buffer-jython-switch -------------------------------- -Send buffer at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-jython-no-switch ----------------------------------- -Send buffer at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-jython-dedicated ----------------------------------- -Send buffer at point to Jython unique interpreter. - -py-execute-buffer-jython-dedicated-switch ------------------------------------------ -Send buffer at point to Jython unique interpreter and switch to result. - -py-execute-buffer-python3\.2 ----------------------------- -Send buffer at point to Python3.2 interpreter. - -py-execute-buffer-python3\.2-switch ------------------------------------ -Send buffer at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python3\.2-no-switch --------------------------------------- -Send buffer at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python3\.2-dedicated --------------------------------------- -Send buffer at point to Python3.2 unique interpreter. - -py-execute-buffer-python3\.2-dedicated-switch ---------------------------------------------- -Send buffer at point to Python3.2 unique interpreter and switch to result. - -py-execute-buffer-python3\.3 ----------------------------- -Send buffer at point to Python3.3 interpreter. - -py-execute-buffer-python3\.3-switch ------------------------------------ -Send buffer at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-python3\.3-no-switch --------------------------------------- -Send buffer at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-python3\.3-dedicated --------------------------------------- -Send buffer at point to Python3.3 unique interpreter. - -py-execute-buffer-python3\.3-dedicated-switch ---------------------------------------------- -Send buffer at point to Python3.3 unique interpreter and switch to result. - -py-execute-buffer-bpython -------------------------- -Send buffer at point to Bpython interpreter. - -py-execute-buffer-bpython-switch --------------------------------- -Send buffer at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-buffer-bpython-no-switch ------------------------------------ -Send buffer at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-buffer-bpython-dedicated ------------------------------------ -Send buffer at point to Bpython unique interpreter. - -py-execute-buffer-bpython-dedicated-switch ------------------------------------------- -Send buffer at point to Bpython unique interpreter and switch to result. - -py-execute-expression-python ----------------------------- -Send expression at point to Python interpreter. - -py-execute-expression-python-switch ------------------------------------ -Send expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python-no-switch --------------------------------------- -Send expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python-dedicated --------------------------------------- -Send expression at point to Python unique interpreter. - -py-execute-expression-python-dedicated-switch ---------------------------------------------- -Send expression at point to Python unique interpreter and switch to result. - -py-execute-expression-ipython ------------------------------ -Send expression at point to IPython interpreter. - -py-execute-expression-ipython-switch ------------------------------------- -Send expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-ipython-no-switch ---------------------------------------- -Send expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-ipython-dedicated ---------------------------------------- -Send expression at point to IPython unique interpreter. - -py-execute-expression-ipython-dedicated-switch ----------------------------------------------- -Send expression at point to IPython unique interpreter and switch to result. - -py-execute-expression-python3 ------------------------------ -Send expression at point to Python3 interpreter. - -py-execute-expression-python3-switch ------------------------------------- -Send expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python3-no-switch ---------------------------------------- -Send expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python3-dedicated ---------------------------------------- -Send expression at point to Python3 unique interpreter. - -py-execute-expression-python3-dedicated-switch ----------------------------------------------- -Send expression at point to Python3 unique interpreter and switch to result. - -py-execute-expression-python2 ------------------------------ -Send expression at point to Python2 interpreter. - -py-execute-expression-python2-switch ------------------------------------- -Send expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python2-no-switch ---------------------------------------- -Send expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python2-dedicated ---------------------------------------- -Send expression at point to Python2 unique interpreter. - -py-execute-expression-python2-dedicated-switch ----------------------------------------------- -Send expression at point to Python2 unique interpreter and switch to result. - -py-execute-expression-python2\.7 --------------------------------- -Send expression at point to Python2.7 interpreter. - -py-execute-expression-python2\.7-switch ---------------------------------------- -Send expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python2\.7-no-switch ------------------------------------------- -Send expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python2\.7-dedicated ------------------------------------------- -Send expression at point to Python2.7 unique interpreter. - -py-execute-expression-python2\.7-dedicated-switch -------------------------------------------------- -Send expression at point to Python2.7 unique interpreter and switch to result. - -py-execute-expression-jython ----------------------------- -Send expression at point to Jython interpreter. - -py-execute-expression-jython-switch ------------------------------------ -Send expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-jython-no-switch --------------------------------------- -Send expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-jython-dedicated --------------------------------------- -Send expression at point to Jython unique interpreter. - -py-execute-expression-jython-dedicated-switch ---------------------------------------------- -Send expression at point to Jython unique interpreter and switch to result. - -py-execute-expression-python3\.2 --------------------------------- -Send expression at point to Python3.2 interpreter. - -py-execute-expression-python3\.2-switch ---------------------------------------- -Send expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python3\.2-no-switch ------------------------------------------- -Send expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python3\.2-dedicated ------------------------------------------- -Send expression at point to Python3.2 unique interpreter. - -py-execute-expression-python3\.2-dedicated-switch -------------------------------------------------- -Send expression at point to Python3.2 unique interpreter and switch to result. - -py-execute-expression-python3\.3 --------------------------------- -Send expression at point to Python3.3 interpreter. - -py-execute-expression-python3\.3-switch ---------------------------------------- -Send expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-python3\.3-no-switch ------------------------------------------- -Send expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-python3\.3-dedicated ------------------------------------------- -Send expression at point to Python3.3 unique interpreter. - -py-execute-expression-python3\.3-dedicated-switch -------------------------------------------------- -Send expression at point to Python3.3 unique interpreter and switch to result. - -py-execute-expression-bpython ------------------------------ -Send expression at point to Bpython interpreter. - -py-execute-expression-bpython-switch ------------------------------------- -Send expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-expression-bpython-no-switch ---------------------------------------- -Send expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-expression-bpython-dedicated ---------------------------------------- -Send expression at point to Bpython unique interpreter. - -py-execute-expression-bpython-dedicated-switch ----------------------------------------------- -Send expression at point to Bpython unique interpreter and switch to result. - -py-execute-partial-expression-python ------------------------------------- -Send partial-expression at point to Python interpreter. - -py-execute-partial-expression-python-switch -------------------------------------------- -Send partial-expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python-no-switch ----------------------------------------------- -Send partial-expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python-dedicated ----------------------------------------------- -Send partial-expression at point to Python unique interpreter. - -py-execute-partial-expression-python-dedicated-switch ------------------------------------------------------ -Send partial-expression at point to Python unique interpreter and switch to result. - -py-execute-partial-expression-ipython -------------------------------------- -Send partial-expression at point to IPython interpreter. - -py-execute-partial-expression-ipython-switch --------------------------------------------- -Send partial-expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-ipython-no-switch ------------------------------------------------ -Send partial-expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-ipython-dedicated ------------------------------------------------ -Send partial-expression at point to IPython unique interpreter. - -py-execute-partial-expression-ipython-dedicated-switch ------------------------------------------------------- -Send partial-expression at point to IPython unique interpreter and switch to result. - -py-execute-partial-expression-python3 -------------------------------------- -Send partial-expression at point to Python3 interpreter. - -py-execute-partial-expression-python3-switch --------------------------------------------- -Send partial-expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python3-no-switch ------------------------------------------------ -Send partial-expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python3-dedicated ------------------------------------------------ -Send partial-expression at point to Python3 unique interpreter. - -py-execute-partial-expression-python3-dedicated-switch ------------------------------------------------------- -Send partial-expression at point to Python3 unique interpreter and switch to result. - -py-execute-partial-expression-python2 -------------------------------------- -Send partial-expression at point to Python2 interpreter. - -py-execute-partial-expression-python2-switch --------------------------------------------- -Send partial-expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python2-no-switch ------------------------------------------------ -Send partial-expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python2-dedicated ------------------------------------------------ -Send partial-expression at point to Python2 unique interpreter. - -py-execute-partial-expression-python2-dedicated-switch ------------------------------------------------------- -Send partial-expression at point to Python2 unique interpreter and switch to result. - -py-execute-partial-expression-python2\.7 ----------------------------------------- -Send partial-expression at point to Python2.7 interpreter. - -py-execute-partial-expression-python2\.7-switch ------------------------------------------------ -Send partial-expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python2\.7-no-switch --------------------------------------------------- -Send partial-expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python2\.7-dedicated --------------------------------------------------- -Send partial-expression at point to Python2.7 unique interpreter. - -py-execute-partial-expression-python2\.7-dedicated-switch ---------------------------------------------------------- -Send partial-expression at point to Python2.7 unique interpreter and switch to result. - -py-execute-partial-expression-jython ------------------------------------- -Send partial-expression at point to Jython interpreter. - -py-execute-partial-expression-jython-switch -------------------------------------------- -Send partial-expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-jython-no-switch ----------------------------------------------- -Send partial-expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-jython-dedicated ----------------------------------------------- -Send partial-expression at point to Jython unique interpreter. - -py-execute-partial-expression-jython-dedicated-switch ------------------------------------------------------ -Send partial-expression at point to Jython unique interpreter and switch to result. - -py-execute-partial-expression-python3\.2 ----------------------------------------- -Send partial-expression at point to Python3.2 interpreter. - -py-execute-partial-expression-python3\.2-switch ------------------------------------------------ -Send partial-expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python3\.2-no-switch --------------------------------------------------- -Send partial-expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python3\.2-dedicated --------------------------------------------------- -Send partial-expression at point to Python3.2 unique interpreter. - -py-execute-partial-expression-python3\.2-dedicated-switch ---------------------------------------------------------- -Send partial-expression at point to Python3.2 unique interpreter and switch to result. - -py-execute-partial-expression-python3\.3 ----------------------------------------- -Send partial-expression at point to Python3.3 interpreter. - -py-execute-partial-expression-python3\.3-switch ------------------------------------------------ -Send partial-expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-python3\.3-no-switch --------------------------------------------------- -Send partial-expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-python3\.3-dedicated --------------------------------------------------- -Send partial-expression at point to Python3.3 unique interpreter. - -py-execute-partial-expression-python3\.3-dedicated-switch ---------------------------------------------------------- -Send partial-expression at point to Python3.3 unique interpreter and switch to result. - -py-execute-partial-expression-bpython -------------------------------------- -Send partial-expression at point to Bpython interpreter. - -py-execute-partial-expression-bpython-switch --------------------------------------------- -Send partial-expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-partial-expression-bpython-no-switch ------------------------------------------------ -Send partial-expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-partial-expression-bpython-dedicated ------------------------------------------------ -Send partial-expression at point to Bpython unique interpreter. - -py-execute-partial-expression-bpython-dedicated-switch ------------------------------------------------------- -Send partial-expression at point to Bpython unique interpreter and switch to result. - -py-execute-line-python ----------------------- -Send line at point to Python interpreter. - -py-execute-line-python-switch ------------------------------ -Send line at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python-no-switch --------------------------------- -Send line at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python-dedicated --------------------------------- -Send line at point to Python unique interpreter. - -py-execute-line-python-dedicated-switch ---------------------------------------- -Send line at point to Python unique interpreter and switch to result. - -py-execute-line-ipython ------------------------ -Send line at point to IPython interpreter. - -py-execute-line-ipython-switch ------------------------------- -Send line at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-ipython-no-switch ---------------------------------- -Send line at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-ipython-dedicated ---------------------------------- -Send line at point to IPython unique interpreter. - -py-execute-line-ipython-dedicated-switch ----------------------------------------- -Send line at point to IPython unique interpreter and switch to result. - -py-execute-line-python3 ------------------------ -Send line at point to Python3 interpreter. - -py-execute-line-python3-switch ------------------------------- -Send line at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python3-no-switch ---------------------------------- -Send line at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python3-dedicated ---------------------------------- -Send line at point to Python3 unique interpreter. - -py-execute-line-python3-dedicated-switch ----------------------------------------- -Send line at point to Python3 unique interpreter and switch to result. - -py-execute-line-python2 ------------------------ -Send line at point to Python2 interpreter. - -py-execute-line-python2-switch ------------------------------- -Send line at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python2-no-switch ---------------------------------- -Send line at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python2-dedicated ---------------------------------- -Send line at point to Python2 unique interpreter. - -py-execute-line-python2-dedicated-switch ----------------------------------------- -Send line at point to Python2 unique interpreter and switch to result. - -py-execute-line-python2\.7 --------------------------- -Send line at point to Python2.7 interpreter. - -py-execute-line-python2\.7-switch ---------------------------------- -Send line at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python2\.7-no-switch ------------------------------------- -Send line at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python2\.7-dedicated ------------------------------------- -Send line at point to Python2.7 unique interpreter. - -py-execute-line-python2\.7-dedicated-switch -------------------------------------------- -Send line at point to Python2.7 unique interpreter and switch to result. - -py-execute-line-jython ----------------------- -Send line at point to Jython interpreter. - -py-execute-line-jython-switch ------------------------------ -Send line at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-jython-no-switch --------------------------------- -Send line at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-jython-dedicated --------------------------------- -Send line at point to Jython unique interpreter. - -py-execute-line-jython-dedicated-switch ---------------------------------------- -Send line at point to Jython unique interpreter and switch to result. - -py-execute-line-python3\.2 --------------------------- -Send line at point to Python3.2 interpreter. - -py-execute-line-python3\.2-switch ---------------------------------- -Send line at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python3\.2-no-switch ------------------------------------- -Send line at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python3\.2-dedicated ------------------------------------- -Send line at point to Python3.2 unique interpreter. - -py-execute-line-python3\.2-dedicated-switch -------------------------------------------- -Send line at point to Python3.2 unique interpreter and switch to result. - -py-execute-line-python3\.3 --------------------------- -Send line at point to Python3.3 interpreter. - -py-execute-line-python3\.3-switch ---------------------------------- -Send line at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-python3\.3-no-switch ------------------------------------- -Send line at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-python3\.3-dedicated ------------------------------------- -Send line at point to Python3.3 unique interpreter. - -py-execute-line-python3\.3-dedicated-switch -------------------------------------------- -Send line at point to Python3.3 unique interpreter and switch to result. - -py-execute-line-bpython ------------------------ -Send line at point to Bpython interpreter. - -py-execute-line-bpython-switch ------------------------------- -Send line at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. - -py-execute-line-bpython-no-switch ---------------------------------- -Send line at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' - -py-execute-line-bpython-dedicated ---------------------------------- -Send line at point to Bpython unique interpreter. - -py-execute-line-bpython-dedicated-switch ----------------------------------------- -Send line at point to Bpython unique interpreter and switch to result. - -;;; Subprocess utilities and filters ------------------------------------- - - -py-remove-overlays-at-point ---------------------------- -Remove overlays as set when `py-highlight-error-source-p' is non-nil. - -py-down-exception ------------------ -Go to the next line down in the traceback. - -With C-u (programmatically, optional argument -BOTTOM), jump to the bottom (innermost) exception in the exception -stack. - -py-up-exception ---------------- -Go to the previous line up in the traceback. - -With C-u (programmatically, optional argument TOP) -jump to the top (outermost) exception in the exception stack. - -py-mouseto-exception --------------------- -Jump to the code which caused the Python exception at EVENT. -EVENT is usually a mouse click. - -py-goto-exception ------------------ -Go to the line indicated by the traceback. - -py-output-buffer-filter ------------------------ -Clear output buffer from py-shell-input prompt etc. - -py-send-string --------------- -Evaluate STRING in inferior Python process. - -py-send-file ------------- -Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME. - diff --git a/elpa/python-mode-6.1.3/doc/variables-python-mode.org b/elpa/python-mode-6.1.3/doc/variables-python-mode.org deleted file mode 100644 index cc261e7a3..000000000 --- a/elpa/python-mode-6.1.3/doc/variables-python-mode.org +++ /dev/null @@ -1,833 +0,0 @@ -python-mode.el variables - -** python-mode-modeline-display - String to display in Emacs modeline - -** py-indent-offset - Amount of offset per level of indentation. -`M-x py-guess-indent-offset' can usually guess a good value when -you're editing someone else's Python code. - -** py-backslashed-lines-indent-offset - Amount of offset per level of indentation of backslashed. -No semantic indent, which diff to `py-indent-offset' indicates - -** pdb-path - Where to find pdb.py. Edit this according to your system. - -If you ignore the location `M-x py-guess-pdb-path' might display it - -** py-verbose-p - If indenting functions should report reached indent level. - -Default is nil. - -** py-store-result-p - When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. - -Default is nil - -** py-load-skeletons-p - If skeleton definitions should be loaded, default is nil. - -** py-load-pymacs-p - If Pymacs related stuff should be loaded. - -Default is nil. - -Pymacs has been written by François Pinard and many others. -See original source: http://pymacs.progiciels-bpi.ca - -** py-smart-operator-mode-p - If python-mode calls (smart-operator-mode-on) - -Default is non-nil. - -** py-sexp-function - When set, it's value is called instead of `forward-sexp', `backward-sexp' - -Default is nil. - -** py-autopair-mode - If python-mode calls (autopair-mode-on) - -Default is nil -Load `autopair-mode' written by Joao Tavora -URL: http://autopair.googlecode.com - -** py-no-completion-calls-dabbrev-expand-p - If completion function should call dabbrev-expand when no completion found. Default is `t' - -See also `py-indent-no-completion-p' - -** py-indent-no-completion-p - If completion function should insert a TAB when no completion found. Default is `t' - -See also `py-no-completion-calls-dabbrev-expand-p' - -** py-set-fill-column-p - If python-mode should set fill-column - -according values in `py-comment-fill-column' and `py-docstring-fill-column'. -Default is nil - -** py-autofill-timer-delay - Delay when idle before functions ajusting `py-docstring-fill-column' resp. `py-comment-fill-column' are called. - -** py-docstring-fill-column - Value of `fill-column' to use when filling a docstring. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings. - -** py-comment-fill-column - Value of `fill-column' to use when filling a comment. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings. - -** py-fontify-shell-buffer-p - If code in Python shell should be highlighted as in script buffer. - -Default is nil. - -If `t', related vars like `comment-start' will be set too. -Seems convenient when playing with stuff in IPython shell -Might not be TRT when a lot of output arrives - -** py-modeline-display-full-path-p - If the full PATH/TO/PYTHON should be displayed in shell modeline. - -Default is nil. Note: when `py-shell-name' is specified with path, it's shown as an acronym in buffer-name already. - -** py-modeline-acronym-display-home-p - If the modeline acronym should contain chars indicating the home-directory. - -Default is nil - -** py-install-directory - Directory where python-mode.el and it's subdirectories should be installed. Needed for completion and other environment stuff only. - -** py-guess-py-install-directory-p - If in cases, `py-install-directory' isn't set, `py-set-load-path'should guess it from `buffer-file-name'. - -** py-extensions - File where extensions to python-mode.el should be installed. Used by virtualenv support. - -** py-pylint-offer-current-p - If current buffers file should be offered for check. - -Default is non-nil. If nil, `py-pylint-run' offers filename from history - -** py-hide-show-minor-mode-p - If hide-show minor-mode should be on, default is nil. - -** empty-comment-line-separates-paragraph-p - Consider paragraph start/end lines with nothing inside but comment sign. - -Default is non-nil - -** py-if-name-main-permission-p - Allow execution of code inside blocks started -by "if __name__== '__main__':". - -Default is non-nil - -** py-use-font-lock-doc-face-p - If documention string inside of def or class get `font-lock-doc-face'. - -`font-lock-doc-face' inherits `font-lock-string-face'. -Call M-x `customize-face' in order to have a visible effect. - -** py-defun-use-top-level-p - When non-nil, keys C-M-a, C-M-e address top-level form. - -Default is nil. - -Beginning- end-of-defun forms use -commands `py-beginning-of-top-level', `py-end-of-top-level' - -mark-defun marks top-level form at point etc. - - -** py-tab-shifts-region-p - If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil - -** py-tab-indents-region-p - When `t' and first TAB doesn't shift, indent-region is called. - -Default is nil - -** py-block-comment-prefix-p - If py-comment inserts py-block-comment-prefix. - -Default is t - -** py-org-cycle-p - When non-nil, command `org-cycle' is available at shift-TAB, - -Default is nil. - -** ipython-complete-use-separate-shell-p - If `ipython-complete' should use a separate shell. Thus prompt-counter is not incremented by completion. - -** py-outline-minor-mode-p - If outline minor-mode should be on, default is `t'. - -** py-outline-mode-keywords - Keywords composing visible heads. - -** py-start-run-py-shell - If `python-mode' should start a python-shell, `py-shell'. - -Default is `nil'. - -** py-start-run-ipython-shell - If `python-mode' should start an ipython-shell. - -Default is `nil'. - -** py-close-provides-newline - If a newline is inserted, when line after block isn't empty. Default is non-nil. - -** py-dedent-keep-relative-column - If point should follow dedent or kind of electric move to end of line. Default is t - keep relative position. - -** py-indent-honors-multiline-listing - If `t', indents to 1+ column of opening delimiter. If `nil', indent adds one level to the beginning of statement. Default is `nil'. - -** py-indent-paren-spanned-multilines-p - If non-nil, indents elements of list a value of `py-indent-offset' to first element: - -def foo(): - if (foo && - baz): - bar() - -Default lines up with first element: - -def foo(): - if (foo && - baz): - bar() - - -** py-indent-honors-inline-comment - If non-nil, indents to column of inlined comment start. -Default is nil. - -** py-closing-list-dedents-bos - When non-nil, indent list's closing delimiter like start-column. - -It will be lined up under the first character of - the line that starts the multi-line construct, as in: - -my_list = [ - 1, 2, 3, - 4, 5, 6, -] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', -) - -Default is nil, i.e. - -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) - -Examples from PEP8 - - -** py-closing-list-space - Number of chars, closing parenthesis outdent from opening, default is 1 - -** py-closing-list-keeps-space - If non-nil, closing parenthesis dedents onto column of opening plus `py-closing-list-space', default is nil - -** py-electric-kill-backward-p - Affects `py-electric-backspace'. Default is nil. - -If behind a delimited form of braces, brackets or parentheses, -backspace will kill it's contents - -With when cursor after -my_string[0:1] ---------------^ - -==> - -my_string[] -----------^ - -In result cursor is insided emptied delimited form. - -** py-electric-colon-active-p - `py-electric-colon' feature. Default is `nil'. See lp:837065 for discussions. - -See also `py-electric-colon-bobl-only' - -** py-electric-colon-bobl-only - When inserting a colon, do not indent lines unless at beginning of block - -See lp:1207405 resp. `py-electric-colon-active-p' - -** py-electric-colon-greedy-p - If py-electric-colon should indent to the outmost reasonable level. - -If nil, default, it will not move from at any reasonable level. - -** py-electric-colon-newline-and-indent-p - If non-nil, `py-electric-colon' will call `newline-and-indent'. Default is `nil'. - -** py-electric-comment-p - If "#" should call `py-electric-comment'. Default is `nil'. - -** py-electric-comment-add-space-p - If py-electric-comment should add a space. Default is `nil'. - -** py-mark-decorators - If py-mark-def-or-class functions should mark decorators too. Default is `nil'. - -** py-tab-indent - Non-nil means TAB in Python mode calls `py-indent-line'. - -** py-return-key - Which command should call. - -** py-complete-function - When set, enforces function todo completion, default is nil. - -Normally python-mode, resp. inferior-python-mode know best which function to use. - -** ipython-complete-function - Function used for completion in IPython shell buffers. - -** py-encoding-string - Default string specifying encoding of a Python file. - -** py-shebang-startstring - Detecting the shell in head of file. - -** py-python-command-args - List of string arguments to be used when starting a Python shell. - -** py-jython-command-args - List of string arguments to be used when starting a Jython shell. - -** py-cleanup-temporary - If temporary buffers and files used by functions executing region should be deleted afterwards. - -** py-execute-no-temp-p - Seems Emacs-24.3 provided a way executing stuff without temporary files. - -** py-lhs-inbound-indent - When line starts a multiline-assignment: How many colums indent should be more than opening bracket, brace or parenthesis. - -** py-continuation-offset - Additional amount of offset to give for some continuation lines. -Continuation lines are those that immediately follow a backslash -terminated line. - -** py-indent-tabs-mode - Python-mode starts `indent-tabs-mode' with the value specified here, default is nil. - -** py-smart-indentation - Should `python-mode' try to automagically set some indentation variables? -When this variable is non-nil, two things happen when a buffer is set -to `python-mode': - - 1. `py-indent-offset' is guessed from existing code in the buffer. - Only guessed values between 2 and 8 are considered. If a valid - guess can't be made (perhaps because you are visiting a new - file), then the value in `py-indent-offset' is used. - - 2. `indent-tabs-mode' is turned off if `py-indent-offset' does not - equal `tab-width' (`indent-tabs-mode' is never turned on by - Python mode). This means that for newly written code, tabs are - only inserted in indentation if one tab is one indentation - level, otherwise only spaces are used. - -Note that both these settings occur *after* `python-mode-hook' is run, -so if you want to defeat the automagic configuration, you must also -set `py-smart-indentation' to nil in your `python-mode-hook'. - -** py-block-comment-prefix - String used by M-x comment-region to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace. - -** py-indent-comments - When t, comment lines are indented. - -** py-uncomment-indents-p - When non-nil, after uncomment indent lines. - -** py-separator-char - Values set by defcustom only will not be seen in batch-mode. - -** py-custom-temp-directory - If set, will take precedence over guessed values from `py-temp-directory'. Default is the empty string. - -When set, make sure the directory exists. - -** py-beep-if-tab-change - Ring the bell if `tab-width' is changed. -If a comment of the form - - # vi:set tabsize=: - -is found before the first code line when the file is entered, and the -current value of (the general Emacs variable) `tab-width' does not -equal , `tab-width' is set to , a message saying so is -displayed in the echo area, and if `py-beep-if-tab-change' is non-nil -the Emacs bell is also rung as a warning. - -** py-jump-on-exception - Jump to innermost exception frame in *Python Output* buffer. -When this variable is non-nil and an exception occurs when running -Python code synchronously in a subprocess, jump immediately to the -source code of the innermost traceback frame. - -** py-ask-about-save - If not nil, ask about which buffers to save before executing some code. -Otherwise, all modified buffers are saved without asking. - -** py-backspace-function - Function called by `py-electric-backspace' when deleting backwards. - -** py-delete-function - Function called by `py-electric-delete' when deleting forwards. - -** py-pdbtrack-do-tracking-p - Controls whether the pdbtrack feature is enabled or not. -When non-nil, pdbtrack is enabled in all comint-based buffers, -e.g. shell buffers and the *Python* buffer. When using pdb to debug a -Python program, pdbtrack notices the pdb prompt and displays the -source file and line that the program is stopped at, much the same way -as gud-mode does for debugging C programs with gdb. - -** py-pdbtrack-filename-mapping - Supports mapping file paths when opening file buffers in pdbtrack. -When non-nil this is an alist mapping paths in the Python interpreter -to paths in Emacs. - -** py-pdbtrack-minor-mode-string - String to use in the minor mode list when pdbtrack is enabled. - -** py-import-check-point-max - Maximum number of characters to search for a Java-ish import statement. -When `python-mode' tries to calculate the shell to use (either a -CPython or a Jython shell), it looks at the so-called `shebang' line --- i.e. #! line. If that's not available, it looks at some of the -file heading imports to see if they look Java-like. - -** py-jython-packages - Imported packages that imply `jython-mode'. - -** py-current-defun-show - If `py-current-defun' should jump to the definition, highlight it while waiting PY-WHICH-FUNC-DELAY seconds, before returning to previous position. - -Default is `t'. - -** py-current-defun-delay - When called interactively, `py-current-defun' should wait PY-WHICH-FUNC-DELAY seconds at the definition name found, before returning to previous position. - -** py-send-receive-delay - Seconds to wait for output, used by `py-send-receive'. - -** py-honor-IPYTHONDIR-p - When non-nil ipython-history file is constructed by $IPYTHONDIR -followed by "/history". Default is nil. - -Otherwise value of py-ipython-history is used. - -** py-ipython-history - ipython-history default file. Used when py-honor-IPYTHONDIR-p is nil (default) - -** py-honor-PYTHONHISTORY-p - When non-nil python-history file is set by $PYTHONHISTORY -Default is nil. - -Otherwise value of py-python-history is used. - -** py-python-history - python-history default file. Used when py-honor-PYTHONHISTORY-p is nil (default) - -** py-master-file - If non-nil, M-x py-execute-buffer executes the named -master file instead of the buffer's file. If the file name has a -relative path, the value of variable `default-directory' for the -buffer is prepended to come up with a file name. - -Beside you may set this variable in the file's local -variable section, e.g.: - - # Local Variables: - # py-master-file: "master.py" - # End: - - - -** py-pychecker-command - Shell command used to run Pychecker. - -** py-pychecker-command-args - List of string arguments to be passed to pychecker. - -** py-pep8-command - Shell command used to run pep8. - -** py-pep8-command-args - List of string arguments to be passed to pylint. - -Default is "" - -** py-pyflakespep8-command - Shell command used to run `pyflakespep8'. - -** py-pyflakespep8-command-args - List of string arguments to be passed to pyflakespep8. - -Default is "" - -** py-pyflakes-command - Shell command used to run Pyflakes. - -** py-pyflakes-command-args - List of string arguments to be passed to pyflakes. - -Default is "" - -** py-pylint-command - Shell command used to run Pylint. - -** py-pylint-command-args - List of string arguments to be passed to pylint. - -Default is "--errors-only" - -** py-shell-input-prompt-1-regexp - A regular expression to match the input prompt of the shell. - -** py-shell-input-prompt-2-regexp - A regular expression to match the input prompt of the shell after the - first line of input. - -** py-shell-prompt-read-only - If non-nil, the python prompt is read only. Setting this -variable will only effect new shells. - -** py-fileless-buffer-use-default-directory-p - When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shell - -** py-keep-shell-dir-when-execute-p - Don't change Python shell's current working directory when sending code. - -See also `py-execute-directory' - -** py-switch-buffers-on-execute-p - When non-nil switch to the Python output buffer. - -** py-split-windows-on-execute-p - When non-nil split windows. - -** py-max-split-windows - When split windows is enabled the maximum windows to allow - before reusing other windows. - -** py-split-windows-on-execute-function - How window should get splitted to display results of py-execute-... functions. - -** py-hide-show-keywords - Keywords composing visible heads. -Also used by (minor-)outline-mode - -** py-hide-show-hide-docstrings - Controls if doc strings can be hidden by hide-show - -** py-paragraph-fill-docstring-p - If `py-fill-paragraph', when inside a docstring, should fill the complete string. - -Default is nil. - -Convenient use of `M-q' inside docstrings -See also `py-docstring-style' - - -** python-mode-hook - Hook run after entering python-mode-modeline-display mode. -No problems result if this variable is not bound. -`add-hook' automatically binds it. (This is true for all hook variables.) - -** py-imenu-create-index-p - Non-nil means Python mode creates and displays an index menu of functions and global variables. - -** py-imenu-create-index-function - Switch between `py-imenu-create-index-new', which also lists modules variables, and series 5. index-machine - -** py-shell-name - A PATH/TO/EXECUTABLE or default value `py-shell' may look for, if no shell is specified by command. - -** py-shell-toggle-1 - A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. - -** py-shell-toggle-2 - A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. - -** py-match-paren-mode - Non-nil means, cursor will jump to beginning or end of a block. -This vice versa, to beginning first. -Sets `py-match-paren-key' in python-mode-map. -Customize `py-match-paren-key' which key to use. - -** py-match-paren-key - String used by M-x comment-region to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace. - -** py-kill-empty-line - If t, py-indent-forward-line kills empty lines. - -** py-remove-cwd-from-path - Whether to allow loading of Python modules from the current directory. -If this is non-nil, Emacs removes '' from sys.path when starting -an inferior Python process. This is the default, for security -reasons, as it is easy for the Python process to be started -without the user's realization (e.g. to perform completion). - -** py-imenu-show-method-args-p - Controls echoing of arguments of functions & methods in the Imenu buffer. -When non-nil, arguments are printed. - -** py-history-filter-regexp - Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters. - -** inferior-python-filter-regexp - Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters. - -** py-set-complete-keymap-p - If `py-complete-initialize', which sets up enviroment for Pymacs based py-complete, should load it's keys into `python-mode-map' - -Default is nil. -See also resp. edit `py-complete-set-keymap' - -** py-use-local-default - If `t', py-shell will use `py-shell-local-path' instead - of default Python. - -Making switch between several virtualenv's easier, - `python-mode' should deliver an installer, so named-shells pointing to virtualenv's will be available. - -** py-highlight-error-source-p - When py-execute-... commands raise an error, respective code in source-buffer will be highlighted. Default is nil. - -M-x `py-remove-overlays-at-point' removes that highlighting. - - -** py-set-pager-cat-p - If the shell environment variable $PAGER should set to `cat'. - -If `t', use `C-c C-r' to jump to beginning of output. Then scroll normally. - -Avoids lp:783828, "Terminal not fully functional", for help('COMMAND') in python-shell - -When non-nil, imports module `os' - -** py-prompt-on-changed-p - When called interactively, ask for save before a changed buffer is sent to interpreter. - -Default is `t' - -** py-dedicated-process-p - If commands executing code use a dedicated shell. - -Default is nil - -** py-shell-local-path - If `py-use-local-default' is non-nil, `py-shell' will use EXECUTABLE indicated here incl. path. - -** py-edit-only-p - When `t' `python-mode' will not take resort nor check for installed Python executables. Default is nil. - -See bug report at launchpad, lp:944093. - -** py-force-py-shell-name-p - When `t', execution with kind of Python specified in `py-shell-name' is enforced, possibly shebang doesn't take precedence. - -** python-mode-v5-behavior-p - Execute region through `shell-command-on-region' as -v5 did it - lp:990079. This might fail with certain chars - see UnicodeEncodeError lp:550661 - -** py-trailing-whitespace-smart-delete-p - Default is nil. When t, python-mode calls - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local) - -Also commands may delete trailing whitespace by the way. -When editing other peoples code, this may produce a larger diff than expected - -** py-newline-delete-trailing-whitespace-p - Delete trailing whitespace maybe left by `py-newline-and-indent'. - -Default is `t'. See lp:1100892 - -** py-warn-tmp-files-left-p - Messages a warning, when `py-temp-directory' contains files susceptible being left by previous Python-mode sessions. See also lp:987534 - -** py-ipython-execute-delay - Delay needed by execute functions when no IPython shell is running. - -** python-shell-buffer-name - Default buffer name for Python interpreter. - -** python-shell-interpreter - Default Python interpreter for shell. - -** python-shell-prompt-regexp - Regular Expression matching top-level input prompt of python shell. -It should not contain a caret (^) at the beginning. - -** py-ffap-p - Select python-modes way to find file at point. - -Default is nil - -** python-ffap-setup-code - Python code to get a module path. - -** py-ffap-string-code - Python code used to get a string with the path of a module. - -** py-eldoc-setup-code - Python code to setup documentation retrieval. - -** py-setup-codes - List of code run by `py-shell-send-setup-codes'. - -** py-shell-prompt-regexp - Regular Expression matching top-level input prompt of python shell. -It should not contain a caret (^) at the beginning. - -** python-shell-completion-setup-code - Code used to setup completion in inferior Python processes. - -** python-shell-module-completion-string-code - Python code used to get completions separated by semicolons for imports. - -For IPython v0.11, add the following line to -`python-shell-completion-setup-code': - -from IPython.core.completerlib import module_completion - -and use the following as the value of this variable: - -';'.join(module_completion('''%s''')) - -** strip-chars-before - Regexp indicating which chars shall be stripped before STRING - which is defined by `string-chars-preserve'. - -** strip-chars-after - Regexp indicating which chars shall be stripped after STRING - which is defined by `string-chars-preserve'. - -** py-docstring-style - Implemented styles are DJANGO, ONETWO, PEP-257, PEP-257-NN, -SYMMETRIC, and NIL. - -A value of NIL won't care about quotes -position and will treat docstrings a normal string, any other -value may result in one of the following docstring styles: - -DJANGO: - - """ - Process foo, return bar. - """ - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -ONETWO: - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -PEP-257: - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -PEP-257-NN: - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -SYMMETRIC: - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -** py-execute-directory - When set, stores the file's default directory-name py-execute-... functions act upon. - -Used by Python-shell for output of `py-execute-buffer' and related commands. See also `py-use-current-dir-when-execute-p' - -** py-use-current-dir-when-execute-p - When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands. - -See also `py-execute-directory' - -** py-shell-prompt-output-regexp - Regular Expression matching output prompt of python shell. -It should not contain a caret (^) at the beginning. - -** py-output-buffer - When `py-enforce-output-buffer-p' is non-nil, provides the -default for output-buffer. - -** py-enforce-output-buffer-p - When non-nil, current value of `py-output-buffer' is used for output, -regardless of environment. Default is nil - -** py-underscore-word-syntax-p - If underscore chars should be of syntax-class `word', not of `symbol'. - -Underscores in word-class makes `forward-word' etc. travel the indentifiers. Default is `t'. - -See bug report at launchpad, lp:940812 - diff --git a/elpa/python-mode-6.1.3/doc/variables-python-mode.rst b/elpa/python-mode-6.1.3/doc/variables-python-mode.rst deleted file mode 100644 index 632e84a38..000000000 --- a/elpa/python-mode-6.1.3/doc/variables-python-mode.rst +++ /dev/null @@ -1,995 +0,0 @@ -python-mode.el variables - -==================== - -python-mode-modeline-display ----------------------------- -String to display in Emacs modeline - -py-indent-offset ----------------- -Amount of offset per level of indentation. -`M-x py-guess-indent-offset' can usually guess a good value when -you're editing someone else's Python code. - -py-backslashed-lines-indent-offset ----------------------------------- -Amount of offset per level of indentation of backslashed. -No semantic indent, which diff to `py-indent-offset' indicates - -pdb-path --------- -Where to find pdb.py. Edit this according to your system. - -If you ignore the location `M-x py-guess-pdb-path' might display it - -py-verbose-p ------------- -If indenting functions should report reached indent level. - -Default is nil. - -py-store-result-p ------------------ -When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. - -Default is nil - -py-load-skeletons-p -------------------- -If skeleton definitions should be loaded, default is nil. - -py-load-pymacs-p ----------------- -If Pymacs related stuff should be loaded. - -Default is nil. - -Pymacs has been written by François Pinard and many others. -See original source: http://pymacs.progiciels-bpi.ca - -py-smart-operator-mode-p ------------------------- -If python-mode calls (smart-operator-mode-on) - -Default is non-nil. - -py-sexp-function ----------------- -When set, it's value is called instead of `forward-sexp', `backward-sexp' - -Default is nil. - -py-autopair-mode ----------------- -If python-mode calls (autopair-mode-on) - -Default is nil -Load `autopair-mode' written by Joao Tavora -URL: http://autopair.googlecode.com - -py-no-completion-calls-dabbrev-expand-p ---------------------------------------- -If completion function should call dabbrev-expand when no completion found. Default is `t' - -See also `py-indent-no-completion-p' - -py-indent-no-completion-p -------------------------- -If completion function should insert a TAB when no completion found. Default is `t' - -See also `py-no-completion-calls-dabbrev-expand-p' - -py-set-fill-column-p --------------------- -If python-mode should set fill-column - -according values in `py-comment-fill-column' and `py-docstring-fill-column'. -Default is nil - -py-autofill-timer-delay ------------------------ -Delay when idle before functions ajusting `py-docstring-fill-column' resp. `py-comment-fill-column' are called. - -py-docstring-fill-column ------------------------- -Value of `fill-column' to use when filling a docstring. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings. - -py-comment-fill-column ----------------------- -Value of `fill-column' to use when filling a comment. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings. - -py-fontify-shell-buffer-p -------------------------- -If code in Python shell should be highlighted as in script buffer. - -Default is nil. - -If `t', related vars like `comment-start' will be set too. -Seems convenient when playing with stuff in IPython shell -Might not be TRT when a lot of output arrives - -py-modeline-display-full-path-p -------------------------------- -If the full PATH/TO/PYTHON should be displayed in shell modeline. - -Default is nil. Note: when `py-shell-name' is specified with path, it's shown as an acronym in buffer-name already. - -py-modeline-acronym-display-home-p ----------------------------------- -If the modeline acronym should contain chars indicating the home-directory. - -Default is nil - -py-install-directory --------------------- -Directory where python-mode.el and it's subdirectories should be installed. Needed for completion and other environment stuff only. - -py-guess-py-install-directory-p -------------------------------- -If in cases, `py-install-directory' isn't set, `py-set-load-path'should guess it from `buffer-file-name'. - -py-extensions -------------- -File where extensions to python-mode.el should be installed. Used by virtualenv support. - -py-pylint-offer-current-p -------------------------- -If current buffers file should be offered for check. - -Default is non-nil. If nil, `py-pylint-run' offers filename from history - -py-hide-show-minor-mode-p -------------------------- -If hide-show minor-mode should be on, default is nil. - -empty-comment-line-separates-paragraph-p ----------------------------------------- -Consider paragraph start/end lines with nothing inside but comment sign. - -Default is non-nil - -py-if-name-main-permission-p ----------------------------- -Allow execution of code inside blocks started -by "if __name__== '__main__':". - -Default is non-nil - -py-use-font-lock-doc-face-p ---------------------------- -If documention string inside of def or class get `font-lock-doc-face'. - -`font-lock-doc-face' inherits `font-lock-string-face'. -Call M-x `customize-face' in order to have a visible effect. - -py-defun-use-top-level-p ------------------------- -When non-nil, keys C-M-a, C-M-e address top-level form. - -Default is nil. - -Beginning- end-of-defun forms use -commands `py-beginning-of-top-level', `py-end-of-top-level' - -mark-defun marks top-level form at point etc. - - -py-tab-shifts-region-p ----------------------- -If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil - -py-tab-indents-region-p ------------------------ -When `t' and first TAB doesn't shift, indent-region is called. - -Default is nil - -py-block-comment-prefix-p -------------------------- -If py-comment inserts py-block-comment-prefix. - -Default is t - -py-org-cycle-p --------------- -When non-nil, command `org-cycle' is available at shift-TAB, - -Default is nil. - -ipython-complete-use-separate-shell-p -------------------------------------- -If `ipython-complete' should use a separate shell. Thus prompt-counter is not incremented by completion. - -py-outline-minor-mode-p ------------------------ -If outline minor-mode should be on, default is `t'. - -py-outline-mode-keywords ------------------------- -Keywords composing visible heads. - -py-start-run-py-shell ---------------------- -If `python-mode' should start a python-shell, `py-shell'. - -Default is `nil'. - -py-start-run-ipython-shell --------------------------- -If `python-mode' should start an ipython-shell. - -Default is `nil'. - -py-close-provides-newline -------------------------- -If a newline is inserted, when line after block isn't empty. Default is non-nil. - -py-dedent-keep-relative-column ------------------------------- -If point should follow dedent or kind of electric move to end of line. Default is t - keep relative position. - -py-indent-honors-multiline-listing ----------------------------------- -If `t', indents to 1+ column of opening delimiter. If `nil', indent adds one level to the beginning of statement. Default is `nil'. - -py-indent-paren-spanned-multilines-p ------------------------------------- -If non-nil, indents elements of list a value of `py-indent-offset' to first element: - -def foo(): - if (foo && - baz): - bar() - -Default lines up with first element: - -def foo(): - if (foo && - baz): - bar() - - -py-indent-honors-inline-comment -------------------------------- -If non-nil, indents to column of inlined comment start. -Default is nil. - -py-closing-list-dedents-bos ---------------------------- -When non-nil, indent list's closing delimiter like start-column. - -It will be lined up under the first character of - the line that starts the multi-line construct, as in: - -my_list = [ - 1, 2, 3, - 4, 5, 6, -] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', -) - -Default is nil, i.e. - -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) - -Examples from PEP8 - - -py-closing-list-space ---------------------- -Number of chars, closing parenthesis outdent from opening, default is 1 - -py-closing-list-keeps-space ---------------------------- -If non-nil, closing parenthesis dedents onto column of opening plus `py-closing-list-space', default is nil - -py-electric-kill-backward-p ---------------------------- -Affects `py-electric-backspace'. Default is nil. - -If behind a delimited form of braces, brackets or parentheses, -backspace will kill it's contents - -With when cursor after -my_string[0:1] ---------------^ - -==> - -my_string[] -----------^ - -In result cursor is insided emptied delimited form. - -py-electric-colon-active-p --------------------------- -`py-electric-colon' feature. Default is `nil'. See lp:837065 for discussions. - -See also `py-electric-colon-bobl-only' - -py-electric-colon-bobl-only ---------------------------- -When inserting a colon, do not indent lines unless at beginning of block - -See lp:1207405 resp. `py-electric-colon-active-p' - -py-electric-colon-greedy-p --------------------------- -If py-electric-colon should indent to the outmost reasonable level. - -If nil, default, it will not move from at any reasonable level. - -py-electric-colon-newline-and-indent-p --------------------------------------- -If non-nil, `py-electric-colon' will call `newline-and-indent'. Default is `nil'. - -py-electric-comment-p ---------------------- -If "#" should call `py-electric-comment'. Default is `nil'. - -py-electric-comment-add-space-p -------------------------------- -If py-electric-comment should add a space. Default is `nil'. - -py-mark-decorators ------------------- -If py-mark-def-or-class functions should mark decorators too. Default is `nil'. - -py-tab-indent -------------- -Non-nil means TAB in Python mode calls `py-indent-line'. - -py-return-key -------------- -Which command should call. - -py-complete-function --------------------- -When set, enforces function todo completion, default is nil. - -Normally python-mode, resp. inferior-python-mode know best which function to use. - -ipython-complete-function -------------------------- -Function used for completion in IPython shell buffers. - -py-encoding-string ------------------- -Default string specifying encoding of a Python file. - -py-shebang-startstring ----------------------- -Detecting the shell in head of file. - -py-python-command-args ----------------------- -List of string arguments to be used when starting a Python shell. - -py-jython-command-args ----------------------- -List of string arguments to be used when starting a Jython shell. - -py-cleanup-temporary --------------------- -If temporary buffers and files used by functions executing region should be deleted afterwards. - -py-execute-no-temp-p --------------------- -Seems Emacs-24.3 provided a way executing stuff without temporary files. - -py-lhs-inbound-indent ---------------------- -When line starts a multiline-assignment: How many colums indent should be more than opening bracket, brace or parenthesis. - -py-continuation-offset ----------------------- -Additional amount of offset to give for some continuation lines. -Continuation lines are those that immediately follow a backslash -terminated line. - -py-indent-tabs-mode -------------------- -Python-mode starts `indent-tabs-mode' with the value specified here, default is nil. - -py-smart-indentation --------------------- -Should `python-mode' try to automagically set some indentation variables? -When this variable is non-nil, two things happen when a buffer is set -to `python-mode': - - 1. `py-indent-offset' is guessed from existing code in the buffer. - Only guessed values between 2 and 8 are considered. If a valid - guess can't be made (perhaps because you are visiting a new - file), then the value in `py-indent-offset' is used. - - 2. `indent-tabs-mode' is turned off if `py-indent-offset' does not - equal `tab-width' (`indent-tabs-mode' is never turned on by - Python mode). This means that for newly written code, tabs are - only inserted in indentation if one tab is one indentation - level, otherwise only spaces are used. - -Note that both these settings occur *after* `python-mode-hook' is run, -so if you want to defeat the automagic configuration, you must also -set `py-smart-indentation' to nil in your `python-mode-hook'. - -py-block-comment-prefix ------------------------ -String used by M-x comment-region to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace. - -py-indent-comments ------------------- -When t, comment lines are indented. - -py-uncomment-indents-p ----------------------- -When non-nil, after uncomment indent lines. - -py-separator-char ------------------ -Values set by defcustom only will not be seen in batch-mode. - -py-custom-temp-directory ------------------------- -If set, will take precedence over guessed values from `py-temp-directory'. Default is the empty string. - -When set, make sure the directory exists. - -py-beep-if-tab-change ---------------------- -Ring the bell if `tab-width' is changed. -If a comment of the form - - # vi:set tabsize=: - -is found before the first code line when the file is entered, and the -current value of (the general Emacs variable) `tab-width' does not -equal , `tab-width' is set to , a message saying so is -displayed in the echo area, and if `py-beep-if-tab-change' is non-nil -the Emacs bell is also rung as a warning. - -py-jump-on-exception --------------------- -Jump to innermost exception frame in *Python Output* buffer. -When this variable is non-nil and an exception occurs when running -Python code synchronously in a subprocess, jump immediately to the -source code of the innermost traceback frame. - -py-ask-about-save ------------------ -If not nil, ask about which buffers to save before executing some code. -Otherwise, all modified buffers are saved without asking. - -py-backspace-function ---------------------- -Function called by `py-electric-backspace' when deleting backwards. - -py-delete-function ------------------- -Function called by `py-electric-delete' when deleting forwards. - -py-pdbtrack-do-tracking-p -------------------------- -Controls whether the pdbtrack feature is enabled or not. -When non-nil, pdbtrack is enabled in all comint-based buffers, -e.g. shell buffers and the *Python* buffer. When using pdb to debug a -Python program, pdbtrack notices the pdb prompt and displays the -source file and line that the program is stopped at, much the same way -as gud-mode does for debugging C programs with gdb. - -py-pdbtrack-filename-mapping ----------------------------- -Supports mapping file paths when opening file buffers in pdbtrack. -When non-nil this is an alist mapping paths in the Python interpreter -to paths in Emacs. - -py-pdbtrack-minor-mode-string ------------------------------ -String to use in the minor mode list when pdbtrack is enabled. - -py-import-check-point-max -------------------------- -Maximum number of characters to search for a Java-ish import statement. -When `python-mode' tries to calculate the shell to use (either a -CPython or a Jython shell), it looks at the so-called `shebang' line --- i.e. #! line. If that's not available, it looks at some of the -file heading imports to see if they look Java-like. - -py-jython-packages ------------------- -Imported packages that imply `jython-mode'. - -py-current-defun-show ---------------------- -If `py-current-defun' should jump to the definition, highlight it while waiting PY-WHICH-FUNC-DELAY seconds, before returning to previous position. - -Default is `t'. - -py-current-defun-delay ----------------------- -When called interactively, `py-current-defun' should wait PY-WHICH-FUNC-DELAY seconds at the definition name found, before returning to previous position. - -py-send-receive-delay ---------------------- -Seconds to wait for output, used by `py-send-receive'. - -py-honor-IPYTHONDIR-p ---------------------- -When non-nil ipython-history file is constructed by $IPYTHONDIR -followed by "/history". Default is nil. - -Otherwise value of py-ipython-history is used. - -py-ipython-history ------------------- -ipython-history default file. Used when py-honor-IPYTHONDIR-p is nil (default) - -py-honor-PYTHONHISTORY-p ------------------------- -When non-nil python-history file is set by $PYTHONHISTORY -Default is nil. - -Otherwise value of py-python-history is used. - -py-python-history ------------------ -python-history default file. Used when py-honor-PYTHONHISTORY-p is nil (default) - -py-master-file --------------- -If non-nil, M-x py-execute-buffer executes the named -master file instead of the buffer's file. If the file name has a -relative path, the value of variable `default-directory' for the -buffer is prepended to come up with a file name. - -Beside you may set this variable in the file's local -variable section, e.g.: - - # Local Variables: - # py-master-file: "master.py" - # End: - - - -py-pychecker-command --------------------- -Shell command used to run Pychecker. - -py-pychecker-command-args -------------------------- -List of string arguments to be passed to pychecker. - -py-pep8-command ---------------- -Shell command used to run pep8. - -py-pep8-command-args --------------------- -List of string arguments to be passed to pylint. - -Default is "" - -py-pyflakespep8-command ------------------------ -Shell command used to run `pyflakespep8'. - -py-pyflakespep8-command-args ----------------------------- -List of string arguments to be passed to pyflakespep8. - -Default is "" - -py-pyflakes-command -------------------- -Shell command used to run Pyflakes. - -py-pyflakes-command-args ------------------------- -List of string arguments to be passed to pyflakes. - -Default is "" - -py-pylint-command ------------------ -Shell command used to run Pylint. - -py-pylint-command-args ----------------------- -List of string arguments to be passed to pylint. - -Default is "--errors-only" - -py-shell-input-prompt-1-regexp ------------------------------- -A regular expression to match the input prompt of the shell. - -py-shell-input-prompt-2-regexp ------------------------------- -A regular expression to match the input prompt of the shell after the - first line of input. - -py-shell-prompt-read-only -------------------------- -If non-nil, the python prompt is read only. Setting this -variable will only effect new shells. - -py-fileless-buffer-use-default-directory-p ------------------------------------------- -When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shell - -py-keep-shell-dir-when-execute-p --------------------------------- -Don't change Python shell's current working directory when sending code. - -See also `py-execute-directory' - -py-switch-buffers-on-execute-p ------------------------------- -When non-nil switch to the Python output buffer. - -py-split-windows-on-execute-p ------------------------------ -When non-nil split windows. - -py-max-split-windows --------------------- -When split windows is enabled the maximum windows to allow - before reusing other windows. - -py-split-windows-on-execute-function ------------------------------------- -How window should get splitted to display results of py-execute-... functions. - -py-hide-show-keywords ---------------------- -Keywords composing visible heads. -Also used by (minor-)outline-mode - -py-hide-show-hide-docstrings ----------------------------- -Controls if doc strings can be hidden by hide-show - -py-paragraph-fill-docstring-p ------------------------------ -If `py-fill-paragraph', when inside a docstring, should fill the complete string. - -Default is nil. - -Convenient use of `M-q' inside docstrings -See also `py-docstring-style' - - -python-mode-hook ----------------- -Hook run after entering python-mode-modeline-display mode. -No problems result if this variable is not bound. -`add-hook' automatically binds it. (This is true for all hook variables.) - -py-imenu-create-index-p ------------------------ -Non-nil means Python mode creates and displays an index menu of functions and global variables. - -py-imenu-create-index-function ------------------------------- -Switch between `py-imenu-create-index-new', which also lists modules variables, and series 5. index-machine - -py-shell-name -------------- -A PATH/TO/EXECUTABLE or default value `py-shell' may look for, if no shell is specified by command. - -py-shell-toggle-1 ------------------ -A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. - -py-shell-toggle-2 ------------------ -A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. - -py-match-paren-mode -------------------- -Non-nil means, cursor will jump to beginning or end of a block. -This vice versa, to beginning first. -Sets `py-match-paren-key' in python-mode-map. -Customize `py-match-paren-key' which key to use. - -py-match-paren-key ------------------- -String used by M-x comment-region to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace. - -py-kill-empty-line ------------------- -If t, py-indent-forward-line kills empty lines. - -py-remove-cwd-from-path ------------------------ -Whether to allow loading of Python modules from the current directory. -If this is non-nil, Emacs removes '' from sys.path when starting -an inferior Python process. This is the default, for security -reasons, as it is easy for the Python process to be started -without the user's realization (e.g. to perform completion). - -py-imenu-show-method-args-p ---------------------------- -Controls echoing of arguments of functions & methods in the Imenu buffer. -When non-nil, arguments are printed. - -py-history-filter-regexp ------------------------- -Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters. - -inferior-python-filter-regexp ------------------------------ -Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters. - -py-set-complete-keymap-p ------------------------- -If `py-complete-initialize', which sets up enviroment for Pymacs based py-complete, should load it's keys into `python-mode-map' - -Default is nil. -See also resp. edit `py-complete-set-keymap' - -py-use-local-default --------------------- -If `t', py-shell will use `py-shell-local-path' instead - of default Python. - -Making switch between several virtualenv's easier, - `python-mode' should deliver an installer, so named-shells pointing to virtualenv's will be available. - -py-highlight-error-source-p ---------------------------- -When py-execute-... commands raise an error, respective code in source-buffer will be highlighted. Default is nil. - -M-x `py-remove-overlays-at-point' removes that highlighting. - - -py-set-pager-cat-p ------------------- -If the shell environment variable $PAGER should set to `cat'. - -If `t', use `C-c C-r' to jump to beginning of output. Then scroll normally. - -Avoids lp:783828, "Terminal not fully functional", for help('COMMAND') in python-shell - -When non-nil, imports module `os' - -py-prompt-on-changed-p ----------------------- -When called interactively, ask for save before a changed buffer is sent to interpreter. - -Default is `t' - -py-dedicated-process-p ----------------------- -If commands executing code use a dedicated shell. - -Default is nil - -py-shell-local-path -------------------- -If `py-use-local-default' is non-nil, `py-shell' will use EXECUTABLE indicated here incl. path. - -py-edit-only-p --------------- -When `t' `python-mode' will not take resort nor check for installed Python executables. Default is nil. - -See bug report at launchpad, lp:944093. - -py-force-py-shell-name-p ------------------------- -When `t', execution with kind of Python specified in `py-shell-name' is enforced, possibly shebang doesn't take precedence. - -python-mode-v5-behavior-p -------------------------- -Execute region through `shell-command-on-region' as -v5 did it - lp:990079. This might fail with certain chars - see UnicodeEncodeError lp:550661 - -py-trailing-whitespace-smart-delete-p -------------------------------------- -Default is nil. When t, python-mode calls - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local) - -Also commands may delete trailing whitespace by the way. -When editing other peoples code, this may produce a larger diff than expected - -py-newline-delete-trailing-whitespace-p ---------------------------------------- -Delete trailing whitespace maybe left by `py-newline-and-indent'. - -Default is `t'. See lp:1100892 - -py-warn-tmp-files-left-p ------------------------- -Messages a warning, when `py-temp-directory' contains files susceptible being left by previous Python-mode sessions. See also lp:987534 - -py-ipython-execute-delay ------------------------- -Delay needed by execute functions when no IPython shell is running. - -python-shell-buffer-name ------------------------- -Default buffer name for Python interpreter. - -python-shell-interpreter ------------------------- -Default Python interpreter for shell. - -python-shell-prompt-regexp --------------------------- -Regular Expression matching top-level input prompt of python shell. -It should not contain a caret (^) at the beginning. - -py-ffap-p ---------- -Select python-modes way to find file at point. - -Default is nil - -python-ffap-setup-code ----------------------- -Python code to get a module path. - -py-ffap-string-code -------------------- -Python code used to get a string with the path of a module. - -py-eldoc-setup-code -------------------- -Python code to setup documentation retrieval. - -py-setup-codes --------------- -List of code run by `py-shell-send-setup-codes'. - -py-shell-prompt-regexp ----------------------- -Regular Expression matching top-level input prompt of python shell. -It should not contain a caret (^) at the beginning. - -python-shell-completion-setup-code ----------------------------------- -Code used to setup completion in inferior Python processes. - -python-shell-module-completion-string-code ------------------------------------------- -Python code used to get completions separated by semicolons for imports. - -For IPython v0.11, add the following line to -`python-shell-completion-setup-code': - -from IPython.core.completerlib import module_completion - -and use the following as the value of this variable: - -';'.join(module_completion('''%s''')) - -strip-chars-before ------------------- -Regexp indicating which chars shall be stripped before STRING - which is defined by `string-chars-preserve'. - -strip-chars-after ------------------ -Regexp indicating which chars shall be stripped after STRING - which is defined by `string-chars-preserve'. - -py-docstring-style ------------------- -Implemented styles are DJANGO, ONETWO, PEP-257, PEP-257-NN, -SYMMETRIC, and NIL. - -A value of NIL won't care about quotes -position and will treat docstrings a normal string, any other -value may result in one of the following docstring styles: - -DJANGO: - - """ - Process foo, return bar. - """ - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -ONETWO: - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -PEP-257: - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - - """ - -PEP-257-NN: - - """Process foo, return bar.""" - - """Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -SYMMETRIC: - - """Process foo, return bar.""" - - """ - Process foo, return bar. - - If processing fails throw ProcessingError. - """ - -py-execute-directory --------------------- -When set, stores the file's default directory-name py-execute-... functions act upon. - -Used by Python-shell for output of `py-execute-buffer' and related commands. See also `py-use-current-dir-when-execute-p' - -py-use-current-dir-when-execute-p ---------------------------------- -When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands. - -See also `py-execute-directory' - -py-shell-prompt-output-regexp ------------------------------ -Regular Expression matching output prompt of python shell. -It should not contain a caret (^) at the beginning. - -py-output-buffer ----------------- -When `py-enforce-output-buffer-p' is non-nil, provides the -default for output-buffer. - -py-enforce-output-buffer-p --------------------------- -When non-nil, current value of `py-output-buffer' is used for output, -regardless of environment. Default is nil - -py-underscore-word-syntax-p ---------------------------- -If underscore chars should be of syntax-class `word', not of `symbol'. - -Underscores in word-class makes `forward-word' etc. travel the indentifiers. Default is `t'. - -See bug report at launchpad, lp:940812 - diff --git a/elpa/python-mode-6.1.3/extensions/column-marker.el b/elpa/python-mode-6.1.3/extensions/column-marker.el deleted file mode 100644 index 97a7d0745..000000000 --- a/elpa/python-mode-6.1.3/extensions/column-marker.el +++ /dev/null @@ -1,259 +0,0 @@ -;;; column-marker.el --- Highlight certain character columns -;; -;; Filename: column-marker.el -;; Description: Highlight certain character columns -;; Author: Rick Bielawski -;; Maintainer: Rick Bielawski -;; Created: Tue Nov 22 10:26:03 2005 -;; Version: -;; Last-Updated: Fri Jan 22 11:28:48 2010 (-0800) -;; By: dradams -;; Update #: 312 -;; Keywords: tools convenience highlight -;; Compatibility: GNU Emacs 21, GNU Emacs 22, GNU Emacs 23 -;; -;; Features that might be required by this library: -;; -;; None -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; Highlights the background at a given character column. -;; -;; Commands `column-marker-1', `column-marker-2', and -;; `column-marker-3' each highlight a given column (using different -;; background colors, by default). -;; -;; - With no prefix argument, each highlights the current column -;; (where the cursor is). -;; -;; - With a non-negative numeric prefix argument, each highlights that -;; column. -;; -;; - With plain `C-u' (no number), each turns off its highlighting. -;; -;; - With `C-u C-u', each turns off all column highlighting. -;; -;; If two commands highlight the same column, the last-issued -;; highlighting command shadows the other - only the last-issued -;; highlighting is seen. If that "topmost" highlighting is then -;; turned off, the other highlighting for that column then shows -;; through. -;; -;; Examples: -;; -;; M-x column-marker-1 highlights the column where the cursor is, in -;; face `column-marker-1'. -;; -;; C-u 70 M-x column-marker-2 highlights column 70 in face -;; `column-marker-2'. -;; -;; C-u 70 M-x column-marker-3 highlights column 70 in face -;; `column-marker-3'. The face `column-marker-2' highlighting no -;; longer shows. -;; -;; C-u M-x column-marker-3 turns off highlighting for column-marker-3, -;; so face `column-marker-2' highlighting shows again for column 70. -;; -;; C-u C-u M-x column-marker-1 (or -2 or -3) erases all column -;; highlighting. -;; -;; These commands use `font-lock-fontify-buffer', so syntax -;; highlighting (`font-lock-mode') must be turned on. There might be -;; a performance impact during refontification. -;; -;; -;; Installation: Place this file on your load path, and put this in -;; your init file (`.emacs'): -;; -;; (require 'column-marker) -;; -;; Other init file suggestions (examples): -;; -;; ;; Highlight column 80 in foo mode. -;; (add-hook 'foo-mode-hook (lambda () (interactive) (column-marker-1 80))) -;; -;; ;; Use `C-c m' interactively to highlight with face `column-marker-1'. -;; (global-set-key [?\C-c ?m] 'column-marker-1) -;; -;; -;; Please report any bugs! -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Change log: -;; -;; 2009/12/10 dadams -;; column-marker-internal: Quote the face. Thx to Johan Bockgård. -;; 2009/12/09 dadams -;; column-marker-find: fset a symbol to the function, and return the symbol. -;; 2008/01/21 dadams -;; Renamed faces by dropping suffix "-face". -;; 2006/08/18 dadams -;; column-marker-create: Add newlines to doc-string sentences. -;; 2005/12/31 dadams -;; column-marker-create: Add marker to column-marker-vars inside the defun, -;; so it is done in the right buffer, updating column-marker-vars buffer-locally. -;; column-marker-find: Corrected comment. Changed or to progn for clarity. -;; 2005/12/29 dadams -;; Updated wrt new version of column-marker.el (multi-column characters). -;; Corrected stray occurrences of column-marker-here to column-marker-1. -;; column-marker-vars: Added make-local-variable. -;; column-marker-create: Changed positive to non-negative. -;; column-marker-internal: Turn off marker when col is negative, not < 1. -;; 2005-12-29 RGB -;; column-marker.el now supports multi-column characters. -;; 2005/11/21 dadams -;; Combined static and dynamic. -;; Use separate faces for each marker. Different interactive spec. -;; 2005/10/19 RGB -;; Initial release of column-marker.el. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Code: - -;;;;;;;;;;;;;;;;;;;;;; - - -(defface column-marker-1 '((t (:background "gray"))) - "Face used for a column marker. Usually a background color." - :group 'faces) - -(defvar column-marker-1-face 'column-marker-1 - "Face used for a column marker. Usually a background color. -Changing this directly affects only new markers.") - -(defface column-marker-2 '((t (:background "cyan3"))) - "Face used for a column marker. Usually a background color." - :group 'faces) - -(defvar column-marker-2-face 'column-marker-2 - "Face used for a column marker. Usually a background color. -Changing this directly affects only new markers." ) - -(defface column-marker-3 '((t (:background "orchid3"))) - "Face used for a column marker. Usually a background color." - :group 'faces) - -(defvar column-marker-3-face 'column-marker-3 - "Face used for a column marker. Usually a background color. -Changing this directly affects only new markers." ) - -(defvar column-marker-vars () - "List of all internal column-marker variables") -(make-variable-buffer-local 'column-marker-vars) ; Buffer local in all buffers. - -(defmacro column-marker-create (var &optional face) - "Define a column marker named VAR. -FACE is the face to use. If nil, then face `column-marker-1' is used." - (setq face (or face 'column-marker-1)) - `(progn - ;; define context variable ,VAR so marker can be removed if desired - (defvar ,var () - "Buffer local. Used internally to store column marker spec.") - ;; context must be buffer local since font-lock is - (make-variable-buffer-local ',var) - ;; Define wrapper function named ,VAR to call `column-marker-internal' - (defun ,var (arg) - ,(concat "Highlight column with face `" (symbol-name face) - "'.\nWith no prefix argument, highlight current column.\n" - "With non-negative numeric prefix arg, highlight that column number.\n" - "With plain `C-u' (no number), turn off this column marker.\n" - "With `C-u C-u' or negative prefix arg, turn off all column-marker highlighting.") - (interactive "P") - (unless (memq ',var column-marker-vars) (push ',var column-marker-vars)) - (cond ((null arg) ; Default: highlight current column. - (column-marker-internal ',var (1+ (current-column)) ,face)) - ((consp arg) - (if (= 4 (car arg)) - (column-marker-internal ',var nil) ; `C-u': Remove this column highlighting. - (dolist (var column-marker-vars) - (column-marker-internal var nil)))) ; `C-u C-u': Remove all column highlighting. - ((and (integerp arg) (>= arg 0)) ; `C-u 70': Highlight that column. - (column-marker-internal ',var (1+ (prefix-numeric-value arg)) ,face)) - (t ; `C-u -40': Remove all column highlighting. - (dolist (var column-marker-vars) - (column-marker-internal var nil))))))) - -(defun column-marker-find (col) - "Defines a function to locate a character in column COL. -Returns the function symbol, named `column-marker-move-to-COL'." - (let ((fn-symb (intern (format "column-marker-move-to-%d" col)))) - (fset `,fn-symb - `(lambda (end) - (let ((start (point))) - (when (> end (point-max)) (setq end (point-max))) - - ;; Try to keep `move-to-column' from going backward, though it still can. - (unless (< (current-column) ,col) (forward-line 1)) - - ;; Again, don't go backward. Try to move to correct column. - (when (< (current-column) ,col) (move-to-column ,col)) - - ;; If not at target column, try to move to it. - (while (and (< (current-column) ,col) (< (point) end) - (= 0 (+ (forward-line 1) (current-column)))) ; Should be bol. - (move-to-column ,col)) - - ;; If at target column, not past end, and not prior to start, - ;; then set match data and return t. Otherwise go to start - ;; and return nil. - (if (and (= ,col (current-column)) (<= (point) end) (> (point) start)) - (progn (set-match-data (list (1- (point)) (point))) - t) ; Return t. - (goto-char start) - nil)))) ; Return nil. - fn-symb)) - -(defun column-marker-internal (sym col &optional face) - "SYM is the symbol for holding the column marker context. -COL is the column in which a marker should be set. -Supplying nil or 0 for COL turns off the marker. -FACE is the face to use. If nil, then face `column-marker-1' is used." - (setq face (or face 'column-marker-1)) - (when (symbol-value sym) ; Remove any previously set column marker - (font-lock-remove-keywords nil (symbol-value sym)) - (set sym nil)) - (when (or (listp col) (< col 0)) (setq col nil)) ; Allow nonsense stuff to turn off the marker - (when col ; Generate a new column marker - (set sym `((,(column-marker-find col) (0 ',face prepend t)))) - (font-lock-add-keywords nil (symbol-value sym) t)) - (font-lock-fontify-buffer)) - -;; If you need more markers you can create your own similarly. -;; All markers can be in use at once, and each is buffer-local, -;; so there is no good reason to define more unless you need more -;; markers in a single buffer. -(column-marker-create column-marker-1 column-marker-1-face) -(column-marker-create column-marker-2 column-marker-2-face) -(column-marker-create column-marker-3 column-marker-3-face) - -;;;###autoload -(autoload 'column-marker-1 "column-marker" "Highlight a column." t) - -;;;;;;;;;;;;;;;;;; - -(provide 'column-marker) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; column-marker.el ends here diff --git a/elpa/python-mode-6.1.3/extensions/column-marker.elc b/elpa/python-mode-6.1.3/extensions/column-marker.elc deleted file mode 100644 index 99914c371d6cad6c26d363a4ddb8f75e49ea71a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7190 zcmeHMZExGi5%!mBZS_mgYf%(epcA=wrdpHca!Dz662tLJ&=fh`;gV}`I0X$&t|Y?L zQsIjo-LLO6OG>h2$BECqemKMcX_7lLJ3Bki%tPwo$@8N>t*x!K9zJ|XN7;Ciq$;M< zDUHK&l!V29Vs#Nlqf+GuIv)mhrL}bU%Bc!xm?yELt58SEiLxj+2gsCT8( zMUv@aC(6=ljKMHJQ@Nv3Gee^3ge}my%2|v&-;s`I#x9a_L}8jzHYt;F@>5u{9j9dm zUyhQZcC9K@LGe_F<0PUui;6N&^sv~*XkL^Q#xa&SpGWLE-tH9}aRwVYD=Er!8A7-! z2lfLz(e{%UN6(&7Gz#-DLR5=wGkvIIDl&>fO{a>|EL@tTSxiAH%+o~WRE{9%$$DPw z+@1c|fxG^-S}iN8iZUD9v5L|#SN0%`6m2c-k}YVTSPc@bRto{4G^0fP`^k4s>*N z)S@j`A5%{=0S{AaV6Q5 z2jS)(rcdwyT3)X&B^2rbDb}AtUP4pC4+)J+gT^7*Jv=;QnI%QvHHyB#;9=hjdcS>& zRrT8RqlqoAdnJZ6$+MxRrtVq1@$EyiyJ%wAT?aMWw97i1P%*JVXcM_=EH%}WiiwJx zb_cibO_aA)hMmAvl_o39hY0#Vli?`E!Hw3m3e)3_vv1l|Ovk5LYIC|!d&}wTSIhu( z2B(o&?+7-kvC`!>jTUyQJjbKP9(3B&Zq&4`)exlNT#<%e4tlUKblC>F^UMHCo`Rk% z>`YST18u+TSAjl?Jp68msYJvX*oiyhVp5RWZ7L1WYH!f+|dE_GVdoUQR6W59rrH zwrd%5e$1tdNv)U+$a+jZo*~`X6o!#kI9qX+a)~kkT()0(x8m}AQchep!KRpLnS~Ek z-ppw2Kjw+Z<#G0}4yWDhGM1iJs6w?XOkeKqN9Q$(-mFG;cV*|bDZ;`NP0=e*^^oY; z8<1FFhS7xV2Pc{_N9Le)5a{Te=T7T8#XH}W!kK0bf$gSbzF7|1I6GH%nb}a^x~T@D z2*+IapbgBS%5X_C1#Z3HzTfwR_%j}$fYoIVMGU2AQQ~mzucJ^2Q+Z60gR!8{(0Ct#$uzJd;#ZBy+zg!l!@r17exWnrG$S#||pJtmhdWc12Z zSG?iH0eFw$)rwIVu^!?1lG*+Fy@?R7AE4n*z;QrG%4lTAVTowgh!yrs1ETYAmbe*a z$UshNv;_paV}J^D1Pwa8-L408fT4KaF1`5S>sh<6Q`@{LjIuPYiTY|=;rB1RGdeBg z_)M{hBjAHjMtCKh_n=W$rFi*Oghe>57u95vPT4NEHI!S|OvaXKq}9b*HR}HdGBPh{ z03(*q@V|+O$a@?A0wClcnUyeY2yovvK;fI`eAU;FAmYI32zQUx zn8x(_8cc-&E`Uj#fxP3R+JvDp#yAMgrm+gh6O`xFVdm{J`UC>1OXh)RcCJjGpQ-6Z zmd7=RbeH>=Z3i>@3)LU{b zrx)DJ3`yZ;7Od|x0{Yq{{rcg(4Zby)Vb&fbFZ&uv4QjoIvpiVaIAA<{&o^JOj*((q zFt*$tT9k0V01Cuka2xEe^#=!^v)J!uGLRfRVSztDz;|FnxPNC=%pAD5kS`f?Li|u) zUz)?)xIc4eWuEjy^Yr_RiNNTW^M?78;Xuoen@<9kx*>D zgMAo^-rb-W_@4g@Ls4FWVpsHT`GH8@9*XrRuuo9D5sLB?6h9J*%@@@VLs8xhid`wi z0*d%Fu;78S-$uB$hE<85K*D(S)1_E>*=^%1X8n_c`yl9mIJfwn?L3KBf2QfQ{tM^@ B*F*pS diff --git a/elpa/python-mode-6.1.3/extensions/highlight-indentation.el b/elpa/python-mode-6.1.3/extensions/highlight-indentation.el deleted file mode 100644 index 02a34c4ac..000000000 --- a/elpa/python-mode-6.1.3/extensions/highlight-indentation.el +++ /dev/null @@ -1,103 +0,0 @@ -;;; highlight-indentation.el --- Function for highlighting indentation -;; Original Author: Anton Johansson - http://antonj.se -;; Created: Dec 15 23:42:04 2010 -;; URL: https://github.com/antonj/Highlight-Indentation-for-Emacs - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of -;; the License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be -;; useful, but WITHOUT ANY WARRANTY; without even the implied -;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -;; PURPOSE. See the GNU General Public License for more details. -;; -;;; Commentary: -;; Customize `highlight-indent-face' to suit your theme. - -;;; Code: - -(defcustom highlight-indentation nil - "If level of indentation should be displayed at start. -Toggle buffer local status via `M-x highlight-indentation' during session. " - -:type 'boolean -:group 'python) -(make-variable-buffer-local 'highlight-indentation) - -(defvar highlight-indent-active nil) -(make-variable-buffer-local 'highlight-indent-active) - -(defface highlight-indent-face - '((((class color) (background dark)) - (:background "grey33")) - (((class color) (background light)) - (:background "grey"))) - "Basic face for highlighting indentation guides.") - -(setq-default highlight-indent-offset 4) - -(defvar ruby-indent-level nil) -;; lp:1067928 -;; (defvar nxml-child-indent nil) - -(defun highlight-indentation-on () - "Make sure `highlight-indentation' is on. " - (interactive) - (set (make-local-variable 'highlight-indent-active) nil) - (highlight-indentation) - (when (called-interactively-p 'any) - (message "highlight-indentation ON"))) - -(defun highlight-indentation-off () - "Make sure `highlight-indentation' is off. " - (interactive) - (set (make-local-variable 'highlight-indent-active) t) - (highlight-indentation) - (when (called-interactively-p 'any) - (message "highlight-indentation OFF"))) - -(defun highlight-indentation (&optional indent-width) - "Toggle highlight indentation. -Optional argument INDENT-WIDTH specifies which indentation -level (spaces only) should be highlighted, if omitted -indent-width will be guessed from current major-mode" - (interactive "P") - (let ((re (format "\\( \\) \\{%s\\}" (- highlight-indent-offset 1)))) - (if (not highlight-indent-active) - (progn ;; Toggle on - (set (make-local-variable 'highlight-indent-offset) - (if indent-width - indent-width - ;; Set indentation offset according to major mode - (cond ((and (eq major-mode 'python-mode)(boundp 'py-indent-offset)) - py-indent-offset) - ;; support both python.el - ((or (eq major-mode 'python-mode)(eq major-mode 'python)) - python-indent) - ((eq major-mode 'ruby-mode) - ruby-indent-level) - ((eq major-mode 'nxml-mode) - nxml-child-indent) - ((local-variable-p 'c-basic-offset) - c-basic-offset) - (t - (default-value 'highlight-indent-offset))))) - (set (make-local-variable 'highlight-indent-active) t) - (if (featurep 'xemacs) - (font-lock-add-keywords nil `((,re (1 'paren-face-match)))) - (font-lock-add-keywords nil `((,re (1 'highlight-indent-face))))) - (message (format "highlight-indentation with indent-width %s" - highlight-indent-offset))) - ;; Toggle off - (set (make-local-variable 'highlight-indent-active) nil) - (if (featurep 'xemacs) - (font-lock-remove-keywords nil `((,re (1 'paren-face-match)))) - (font-lock-remove-keywords nil `((,re (1 'highlight-indent-face))))) - (message "highlight-indentation OFF")) - (font-lock-fontify-buffer))) - -(provide 'highlight-indentation) - -;;; highlight-indentation.el ends here diff --git a/elpa/python-mode-6.1.3/extensions/highlight-indentation.elc b/elpa/python-mode-6.1.3/extensions/highlight-indentation.elc deleted file mode 100644 index c0e36b43ffff0ebbad45b5d46fde55ef4b14b10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3088 zcmcgu{cqbg5cO~CJS-df!-ioSc2(Ba1}fS5u+t+3wnv&&m%?dgvNUZlj%XQPu|!K zjQ^yBQGy6GN@dPR8!<)>&skJC@rY*&Hd-uIDhoT8F}J6V>-Z!7R`H?|vZzL>n5P+r zvPBW|LNSGDhi4{|DCn{FMCZKJ=HvyA?|5eILa3BjmXTa2k&D00#>(lN#gkN2%@OO0 zR}?P`mWzmD8C9wj#k{(Q)v{8=;uu$5$8q-^Z-2u_Ea9V&iXw>v!njt6eIGN0{p*XP z<70|aRPpGnj(L=^lH2F3 z6l@02Y^^vIA|vZKp^Tq%)HFd&)^MOIm30O@bBaZ^$k-A!V~Q%pO67#biJZ^jcvdF~ zvYE+YA>7I%*wMNrVcuD*1Y6P-?#Mqd$yV;-?|q&hh#lu z6*|-$A(5RN>hg54Ft0_-E5}036u_0RI#Zk1mPvwj3Qj4wtV>zXmMzWL4bDtOb{_;j zJw<7$s!L99wgU7nfl)LZZ)+*RJ*SXpmjfBjMoMJ8ozvMD{Goax69;a z5A&wbtM0k(d4(ZUdjq-4j?$s7+Z#Fr17#2b+!@@|fG}Iy3t|P70gz{Nboch1&!1VR z-Yo^;bS4enp2%iZ6jmZ8?E z?jqXhKZkG;{B$Injem&cDzexqu^BasMb&_ybuw7a+8z<5wC(9jy6 z*>c!n%XK^+-y@Nb%!N`s?l=8pUx*kQdLba9pw@W}M1WY0yhn9e>VxF$FIgJt{xI%Q z#K9e{#^x^F7-;VmzHht;t?$ADpbr#4Z)mS+k1sIif78?dyjQ(2!J_+%p1Y&%G&N3i zbKvKf*G&SivGB=uA$`cx&V~q>J-E?(bZ{@?+KK5E4{`jg7 zUkj;r=zBE8b}gyvdahWkr8%(H#!{;}-7<8l2}Qf+1Ehdt<$eH^BrQm-;3m zS+;M5_8rk?p0?1%g$nzZ5x@l!i0(M7e&{Y!choA%U%8_|grkq8cQYq_yth1~%QZUt_ z;>5UaKr49n-Ot>?bOw|AHu4Ld2Ur#i#kWe@ z(?p#m3*xA-ksO5P))}cvJN8v$9iR|?vp=2bf+dR!4xv4V(hj&*4n4SYMfBh^Dq6j+ zw_D&98sz?%c09 -;; Keywords: languages, processes, python, oop - -;; Copyright (C) 1992,1993,1994 Tim Peters - -;; Author: 2003-2013 https://launchpad.net/python-mode -;; 1995-2002 Barry A. Warsaw -;; 1992-1994 Tim Peters -;; Maintainer: python-mode@python.org -;; Created: Feb 1992 -;; Keywords: python languages oop - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; commands-python-mode.org in directory doc reports -;; available commands, also a menu is provided - -;; as for `py-add-abbrev': -;; Similar to `add-mode-abbrev', but uses -;; `py-partial-expression' before point for expansion to -;; store, not `word'. Also provides a proposal for new -;; abbrevs. - -;; Proposal for an abbrev is composed from the downcased -;; initials of expansion - provided they are of char-class -;; [:alpha:] -;; -;; For example code below would be recognised as a -;; `py-expression' composed by three -;; py-partial-expressions. -;; -;; OrderedDict.popitem(last=True) -;; -;; Putting the curser at the EOL, M-3 M-x py-add-abbrev -;; -;; would prompt "op" for an abbrev to store, as first -;; `py-partial-expression' beginns with a "(", which is -;; not taken as proposal. - -;;; Code - -(require 'comint) -(require 'custom) -(eval-when-compile (require 'cl)) -(require 'compile) -(require 'ansi-color) -(require 'cc-cmds) -(require 'shell) -(require 'rx) -(ignore-errors (require 'flymake)) -(require 'imenu) -(require 'thingatpt) - -(defgroup python-mode nil - "Support for the Python programming language, " - :group 'languages - :prefix "py-") - -(defconst py-version "6.1.3") - -;;; Customization -(defcustom python-mode-modeline-display "Py" - "String to display in Emacs modeline " - - :type 'string - :group 'python-mode) - -(defcustom py-indent-offset 4 - "Amount of offset per level of indentation. -`\\[py-guess-indent-offset]' can usually guess a good value when -you're editing someone else's Python code." - :type 'integer - :group 'python-mode) -(make-variable-buffer-local 'py-indent-offset) - -(defcustom py-backslashed-lines-indent-offset 5 - "Amount of offset per level of indentation of backslashed. -No semantic indent, which diff to `py-indent-offset' indicates " - :type 'integer - :group 'python-mode) -(make-variable-buffer-local 'py-backslashed-lines-indent-offset) - -(defcustom pdb-path '/usr/lib/python2.7/pdb.py - "Where to find pdb.py. Edit this according to your system. - -If you ignore the location `M-x py-guess-pdb-path' might display it" - :type 'variable - :group 'python-mode) - -(defcustom py-verbose-p nil - "If indenting functions should report reached indent level. - -Default is nil. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-max-help-buffer-p nil - "If \"\*Python-Help\*\"-buffer should appear as the only visible. - -Default is nil. In help-buffer, \"q\" will close it. " - -:type 'boolean -:group 'python-mode) - -(defcustom py-store-result-p nil - "When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. - -Default is nil" - - :type 'boolean - :group 'python-mode) - -(defcustom py-load-skeletons-p nil - "If skeleton definitions should be loaded, default is nil. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-load-pymacs-p nil - "If Pymacs related stuff should be loaded. - -Default is nil. - -Pymacs has been written by François Pinard and many others. -See original source: http://pymacs.progiciels-bpi.ca" - - :type 'boolean - :group 'python-mode) - -(defun py-smart-operator-check () - "Check, if smart-operator-mode is loaded resp. available. - -Give some hints, if not." - (interactive) - (if (featurep 'smart-operator) - 't - (progn - (and (boundp 'py-smart-operator-mode-p) py-smart-operator-mode-p (message "%s" "Don't see smart-operator.el. Make sure, it's installed. See in menu Options, Manage Emacs Packages. Or get it from source: URL: http://xwl.appspot.com/ref/smart-operator.el") - nil)))) - -(defcustom py-empty-line-closes-p nil - "When non-nil, dedent after empty line following block - -if True: - print(\"Part of the if-statement\") - -print(\"Not part of the if-statement\") - -Default is nil - -If non-nil, a C-j from empty line dedents. -" - - :type 'boolean - :group 'python-mode) - -(defun py-autopair-check () - "Check, if autopair-mode is available. - -Give some hints, if not." - (interactive) - (if (featurep 'autopair) - 't - (progn - (message "%s" "Don't see autopair.el. Make sure, it's installed. If not, maybe see source: URL: http://autopair.googlecode.com") - nil))) - -(defcustom py-smart-operator-mode-p nil - "If python-mode calls (smart-operator-mode-on) - -Default is non-nil. " - - :type 'boolean - :group 'python-mode - :set (lambda (symbol value) - (and (py-smart-operator-check) - (set-default symbol value) - (smart-operator-mode (if value 1 0))))) -(make-variable-buffer-local 'py-smart-operator-mode-p) - -(defcustom py-sexp-function nil - "When set, it's value is called instead of `forward-sexp', `backward-sexp' - -Default is nil. " - - :type '(choice - (const :tag "default" nil) - (const :tag "py-end-of-partial-expression" py-end-of-partial-expression) - (const :tag "py-end-of-expression" py-end-of-expression)) - :group 'python-mode) -(make-variable-buffer-local 'py-sexp-function) - -(defvar py-autopair-mode nil) -(defvar highlight-indent-active nil) -(defvar smart-operator-mode nil) - -(defvar py-fill-column-orig fill-column) -(defvar py-autofill-timer nil) - -(defvar py-python-completions "*Python Completions*" - "Buffer name for Python-shell completions, internally used") - -(defvar py-ipython-completions "*IPython Completions*" - "Buffer name for IPython-shell completions, internally used") - -(defvar py-close-completions-timer nil - "Internally used by `py-timer-close-completion-buffer") - -(defcustom py-autopair-mode nil - "If python-mode calls (autopair-mode-on) - -Default is nil -Load `autopair-mode' written by Joao Tavora -URL: http://autopair.googlecode.com " - :type 'boolean - :group 'python-mode - :set (lambda (symbol value) - (and - ;; (py-autopair-check) - (set-default symbol value) - (autopair-mode (if value 1 0))))) - -(defcustom py-no-completion-calls-dabbrev-expand-p t - "If completion function should call dabbrev-expand when no completion found. Default is `t' - -See also `py-indent-no-completion-p'" - :type 'boolean - :group 'python-mode) - -(defcustom py-indent-no-completion-p nil - "If completion function should insert a TAB when no completion found. Default is `nil' - -See also `py-no-completion-calls-dabbrev-expand-p'" - :type 'boolean - :group 'python-mode) - -(defcustom py-set-fill-column-p nil - "If python-mode should set fill-column - -according values in `py-comment-fill-column' and `py-docstring-fill-column'. -Default is nil" - - :type 'boolean - :group 'python-mode) - -(defcustom py-autofill-timer-delay 1 - "Delay when idle before functions ajusting `py-docstring-fill-column' resp. `py-comment-fill-column' are called. " - :type 'integer - - :group 'python-mode) - -(defcustom py-docstring-fill-column 72 - "Value of `fill-column' to use when filling a docstring. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings." - :type '(choice (integer) - (const :tag "Use the current `fill-column'" t)) - :group 'python-mode) - -(defcustom py-comment-fill-column 79 - "Value of `fill-column' to use when filling a comment. -Any non-integer value means do not use a different value of -`fill-column' when filling docstrings." - :type '(choice (integer) - (const :tag "Use the current `fill-column'" t)) - :group 'python-mode) - -(defcustom py-fontify-shell-buffer-p nil - "If code in Python shell should be highlighted as in script buffer. - -Default is nil. - -If `t', related vars like `comment-start' will be set too. -Seems convenient when playing with stuff in IPython shell -Might not be TRT when a lot of output arrives " - - :type 'boolean - :group 'python-mode) - -(defcustom py-modeline-display-full-path-p nil - "If the full PATH/TO/PYTHON should be displayed in shell modeline. - -Default is nil. Note: when `py-shell-name' is specified with path, it's shown as an acronym in buffer-name already. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-modeline-acronym-display-home-p nil - "If the modeline acronym should contain chars indicating the home-directory. - -Default is nil " - :type 'boolean - :group 'python-mode) - -(defcustom py-install-directory "" - "Directory where python-mode.el and it's subdirectories should be installed. Needed for completion and other environment stuff only. " - :type 'string - :group 'python-mode) - -(defcustom py-guess-py-install-directory-p t - "If in cases, `py-install-directory' isn't set, `py-set-load-path'should guess it from `buffer-file-name'. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-extensions "py-extensions.el" - "File where extensions to python-mode.el should be installed. Used by virtualenv support. " - - :type 'string - :group 'python-mode) - -(defcustom py-pylint-offer-current-p t - "If current buffers file should be offered for check. - -Default is non-nil. If nil, `py-pylint-run' offers filename from history " - - :type 'boolean - :group 'python-mode) - -(defcustom py-hide-show-minor-mode-p nil - "If hide-show minor-mode should be on, default is nil. " - - :type 'boolean - :group 'python-mode) - -(defcustom empty-comment-line-separates-paragraph-p t - "Consider paragraph start/end lines with nothing inside but comment sign. - -Default is non-nil" - :type 'boolean - :group 'python-mode) - -(defcustom py-if-name-main-permission-p t - "Allow execution of code inside blocks started -by \"if __name__== '__main__':\". - -Default is non-nil" - - :type 'boolean - :group 'python-mode) - -(defcustom py-use-font-lock-doc-face-p nil - "If documention string inside of def or class get `font-lock-doc-face'. - -`font-lock-doc-face' inherits `font-lock-string-face'. -Call M-x `customize-face' in order to have a visible effect. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-defun-use-top-level-p nil - "When non-nil, keys C-M-a, C-M-e address top-level form. - -Default is nil. - -Beginning- end-of-defun forms use -commands `py-beginning-of-top-level', `py-end-of-top-level' - -mark-defun marks top-level form at point etc. -" - - :type 'boolean - :group 'python-mode) - -(defcustom py-tab-shifts-region-p nil - "If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil" - - :type 'boolean - :group 'python-mode) - -(defcustom py-tab-indents-region-p nil - "When `t' and first TAB doesn't shift, indent-region is called. - -Default is nil" - - :type 'boolean - :group 'python-mode) - -(defcustom py-block-comment-prefix-p t - "If py-comment inserts py-block-comment-prefix. - -Default is t" - - :type 'boolean - :group 'python-mode) - -(defcustom py-org-cycle-p nil - "When non-nil, command `org-cycle' is available at shift-TAB, - -Default is nil. " - - :type 'boolean - :group 'python-mode) - -(defcustom ipython-complete-use-separate-shell-p nil - - "If `ipython-complete' should use a separate shell. Thus prompt-counter is not incremented by completion. " - :type 'boolean :group 'python-mode) - -(defcustom py-outline-minor-mode-p t - "If outline minor-mode should be on, default is `t'. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-outline-mode-keywords - '("class" "def" "elif" "else" "except" - "for" "if" "while" "finally" "try" - "with") - "Keywords composing visible heads. " - :type '(repeat string) - :group 'python-mode) - -(defcustom py-start-run-py-shell nil - "If `python-mode' should start a python-shell, `py-shell'. - -Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-start-run-ipython-shell nil - "If `python-mode' should start an ipython-shell. - -Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-close-provides-newline t - "If a newline is inserted, when line after block isn't empty. Default is non-nil. " - :type 'boolean - :group 'python-mode) -(make-variable-buffer-local 'py-close-provides-newline) - -(defcustom py-dedent-keep-relative-column t - "If point should follow dedent or kind of electric move to end of line. Default is t - keep relative position. " - :type 'boolean - :group 'python-mode) - -(defcustom py-indent-honors-multiline-listing nil - "If `t', indents to 1+ column of opening delimiter. If `nil', indent adds one level to the beginning of statement. Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-indent-paren-spanned-multilines-p nil - "If non-nil, indents elements of list a value of `py-indent-offset' to first element: - -def foo(): - if (foo && - baz): - bar() - -Default lines up with first element: - -def foo(): - if (foo && - baz): - bar() -" - :type 'boolean - :group 'python-mode) - -(defcustom py-indent-honors-inline-comment nil - "If non-nil, indents to column of inlined comment start. -Default is nil. " - :type 'boolean - :group 'python-mode) - -(defcustom py-closing-list-dedents-bos nil - "When non-nil, indent list's closing delimiter like start-column. - -It will be lined up under the first character of - the line that starts the multi-line construct, as in: - -my_list = [ - 1, 2, 3, - 4, 5, 6, -] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', -) - -Default is nil, i.e. - -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) - -Examples from PEP8 -" - - :type 'boolean - :group 'python-mode) - -(defcustom py-closing-list-space 1 - "Number of chars, closing parenthesis outdent from opening, default is 1 " - :type 'number - :group 'python-mode) - -(defcustom py-closing-list-keeps-space nil - "If non-nil, closing parenthesis dedents onto column of opening plus `py-closing-list-space', default is nil " - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-kill-backward-p nil - "Affects `py-electric-backspace'. Default is nil. - -If behind a delimited form of braces, brackets or parentheses, -backspace will kill it's contents - -With when cursor after -my_string[0:1] ---------------^ - -==> - -my_string[] -----------^ - -In result cursor is insided emptied delimited form." - - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-colon-active-p nil - "`py-electric-colon' feature. Default is `nil'. See lp:837065 for discussions. - -See also `py-electric-colon-bobl-only' " - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-colon-bobl-only t - - "When inserting a colon, do not indent lines unless at beginning of block - -See lp:1207405 resp. `py-electric-colon-active-p' " - - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-colon-greedy-p nil - "If py-electric-colon should indent to the outmost reasonable level. - -If nil, default, it will not move from at any reasonable level. " - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-colon-newline-and-indent-p nil - "If non-nil, `py-electric-colon' will call `newline-and-indent'. Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-comment-p nil - "If \"#\" should call `py-electric-comment'. Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-electric-comment-add-space-p nil - "If py-electric-comment should add a space. Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-mark-decorators nil - "If py-mark-def-or-class functions should mark decorators too. Default is `nil'. " - :type 'boolean - :group 'python-mode) - -(defcustom py-tab-indent t - "Non-nil means TAB in Python mode calls `py-indent-line'." - :type 'boolean - :group 'python-mode) - -(defcustom py-return-key 'py-newline-and-indent - "Which command should call. " - :type '(choice - (const :tag "default" py-newline-and-indent) - (const :tag "newline" newline) - (const :tag "py-newline-and-indent" py-newline-and-indent) - (const :tag "py-newline-and-dedent" py-newline-and-dedent) - ) - :group 'python-mode) - -(defcustom py-complete-function 'py-shell-complete - "When set, enforces function todo completion, default is nil. - -Normally python-mode, resp. inferior-python-mode know best which function to use. " - :type '(choice - (const :tag "default" nil) - (const :tag "Pymacs based py-complete-completion-at-point" py-complete-completion-at-point) - (const :tag "py-shell-complete" py-shell-complete) - (const :tag "IPython's ipython-complete" ipython-complete) - ) - :group 'python-mode) - -(defcustom ipython-complete-function 'ipython-complete - "Function used for completion in IPython shell buffers. " - :type '(choice (const :tag "py-shell-complete" py-shell-complete) - (const :tag "Pymacs based py-complete" py-complete) - (const :tag "IPython's ipython-complete" ipython-complete)) - :group 'python-mode) -(make-variable-buffer-local 'ipython-complete-function) - -(defcustom py-encoding-string " # -*- coding: utf-8 -*-" - "Default string specifying encoding of a Python file. " - :type 'string - :group 'python-mode) - -(defcustom py-shebang-startstring "#! /bin/env" - "Detecting the shell in head of file. " - :type 'string - :group 'python-mode) - -(defcustom py-python-command-args '("-i") - "List of string arguments to be used when starting a Python shell." - :type '(repeat string) - :group 'python-mode) -(make-variable-buffer-local 'py-python-command-args) - -(defcustom py-jython-command-args '("-i") - "List of string arguments to be used when starting a Jython shell." - :type '(repeat string) - :group 'python-mode - :tag "Jython Command Args") - -(defcustom py-flake8-command "" - "Which command to call flakes8. - -If empty, python-mode will guess some " - :type 'string - :group 'python-mode) - -(make-obsolete-variable 'py-jpython-command-args 'py-jython-command-args nil) - -(defcustom py-flake8-command-args "" - "Arguments used by flake8. - -Default is the empty string. " - :type 'string - :group 'python-mode) - -(defcustom py-cleanup-temporary t - "If temporary buffers and files used by functions executing region should be deleted afterwards. " - :type 'boolean - :group 'python-mode) - -(defcustom py-execute-no-temp-p nil - "Seems Emacs-24.3 provided a way executing stuff without temporary files. " - :type 'boolean - :group 'python-mode) - -(defcustom py-lhs-inbound-indent 1 - "When line starts a multiline-assignment: How many colums indent should be more than opening bracket, brace or parenthesis. " - :type 'integer - :group 'python-mode) -(make-variable-buffer-local 'py-lhs-inbound-indent) - -(defcustom py-continuation-offset 2 - "Additional amount of offset to give for some continuation lines. -Continuation lines are those that immediately follow a backslash -terminated line. " - :type 'integer - :group 'python-mode) - -(defcustom py-indent-tabs-mode nil - "Python-mode starts `indent-tabs-mode' with the value specified here, default is nil. " - :type 'boolean - :group 'python-mode) - -(defcustom py-smart-indentation t - "Should `python-mode' try to automagically set some indentation variables? -When this variable is non-nil, two things happen when a buffer is set -to `python-mode': - - 1. `py-indent-offset' is guessed from existing code in the buffer. - Only guessed values between 2 and 8 are considered. If a valid - guess can't be made (perhaps because you are visiting a new - file), then the value in `py-indent-offset' is used. - - 2. `indent-tabs-mode' is turned off if `py-indent-offset' does not - equal `tab-width' (`indent-tabs-mode' is never turned on by - Python mode). This means that for newly written code, tabs are - only inserted in indentation if one tab is one indentation - level, otherwise only spaces are used. - -Note that both these settings occur *after* `python-mode-hook' is run, -so if you want to defeat the automagic configuration, you must also -set `py-smart-indentation' to nil in your `python-mode-hook'." - :type 'boolean - :group 'python-mode) -(make-variable-buffer-local 'py-smart-indentation) - -(defcustom py-block-comment-prefix "##" - "String used by \\[comment-region] to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace." - :type 'string - :group 'python-mode) - -(defcustom py-indent-comments t - "When t, comment lines are indented. " - :type 'boolean - :group 'python-mode) - -(defcustom py-uncomment-indents-p nil - "When non-nil, after uncomment indent lines. " - :type 'boolean - :group 'python-mode) - -(defcustom py-separator-char 47 - "The character, which separates the system file-path components. - -Precedes guessing when not empty, returned by function `py-separator-char'. " - :type 'character - :group 'python-mode) -;; used as a string finally -;; kept a character not to break existing customizations -(and (characterp py-separator-char)(setq py-separator-char (char-to-string py-separator-char))) - -(defcustom py-custom-temp-directory "" - "If set, will take precedence over guessed values from `py-temp-directory'. Default is the empty string. - -When set, make sure the directory exists. " - :type 'string - :group 'python-mode) - -(defcustom py-beep-if-tab-change t - "Ring the bell if `tab-width' is changed. -If a comment of the form - - \t# vi:set tabsize=: - -is found before the first code line when the file is entered, and the -current value of (the general Emacs variable) `tab-width' does not -equal , `tab-width' is set to , a message saying so is -displayed in the echo area, and if `py-beep-if-tab-change' is non-nil -the Emacs bell is also rung as a warning." - :type 'boolean - :group 'python-mode) - -(defcustom py-jump-on-exception t - "Jump to innermost exception frame in *Python Output* buffer. -When this variable is non-nil and an exception occurs when running -Python code synchronously in a subprocess, jump immediately to the -source code of the innermost traceback frame." - :type 'boolean - :group 'python-mode) - -(defcustom py-ask-about-save t - "If not nil, ask about which buffers to save before executing some code. -Otherwise, all modified buffers are saved without asking." - :type 'boolean - :group 'python-mode) - -(defcustom py-backspace-function 'backward-delete-char-untabify - "Function called by `py-electric-backspace' when deleting backwards." - :type 'function - :group 'python-mode) - -(defcustom py-delete-function 'delete-char - "Function called by `py-electric-delete' when deleting forwards." - :type 'function - :group 'python-mode) - -(defcustom py-pdbtrack-do-tracking-p t - "Controls whether the pdbtrack feature is enabled or not. -When non-nil, pdbtrack is enabled in all comint-based buffers, -e.g. shell buffers and the *Python* buffer. When using pdb to debug a -Python program, pdbtrack notices the pdb prompt and displays the -source file and line that the program is stopped at, much the same way -as gud-mode does for debugging C programs with gdb." - :type 'boolean - :group 'python-mode) -(make-variable-buffer-local 'py-pdbtrack-do-tracking-p) - -(defcustom py-pdbtrack-filename-mapping nil - "Supports mapping file paths when opening file buffers in pdbtrack. -When non-nil this is an alist mapping paths in the Python interpreter -to paths in Emacs." - :type 'alist - :group 'python-mode) - -(defcustom py-pdbtrack-minor-mode-string " PDB" - "String to use in the minor mode list when pdbtrack is enabled." - :type 'string - :group 'python-mode) - -(defcustom py-import-check-point-max - 20000 - "Maximum number of characters to search for a Java-ish import statement. -When `python-mode' tries to calculate the shell to use (either a -CPython or a Jython shell), it looks at the so-called `shebang' line --- i.e. #! line. If that's not available, it looks at some of the -file heading imports to see if they look Java-like." - :type 'integer - :group 'python-mode) - -(defcustom py-jython-packages - '("java" "javax") - "Imported packages that imply `jython-mode'." - :type '(repeat string) - :group 'python-mode) -(make-obsolete-variable 'py-jpython-packages 'py-jython-packages nil) - -(defcustom py-current-defun-show t - "If `py-current-defun' should jump to the definition, highlight it while waiting PY-WHICH-FUNC-DELAY seconds, before returning to previous position. - -Default is `t'." - - :type 'boolean - :group 'python-mode) - -(defcustom py-current-defun-delay 2 - "When called interactively, `py-current-defun' should wait PY-WHICH-FUNC-DELAY seconds at the definition name found, before returning to previous position. " - - :type 'number - :group 'python-mode) - -(defcustom py-new-shell-delay 0.2 - "If a new comint buffer is connected to Python, commands like completion might need some delay. " - - :type 'integer - :group 'python-mode) - -(defcustom py-send-receive-delay 5 - "Seconds to wait for output, used by `py-send-receive'. " - - :type 'number - :group 'python-mode) - -(defcustom py-honor-IPYTHONDIR-p nil - "When non-nil ipython-history file is constructed by $IPYTHONDIR -followed by \"/history\". Default is nil. - -Otherwise value of py-ipython-history is used. " - :type 'boolean - :group 'python-mode) - -(defcustom py-ipython-history "~/.ipython/history" - "ipython-history default file. Used when py-honor-IPYTHONDIR-p is nil (default) " - - :type 'string - :group 'python-mode) - -(defcustom py-honor-PYTHONHISTORY-p nil - "When non-nil python-history file is set by $PYTHONHISTORY -Default is nil. - -Otherwise value of py-python-history is used. " - :type 'boolean - :group 'python-mode) - -(defcustom py-python-history "~/.python_history" - "python-history default file. Used when py-honor-PYTHONHISTORY-p is nil (default) " - - :type 'string - :group 'python-mode) - -(defcustom py-master-file nil - "If non-nil, \\[py-execute-buffer] executes the named -master file instead of the buffer's file. If the file name has a -relative path, the value of variable `default-directory' for the -buffer is prepended to come up with a file name. - -Beside you may set this variable in the file's local -variable section, e.g.: - - # Local Variables: - # py-master-file: \"master.py\" - # End: - -" - :type 'string - :group 'python-mode) -(make-variable-buffer-local 'py-master-file) - -(defcustom py-pychecker-command "pychecker" - "Shell command used to run Pychecker." - :type 'string - :group 'python-mode - :tag "Pychecker Command") - -(defcustom py-pychecker-command-args '("--stdlib") - "List of string arguments to be passed to pychecker." - :type '(repeat string) - :group 'python-mode - :tag "Pychecker Command Args") - -(defcustom py-pep8-command "pep8" - "Shell command used to run pep8." - :type 'string - :group 'python-mode - :tag "PEP 8 Command") - -(defcustom py-pep8-command-args '("") - "List of string arguments to be passed to pep8. - -Default is \"\" " - :type '(repeat string) - :group 'python-mode - :tag "PEP 8 Command Args") - -(defcustom py-pyflakespep8-command (concat py-install-directory "/pyflakespep8.py") - "Shell command used to run `pyflakespep8'." - :type 'string - :group 'python-mode - :tag "Pyflakespep8 Command") - -(defcustom py-pep8-command "pep8" - "Shell command used to run pep8." - :type 'string - :group 'python-mode - :tag "PEP 8 Command") - -(defcustom py-pep8-command-args '("") - "List of string arguments to be passed to pep8. - -Default is \"\" " - :type '(repeat string) - :group 'python-mode - :tag "PEP 8 Command Args") - -(defcustom py-pyflakespep8-command-args '("") - "List of string arguments to be passed to pyflakespep8. - -Default is \"\" " - :type '(repeat string) - :group 'python-mode - :tag "Pyflakes-pep8 Command Args") - -(defcustom py-pyflakes-command "pyflakes" - "Shell command used to run Pyflakes." - :type 'string - :group 'python-mode - :tag "Pyflakes Command") - -(defcustom py-pyflakes-command-args '("") - "List of string arguments to be passed to pyflakes. - -Default is \"\" " - :type '(repeat string) - :group 'python-mode - :tag "Pyflakes Command Args") - -(defcustom py-pep8-command-args '("") - "List of string arguments to be passed to pylint. - -Default is \"\" " - :type '(repeat string) - :group 'python-mode - :tag "PEP 8 Command Args") - -(defcustom py-pylint-command "pylint" - "Shell command used to run Pylint." - :type 'string - :group 'python-mode - :tag "Pylint Command") - -(defcustom py-pylint-command-args '("--errors-only") - "List of string arguments to be passed to pylint. - -Default is \"--errors-only\" " - :type '(repeat string) - :group 'python-mode - :tag "Pylint Command Args") - -(defcustom py-shell-input-prompt-1-regexp "^>>> " - "A regular expression to match the input prompt of the shell." - :type 'string - :group 'python-mode) - -(defcustom py-shell-input-prompt-2-regexp "^[.][.][.] " - "A regular expression to match the input prompt of the shell after the - first line of input." - :type 'string - :group 'python-mode) - -(defcustom py-max-specpdl-size max-specpdl-size - "Heuristic exit. Limiting number of recursive calls by py-end-of-statement and related functions. Default is max-specpdl-size. - -This treshold is just an approximation. It might set far higher maybe. - -See lp:1235375. In case code is not to navigate due to errors, `which-function-mode' and others might make Emacs hang. Rather exit than. " - - :type 'number - :group 'python-mode) - -(defcustom py-shell-prompt-read-only t - "If non-nil, the python prompt is read only. Setting this -variable will only effect new shells." - :type 'boolean - :group 'python-mode) - -(defcustom py-fileless-buffer-use-default-directory-p t - "When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shell" - :type 'boolean - :group 'python-mode) - -(defcustom py-keep-shell-dir-when-execute-p nil - "Don't change Python shell's current working directory when sending code. - -See also `py-execute-directory'" - :type 'boolean - :group 'python-mode) - -(defcustom py-switch-buffers-on-execute-p nil - "When non-nil switch to the Python output buffer. " - - :type 'boolean - :group 'python-mode) - -(defcustom py-split-windows-on-execute-p t - "When non-nil split windows. " - :type 'boolean - :group 'python-mode) - -(defcustom py-max-split-windows 2 - "When split windows is enabled the maximum windows to allow - before reusing other windows." - :type 'number - :group 'python-mode) - -(defcustom py-split-windows-on-execute-function 'split-window-vertically - "How window should get splitted to display results of py-execute-... functions. " - :type '(choice (const :tag "split-window-vertically" split-window-vertically) - (const :tag "split-window-horizontally" split-window-horizontally) - ) - :group 'python-mode) -(make-variable-buffer-local 'py-split-windows-on-execute-function) - -(defcustom py-hide-show-keywords - '("class" "def" "elif" "else" "except" - "for" "if" "while" "finally" "try" - "with") - "Keywords composing visible heads. -Also used by (minor-)outline-mode " - :type '(repeat string) - :group 'python-mode) - -(defcustom py-hide-show-hide-docstrings t - "Controls if doc strings can be hidden by hide-show" - :type 'boolean - :group 'python-mode) - -(defcustom py-paragraph-fill-docstring-p nil - "If `py-fill-paragraph', when inside a docstring, should fill the complete string. - -Default is nil. - -Convenient use of `M-q' inside docstrings -See also `py-docstring-style' -" - - :type 'boolean - :group 'python-mode) -(make-variable-buffer-local 'py-paragraph-fill-docstring-p) - -(defcustom python-mode-hook nil - "Hook run when entering Python mode." - :group 'python-mode - :type 'hook) - -(defcustom py-imenu-create-index-p nil - "Non-nil means Python mode creates and displays an index menu of functions and global variables. " - :type 'boolean - :group 'python-mode) - -(defcustom py-imenu-create-index-function 'py-imenu-create-index-new - "Switch between `py-imenu-create-index-new', which also lists modules variables, and series 5. index-machine" - :type '(choice (const :tag "'py-imenu-create-index-new, also lists modules variables " py-imenu-create-index-new) - (const :tag "py-imenu-create-index, series 5. index-machine" py-imenu-create-index-function)) - :group 'python-mode) - -(defcustom py-shell-name "python" - "A PATH/TO/EXECUTABLE or default value `py-shell' may look for, if no shell is specified by command. " - :type 'string - :group 'python-mode) -(make-variable-buffer-local 'py-shell-name) -(defvaralias 'py-python-command 'py-shell-name) - -(defcustom py-shell-toggle-1 py-shell-name - "A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. " - :type 'string - :group 'python-mode) -(make-variable-buffer-local 'py-shell-toggle-1) - -(defcustom py-shell-toggle-2 "python3" - "A PATH/TO/EXECUTABLE or default value used by `py-toggle-shell'. " - :type 'string - :group 'python-mode) -(make-variable-buffer-local 'py-shell-toggle-2) - -(defcustom py-match-paren-mode nil - "Non-nil means, cursor will jump to beginning or end of a block. -This vice versa, to beginning first. -Sets `py-match-paren-key' in python-mode-map. -Customize `py-match-paren-key' which key to use. " - :type 'boolean - :group 'python-mode) - -(defcustom py-match-paren-key "%" - "String used by \\[comment-region] to comment out a block of code. -This should follow the convention for non-indenting comment lines so -that the indentation commands won't get confused (i.e., the string -should be of the form `#x...' where `x' is not a blank or a tab, and -`...' is arbitrary). However, this string should not end in whitespace." - :type 'string - :group 'python-mode) - -(defcustom py-kill-empty-line t - "If t, py-indent-forward-line kills empty lines. " - :type 'boolean - :group 'python-mode) - -(defcustom py-remove-cwd-from-path t - "Whether to allow loading of Python modules from the current directory. -If this is non-nil, Emacs removes '' from sys.path when starting -an inferior Python process. This is the default, for security -reasons, as it is easy for the Python process to be started -without the user's realization (e.g. to perform completion)." - :type 'boolean - :group 'python-mode) - -(defcustom py-imenu-show-method-args-p nil - "Controls echoing of arguments of functions & methods in the Imenu buffer. -When non-nil, arguments are printed." - :type 'boolean - :group 'python-mode) - -(defcustom py-history-filter-regexp "\\`\\s-*\\S-?\\S-?\\s-*\\'" - "Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters." - :type 'regexp - :group 'python-mode) - -(defcustom inferior-python-filter-regexp "\\`\\s-*\\S-?\\S-?\\s-*\\'" - "Input matching this regexp is not saved on the history list. -Default ignores all inputs of 0, 1, or 2 non-blank characters." - :type 'regexp - :group 'python-mode) - -(defcustom py-set-complete-keymap-p nil - "If `py-complete-initialize', which sets up enviroment for Pymacs based py-complete, should load it's keys into `python-mode-map' - -Default is nil. -See also resp. edit `py-complete-set-keymap' " - - :type 'boolean - :group 'python-mode) - -(defcustom py-use-local-default nil - "If `t', py-shell will use `py-shell-local-path' instead - of default Python. - -Making switch between several virtualenv's easier, - `python-mode' should deliver an installer, so named-shells pointing to virtualenv's will be available. " - :type 'boolean - :group 'python-mode) - -(defcustom py-highlight-error-source-p nil - "When py-execute-... commands raise an error, respective code in source-buffer will be highlighted. Default is nil. - -M-x `py-remove-overlays-at-point' removes that highlighting. - " - :type 'boolean - :group 'python-mode) - -(defcustom py-set-pager-cat-p nil - "If the shell environment variable $PAGER should set to `cat'. - -If `t', use `C-c C-r' to jump to beginning of output. Then scroll normally. - -Avoids lp:783828, \"Terminal not fully functional\", for help('COMMAND') in python-shell - -When non-nil, imports module `os' " - - :type 'boolean - :group 'python-mode) - -(defcustom py-prompt-on-changed-p t - "When called interactively, ask for save before a changed buffer is sent to interpreter. - -Default is `t'" - - :type 'boolean - :group 'python-mode) - -(defcustom py-dedicated-process-p nil - "If commands executing code use a dedicated shell. - -Default is nil") - -(defcustom py-shell-local-path "" - "If `py-use-local-default' is non-nil, `py-shell' will use EXECUTABLE indicated here incl. path. " - - :type 'string - :group 'python-mode) - -(defcustom py-edit-only-p nil - "When `t' `python-mode' will not take resort nor check for installed Python executables. Default is nil. - -See bug report at launchpad, lp:944093. " - :type 'boolean - :group 'python-mode) - -(defcustom py-force-py-shell-name-p nil - "When `t', execution with kind of Python specified in `py-shell-name' is enforced, possibly shebang doesn't take precedence. " - - :type 'boolean - :group 'python-mode) - -(defcustom python-mode-v5-behavior-p nil - "Execute region through `shell-command-on-region' as -v5 did it - lp:990079. This might fail with certain chars - see UnicodeEncodeError lp:550661" - - :type 'boolean - :group 'python-mode) - -(defcustom py-trailing-whitespace-smart-delete-p nil - "Default is nil. When t, python-mode calls - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local) - -Also commands may delete trailing whitespace by the way. -When editing other peoples code, this may produce a larger diff than expected " - :type 'boolean - :group 'python-mode) - -(defcustom py-newline-delete-trailing-whitespace-p t - "Delete trailing whitespace maybe left by `py-newline-and-indent'. - -Default is `t'. See lp:1100892 " - :type 'boolean - :group 'python-mode) - -(defcustom py-warn-tmp-files-left-p nil - "Messages a warning, when `py-temp-directory' contains files susceptible being left by previous Python-mode sessions. See also lp:987534 " - :type 'boolean - :group 'python-mode) - -(defcustom py-ipython-execute-delay 0.3 - "Delay needed by execute functions when no IPython shell is running. " - :type 'float - :group 'python-mode) - -(defcustom python-shell-buffer-name "Python" - "Default buffer name for Python interpreter." - :type 'string - :group 'python-mode) - -(defcustom python-shell-interpreter "python" - "Default Python interpreter for shell." - :type 'string - :group 'python-mode) - -(defcustom python-shell-prompt-regexp ">>> " - "Regular Expression matching top\-level input prompt of python shell. -It should not contain a caret (^) at the beginning." - :type 'string - :group 'python-mode) - -(defvar py-ffap-p nil) -(defvar py-ffap nil) -(defvar python-ffap nil) -(defvar ffap-alist nil) - -(defun py-set-ffap-form () - (cond ((and py-ffap-p py-ffap) - (eval-after-load "ffap" - '(push '(python-mode . py-module-path) ffap-alist)) - (setq ffap-alist (remove '(python-mode . py-ffap-module-path) ffap-alist)) - (setq ffap-alist (remove '(inferior-python-mode . py-ffap-module-path) - ffap-alist))) - (t (setq ffap-alist (remove '(python-mode . py-ffap-module-path) ffap-alist)) - (setq ffap-alist (remove '(inferior-python-mode . py-ffap-module-path) - ffap-alist)) - (setq ffap-alist (remove '(python-mode . py-module-path) ffap-alist))))) - -(defcustom py-ffap-p nil - - "Select python-modes way to find file at point. - -Default is nil " - - :type '(choice - (const :tag "default" nil) - (const :tag "use py-ffap" py-ffap)) - :group 'python-mode - :set (lambda (symbol value) - (set-default symbol value) - (py-set-ffap-form))) - -(defcustom python-ffap-setup-code - "def __FFAP_get_module_path(module): - try: - import os - path = __import__(module).__file__ - if path[-4:] == '.pyc' and os.path.exists(path[0:-1]): - path = path[:-1] - return path - except: - return ''" - "Python code to get a module path." - :type 'string - :group 'python-mode) - -(defcustom py-ffap-string-code - "__FFAP_get_module_path('''%s''')\n" - "Python code used to get a string with the path of a module." - :type 'string - :group 'python-mode) - -(defcustom py-eldoc-setup-code - "def __PYDOC_get_help(obj): - try: - import inspect - if hasattr(obj, 'startswith'): - obj = eval(obj, globals()) - 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: - exec('print doc') - except SyntaxError: - print(doc)" - "Python code to setup documentation retrieval." - :type 'string - :group 'python-mode) - -(defcustom py-setup-codes '(python-shell-completion-setup-code - python-ffap-setup-code - py-eldoc-setup-code) - "List of code run by `py-shell-send-setup-codes'." - :type '(repeat symbol) - :group 'python-mode) - -(defcustom py-shell-prompt-regexp ">>> " - "Regular Expression matching top\-level input prompt of python shell. -It should not contain a caret (^) at the beginning." - :type 'string - :group 'python-mode) -(defvar py-shell-prompt-regexp ">>> ") - -(defcustom python-shell-completion-setup-code - "try: - import readline -except ImportError: - def __COMPLETER_all_completions(text): [] -else: - import rlcompleter - readline.set_completer(rlcompleter.Completer().complete) - def __COMPLETER_all_completions(text): - import sys - completions = [] - try: - i = 0 - while True: - res = readline.get_completer()(text, i) - if not res: break - i += 1 - completions.append(res) - except NameError: - pass - return completions" - "Code used to setup completion in inferior Python processes." - :type 'string - :group 'python-mode) - -(defcustom python-shell-module-completion-string-code "" - "Python code used to get completions separated by semicolons for imports. - -For IPython v0.11, add the following line to -`python-shell-completion-setup-code': - -from IPython.core.completerlib import module_completion - -and use the following as the value of this variable: - -';'.join(module_completion('''%s'''))" - :type 'string - :group 'python-mode) - -(defcustom strip-chars-before "\\`[ \t\r\n]*" - "Regexp indicating which chars shall be stripped before STRING - which is defined by `string-chars-preserve'." - - :type 'string - :group 'convenience) - -(defcustom strip-chars-after "[ \t\r\n]*\\'" - "Regexp indicating which chars shall be stripped after STRING - which is defined by `string-chars-preserve'." - - :type 'string - :group 'convenience) - -(defcustom py-docstring-style 'pep-257-nn - "Implemented styles are DJANGO, ONETWO, PEP-257, PEP-257-NN, -SYMMETRIC, and NIL. - -A value of NIL won't care about quotes -position and will treat docstrings a normal string, any other -value may result in one of the following docstring styles: - -DJANGO: - - \"\"\" - Process foo, return bar. - \"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -ONETWO: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -PEP-257: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -PEP-257-NN: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -SYMMETRIC: - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\"" - :type '(choice - (const :tag "Don't format docstrings" nil) - (const :tag "Django's coding standards style." django) - (const :tag "One newline and start and Two at end style." onetwo) - (const :tag "PEP-257 with 2 newlines at end of string." pep-257) - (const :tag "PEP-257 with 1 newline at end of string." pep-257-nn) - (const :tag "Symmetric style." symmetric)) - :group 'python-mode) - -;; Faces -(defface py-number-face - '((t (:inherit default))) - ;; '((t (:inherit 'font-lock-variable-name-face))) - "Highlight numbers. " - :group 'python-mode) -(defvar py-number-face 'py-number-face) - -(defface py-XXX-tag-face - '((t (:inherit font-lock-string-face))) - "XXX\\|TODO\\|FIXME " - :group 'python-mode) -(defvar py-XXX-tag-face 'py-XXX-tag-face) - -;; Face for None, True, False, self, and Ellipsis -(defface py-pseudo-keyword-face - '((t (:inherit font-lock-keyword-face))) - "Face for pseudo keywords in Python mode, like self, True, False, Ellipsis." - :group 'python-mode) -(defvar py-pseudo-keyword-face 'py-pseudo-keyword-face) - -(defface py-variable-name-face - '((t (:inherit default))) - ;; '((t (:inherit 'font-lock-variable-name-face))) - "Face method decorators." - :group 'python-mode) -(defvar py-variable-name-face 'py-variable-name-face) - -;; PEP 318 decorators -(defface py-decorators-face - '((t (:inherit font-lock-keyword-face))) - "Face method decorators." - :group 'python-mode) -(defvar py-decorators-face 'py-decorators-face) - -;; Face for builtins -(defface py-builtins-face - '((t (:inherit font-lock-builtin-face))) - "Face for builtins like TypeError, object, open, and exec." - :group 'python-mode) -(defvar py-builtins-face 'py-builtins-face) - -(defface py-class-name-face - '((t (:inherit font-lock-type-face))) - "Face for classes." - :group 'python-mode) -(defvar py-class-name-face 'py-class-name-face) - -;; XXX, TODO, and FIXME comments and such -(defface py-exception-name-face - '((t (:inherit font-lock-builtin-face))) - "." - :group 'python-mode) -(defvar py-exception-name-face 'py-exception-name-face) - -(defvar virtualenv-old-path) - -(defvar virtualenv-old-exec-path) - -(defvar py-underscore-word-syntax-p t - "This is set later by defcustom, only initial value here. - -If underscore chars should be of syntax-class `word', not of `symbol'. -Underscores in word-class makes `forward-word' etc. travel the indentifiers. Default is `t'. -See also command `toggle-py-underscore-word-syntax-p' ") - -(defvar python-mode-message-string "python-mode.el" - "Reports the python-mode branch in use.") - -(defvar py-local-command nil - "Returns locally used executable-name. ") -(make-variable-buffer-local 'py-local-command) - -(defvar py-this-abbrevs-changed nil - "Internally used by python-mode-hook") - -(defvar py-local-versioned-command nil - "Returns locally used executable-name including its version. ") -(make-variable-buffer-local 'py-local-versioned-command) - -(defvar py-preoutput-leftover nil) -(defvar py-preoutput-skip-next-prompt nil) - -(defvar py-shell-complete-debug nil - "For interal use when debugging." ) - -(defcustom py-debug-p nil - "When non-nil, keep resp. store information useful for debugging. - -Temporary files are not deleted. Other functions might implement -some logging etc. " - :type 'boolean - :group 'python-mode) - -(defvar py-encoding-string-re "^[ \t]*#[ \t]*-\\*-[ \t]*coding:.+-\\*-" - "Matches encoding string of a Python file. ") - -(defvar symbol-definition-start-re) -(setq symbol-definition-start-re "^[ \t]*(\\(defun\\|defvar\\|defcustom\\)") - -(defvar py-shebang-regexp "#![ \t]?\\([^ \t\n]+\\)[ \t]*\\([biptj]+ython[^ \t\n]*\\)" - "Detecting the shell in head of file. ") - -(defvar py-separator-char 47 - "Values set by defcustom only will not be seen in batch-mode. ") - -(defvar py-temp-directory - (let ((ok '(lambda (x) - (and x - (setq x (expand-file-name x)) ; always true - (file-directory-p x) - (file-writable-p x) - x))) - erg) - (or - (and (not (string= "" py-custom-temp-directory)) - (if (funcall ok py-custom-temp-directory) - (setq erg (expand-file-name py-custom-temp-directory)) - (if (file-directory-p (expand-file-name py-custom-temp-directory)) - (error "py-custom-temp-directory set but not writable") - (error "py-custom-temp-directory not an existing directory")))) - (and (funcall ok (getenv "TMPDIR")) - (setq erg (getenv "TMPDIR"))) - (and (funcall ok (getenv "TEMP/TMP")) - (setq erg (getenv "TEMP/TMP"))) - (and (funcall ok "/usr/tmp") - (setq erg "/usr/tmp")) - (and (funcall ok "/tmp") - (setq erg "/tmp")) - (and (funcall ok "/var/tmp") - (setq erg "/var/tmp")) - (and (eq system-type 'darwin) - (funcall ok "/var/folders") - (setq erg "/var/folders")) - (and (or (eq system-type 'ms-dos)(eq system-type 'windows-nt)) - (funcall ok (concat "c:" py-separator-char "Users")) - (setq erg (concat "c:" py-separator-char "Users"))) - ;; (funcall ok ".") - (error - "Couldn't find a usable temp directory -- set `py-temp-directory'")) - (when erg (setq py-temp-directory erg))) - "Directory used for temporary files created by a *Python* process. -By default, guesses the first directory from this list that exists and that you -can write into: the value (if any) of the environment variable TMPDIR, -/usr/tmp, /tmp, /var/tmp, or the current directory. - -`py-custom-temp-directory' will take precedence when setq ") - -(defvar py-exec-command nil - "Internally used. ") -(make-variable-buffer-local 'py-exec-command) - -(defvar py-buffer-name nil - "Internal use. ") - -(defvar py-orig-buffer-or-file nil - "Internal use. ") - -(defvar py-python-major-version nil - "Internally used. ") -(make-variable-buffer-local 'py-python-major-version) - -(defvar py-exec-string-command nil - "Mode commands will set this. ") -(make-variable-buffer-local 'py-exec-string-command) - -(defvar py-which-bufname "Python") -(make-variable-buffer-local 'py-which-bufname) - -(defvar py-pychecker-history nil) - -(defvar py-pep8-history nil) - -(defvar py-pyflakespep8-history nil) - -(defvar py-pyflakes-history nil) - -(defvar py-pylint-history nil) - -(defvar ipython-de-input-prompt-regexp "In \\[[0-9]+\\]:\\|^[ ]\\{3\\}[.]\\{3,\\}:" - "A regular expression to match the IPython input prompt. ") - -;; make sure it's set that way -(setq ipython-de-input-prompt-regexp "In \\[[0-9]+\\]:\\|^[ ]\\{3\\}[.]\\{3,\\}:") - -(defvar ipython-de-output-prompt-regexp "^Out\\[[0-9]+\\]: " - "A regular expression to match the output prompt of IPython.") - -(defvar py-force-local-shell-p nil - "Used internally, see `toggle-force-local-shell'. ") - -(defvar python-mode-v5-behavior nil) - -(defvar py-bol-forms-last-indent nil - "For internal use. Stores indent from last py-end-of-FORM-bol command. -When this-command is py-beginning-of-FORM-bol, last-command's indent will be considered in order to jump onto right beginning position.") - -;; Skip's XE workaround -(unless (fboundp 'string-to-syntax) - (defun string-to-syntax (s) - (cond - ((equal s "|") '(15)) - ((equal s "_") '(3)) - (t (error "Unhandled string: %s" s))))) - -(defvar python-mode-syntax-table nil - "Syntax table for Python files.") - -(setq python-mode-syntax-table - (let ((table (make-syntax-table))) - ;; Give punctuation syntax to ASCII that normally has symbol - ;; syntax or has word syntax and isn't a letter. - (let ((symbol (string-to-syntax "_")) - (sst (standard-syntax-table))) - (dotimes (i 128) - (unless (= i ?_) - (if (equal symbol (aref sst i)) - (modify-syntax-entry i "." table))))) - (modify-syntax-entry ?$ "." table) - (modify-syntax-entry ?% "." table) - ;; exceptions - (modify-syntax-entry ?# "<" table) - (modify-syntax-entry ?\n ">" table) - (modify-syntax-entry ?' "\"" table) - (modify-syntax-entry ?` "$" table) - (if py-underscore-word-syntax-p - (modify-syntax-entry ?\_ "w" table) - (modify-syntax-entry ?\_ "_" table)) - table)) - -(defvar py-dotted-expression-syntax-table - (let ((table (make-syntax-table python-mode-syntax-table))) - (modify-syntax-entry ?_ "_" table) - (modify-syntax-entry ?. "_" table) - table) - "Syntax table used to identify Python dotted expressions.") - -(defvar eldoc-documentation-function) - -(defvar py-completion-last-window-configuration nil - "Internal use: restore py-restore-window-configuration when completion is done resp. abandoned. ") - -(defvar ipython-version nil) - -(defvaralias 'py-python-command 'py-shell-name) - -(defvaralias 'py-jpython-command 'py-shell-name) - -(defvaralias 'py-jython-command 'py-shell-name) - -(defvaralias 'py-default-interpreter 'py-shell-name) - -;; (defvaralias 'python-command 'py-shell-name) - -(defvar py-shell-template " -\(defun NAME (&optional argprompt) - \"Start an DOCNAME interpreter in another window. - -With optional \\\\[universal-argument] user is prompted -for options to pass to the DOCNAME interpreter. \" - (interactive \"P\") - (let\* ((py-shell-name \"FULLNAME\")) - (py-shell argprompt) - (when (interactive-p) (switch-to-buffer (current-buffer)) - (goto-char (point-max))))) -") - -(defcustom py-execute-directory nil - "When set, stores the file's default directory-name py-execute-... functions act upon. - -Used by Python-shell for output of `py-execute-buffer' and related commands. See also `py-use-current-dir-when-execute-p'" - :type 'string - :group 'python-mode) - -(defcustom py-use-current-dir-when-execute-p t - "When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands. - -See also `py-execute-directory'" - :type 'boolean - :group 'python-mode) - -(defcustom py-shell-prompt-output-regexp "" - "Regular Expression matching output prompt of python shell. -It should not contain a caret (^) at the beginning." - :type 'string - :group 'python-mode - ) - -(defcustom py-keep-windows-configuration nil - "If a windows is splitted displaying results, this is directed by variable `py-split-windows-on-execute-p'. Also setting `py-switch-buffers-on-execute-p' affects window-configuration. While commonly a screen splitted into source and Python-shell buffer is assumed, user may want to keep a different config. - -See lp:1239498 - -Setting `py-keep-windows-configuration' to `t' will restore windows-config regardless of settings mentioned above. However, if an error occurs, it's displayed. - -To suppres window-changes due to error-signaling also, set `py-keep-windows-configuration' onto 'force - -Default is nil " - - :type '(choice - (const :tag "nil" nil) - (const :tag "t" t) - (const :tag "force" 'force)) - :group 'python-mode) - -(defcustom py-output-buffer "*Python Output*" - "When `py-enforce-output-buffer-p' is non-nil, provides the -default for output-buffer. " - :type 'string - :group 'python-mode) -(make-variable-buffer-local 'py-output-buffer) - -(defcustom py-enforce-output-buffer-p nil - "When non-nil, current value of `py-output-buffer' is used for output, -regardless of environment. Default is nil" - - :type 'boolean - :group 'python-mode) - -(defvar py-exception-buffer nil - "Set internally, remember source buffer where error might occur. ") - -(defvar py-string-delim-re "\\(\"\"\"\\|'''\\|\"\\|'\\)" - "When looking at beginning of string. ") - -(defvar py-labelled-re "[ \\t]*:[[:print:]]+" - "When looking at label. ") - -(defvar py-expression-skip-regexp "[^ (=:#\t\r\n\f]" - "py-expression assumes chars indicated possible composing a py-expression, skip it. ") - -(defvar py-expression-skip-chars "^ (:=#\t\r\n\f" - "py-expression assumes chars indicated possible composing a py-expression, skip it. ") - -(defvar py-expression-re "[^ =:#\t\r\n\f]+" - "py-expression assumes chars indicated possible composing a py-expression, when looking-at or -back. ") - -(defvar py-not-expression-regexp "[ .=:#\t\r\n\f)]" - "py-expression assumes chars indicated probably will not compose a py-expression. ") - -(defvar py-not-expression-chars " .=#\t\r\n\f" - "py-expression assumes chars indicated probably will not compose a py-expression. ") - -(defvar py-partial-expression-backward-chars "^ ,\"'()[]{}:#\t\r\n\f" - "py-partial-expression assumes chars indicated possible composing a py-partial-expression, skip it. ") -;; (setq py-partial-expression-backward-chars "^ ,\"'([{:#\t\r\n\f") - -(defvar py-partial-expression-forward-chars "^ \"')}]:#\t\r\n\f") -;; (setq py-partial-expression-forward-chars "^ \"')}]:#\t\r\n\f") - -(defvar py-partial-expression-regexp "[^ .=:#\t\r\n\f]" - "py-partial-expression assumes chars indicated possible composing a py-partial-expression, when looking-at or -back. ") - -(defvar py-not-partial-expression-regexp "[ .=:#\t\r\n\f)]" - "py-partial-expression assumes chars indicated probably will not compose a py-partial-expression. ") - -(defvar py-operator-regexp "[ \t]*\\(\\.\\|+\\|-\\|*\\|//\\|//\\|&\\|%\\||\\|\\^\\|>>\\|<<\\|<\\|<=\\|>\\|>=\\|==\\|!=\\)[ \t]*" - "Matches most of Python operators inclusive whitespaces around. - -See also `py-assignment-regexp' ") - -(defvar py-assignment-regexp "[ \t]*=[^=]" - "Matches assignment operator inclusive whitespaces around. - -See also `py-operator-regexp' ") - -(defvar py-delimiter-regexp "\\(,\\|;\\|:\\)[ \t\n]" - "Delimiting elements of lists or other programming constructs. ") - -(defvar py-delimiter-chars ",;." - "Chars delimiting elements of lists or other programming constructs. ") - -(defvar py-line-number-offset 0 - "When an exception occurs as a result of py-execute-region, a -subsequent py-up-exception needs the line number where the region -started, in order to jump to the correct file line. This variable is -set in py-execute-region and used in py-jump-to-exception.") - -(defvar match-paren-no-use-syntax-pps nil) - -(defvar py-traceback-line-re - "[ \t]+File \"\\([^\"]+\\)\", line \\([0-9]+\\)" - "Regular expression that describes tracebacks.") - -(defvar py-preoutput-result nil - "Data from last `_emacs_out' line seen by the preoutput filter.") - -(defvar py-file-queue nil - "Queue of Python temp files awaiting execution. -Currently-active file is at the head of the list.") - -(defvar python-mode-abbrev-table nil) - -(defvar inferior-python-mode-abbrev-table nil - "Not in use.") - -(defvar py-pdbtrack-input-prompt) - -(defvar py-pydbtrack-input-prompt) - -(defvar py-pdbtrack-is-tracking-p nil) - -(defvar py-shell-map nil - "Keymap used in *Python* shell buffers.") - -(defvar py-font-lock-keywords nil - "Additional expressions to highlight in Python mode.") - -(defvar jython-mode-hook nil - "Hook called by `jython-mode'. `jython-mode' also calls -`python-mode-hook'.") - -(defvar py-shell-hook nil - "Hook called by `py-shell'.") - -(defvar ipython-completion-command-string nil - "Either ipython0.10-completion-command-string or ipython0.11-completion-command-string. - -ipython0.11-completion-command-string also covers version 0.12") - -(defvar ipython0.10-completion-command-string - "print(';'.join(__IP.Completer.all_completions('%s'))) #PYTHON-MODE SILENT\n" - "The string send to ipython to query for all possible completions") - -(defvar ipython0.11-completion-command-string - "print(';'.join(get_ipython().Completer.all_completions('%s'))) #PYTHON-MODE SILENT\n" - "The string send to ipython to query for all possible completions") - -(defvar py-last-exeption-buffer nil - "Internal use only - when `py-up-exception' is called in -source-buffer, this will deliver the exception-buffer again. ") - -(defvar py-preoutput-result nil - "Data from last `_emacs_out' line seen by the preoutput filter.") - -(defvar py-import nil) - -(defvar py-imenu-class-regexp - (concat ; <> - "\\(" ; - "^[ \t]*" ; newline and maybe whitespace - "\\(class[ \t]+[a-zA-Z0-9_]+\\)" ; class name - ; possibly multiple superclasses - "\\([ \t]*\\((\\([a-zA-Z0-9_,. \t\n]\\)*)\\)?\\)" - "[ \t]*:" ; and the final : - "\\)" ; >>classes<< - ) - "Regexp for Python classes for use with the Imenu package.") - -(defvar py-imenu-method-regexp - (concat ; <> - "\\(" ; - "^[ \t]*" ; new line and maybe whitespace - "\\(def[ \t]+" ; function definitions start with def - "\\([a-zA-Z0-9_]+\\)" ; name is here - ; function arguments... - ;; "[ \t]*(\\([-+/a-zA-Z0-9_=,\* \t\n.()\"'#]*\\))" - "[ \t]*(\\([^:#]*\\))" - "\\)" ; end of def - "[ \t]*:" ; and then the : - "\\)" ; >>methods and functions<< - ) - "Regexp for Python methods/functions for use with the Imenu package.") - -(defvar py-imenu-method-no-arg-parens '(2 8) - "Indices into groups of the Python regexp for use with Imenu. - -Using these values will result in smaller Imenu lists, as arguments to -functions are not listed. - -See the variable `py-imenu-show-method-args-p' for more -information.") - -(defvar py-imenu-method-arg-parens '(2 7) - "Indices into groups of the Python regexp for use with imenu. -Using these values will result in large Imenu lists, as arguments to -functions are listed. - -See the variable `py-imenu-show-method-args-p' for more -information.") - -(defvar py-imenu-generic-expression - (cons - (concat - py-imenu-class-regexp - "\\|" ; or... - py-imenu-method-regexp) - py-imenu-method-no-arg-parens) - "Generic Python expression which may be used directly with Imenu. -Used by setting the variable `imenu-generic-expression' to this value. -Also, see the function \\[py-imenu-create-index] for a better -alternative for finding the index.") - -(defvar py-imenu-generic-regexp nil) - -(defvar py-imenu-generic-parens nil) - -(defvar imenu-max-items) - -(defvar py-mode-output-map nil - "Keymap used in *Python Output* buffers.") - -(defvar inferior-python-mode-map - (let ((map (copy-keymap comint-mode-map))) - ;; (substitute-key-definition 'complete-symbol 'py-shell-complete map global-map) - (substitute-key-definition 'complete-symbol 'completion-at-point map global-map) - (define-key map (kbd "RET") 'comint-send-input) - (and py-complete-function - (define-key map [tab] 'py-complete-function)) - (define-key map "\C-c-" 'py-up-exception) - (define-key map "\C-c=" 'py-down-exception) - map)) - -(defvar py-menu) - -(defvar py-already-guessed-indent-offset nil - "Internal use by py-indent-line. - -When `this-command' is `eq' to `last-command', use the guess already computed. ") -(make-variable-buffer-local 'py-already-guessed-indent-offset) - -(defvar skeleton-further-elements) - -;; (set (make-local-variable 'beginning-o1f-defun-function) 'py-beginning-of-def-or-class) -;; (set (make-local-variable 'end-of-defun-function) 'py-end-of-def-or-class)) - -;; Add a designator to the minor mode strings -(or (assq 'py-pdbtrack-is-tracking-p minor-mode-alist) - (push '(py-pdbtrack-is-tracking-p py-pdbtrack-minor-mode-string) - minor-mode-alist)) -(defvar inferior-python-mode-syntax-table - (let ((st (make-syntax-table python-mode-syntax-table))) - ;; Don't get confused by apostrophes in the process's output (e.g. if - ;; you execute "help(os)"). - (modify-syntax-entry ?\' "." st) - ;; Maybe we should do the same for double quotes? - ;; (modify-syntax-entry ?\" "." st) - st)) - -(defvar py-imports nil) - -(defvar smart-operator-mode nil) -(defvar autopair-mode nil) - -(defvar highlight-indent-active nil) -(defvar highlight-indentation nil - "Menu PyEdit fails when not bound") -(make-variable-buffer-local 'highlight-indentation) - -;;(eval-when-compile (load (concat (py-normalize-directory py-install-directory) "extensions" py-separator-char "highlight-indentation.el"))) - -;;; Constants -(defconst py-blank-or-comment-re "[ \t]*\\($\\|#\\)" - "Regular expression matching a blank or comment line.") - -(defconst py-block-closing-keywords-re - "[ \t]*\\_<\\(return\\|raise\\|break\\|continue\\|pass\\)\\_>[ \n\t]" - "Matches the beginning of a class, method or compound statement. ") - -(defconst py-finally-re - "[ \t]*\\_[: \n\t]" - "Regular expression matching keyword which closes a try-block. ") - -(defconst py-except-re - "[ \t]*\\_[:( \n\t]*" - "Regular expression matching keyword which composes a try-block. ") - -(defconst py-else-re - "[ \t]*\\_[: \n\t]*" - "Regular expression matching keyword which closes a for- if- or try-block. ") - -(defconst py-return-re - ".*:?[ \t]*\\_<\\(return\\)\\_>[ \n\t]*" - "Regular expression matching keyword which typically closes a function. ") - -(defconst py-no-outdent-1-re-raw - (list - "elif" - "else" - "except" - "for" - "if" - "try" - "while" - )) - -(defconst py-no-outdent-2-re-raw - (list - "break" - "continue" - "pass" - "raise" - "return" - )) - -(defconst py-no-outdent-re - (concat - "[ \t]*\\_<\\(" - (regexp-opt py-no-outdent-1-re-raw) - "\\)\\_>[( \t]+.*:[( \t]\\_<\\(" - (regexp-opt py-no-outdent-2-re-raw) - "\\)\\_>[)\t]*$") - "Regular expression matching lines not to augment indent after. - -See py-no-outdent-1-re-raw, py-no-outdent-2-re-raw for better readable content ") - -(defconst py-assignment-re "\\_<\\w+\\_>[ \t]*\\(=\\|+=\\|*=\\|%=\\|&=\\|^=\\|<<=\\|-=\\|/=\\|**=\\||=\\|>>=\\|//=\\)" - "If looking at the beginning of an assignment. ") - -(defconst py-block-re "[ \t]*\\_<\\(class\\|def\\|for\\|if\\|try\\|while\\|with\\)\\_>[:( \n\t]*" - "Matches the beginning of a compound statement. ") - -(defconst py-minor-block-re "[ \t]*\\_<\\(for\\|if\\|try\\|with\\)\\_>[:( \n\t]*" - "Matches the beginning of an `for', `if', `try' or `with' block. ") - -(defconst py-try-block-re "[ \t]*\\_[: \n\t]" - "Matches the beginning of a `try' block. ") - -(defconst py-if-block-re "[ \t]*\\_[: \n\t]" - "Matches the beginning of an `if' block. ") - -(defconst py-class-re "[ \t]*\\_<\\(class\\)\\_>[ \n\t]" - "Matches the beginning of a class definition. ") - -(defconst py-def-or-class-re "[ \t]*\\_<\\(def\\|class\\)\\_>[ \n\t]" - "Matches the beginning of a class- or functions definition. ") - -(defconst py-def-re "[ \t]*\\_<\\(def\\)\\_>[ \n\t]" - "Matches the beginning of a functions definition. ") - -(defconst py-block-or-clause-re-raw - (list - "elif" - "else" - "except" - "finally" - "for" - "if" - "try" - "while" - "with") - "Matches the beginning of a compound statement or it's clause. ") - -(defvar py-block-or-clause-re - (concat - "[ \t]*\\_<\\(" - (regexp-opt py-block-or-clause-re-raw) - "\\)\\_>[( \t]*.*:?") - "See py-block-or-clause-re-raw, which it reads. ") - -(defconst py-extended-block-or-clause-re-raw - (list - "class" - "def" - "elif" - "else" - "except" - "finally" - "for" - "if" - "try" - "while" - "with") - "Matches the beginning of a compound statement or it's clause. ") - -(defconst py-extended-block-or-clause-re - (concat - "[ \t]*\\_<\\(" - (regexp-opt py-extended-block-or-clause-re-raw) - "\\)\\_>[( \t]*.*:?") - "See py-block-or-clause-re-raw, which it reads. ") - -(defconst py-top-level-form-re - (concat - "^\\_<[a-zA-Z_]\\|^\\_<\\(" - (regexp-opt py-extended-block-or-clause-re-raw) - "\\)\\_>[( \t]*.*:?") - "A form which starts at zero indent level, but is not a comment. ") - -(defconst py-block-keywords - (concat - "\\_<\\(" - (regexp-opt py-block-or-clause-re-raw) - "\\)\\_>") - "Matches known keywords opening a block. ") - -(defconst py-clause-re-raw - (list - "elif" - "else" - "except" - "finally" - ) - "Matches the beginning of a clause. ") - -(defconst py-clause-re - (concat - "[ \t]*\\_<\\(" - (regexp-opt py-clause-re-raw) - "\\)\\_>[( \t]*.*:?") - "See py-clause-re-raw, which it reads. ") - -(defconst py-elif-re "[ \t]*\\_<\\elif\\_>[:( \n\t]*" - "Matches the beginning of a compound if-statement's clause exclusively. ") - -(defconst py-try-clause-re - (concat - "[ \t]*\\_<\\(" - (mapconcat 'identity - (list - "else" - "except" - "finally") - "\\|") - "\\)\\_>[( \t]*.*:") - "Matches the beginning of a compound try-statement's clause. ") - -(defconst py-if-re "[ \t]*\\_[( \n\t]*" - "Matches the beginning of a compound statement saying `if'. ") - -(defconst py-try-re "[ \t]*\\_[:( \n\t]*" - "Matches the beginning of a compound statement saying `try'. " ) - -;;; Macro definitions -(defmacro py-in-string-or-comment-p () - "Returns beginning position if inside a string or comment, nil otherwise. " - `(or (nth 8 (syntax-ppss)) - (when (or (looking-at "\"")(looking-at "[ \t]*#[ \t]*")) - (match-beginning 0)))) - -(defmacro py-escaped () - "Return t if char is preceded by an odd number of backslashes. " - `(save-excursion - (< 0 (% (abs (skip-chars-backward "\\\\")) 2)))) - -(defmacro py-preceding-line-backslashed-p () - "Return t if preceding line is a backslashed continuation line. " - `(save-excursion - (beginning-of-line) - (skip-chars-backward " \t\r\n\f") - (and (eq (char-before (point)) ?\\ ) - (py-escaped)))) - -(defmacro py-current-line-backslashed-p () - "Return t if current line is a backslashed continuation line. " - `(save-excursion - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (and (eq (char-before (point)) ?\\ ) - (py-escaped)))) - -;;; Toggle -;; py-docstring-style forms -(defun toggle-py-nil-docstring-style (&optional arg) - "If nil docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style nil) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'nil) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-nil-docstring-style-on (&optional arg) - "Make sure, nil docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-nil-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-nil-docstring-style-off () - "Make sure, nil docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (toggle-py-nil-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun toggle-py-onetwo-docstring-style (&optional arg) - "If onetwo docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style 'onetwo) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'onetwo) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-onetwo-docstring-style-on (&optional arg) - "Make sure, onetwo docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-onetwo-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-onetwo-docstring-style-off () - "Make sure, onetwo docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (toggle-py-onetwo-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun toggle-py-pep-257-docstring-style (&optional arg) - "If pep-257 docstring-style should be on or off. - - Returns value of `py-pep-257-docstring-style' switched to. " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style 'pep-257) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'pep-257) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-pep-257-docstring-style-on (&optional arg) - "Make sure, pep-257 docstring-style' is on. - -Returns value of `py-pep-257-docstring-style'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-pep-257-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-pep-257-docstring-style-off () - "Make sure, pep-257 docstring-style is off. - -Returns value of `py-pep-257-docstring-style'. " - (interactive) - (toggle-py-pep-257-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun toggle-py-pep-257-nn-docstring-style (&optional arg) - "If pep-257-nn docstring-style should be on or off. - - Returns value of `py-pep-257-nn-docstring-style' switched to. " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style 'pep-257-nn) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'pep-257-nn) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-pep-257-nn-docstring-style-on (&optional arg) - "Make sure, pep-257-nn docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-pep-257-nn-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-pep-257-nn-docstring-style-off () - "Make sure, pep-257-nn docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (toggle-py-pep-257-nn-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun toggle-py-symmetric-docstring-style (&optional arg) - "If symmetric docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style 'symmetric) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'symmetric) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-symmetric-docstring-style-on (&optional arg) - "Make sure, symmetric docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-symmetric-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-symmetric-docstring-style-off () - "Make sure, symmetric docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (toggle-py-symmetric-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun toggle-py-django-docstring-style (&optional arg) - "If django docstring-style should be on or off. - - Returns value of `py-docstring-style' switched to. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg (if (eq py-docstring-style 'django) -1 1)))) - (if (< 0 arg) - (setq py-docstring-style 'django) - (setq py-docstring-style nil)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style)) - -(defun py-django-docstring-style-on (&optional arg) - "Make sure, django docstring-style' is on. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-django-docstring-style arg)) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -(defun py-django-docstring-style-off () - "Make sure, django docstring-style is off. - - Returns value of `py-docstring-style'. -To set permanently, customize this variable " - (interactive) - (toggle-py-django-docstring-style -1) - (when (or py-verbose-p (interactive-p)) (message "py-docstring-style: %s" py-docstring-style)) - py-docstring-style) - -;; py-underscore-word-syntax-p forms -(defun toggle-py-underscore-word-syntax-p (&optional arg) - "If `py-underscore-word-syntax-p' should be on or off. - - Returns value of `py-underscore-word-syntax-p' switched to. " - (interactive) - (let ((arg (or arg (if py-underscore-word-syntax-p -1 1)))) - (if (< 0 arg) - (progn - (setq py-underscore-word-syntax-p t) - (modify-syntax-entry ?\_ "w" python-mode-syntax-table)) - (setq py-underscore-word-syntax-p nil) - (modify-syntax-entry ?\_ "_" python-mode-syntax-table)) - (when (or py-verbose-p (interactive-p)) (message "py-underscore-word-syntax-p: %s" py-underscore-word-syntax-p)) - py-underscore-word-syntax-p)) - -(defun py-underscore-word-syntax-p-on (&optional arg) - "Make sure, py-underscore-word-syntax-p' is on. - -Returns value of `py-underscore-word-syntax-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-underscore-word-syntax-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-underscore-word-syntax-p: %s" py-underscore-word-syntax-p)) - py-underscore-word-syntax-p) - -(defun py-underscore-word-syntax-p-off () - "Make sure, `py-underscore-word-syntax-p' is off. - -Returns value of `py-underscore-word-syntax-p'. " - (interactive) - (toggle-py-underscore-word-syntax-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-underscore-word-syntax-p: %s" py-underscore-word-syntax-p)) - py-underscore-word-syntax-p) - -(defcustom py-underscore-word-syntax-p t - "If underscore chars should be of syntax-class `word', not of `symbol'. - -Underscores in word-class makes `forward-word' etc. travel the indentifiers. Default is `t'. - -See bug report at launchpad, lp:940812 " - :type 'boolean - :group 'python-mode - :set (lambda (symbol value) - (set-default symbol value) - (toggle-py-underscore-word-syntax-p (if value 1 0)))) - -;; py-electric-comment-p forms -(defun toggle-py-electric-comment-p (&optional arg) - "If `py-electric-comment-p' should be on or off. - - Returns value of `py-electric-comment-p' switched to. " - (interactive) - (let ((arg (or arg (if py-electric-comment-p -1 1)))) - (if (< 0 arg) - (setq py-electric-comment-p t) - (setq py-electric-comment-p nil)) - (when (or py-verbose-p (interactive-p)) (message "py-electric-comment-p: %s" py-electric-comment-p)) - py-electric-comment-p)) - -(defun py-electric-comment-p-on (&optional arg) - "Make sure, py-electric-comment-p' is on. - -Returns value of `py-electric-comment-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-electric-comment-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-electric-comment-p: %s" py-electric-comment-p)) - py-electric-comment-p) - -(defun py-electric-comment-p-off () - "Make sure, `py-electric-comment-p' is off. - -Returns value of `py-electric-comment-p'. " - (interactive) - (toggle-py-electric-comment-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-electric-comment-p: %s" py-electric-comment-p)) - py-electric-comment-p) - -;; toggle-force-local-shell -(defun toggle-force-local-shell (&optional arg) - "If locally indicated Python shell should be taken and -enforced upon sessions execute commands. - -Toggles boolean `py-force-local-shell-p' along with `py-force-py-shell-name-p' -Returns value of `toggle-force-local-shell' switched to. - -When on, kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards. - -See also commands -`py-force-local-shell-on' -`py-force-local-shell-off' - " - (interactive (list arg)) - (let ((arg (or arg (if py-force-local-shell-p -1 1)))) - (if (< 0 arg) - (progn - (setq py-shell-name (or py-local-command (py-choose-shell))) - (setq py-force-local-shell-p t)) - (setq py-shell-name (default-value 'py-shell-name)) - (setq py-force-local-shell-p nil)) - (when (interactive-p) - (if py-force-local-shell-p - (when py-verbose-p (message "Enforce %s" py-shell-name)) - (when py-verbose-p (message "py-shell-name default restored to: %s" py-shell-name)))) - py-shell-name)) - -(defun py-force-local-shell-on () - "Make sure, `py-py-force-local-shell-p' is on. - -Returns value of `py-force-local-shell-p'. - -Kind of an option 'follow', local shell sets `py-shell-name', enforces its use afterwards " - (interactive) - (let* ((erg (toggle-force-local-shell 1))) - (when (or py-verbose-p (interactive-p)) - (message "Enforce %s" py-shell-name)))) - -(defun py-force-local-shell-off () - "Restore `py-shell-name' default value and `behaviour'. " - (interactive) - (let* ((erg (toggle-force-local-shell 1))) - (when (or py-verbose-p (interactive-p)) - (message "py-shell-name default restored to: %s" py-shell-name) - (message "Enforce %s" py-shell-name)))) - -;; toggle-force-py-shell-name-p forms -(defun toggle-force-py-shell-name-p (&optional arg) - "If customized default `py-shell-name' should be enforced upon execution. - -If `py-force-py-shell-name-p' should be on or off. -Returns value of `py-force-py-shell-name-p' switched to. - -See also commands -force-py-shell-name-p-on -force-py-shell-name-p-off - -Caveat: Completion might not work that way. -" - (interactive "p") - (let ((arg (or arg (if py-force-py-shell-name-p -1 1)))) - (if (< 0 arg) - (setq py-force-py-shell-name-p t) - (setq py-force-py-shell-name-p nil)) - (when (or py-verbose-p (interactive-p)) (message "py-force-py-shell-name-p: %s" py-force-py-shell-name-p)) - py-force-py-shell-name-p)) - -(defun force-py-shell-name-p-on (&optional arg) - "Switches `py-force-py-shell-name-p' on. - -Customized default `py-shell-name' will be enforced upon execution. -Returns value of `py-force-py-shell-name-p'. - -Caveat: Completion might not work that way. -" - (interactive "p") - (let ((arg (or arg 1))) - (toggle-force-py-shell-name-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-force-py-shell-name-p: %s" py-force-py-shell-name-p)) - py-force-py-shell-name-p) - -(defun force-py-shell-name-p-off () - "Make sure, `py-force-py-shell-name-p' is off. - -Function to use by executes will be guessed from environment. -Returns value of `py-force-py-shell-name-p'. " - (interactive) - (toggle-force-py-shell-name-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-force-py-shell-name-p: %s" py-force-py-shell-name-p)) - py-force-py-shell-name-p) - -;; py-toggle-indent-tabs-mode -(defun py-toggle-indent-tabs-mode () - "Toggle `indent-tabs-mode'. - -Returns value of `indent-tabs-mode' switched to. " - (interactive) - (when - (setq indent-tabs-mode (not indent-tabs-mode)) - (setq tab-width py-indent-offset)) - (when (and py-verbose-p (interactive-p)) (message "indent-tabs-mode %s py-indent-offset %s" indent-tabs-mode py-indent-offset)) - indent-tabs-mode) - -(defun py-indent-tabs-mode-on (arg) - "Switch `indent-tabs-mode' on. " - (interactive "p") - (py-indent-tabs-mode (abs arg)(interactive-p))) - -(defun py-indent-tabs-mode-off (arg) - "Switch `indent-tabs-mode' off. " - (interactive "p") - (py-indent-tabs-mode (- (abs arg))(interactive-p))) - -;; py-jump-on-exception forms -(defun toggle-py-jump-on-exception (&optional arg) - "If `py-jump-on-exception' should be on or off. - - Returns value of `py-jump-on-exception' switched to. " - (interactive) - (let ((arg (or arg (if py-jump-on-exception -1 1)))) - (if (< 0 arg) - (setq py-jump-on-exception t) - (setq py-jump-on-exception nil)) - (when (or py-verbose-p (interactive-p)) (message "py-jump-on-exception: %s" py-jump-on-exception)) - py-jump-on-exception)) - -(defun py-jump-on-exception-on (&optional arg) - "Make sure, py-jump-on-exception' is on. - -Returns value of `py-jump-on-exception'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-jump-on-exception arg)) - (when (or py-verbose-p (interactive-p)) (message "py-jump-on-exception: %s" py-jump-on-exception)) - py-jump-on-exception) - -(defun py-jump-on-exception-off () - "Make sure, `py-jump-on-exception' is off. - -Returns value of `py-jump-on-exception'. " - (interactive) - (toggle-py-jump-on-exception -1) - (when (or py-verbose-p (interactive-p)) (message "py-jump-on-exception: %s" py-jump-on-exception)) - py-jump-on-exception) - -;; python-mode-v5-behavior-p forms -(defun toggle-python-mode-v5-behavior-p (&optional arg) - "If `python-mode-v5-behavior-p' should be on or off. - - Returns value of `python-mode-v5-behavior-p' switched to. " - (interactive) - (let ((arg (or arg (if python-mode-v5-behavior-p -1 1)))) - (if (< 0 arg) - (setq python-mode-v5-behavior-p t) - (setq python-mode-v5-behavior-p nil)) - (when (or py-verbose-p (interactive-p)) (message "python-mode-v5-behavior-p: %s" python-mode-v5-behavior-p)) - python-mode-v5-behavior-p)) - -(defun python-mode-v5-behavior-p-on (&optional arg) - "Make sure, `python-mode-v5-behavior-p' is on. - -Returns value of `python-mode-v5-behavior-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-python-mode-v5-behavior-p arg)) - (when (or py-verbose-p (interactive-p)) (message "python-mode-v5-behavior-p: %s" python-mode-v5-behavior-p)) - python-mode-v5-behavior-p) - -(defun python-mode-v5-behavior-p-off () - "Make sure, `python-mode-v5-behavior-p' is off. - -Returns value of `python-mode-v5-behavior-p'. " - (interactive) - (toggle-python-mode-v5-behavior-p -1) - (when (or py-verbose-p (interactive-p)) (message "python-mode-v5-behavior-p: %s" python-mode-v5-behavior-p)) - python-mode-v5-behavior-p) - -;; -(defalias 'toggle-py-shell-switch-buffers-on-execute 'py-toggle-shell-switch-buffers-on-execute) -(defun py-toggle-shell-switch-buffers-on-execute (&optional arg) - "If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. " - (interactive) - (let ((arg (or arg (if py-switch-buffers-on-execute-p -1 1)))) - (if (< 0 arg) - (setq py-switch-buffers-on-execute-p t) - (setq py-switch-buffers-on-execute-p nil)) - (when (interactive-p) (message "py-shell-switch-buffers-on-execute: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p)) - -(defun py-shell-switch-buffers-on-execute-on (&optional arg) - "Make sure, `py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. " - (interactive "p") - (let ((arg (or arg 1))) - (toggle-py-shell-switch-buffers-on-execute arg)) - (when (interactive-p) (message "py-shell-switch-buffers-on-execute: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p) - -(defun py-shell-switch-buffers-on-execute-off () - "Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. " - (interactive) - (toggle-py-shell-switch-buffers-on-execute -1) - (when (interactive-p) (message "py-shell-switch-buffers-on-execute: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p) - -;; split-windows-on-execute -(defalias 'toggle-py-split-windows-on-execute 'py-toggle-split-windows-on-execute) -(defun py-toggle-split-windows-on-execute (&optional arg) - "If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. " - (interactive) - (let ((arg (or arg (if py-split-windows-on-execute-p -1 1)))) - (if (< 0 arg) - (setq py-split-windows-on-execute-p t) - (setq py-split-windows-on-execute-p nil)) - (when (interactive-p) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p)) - -(defun py-split-windows-on-execute-on (&optional arg) - "Make sure, `py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. " - (interactive "p") - (let ((arg (or arg 1))) - (toggle-py-split-windows-on-execute arg)) - (when (interactive-p) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p) - -(defun py-split-windows-on-execute-off () - "Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. " - (interactive) - (toggle-py-split-windows-on-execute -1) - (when (interactive-p) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p) - -;; highlight-indentation -(defun py-toggle-highlight-indentation (&optional indent) - "If `highlight-indentation-p' should be on or off. " - (interactive "P") - (unless (featurep 'highlight-indentation) - (load (concat (py-normalize-directory py-install-directory) "extensions" py-separator-char "highlight-indentation.el"))) - (highlight-indentation indent) - (when py-verbose-p (message "highlight-indent-active: %s" highlight-indent-active)) - highlight-indent-active) - -(defun py-highlight-indentation-off () - "If `highlight-indentation-p' should be on or off. " - (interactive) - (unless (featurep 'highlight-indentation) - (load (concat (py-normalize-directory py-install-directory) "extensions" py-separator-char "highlight-indentation.el"))) - (highlight-indentation-off) - (when py-verbose-p (message "highlight-indent-active: %s" highlight-indent-active)) - highlight-indent-active) - -(defun py-highlight-indentation-on () - "If `highlight-indentation-p' should be on or off. " - (interactive "P") - (unless (featurep 'highlight-indentation) - (load (concat (py-normalize-directory py-install-directory) "extensions" py-separator-char "highlight-indentation.el"))) - (highlight-indentation-on) - (when py-verbose-p (message "highlight-indent-active: %s" highlight-indent-active)) - highlight-indent-active) - -;; Smart indentation -(defalias 'toggle-py-smart-indentation 'py-toggle-smart-indentation) -(defun py-toggle-smart-indentation (&optional arg) - "If `py-smart-indentation' should be on or off. - -Returns value of `py-smart-indentation' switched to. " - (interactive) - (let ((arg (or arg (if py-smart-indentation -1 1)))) - (if (< 0 arg) - (progn - (setq py-smart-indentation t) - (py-guess-indent-offset)) - (setq py-smart-indentation nil) - (setq py-indent-offset (default-value 'py-indent-offset))) - (when (interactive-p) (message "py-smart-indentation: %s" py-smart-indentation)) - py-smart-indentation)) - -(defun py-smart-indentation-on (&optional arg) - "Make sure, `py-smart-indentation' is on. - -Returns value of `py-smart-indentation'. " - (interactive "p") - (let ((arg (or arg 1))) - (toggle-py-smart-indentation arg)) - (when (interactive-p) (message "py-smart-indentation: %s" py-smart-indentation)) - py-smart-indentation) - -(defun py-smart-indentation-off (&optional arg) - "Make sure, `py-smart-indentation' is off. - -Returns value of `py-smart-indentation'. " - (interactive "p") - (let ((arg (if arg (- arg) -1))) - (toggle-py-smart-indentation arg)) - (when (interactive-p) (message "py-smart-indentation: %s" py-smart-indentation)) - py-smart-indentation) - -;; Smart operator -(defun toggle-py-smart-operator-mode-p (&optional arg) - "If `py-smart-operator-mode-p' should be on or off. - - Returns value of `py-smart-operator-mode-p' switched to. " - (interactive) - (and (py-smart-operator-check) - (setq py-smart-operator-mode-p (smart-operator-mode (if smart-operator-mode 0 1))))) - -(defun py-smart-operator-mode-p-on () - "Make sure, py-smart-operator-mode-p' is on. - -Returns value of `py-smart-operator-mode-p'. " - (interactive) - (and (py-smart-operator-check) - (setq py-smart-operator-mode-p (smart-operator-mode 1)))) - -(defun py-smart-operator-mode-p-off () - "Make sure, py-smart-operator-mode-p' is off. - -Returns value of `py-smart-operator-mode-p'. " - (interactive) - (setq py-smart-operator-mode-p (smart-operator-mode 0))) - -;; py-use-current-dir-when-execute-p forms -(defun toggle-py-use-current-dir-when-execute-p (&optional arg) - "If `py-use-current-dir-when-execute-p' should be on or off. - - Returns value of `py-use-current-dir-when-execute-p' switched to. " - (interactive) - (let ((arg (or arg (if py-use-current-dir-when-execute-p -1 1)))) - (if (< 0 arg) - (setq py-use-current-dir-when-execute-p t) - (setq py-use-current-dir-when-execute-p nil)) - (when (or py-verbose-p (interactive-p)) (message "py-use-current-dir-when-execute-p: %s" py-use-current-dir-when-execute-p)) - py-use-current-dir-when-execute-p)) - -(defun py-use-current-dir-when-execute-p-on (&optional arg) - "Make sure, py-use-current-dir-when-execute-p' is on. - -Returns value of `py-use-current-dir-when-execute-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-use-current-dir-when-execute-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-use-current-dir-when-execute-p: %s" py-use-current-dir-when-execute-p)) - py-use-current-dir-when-execute-p) - -(defun py-use-current-dir-when-execute-p-off () - "Make sure, `py-use-current-dir-when-execute-p' is off. - -Returns value of `py-use-current-dir-when-execute-p'. " - (interactive) - (toggle-py-use-current-dir-when-execute-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-use-current-dir-when-execute-p: %s" py-use-current-dir-when-execute-p)) - py-use-current-dir-when-execute-p) - -;; py-autopair-mode forms -(defalias 'toggle-py-autopair-mode 'py-toggle-autopair-mode) -(defun py-toggle-autopair-mode (&optional arg) - "If `py-autopair-mode' should be on or off. - - Returns value of `py-autopair-mode' switched to. " - (interactive) - (and (py-autopair-check) - (setq py-autopair-mode (autopair-mode (if autopair-mode 0 1))))) - -(defun py-autopair-mode-on () - "Make sure, py-autopair-mode' is on. - -Returns value of `py-autopair-mode'. " - (interactive) - (and (py-autopair-check) - (setq py-autopair-mode (autopair-mode 1)))) - -(defun py-autopair-mode-off () - "Make sure, py-autopair-mode' is off. - -Returns value of `py-autopair-mode'. " - (interactive) - (setq py-autopair-mode (autopair-mode 0))) - -;; py-switch-buffers-on-execute-p forms -(defun toggle-py-switch-buffers-on-execute-p (&optional arg) - "If `py-switch-buffers-on-execute-p' should be on or off. - - Returns value of `py-switch-buffers-on-execute-p' switched to. " - (interactive) - (let ((arg (or arg (if py-switch-buffers-on-execute-p -1 1)))) - (if (< 0 arg) - (setq py-switch-buffers-on-execute-p t) - (setq py-switch-buffers-on-execute-p nil)) - (when (or py-verbose-p (interactive-p)) (message "py-switch-buffers-on-execute-p: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p)) - -(defun py-switch-buffers-on-execute-p-on (&optional arg) - "Make sure, `py-py-switch-buffers-on-execute-p' is on. - -Returns value of `py-switch-buffers-on-execute-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-switch-buffers-on-execute-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-switch-buffers-on-execute-p: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p) - -(defun py-switch-buffers-on-execute-p-off () - "Make sure, `py-switch-buffers-on-execute-p' is off. - -Returns value of `py-switch-buffers-on-execute-p'. " - (interactive) - (toggle-py-switch-buffers-on-execute-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-switch-buffers-on-execute-p: %s" py-switch-buffers-on-execute-p)) - py-switch-buffers-on-execute-p) - -;; py-split-windows-on-execute-p forms -(defun toggle-py-split-windows-on-execute-p (&optional arg) - "If `py-split-windows-on-execute-p' should be on or off. - - Returns value of `py-split-windows-on-execute-p' switched to. " - (interactive) - (let ((arg (or arg (if py-split-windows-on-execute-p -1 1)))) - (if (< 0 arg) - (setq py-split-windows-on-execute-p t) - (setq py-split-windows-on-execute-p nil)) - (when (or py-verbose-p (interactive-p)) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p)) - -(defun py-split-windows-on-execute-p-on (&optional arg) - "Make sure, `py-py-split-windows-on-execute-p' is on. - -Returns value of `py-split-windows-on-execute-p'. " - (interactive) - (let ((arg (or arg 1))) - (toggle-py-split-windows-on-execute-p arg)) - (when (or py-verbose-p (interactive-p)) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p) - -(defun py-split-windows-on-execute-p-off () - "Make sure, `py-split-windows-on-execute-p' is off. - -Returns value of `py-split-windows-on-execute-p'. " - (interactive) - (toggle-py-split-windows-on-execute-p -1) - (when (or py-verbose-p (interactive-p)) (message "py-split-windows-on-execute-p: %s" py-split-windows-on-execute-p)) - py-split-windows-on-execute-p) - -(defun py-toggle-sexp-function () - "Opens customization " - (interactive) - (customize-variable 'py-sexp-function)) - -;;; -;; Stolen from org-mode -(defun py-util-clone-local-variables (from-buffer &optional regexp) - "Clone local variables from FROM-BUFFER. -Optional argument REGEXP selects variables to clone and defaults -to \"^python-\"." - (mapc - (lambda (pair) - (and (symbolp (car pair)) - (string-match (or regexp "^python-") - (symbol-name (car pair))) - (set (make-local-variable (car pair)) - (cdr pair)))) - (buffer-local-variables from-buffer))) - -(defun py-send-shell-setup-code () - "Send all setup code for shell. -This function takes the list of setup code to send from the -`py-setup-codes' list." - (let ((process (get-buffer-process (current-buffer)))) - (accept-process-output process 1) - (dolist (code py-setup-codes) - (when code - (py-send-string (symbol-value code) process))))) - -(defun py-shell-get-process-name (py-dedicated-process-p) - "Calculate the appropiate process name for inferior Python process. -If DEDICATED is t and the variable `buffer-file-name' is non-nil -returns a string with the form -`python-shell-buffer-name'[variable `buffer-file-name'] else -returns the value of `python-shell-buffer-name'. After -calculating the process name adds the buffer name for the process -in the `same-window-buffer-names' list." - (let ((process-name - (if (and py-dedicated-process-p - buffer-file-name) - (format "%s[%s]" python-shell-buffer-name buffer-file-name) - (format "%s" python-shell-buffer-name)))) - (add-to-list 'same-window-buffer-names (purecopy - (format "*%s*" process-name))) - process-name)) - -(defun py-shell-get-process (&optional argprompt py-dedicated-process-p shell switch py-buffer-name) - "Get appropriate Python process for current buffer and return it." - (interactive) - (let ((erg (get-buffer-process (py-shell argprompt py-dedicated-process-p shell py-buffer-name t)))) - (when (interactive-p) (message "%S" erg)) - erg)) - -(defun py-shell-send-string (string &optional process msg filename) - "Send STRING to inferior Python PROCESS. -When `py-verbose-p' and MSG is non-nil messages the first line of STRING." - (interactive "sPython command: ") - (let* ((process (or process (get-buffer-process (py-shell)))) - (lines (split-string string "\n")) - (temp-file-name (concat (with-current-buffer (process-buffer process) - (file-remote-p default-directory)) - (py-normalize-directory py-temp-directory) - "psss-temp.py")) - (file-name (or filename (buffer-file-name) temp-file-name))) - (if (> (length lines) 1) - (let* () - ;; ((temporary-file-directory - ;; (if (file-remote-p default-directory) - ;; (concat (file-remote-p default-directory) "/tmp") - ;; temporary-file-directory)) - ;; (temp-file-name (make-temp-file "py")) - ;; (file-name (or (buffer-file-name) temp-file-name))) - (with-temp-file temp-file-name - (insert string) - (delete-trailing-whitespace)) - (py-send-file temp-file-name process temp-file-name)) - (process-send-string process string) - ;; (comint-send-string process string) - (when (or (not (string-match "\n$" string)) - (string-match "\n[ \t].*\n?$" string)) - (process-send-string process "\n"))))) - -(defun py-send-string-no-output (string &optional process msg) - "Send STRING to PROCESS and inhibit output. -When MSG is non-nil messages the first line of STRING. Return -the output." - (let* ((output-buffer) - wait - (process (or process (progn (setq wait 0.2)(get-buffer-process (py-shell))))) - ;; (comint-preoutput-filter-functions - ;; (append comint-preoutput-filter-functions - ;; '(ansi-color-filter-apply - ;; (lambda (string) - ;; (setq output-buffer (concat output-buffer string)) - ;; "")))) - ) - (and wait (sit-for wait)) - (py-shell-send-string string process msg) - (accept-process-output process 1) - (when output-buffer - (replace-regexp-in-string - (if (> (length py-shell-prompt-output-regexp) 0) - (format "\n*%s$\\|^%s\\|\n$" - py-shell-prompt-regexp - (or py-shell-prompt-output-regexp "")) - (format "\n*$\\|^%s\\|\n$" - py-shell-prompt-regexp)) - "" output-buffer)))) - -(defun py-send-string-return-output (string &optional process msg) - "Send STRING to PROCESS and return output. - -When MSG is non-nil messages the first line of STRING. Return -the output." - (let* (output-buffer - (process (or process (get-buffer-process (py-shell)))) - (comint-preoutput-filter-functions - (append comint-preoutput-filter-functions - '(ansi-color-filter-apply - (lambda (string) - (setq output-buffer (concat output-buffer string)) - ""))))) - (py-shell-send-string string process msg) - (accept-process-output process 1) - (when output-buffer - (setq output-buffer - (replace-regexp-in-string - (if (> (length py-shell-prompt-output-regexp) 0) - (format "\n*%s$\\|^%s\\|\n$" - python-shell-prompt-regexp - (or py-shell-prompt-output-regexp "")) - (format "\n*$\\|^%s\\|\n$" - python-shell-prompt-regexp)) - "" output-buffer))) - output-buffer)) - -(defun py-shell-send-file (file-name &optional process temp-file-name) - "Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME." - (interactive "fFile to send: ") - (let* ((process (or process (get-buffer-process (py-shell)))) - (temp-file-name (when temp-file-name - (expand-file-name temp-file-name))) - (file-name (or (expand-file-name file-name) temp-file-name)) - py-python-command-args) - (when (not file-name) - (error "If FILE-NAME is nil then TEMP-FILE-NAME must be non-nil")) - (py-shell-send-string - (format - (concat "__pyfile = open('''%s''');" - "exec(compile(__pyfile.read(), '''%s''', 'exec'));" - "__pyfile.close()") - file-name file-name) - process))) - -(defun py-switch-to-shell () - "Switch to inferior Python process buffer." - (interactive) - (pop-to-buffer (py-shell) t)) - -;;; - -(defun py-shell-completion--get-completions (input process completion-code) - "Retrieve available completions for INPUT using PROCESS. -Argument COMPLETION-CODE is the python code used to get -completions on the current context." - (with-current-buffer (process-buffer process) - (let ((completions - (py-send-string-no-output - (format completion-code input) process))) - (when (> (length completions) 2) - (split-string completions "^'\\|^\"\\|;\\|'$\\|\"$" t))))) - -(defun py-shell--do-completion-at-point (process imports input orig) - "Do completion at point for PROCESS." - (with-syntax-table py-dotted-expression-syntax-table - (when imports (py-send-string-no-output imports process)) - (let* ((code python-shell-module-completion-string-code) - (completions - (py-shell-completion--get-completions - input process code)) - (completion (when completions - (try-completion input completions)))) - ;; (set-buffer oldbuf) - (with-current-buffer oldbuf - ;; (goto-char orig) - (cond ((eq completion t) - (if py-no-completion-calls-dabbrev-expand-p - (or (ignore-errors (dabbrev-expand nil))(when py-indent-no-completion-p - (tab-to-tab-stop))) - (when py-indent-no-completion-p - (tab-to-tab-stop))) - nil) - ((null completion) - (if py-no-completion-calls-dabbrev-expand-p - (or (dabbrev-expand nil)(when py-indent-no-completion-p - (tab-to-tab-stop))(message "Can't find completion ")) - (when py-indent-no-completion-p - (tab-to-tab-stop))) - nil) - ((not (string= input completion)) - (progn (delete-char (- (length input))) - (insert completion) - (move-marker pos (point)) - ;; minibuffer.el expects a list, a bug IMO - nil)) - (t - (with-output-to-temp-buffer py-python-completions - (display-completion-list - (all-completions input completions))) - (move-marker pos (point)) - nil)) - (and (goto-char pos) - nil))))) - -(defun python-shell-completion-complete-or-indent () - "Complete or indent depending on the context. -If content before pointer is all whitespace indent. If not try -to complete." - (interactive) - (if (string-match "^[[:space:]]*$" - (buffer-substring (comint-line-beginning-position) - (point-marker))) - (indent-for-tab-command) - (comint-dynamic-complete))) - -(setq py-shell-template " -\(defun NAME (&optional argprompt) - \"Start an DOCNAME interpreter in another window. - -With optional \\\\[universal-argument] user is prompted -for options to pass to the DOCNAME interpreter. \" - (interactive \"P\") - (let\* ((py-shell-name \"FULLNAME\")) - (py-shell argprompt) - (when (interactive-p) (switch-to-buffer (current-buffer)) - (goto-char (point-max))))) -") - -(defsubst py-keep-region-active () - "Keep the region active in XEmacs." - ;; Ignore byte-compiler warnings you might see. Also note that - ;; FSF's Emacs does it differently; its policy doesn't require us - ;; to take explicit action. - (and (boundp 'zmacs-region-stays) - (setq zmacs-region-stays t))) - -;;; Helper commands -(defun py-guess-pdb-path () - "If py-pdb-path isn't set, find location of pdb.py. " - (interactive) - (let ((ele (split-string (shell-command-to-string "whereis python"))) - erg) - (while (or (not erg)(string= "" erg)) - (when (and (string-match "^/" (car ele)) (not (string-match "/man" (car ele)))) - (setq erg (shell-command-to-string (concat "find " (car ele) " -type f -name \"pdb.py\"")))) - (setq ele (cdr ele))) - (if erg - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - (when (interactive-p) (message "%s" "pdb.py not found, please customize `pdb-path'"))) - (concat "'" erg))) - -;; Strip CHARS from STRING -(defun string-strip (str &optional chars-before chars-after) - "Return a copy of STR, CHARS removed. -`CHARS-BEFORE' and `CHARS-AFTER' default is \"[ \t\r\n]*\", -i.e. spaces, tabs, carriage returns, newlines and newpages. " - (let ((s-c-b (or chars-before - strip-chars-before)) - (s-c-a (or chars-after - strip-chars-after)) - (erg str)) - (setq erg (replace-regexp-in-string s-c-b "" erg)) - (setq erg (replace-regexp-in-string s-c-a "" erg)) - erg)) - -(defun py-warn-tmp-files-left () - "Detect and warn about file of form \"py11046IoE\" in py-temp-directory. " - (let ((erg1 (file-readable-p (concat py-temp-directory py-separator-char (car (directory-files py-temp-directory nil "py[[:alnum:]]+$")))))) - (when (and py-verbose-p erg1) - (message "py-warn-tmp-files-left: %s ?" (concat py-temp-directory py-separator-char (car (directory-files py-temp-directory nil "py[[:alnum:]]*$"))))))) - -(defun py-forward-line (&optional arg) - "Goes to end of line after forward move. - -Travels right-margin comments. " - (interactive "p") - (let ((arg (or arg 1))) - (forward-line arg) - (end-of-line) - (skip-chars-backward " \t") - (py-beginning-of-comment) - (skip-chars-backward " \t"))) - -(defun py-go-to-beginning-of-comment () - "Go to the beginning of current line's comment, if any. - -From a programm use `py-beginning-of-comment' instead " - (interactive) - (let ((erg (py-beginning-of-comment))) - (when (and py-verbose-p (interactive-p)) - (message "%s" erg)))) - -(defun py-clause-lookup-keyword (regexp arg &optional indent orig origline) - "Returns a list, whose car is indentation, cdr position. " - (let* ((orig (or orig (point))) - (origline (or origline (py-count-lines))) - (stop (if (< 0 arg)'(eobp)'(bobp))) - (function (if (< 0 arg) 'py-end-of-statement 'py-beginning-of-statement)) - (count 1) - (maxindent (cond (indent indent) - ((< (py-count-lines) origline) - (current-indentation)) - (t 0))) - (complement-re - (cond ((or (string-match "finally" regexp) - (string-match "except" regexp)) - py-try-re) - ((string-match "elif" regexp) - py-if-re) - ((string-match "else" regexp) - py-minor-block-re))) - (first t) - erg done strict) - (while (and (not (eval stop)) - (< 0 count) - (or done (setq erg (funcall function)))) - (setq done nil) - (when (and first (< maxindent (current-indentation))) - (setq maxindent (current-indentation)) - (setq first nil)) - (when (if strict - (< (current-indentation) maxindent) - (<= (current-indentation) maxindent)) - (unless (looking-at py-block-or-clause-re) - (setq maxindent (current-indentation))) - ;; (message "%s %s" count indent) - ;; nesting - (cond - ((and (looking-at "\\_[: \n\t]")(save-match-data (string-match regexp "finally"))) - (setq indent (current-indentation)) - (while - (and - (not (eval stop)) - (funcall function) - (setq done t) - (not (and (eq indent (current-indentation)) (looking-at "try")))))) - ;; ((and (looking-at "\\[: \n\t]")(save-match-data (string-match "else" regexp))) - ;; (setq indent (current-indentation)) - ;; (setq count (1+ count)) - ;; (while - ;; (and - ;; (not (eval stop)) - ;; (funcall function) - ;; (setq done t) - ;; (not (and (eq indent (current-indentation)) (looking-at "try\\|if")))))) - ((and (looking-at "\\[: \n\t]")(save-match-data (string-match "else" regexp))) - (setq indent (current-indentation)) - (setq count (1+ count)) - (while - (and - (not (eval stop)) - (funcall function) - (setq done t) - (not (and (eq indent (current-indentation)) (looking-at "try\\|if")))))) - ((and (looking-at "\\_[: \n\t]")(save-match-data (string-match "else" regexp))) - (setq indent (current-indentation)) - (setq count (1+ count)) - (while - (and - (not (eval stop)) - (funcall function) - (setq done t) - (not (and (eq indent (current-indentation)) (looking-at "try\\|if")))))) - ((and (looking-at "\\_[ \n\t]")(save-match-data (string-match "elif" regexp))) - (setq indent (current-indentation)) - (while - (and - (not (eval stop)) - (funcall function) - (setq done t) - ;; doesn't mean nesting yet - (setq count (1- count)) - (not (and (eq indent (current-indentation)) (looking-at "if")))))) - ((and (looking-at complement-re)(<= (current-indentation) maxindent)) - (setq count (1- count))) - (t (cond ((and (string-match "except" regexp)(looking-at py-block-re)) - (setq count (1- count))) - ((and (string-match "else" regexp)(looking-at "except")) - (current-indentation)) - (t - (setq strict t) - )))))) - (when erg - (if (looking-at py-def-or-class-re) - (setq erg (cons (+ (current-indentation) py-indent-offset) erg)) - (setq erg (cons (current-indentation) erg)))) - erg)) - -(defun py-leave-comment-or-string-backward (&optional pos) - "If inside a comment or string, leave it backward. " - (interactive) - (let ((pps - (if (featurep 'xemacs) - (parse-partial-sexp (point-min) (point)) - (syntax-ppss)))) - (when (nth 8 pps) - (goto-char (1- (nth 8 pps)))))) - -(defun py-beginning-of-list-pps (&optional iact last ppstart orig done) - "Go to the beginning of a list. -Optional ARG indicates a start-position for `parse-partial-sexp'. -Return beginning position, nil if not inside." - (interactive "p") - (let* ((orig (or orig (point))) - (ppstart (or ppstart (re-search-backward "^[a-zA-Z]" nil t 1) (point-min))) - erg) - (unless done (goto-char orig)) - (setq done t) - (if - (setq erg (nth 1 (if (featurep 'xemacs) - (parse-partial-sexp ppstart (point)) - (syntax-ppss)))) - (progn - (setq last erg) - (goto-char erg) - (py-beginning-of-list-pps iact last ppstart orig done)) - (when iact (message "%s" last)) - last))) - -(when (featurep 'thing-at-point-utils) - (defun py-beginning-of-list (&optional iact orig limit done last) - "Go to beginning of any parentized, braced or bracketed expression in statement. " - (interactive "p") - (save-restriction - (let ((orig (or orig (point))) - (done done) - (limit (or limit (re-search-backward "^[a-zA-Z]" nil t 1))) - (last last)) - (unless (or done (not limit)) (narrow-to-region limit (point-max))) - (setq done t) - (goto-char orig) - (let* ((pt (car-safe (ar-in-parentized-p-atpt))) - (br (car-safe (ar-in-braced-p-atpt))) - (bk (car-safe (ar-in-bracketed-p-atpt))) - (erg (car (sort (delq nil (list pt br bk)) '<)))) - (if erg - (progn - (goto-char (1- erg)) - (setq last erg) - (py-beginning-of-list iact (1- erg) limit done last)) - (when last - (goto-char last)) - (when iact (message "%s" last)) - last))))) - - (defun py-end-of-list (&optional iact orig limit done last) - "Go to end of any parentized, braced or bracketed expression in statement. " - (interactive "p") - (save-restriction - (let ((orig (or orig (point))) - (done done) - (limit (or limit (re-search-backward "^[a-zA-Z]" nil t 1))) - (last last)) - (unless (or done (not limit)) (narrow-to-region limit (point-max))) - (setq done t) - (goto-char orig) - (let* ((pt (car-safe (ar-in-parentized-p-atpt))) - (br (car-safe (ar-in-braced-p-atpt))) - (bk (car-safe (ar-in-bracketed-p-atpt))) - (erg (car (sort (delq nil (list pt br bk)) '<)))) - (if erg - (progn - (goto-char (1- erg)) - (setq last erg) - (py-end-of-list iact (1- erg) limit done last)) - (when last - (goto-char last) - (match-paren) - (setq last (1+ (point))) - (when iact (message "%s" last)) - last))))))) - -(defun empty-line-p () - "Returns t if cursor is at an line with nothing but whitespace-characters, nil otherwise." - (interactive "p") - (save-excursion - (progn - (beginning-of-line) - (looking-at "\\s-*$")))) - -(defun py-count-lines (&optional start end) - "Count lines in accessible part until current line. - -See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7115" - (interactive) - (save-excursion - (let ((count 0) - (orig (point))) - (goto-char (point-min)) - (while (and (< (point) orig)(not (eobp)) (skip-chars-forward "^\n" orig)) - (setq count (1+ count)) - (unless (or (not (< (point) orig)) (eobp)) (forward-char 1) - (setq count (+ count (abs (skip-chars-forward "\n" orig)))))) - (when (bolp) (setq count (1+ count))) - (when (interactive-p) (message "%s" count)) - count))) - -(eval-when-compile - (defconst python-rx-constituents - (list - `(block-start . ,(rx symbol-start - (or "def" "class" "if" "elif" "else" "try" - "except" "finally" "for" "while" "with") - symbol-end)) - `(decorator . ,(rx line-start (* space) ?@ (any letter ?_) - (* (any word ?_)))) - `(defun . ,(rx symbol-start (or "def" "class") symbol-end)) - `(symbol-name . ,(rx (any letter ?_) (* (any word ?_)))) - `(open-paren . ,(rx (or "{" "[" "("))) - `(close-paren . ,(rx (or "}" "]" ")"))) - `(simple-operator . ,(rx (any ?+ ?- ?/ ?& ?^ ?~ ?| ?* ?< ?> ?= ?%))) - `(not-simple-operator . ,(rx (not (any ?+ ?- ?/ ?& ?^ ?~ ?| ?* ?< ?> ?= ?%)))) - `(operator . ,(rx (or "+" "-" "/" "&" "^" "~" "|" "*" "<" ">" - "=" "%" "**" "//" "<<" ">>" "<=" "!=" - "==" ">=" "is" "not"))) - `(assignment-operator . ,(rx (or "=" "+=" "-=" "*=" "/=" "//=" "%=" "**=" - ">>=" "<<=" "&=" "^=" "|=")))) - "Additional Python specific sexps for `python-rx'")) - -(defmacro python-rx (&rest regexps) - "Python mode specialized rx macro which supports common python named REGEXPS." - (let ((rx-constituents (append python-rx-constituents rx-constituents))) - (cond ((null regexps) - (error "No regexp")) - ((cdr regexps) - (rx-to-string `(and ,@regexps) t)) - (t - (rx-to-string (car regexps) t))))) - -;;; -;; GNU's syntax-ppss-context -(unless (functionp 'syntax-ppss-context) - (defsubst syntax-ppss-context (ppss) - (cond - ((nth 3 ppss) 'string) - ((nth 4 ppss) 'comment) - (t nil)))) - -(defun py-history-input-filter (str) - "`comint-input-filter' function for inferior Python. -Don't save anything for STR matching `py-history-filter-regexp'." - (not (string-match py-history-filter-regexp str))) - -;; Fixme: Loses with quoted whitespace. -(defun py-args-to-list (string) - (let ((where (string-match "[ \t]" string))) - (cond ((null where) (list string)) - ((not (= where 0)) - (cons (substring string 0 where) - (py-args-to-list (substring string (+ 1 where))))) - (t (let ((pos (string-match "[^ \t]" string))) - (if pos (py-args-to-list (substring string pos)))))))) - -;; Using this stops us getting lines in the buffer like -;; >>> ... ... >>> -;; Also look for (and delete) an `_emacs_ok' string and call -;; `python-preoutput-continuation' if we get it. -(defun py-preoutput-filter (s) - "`comint-preoutput-filter-functions' function: ignore prompts not at bol." - (when py-preoutput-leftover - (setq s (concat py-preoutput-leftover s)) - (setq py-preoutput-leftover nil)) - (let ((start 0) - (res "")) - ;; First process whole lines. - (while (string-match "\n" s start) - (let ((line (substring s start (setq start (match-end 0))))) - ;; Skip prompt if needed. - (when (and py-preoutput-skip-next-prompt - (string-match comint-prompt-regexp line)) - (setq py-preoutput-skip-next-prompt nil) - (setq line (substring line (match-end 0)))) - ;; Recognize special _emacs_out lines. - (if (and (string-match "\\`_emacs_out \\(.*\\)\n\\'" line) - (local-variable-p 'py-preoutput-result)) - (progn - (setq py-preoutput-result (match-string 1 line)) - (set (make-local-variable 'py-preoutput-skip-next-prompt) t)) - (setq res (concat res line))))) - ;; Then process the remaining partial line. - (unless (zerop start) (setq s (substring s start))) - (cond ((and (string-match comint-prompt-regexp s) - ;; Drop this prompt if it follows an _emacs_out... - (or py-preoutput-skip-next-prompt - ;; ... or if it's not gonna be inserted at BOL. - ;; Maybe we could be more selective here. - (if (zerop (length res)) - (not (bolp)) - (string-match ".\\'" res)))) - ;; The need for this seems to be system-dependent: - ;; What is this all about, exactly? --Stef - ;; (if (and (eq ?. (aref s 0))) - ;; (accept-process-output (get-buffer-process (current-buffer)) 1)) - (setq py-preoutput-skip-next-prompt nil) - res) - ((let ((end (min (length "_emacs_out ") (length s)))) - (eq t (compare-strings s nil end "_emacs_out " nil end))) - ;; The leftover string is a prefix of _emacs_out so we don't know - ;; yet whether it's an _emacs_out or something else: wait until we - ;; get more output so we can resolve this ambiguity. - (set (make-local-variable 'py-preoutput-leftover) s) - res) - (t (concat res s))))) - -(defun py-send-command (command) - "Like `py-send-string' but resets `compilation-shell-minor-mode'." - (when (py-check-comint-prompt) - (with-current-buffer (process-buffer (py-proc)) - (goto-char (point-max)) - (compilation-forget-errors) - (py-send-string command) - (setq compilation-last-buffer (current-buffer))))) - -(defun python-send-string (string) - "Evaluate STRING in inferior Python process." - (interactive "sPython command: ") - (comint-send-string (py-proc) string) - (unless (string-match "\n\\'" string) - ;; Make sure the text is properly LF-terminated. - (comint-send-string (py-proc) "\n")) - (when (string-match "\n[ \t].*\n?\\'" string) - ;; If the string contains a final indented line, add a second newline so - ;; as to make sure we terminate the multiline instruction. - (comint-send-string (py-proc) "\n"))) - -(defun py-switch-to-python (eob-p) - "Switch to the Python process buffer, maybe starting new process. - -With prefix arg, position cursor at end of buffer." - (interactive "P") - (pop-to-buffer (process-buffer (py-proc)) t) ;Runs python if needed. - (when eob-p - (push-mark) - (goto-char (point-max)))) - -(defun py-proc (&optional py-dedicated-process-p) - "Return the current Python process. - -Start a new process if necessary. " - (interactive) - (let (py-split-windows-on-execute-p - (erg - (cond ((and (not py-dedicated-process-p) (comint-check-proc (current-buffer))) - (get-buffer-process (buffer-name (current-buffer)))) - ((not py-dedicated-process-p) - (get-buffer-process (py-shell nil nil nil nil t))) - ((py-shell nil py-dedicated-process-p nil nil t))))) - (when (interactive-p) (message "%S" erg)) - erg)) - -(defun py-check-comint-prompt (&optional proc) - "Return non-nil if and only if there's a normal prompt in the inferior buffer. -If there isn't, it's probably not appropriate to send input to return Eldoc -information etc. If PROC is non-nil, check the buffer for that process." - (with-current-buffer (process-buffer (or proc (get-buffer-process (py-shell)))) - (save-excursion - (save-match-data - (re-search-backward " *\\=" nil t))))) - - - -(defun py-outline-level () - "`outline-level' function for Python mode. -The level is the number of `py-indent-offset' steps of indentation -of current line." - (let ((erg (1+ (/ (current-indentation) py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -;; FFAP support -(defalias 'py-module-path 'py-ffap-module-path) - -(defun py-ffap-module-path (module) - "Function for `ffap-alist' to return path for MODULE." - (let ((process (or - (and (eq major-mode 'inferior-python-mode) - (get-buffer-process (current-buffer))) - (py-shell-get-process)))) - (if (not process) - nil - (let ((module-file - (py-send-string-no-output - (format py-ffap-string-code module) process))) - (when module-file - (substring-no-properties module-file 1 -1)))))) - -(add-hook 'python-mode-hook 'py-set-ffap-form) - - -;;; -(defconst py-space-backslash-table - (let ((table (copy-syntax-table python-mode-syntax-table))) - (modify-syntax-entry ?\\ " " table) - table) - "`python-mode-syntax-table' with backslash given whitespace syntax.") - -;; have to bind py-file-queue before installing the kill-emacs-hook - -(define-abbrev-table 'python-mode-abbrev-table ()) - -(define-abbrev-table 'inferior-python-mode-abbrev-table ()) - -;; pdbtrack constants -(defconst py-pdbtrack-stack-entry-regexp - (concat ".*\\("py-shell-input-prompt-1-regexp">\\|>\\) *\\(.*\\)(\\([0-9]+\\))\\([?a-zA-Z0-9_<>()]+\\)()") - "Regular expression pdbtrack uses to find a stack trace entry.") - -;; ipython.el -;; Recognize the ipython pdb, whose prompt is 'ipdb>' or 'ipydb>' -;;instead of '(Pdb)' -(setq py-pdbtrack-input-prompt "^[(<]*[Ii]?[Pp]y?db[>)]+ ") -(setq py-pydbtrack-input-prompt "^[(]*ipydb[>)]+ ") - -;; pydb-328837.diff -;; (defconst py-pydbtrack-stack-entry-regexp -;; "^(\\([-a-zA-Z0-9_/.]*\\):\\([0-9]+\\)):[ \t]?\\(.*\n\\)" -;; "Regular expression pdbtrack uses to find a stack trace entry for pydb. -;; -;; The debugger outputs program-location lines that look like this: -;; (/usr/bin/zonetab2pot.py:15): makePOT") - -(defconst py-pdbtrack-marker-regexp-file-group 2 - "Group position in gud-pydb-marker-regexp that matches the file name.") - -(defconst py-pdbtrack-marker-regexp-line-group 3 - "Group position in gud-pydb-marker-regexp that matches the line number.") - -(defconst py-pdbtrack-marker-regexp-funcname-group 4 - "Group position in gud-pydb-marker-regexp that matches the function name.") - -(defconst py-pdbtrack-track-range 10000 - "Max number of characters from end of buffer to search for stack entry.") - - -;; Bindings -(defconst python-compilation-regexp-alist - ;; FIXME: maybe these should move to compilation-error-regexp-alist-alist. - ;; The first already is (for CAML), but the second isn't. Anyhow, - ;; these are specific to the inferior buffer. -- fx - `((,(rx line-start (1+ (any " \t")) "File \"" - (group (1+ (not (any "\"<")))) ; avoid `' &c - "\", line " (group (1+ digit))) - 1 2) - (,(rx " in file " (group (1+ not-newline)) " on line " - (group (1+ digit))) - 1 2) - ;; pdb stack trace - (,(rx line-start "> " (group (1+ (not (any "(\"<")))) - "(" (group (1+ digit)) ")" (1+ (not (any "("))) "()") - 1 2)) - "`compilation-error-regexp-alist' for inferior Python.") - -(defconst py-font-lock-syntactic-keywords - ;; Make outer chars of matching triple-quote sequences into generic - ;; string delimiters. Fixme: Is there a better way? - ;; First avoid a sequence preceded by an odd number of backslashes. - `((,(concat "\\(?:^\\|[^\\]\\(?:\\\\.\\)*\\)" ;Prefix. - "\\(?1:\"\\)\\(?2:\"\\)\\(?3:\"\\)\\(?4:\"\\)\\(?5:\"\\)\\(?6:\"\\)\\|\\(?1:\"\\)\\(?2:\"\\)\\(?3:\"\\)\\|\\(?1:'\\)\\(?2:'\\)\\(?3:'\\)\\(?4:'\\)\\(?5:'\\)\\(?6:'\\)\\|\\(?1:'\\)\\(?2:'\\)\\(?3:'\\)\\(?4:'\\)\\(?5:'\\)\\(?6:'\\)\\|\\(?1:'\\)\\(?2:'\\)\\(?3:'\\)") - (1 (python-quote-syntax 1) t t) - (2 (python-quote-syntax 2) t t) - (3 (python-quote-syntax 3) t t) - (6 (python-quote-syntax 1) t t)))) - -(defun python-quote-syntax (n) - "Put `syntax-table' property correctly on triple quote. -Used for syntactic keywords. N is the match number (1, 2 or 3)." - ;; Given a triple quote, we have to check the context to know - ;; whether this is an opening or closing triple or whether it's - ;; quoted anyhow, and should be ignored. (For that we need to do - ;; the same job as `syntax-ppss' to be correct and it seems to be OK - ;; to use it here despite initial worries.) We also have to sort - ;; out a possible prefix -- well, we don't _have_ to, but I think it - ;; should be treated as part of the string. - - ;; Test cases: - ;; ur"""ar""" x='"' # """ - ;; x = ''' """ ' a - ;; ''' - ;; x '"""' x """ \"""" x - (save-excursion - (goto-char (match-beginning 0)) - (cond - ;; Consider property for the last char if in a fenced string. - ((= n 3) - (let* ((font-lock-syntactic-keywords nil) - (syntax (syntax-ppss))) - (when (eq t (nth 3 syntax)) ; after unclosed fence - (goto-char (nth 8 syntax)) ; fence position - ;; (skip-chars-forward "uUrR") ; skip any prefix - ;; Is it a matching sequence? - (if (eq (char-after) (char-after (match-beginning 2))) - (eval-when-compile (string-to-syntax "|")))))) - ;; Consider property for initial char, accounting for prefixes. - ((or (and (= n 2) ; leading quote (not prefix) - (not (match-end 1))) ; prefix is null - (and (= n 1) ; prefix - (match-end 1))) ; non-empty - (let ((font-lock-syntactic-keywords nil)) - (unless (eq 'string (syntax-ppss-context (syntax-ppss))) - (eval-when-compile (string-to-syntax "|"))))) - ;; Otherwise (we're in a non-matching string) the property is - ;; nil, which is OK. - ))) - - -(defun py-point (position) - "Returns the value of point at certain commonly referenced POSITIONs. -POSITION can be one of the following symbols: - - bol -- beginning of line - eol -- end of line - bod -- beginning of def or class - eod -- end of def or class - bob -- beginning of buffer - eob -- end of buffer - boi -- back to indentation - bos -- beginning of statement - -This function does not modify point or mark." - (let (erg) - (save-excursion - (setq erg - (progn - (cond - ((eq position 'bol) (beginning-of-line)) - ((eq position 'eol) (end-of-line)) - ((eq position 'bod) (py-beginning-of-def-or-class)) - ((eq position 'eod) (py-end-of-def-or-class)) - ;; Kind of funny, I know, but useful for py-up-exception. - ((eq position 'bob) (goto-char (point-min))) - ((eq position 'eob) (goto-char (point-max))) - ((eq position 'boi) (back-to-indentation)) - ((eq position 'bos) (py-beginning-of-statement)) - (t (error "Unknown buffer position requested: %s" position))) (point)))) - erg)) - - -;;; Keymap and syntax -;; Font-lock and syntax -(setq py-font-lock-keywords - ;; Keywords - `(,(rx symbol-start - (or "and" "del" "from" "not" "while" "as" "elif" "global" "or" "with" - "assert" "else" "if" "pass" "yield" "break" "import" - "print" "exec" "in" "continue" "finally" "is" "except" "raise" - "return" "def" "for" "lambda" "try") - symbol-end) - ;; functions - (,(rx symbol-start "def" (1+ space) (group (1+ (or word ?_)))) - (1 font-lock-function-name-face)) - ;; classes - (,(rx symbol-start (group "class") (1+ space) (group (1+ (or word ?_)))) - (1 font-lock-keyword-face) (2 py-class-name-face)) - ;; (,(rx symbol-start - ;; (or "raise" "except") - ;; symbol-end) . py-exception-name-face) - ;; already pseudo-keyword - ;; (,(rx symbol-start - ;; (or "None" "True" "False" "__debug__" "NotImplemented") - ;; symbol-end) . font-lock-constant-face) - (,(rx symbol-start - (or "cls" "self" "cls" "Ellipsis" "True" "False" "None" "__debug__" "NotImplemented") - symbol-end) . py-pseudo-keyword-face) - ;; Decorators. - (,(rx line-start (* (any " \t")) (group "@" (1+ (or word ?_)) - (0+ "." (1+ (or word ?_))))) - (1 py-decorators-face)) - ;; Builtin Exceptions - (,(rx word-start - (or "ArithmeticError" "AssertionError" "AttributeError" - "BaseException" "BufferError" "BytesWarning" "DeprecationWarning" - "EOFError" "EnvironmentError" "Exception" "FloatingPointError" - "FutureWarning" "GeneratorExit" "IOError" "ImportError" - "ImportWarning" "IndentationError" "IndexError" "KeyError" - "KeyboardInterrupt" "LookupError" "MemoryError" "NameError" "NoResultFound" - "NotImplementedError" "OSError" "OverflowError" - "PendingDeprecationWarning" "ReferenceError" "RuntimeError" - "RuntimeWarning" "StandardError" "StopIteration" "SyntaxError" - "SyntaxWarning" "SystemError" "SystemExit" "TabError" "TypeError" - "UnboundLocalError" "UnicodeDecodeError" "UnicodeEncodeError" - "UnicodeError" "UnicodeTranslateError" "UnicodeWarning" - "UserWarning" "ValueError" "Warning" "ZeroDivisionError") - word-end) . py-exception-name-face) - ;; (,(rx (or space line-start) symbol-start "range - ;; Builtins - (,(rx (or space line-start) symbol-start - (or "_" "__doc__" "__import__" "__name__" "__package__" "abs" "all" - "any" "apply" "basestring" "bin" "bool" "buffer" "bytearray" - "bytes" "callable" "chr" "classmethod" "cmp" "coerce" "compile" - "complex" "delattr" "dict" "dir" "divmod" "enumerate" "eval" - "execfile" "file" "filter" "float" "format" "frozenset" - "getattr" "globals" "hasattr" "hash" "help" "hex" "id" "input" - "int" "intern" "isinstance" "issubclass" "iter" "len" "list" - "locals" "long" "map" "max" "min" "next" "object" "oct" "open" - "ord" "pow" "print" "property" "range" "raw_input" "reduce" - "reload" "repr" "reversed" "round" "set" "setattr" "slice" - "sorted" "staticmethod" "str" "sum" "super" "tuple" "type" - "unichr" "unicode" "vars" "xrange" "zip") - symbol-end) . py-builtins-face) - ;; (,(python-rx line-start (* (any " \t"))(group (** 0 2 "_") word (0+ (or word ?_))(** 0 2 "_"))(* (any " \t")) assignment-operator) - ;; 1 py-variable-name-face) - ;; asignations - ;; support for a = b = c = 5 - ("\\([._[:word:]]+\\)\\(?:\\[[^]]+]\\)?[[:space:]]*\\(?:\\(?:\\*\\*\\|//\\|<<\\|>>\\|[%&*+/|^-]\\)?=\\)" - (1 py-variable-name-face nil nil)) - ;; a, b, c = (1, 2, 3) - (,(lambda (limit) - (let ((re (python-rx (group (+ (any word ?. ?_))) (* space) - (* ?, (* space) (+ (any word ?. ?_)) (* space)) - ?, (* space) (+ (any word ?. ?_)) (* space) - assignment-operator)) - (res nil)) - (while (and (setq res (re-search-forward re limit t)) - (goto-char (match-end 1)) - (nth 1 (syntax-ppss)) - ;; (python-syntax-context 'paren) - )) - res)) - (1 py-variable-name-face nil nil)) - ;; Numbers - (,(rx symbol-start (or (1+ digit) (1+ hex-digit)) symbol-end) . py-number-face))) - -(defconst py-font-lock-syntactic-keywords - '(("[^\\]\\\\\\(?:\\\\\\\\\\)*\\(\\s\"\\)\\1\\(\\1\\)" - (2 - (7))) - ("\\([RUBrub]?\\)[Rr]?\\(\\s\"\\)\\2\\(\\2\\)" - (1 - (py-quote-syntax 1)) - (2 - (py-quote-syntax 2)) - (3 - (py-quote-syntax 3))))) - -(defun py-quote-syntax (n) - "Put `syntax-table' property correctly on triple quote. -Used for syntactic keywords. N is the match number (1, 2 or 3)." - ;; Given a triple quote, we have to check the context to know - ;; whether this is an opening or closing triple or whether it's - ;; quoted anyhow, and should be ignored. (For that we need to do - ;; the same job as `syntax-ppss' to be correct and it seems to be OK - ;; to use it here despite initial worries.) We also have to sort - ;; out a possible prefix -- well, we don't _have_ to, but I think it - ;; should be treated as part of the string. - ;; Test cases: - ;; ur"""ar""" x='"' # """ - ;; x = ''' """ ' a - ;; ''' - ;; x '"""' x """ \"""" x - (save-excursion - (goto-char (match-beginning 0)) - (cond - ;; Consider property for the last char if in a fenced string. - ((= n 3) - (let* ((font-lock-syntactic-keywords nil) - (syntax (if (featurep 'xemacs) - (parse-partial-sexp (point-min) (point)) - (syntax-ppss)))) - (when (eq t (nth 3 syntax)) ; after unclosed fence - (goto-char (nth 8 syntax)) ; fence position - (skip-chars-forward "uUrRbB") ; skip any prefix - ;; Is it a matching sequence? - (if (eq (char-after) (char-after (match-beginning 2))) - (eval-when-compile (string-to-syntax "|")))))) - ;; Consider property for initial char, accounting for prefixes. - ((or (and (= n 2) ; leading quote (not prefix) - (= (match-beginning 1) (match-end 1))) ; prefix is null - (and (= n 1) ; prefix - (/= (match-beginning 1) (match-end 1)))) ; non-empty - (let ((font-lock-syntactic-keywords nil)) - (unless (eq 'string (syntax-ppss-context (if (featurep 'xemacs) - (parse-partial-sexp (point-min) (point)) - (syntax-ppss)))) - ;; (eval-when-compile (string-to-syntax "|")) - (eval-when-compile (string-to-syntax "|"))))) - ;; Otherwise (we're in a non-matching string) the property is - ;; nil, which is OK. - ))) - -;; An auxiliary syntax table which places underscore and dot in the -;; symbol class for simplicity - -;; credits to python.el -(defun py-beg-of-defun-function () - (set (make-local-variable 'beginning-of-defun-function) - 'py-beginning-of-def-or-class)) - -(defun py-end-of-defun-function () - (set (make-local-variable 'end-of-defun-function) 'py-end-of-def-or-class)) - -(make-obsolete-variable 'jpython-mode-hook 'jython-mode-hook nil) - -;; In previous version of python-mode.el, the hook was incorrectly -;; called py-mode-hook, and was not defvar'd. Deprecate its use. -(and (fboundp 'make-obsolete-variable) - (make-obsolete-variable 'py-mode-hook 'python-mode-hook nil)) - -(defun py-docstring-p (&optional beginning-of-string-position) - "Check to see if there is a docstring at POS." - (let* (pps - (pos (or beginning-of-string-position - (and (nth 3 (setq pps (syntax-ppss))) (nth 8 pps))))) - (save-restriction - (widen) - (save-excursion - (and pos (goto-char pos)) - (if (looking-at-p "'''\\|\"\"\"") - (progn - (py-beginning-of-statement) - (or (bobp) - (py-beginning-of-def-or-class-p))) - nil))))) - -(defun py-font-lock-syntactic-face-function (state) - (if (nth 3 state) - (if (py-docstring-p (nth 8 state)) - font-lock-doc-face - font-lock-string-face) - font-lock-comment-face)) - -(defun py-insert-default-shebang () - "Insert in buffer shebang of installed default Python. " - (interactive "*") - (let* ((erg (if py-edit-only-p - py-shell-name - (executable-find py-shell-name))) - (sheb (concat "#! " erg))) - (insert sheb))) - -(defun py-electric-comment (arg) - "Insert a comment. If starting a comment, indent accordingly. - -If a numeric argument ARG is provided, that many \"#\" are inserted -non-electrically. -With \\[universal-argument] \"#\" electric behavior is inhibited inside a string or comment." - (interactive "*P") - (if (and py-indent-comments py-electric-comment-p) - (if (ignore-errors (eq 4 (car-safe arg))) - (insert "#") - (when (and (eq last-command 'py-electric-comment) (looking-back " ")) - (forward-char -1)) - (if (interactive-p) (self-insert-command (prefix-numeric-value arg)) - (insert "#")) - (let ((orig (copy-marker (point))) - (indent (py-compute-indentation))) - (unless - ;; (or - (eq (current-indentation) indent) - ;; (looking-back "#[ \t]*")) - (goto-char orig) - (beginning-of-line) - (delete-horizontal-space) - (indent-to indent) - (goto-char orig)) - (when py-electric-comment-add-space-p - (unless (looking-at "[ \t]") - (insert " ")))) - (setq last-command this-command)) - (self-insert-command (prefix-numeric-value arg)))) - -(defun py-electric-colon (arg) - "Insert a colon and indent accordingly. - -If a numeric argument ARG is provided, that many colons are inserted -non-electrically. - -Electric behavior is inhibited inside a string or -comment or by universal prefix C-u. - -Switched by `py-electric-colon-active-p', default is nil -See also `py-electric-colon-greedy-p' " - (interactive "*P") - (cond ((not py-electric-colon-active-p) - (self-insert-command (prefix-numeric-value arg))) - ((and py-electric-colon-bobl-only (save-excursion (py-beginning-of-statement) (not (py-beginning-of-block-p)))) - (self-insert-command (prefix-numeric-value arg))) - ((eq 4 (prefix-numeric-value arg)) - (self-insert-command 1)) - (t (insert ":") - (unless (py-in-string-or-comment-p) - (let ((orig (copy-marker (point))) - (indent (py-compute-indentation))) - (unless (or (eq (current-indentation) indent) - (and (not py-electric-colon-greedy-p) - (eq (current-indentation)(save-excursion (beginning-of-line) (py-beginning-of-block)(current-indentation)))) - (and (py-top-level-form-p)(< (current-indentation) indent))) - (beginning-of-line) - (delete-horizontal-space) - (indent-to indent)) - (goto-char orig)) - (when py-electric-colon-newline-and-indent-p - (py-newline-and-indent)))))) - -(defun py-top-level-form-p () - "Return non-nil, if line starts with a top level definition. - -Used by `py-electric-colon', which will not indent than. " - (let (erg) - (save-excursion - (beginning-of-line) - (skip-chars-forward " \t") - (setq erg (looking-at py-extended-block-or-clause-re) - ;; (or (looking-at py-class-re) - ;; (looking-at py-def-re)) - )) - erg)) - - -;; Electric deletion -(defun py-empty-out-list-backward () - "Deletes all elements from list before point. " - (interactive "*") - (and (member (char-before) (list ?\) ?\] ?\})) - (let ((orig (point)) - (thischar (char-before)) - pps cn) - (forward-char -1) - (setq pps (syntax-ppss)) - (if (and (not (nth 8 pps)) (nth 1 pps)) - (progn - (goto-char (nth 1 pps)) - (forward-char 1)) - (cond ((or (eq thischar 41)(eq thischar ?\))) - (setq cn "(")) - ((or (eq thischar 125) (eq thischar ?\})) - (setq cn "{")) - ((or (eq thischar 93)(eq thischar ?\])) - (setq cn "["))) - (skip-chars-backward (concat "^" cn))) - (delete-region (point) orig) - (insert-char thischar 1) - (forward-char -1)))) - -(defun py-electric-backspace (&optional arg) - "Delete preceding character or level of indentation. - -With ARG do that ARG times. -Returns column reached. " - (interactive "*p") - (let ((arg (or arg 1)) - erg) - (dotimes (i arg) - (cond ((looking-back "^[ \t]+") - (let* ((remains (% (current-column) py-indent-offset))) - (if (< 0 remains) - (delete-char (- remains)) - (indent-line-to (- (current-indentation) py-indent-offset))))) - ((and py-electric-kill-backward-p (member (char-before) (list ?\) ?\] ?\}))) - (py-empty-out-list-backward)) - (t (delete-char (- 1))))) - (setq erg (current-column)) - (when (and (interactive-p) py-verbose-p) (message "%s" erg)) - erg)) - -(defun py-electric-delete (&optional arg) - "Delete following character or levels of whitespace. - -With ARG do that ARG times. " - (interactive "*p") - (let ((arg (or arg 1))) - (dotimes (i arg) - (if (and (or (bolp)(looking-back "^[ \t]+")) (looking-at "[ \t]+")) - (let* ((remains (% (+ (current-column) (- (match-end 0)(match-beginning 0))) py-indent-offset))) - (if (< 0 remains) - (delete-char remains) - (delete-char py-indent-offset))) - (delete-char 1))))) - -;; (defun py-electric-delete (arg) -;; "Delete preceding or following character or levels of whitespace. -;; -;; The behavior of this function depends on the variable -;; `delete-key-deletes-forward'. If this variable is nil (or does not -;; exist, as in older Emacsen and non-XEmacs versions), then this -;; function behaves identically to \\[c-electric-backspace]. -;; -;; If `delete-key-deletes-forward' is non-nil and is supported in your -;; Emacs, then deletion occurs in the forward direction, by calling the -;; function in `py-delete-function'. -;; -;; \\[universal-argument] (programmatically, argument ARG) specifies the -;; number of characters to delete (default is 1)." -;; (interactive "*p") -;; (if (or (and (fboundp 'delete-forward-p) ;XEmacs 21 -;; (delete-forward-p)) -;; (and (boundp 'delete-key-deletes-forward) ;XEmacs 20 -;; delete-key-deletes-forward)) -;; (funcall py-delete-function arg) -;; (py-electric-backspace arg))) - -;; required for pending-del and delsel modes -(put 'py-electric-colon 'delete-selection t) ;delsel -(put 'py-electric-colon 'pending-delete t) ;pending-del -(put 'py-electric-backspace 'delete-selection 'supersede) ;delsel -(put 'py-electric-backspace 'pending-delete 'supersede) ;pending-del -(put 'py-electric-delete 'delete-selection 'supersede) ;delsel -(put 'py-electric-delete 'pending-delete 'supersede) ;pending-del - - -(defun py-indent-line-outmost (&optional arg) - "Indent the current line to the outmost reasonable indent. - -With optional \\[universal-argument] an indent with length `py-indent-offset' is inserted unconditionally " - (interactive "*P") - (let* ((need (py-compute-indentation (point))) - (cui (current-indentation)) - (cuc (current-column))) - (cond ((eq 4 (prefix-numeric-value arg)) - (if indent-tabs-mode - (insert (make-string 1 9)) - (insert (make-string py-indent-offset 32)))) - (t - (if (and (eq need cui)(not (eq cuc cui))) - (back-to-indentation) - (beginning-of-line) - (delete-horizontal-space) - (indent-to need)))))) - -(defun py-indent-fix-region-intern (beg end) - "Used when `py-tab-indents-region-p' is non-nil. " - (let (indent) - (save-excursion - (save-restriction - (beginning-of-line) - (narrow-to-region beg end) - (forward-line 1) - (narrow-to-region (line-beginning-position) end) - (beginning-of-line) - (delete-region (point) (progn (skip-chars-forward " \t\r\n\f") (point))) - (indent-to (py-compute-indentation)) - (while - (< (line-end-position) end) - (forward-line 1) - (beginning-of-line) - (delete-region (point) (progn (skip-chars-forward " \t\r\n\f") (point))) - (indent-to (py-compute-indentation)))))) - ;; (exchange-point-and-mark) - ) - -(defun py--indent-line-intern (need cui py-indent-offset col &optional beg end region) - (if py-tab-indent - (progn - (and py-tab-indents-region-p region - (py-indent-fix-region-intern beg end)) - (cond ((eq need cui) - (if (or (eq this-command last-command) - (eq this-command 'py-indent-line)) - (if (and py-tab-shifts-region-p region) - (while (and (goto-char beg) (< 0 (current-indentation))) - (py-shift-region-left 1 beg end)) - (beginning-of-line) - (delete-horizontal-space) - (if (<= (line-beginning-position) (+ (point) (- col cui))) - (forward-char (- col cui)) - (beginning-of-line))))) - ((< cui need) - (if (and py-tab-shifts-region-p region) - (progn - (py-shift-region-right 1)) - (progn - (beginning-of-line) - (delete-horizontal-space) - (indent-to (+ (* (/ cui py-indent-offset) py-indent-offset) py-indent-offset)) - (forward-char (- col cui))))) - ((< need cui) - (if (and py-tab-shifts-region-p region) - (progn - (when (eq (point) (region-end)) - (exchange-point-and-mark)) - (while (< 0 (current-indentation)) - (py-shift-region-left 1))) - (beginning-of-line) - (delete-horizontal-space))) - (t - (if (and py-tab-shifts-region-p region) - (progn - ;; (when (eq (point) (region-end)) - ;; (exchange-point-and-mark)) - (while (< (current-indentation) need) - (py-shift-region-right 1))) - (beginning-of-line) - (delete-horizontal-space) - (indent-to need) - (back-to-indentation) - (if (<= (line-beginning-position) (+ (point) (- col cui))) - (forward-char (- col cui)) - (beginning-of-line)))))) - (insert-tab))) - -(defun py--indent-line-base () - (unless (and (not (eq this-command last-command)) - (eq cui need)) - (cond ((eq 4 (prefix-numeric-value arg)) - (if (and (eq cui (current-indentation)) - (<= need cui)) - (if indent-tabs-mode (insert "\t")(insert (make-string py-indent-offset 32))) - (beginning-of-line) - (delete-horizontal-space) - (indent-to (+ need py-indent-offset)))) - ((not (eq 1 (prefix-numeric-value arg))) - (py-smart-indentation-off) - (py--indent-line-intern need cui this-indent-offset col beg end region)) - (t (py--indent-line-intern need cui this-indent-offset col beg end region))))) - -(defun py-indent-line (&optional arg) - "Indent the current line according to Python rules. - -When called interactivly with \\[universal-argument], ignore dedenting rules for block closing statements -\(e.g. return, raise, break, continue, pass) - -An optional \\[universal-argument] followed by a numeric argument neither 1 nor 4 will switch off `py-smart-indentation' for this execution. This permits to correct allowed but unwanted indents. -Similar to `toggle-py-smart-indentation' resp. `py-smart-indentation-off' followed by TAB. - -This function is normally used by `indent-line-function' resp. -\\[indent-for-tab-command]. -Returns current indentation - -When bound to TAB, C-q TAB inserts a TAB. - -When `py-tab-shifts-region-p' is `t', not just the current line, -but the region is shiftet that way. - -If `py-tab-indents-region-p' is `t' and first TAB doesn't shift ---as indent is at outmost reasonable--, indent-region is called. - -C-q TAB inserts a literal TAB-character. -" - (interactive "P") - (let ((orig (copy-marker (point))) - (cui (current-indentation)) - need) - (if (interactive-p) - ;; TAB-leaves-point-in-the-wrong-lp-1178453-test - (let ((region (use-region-p)) - col beg end done) - (unless (eq this-command last-command) - (setq py-already-guessed-indent-offset nil)) - (and region - (setq beg (region-beginning)) - (setq end (region-end)) - (save-excursion - (goto-char beg) - (setq cui (current-indentation)) - (setq col (current-column)))) - (let* ((col (or col (current-column))) - (this-indent-offset - (cond ((and py-smart-indentation (not (eq this-command last-command))) - (py-guess-indent-offset)) - ((and py-smart-indentation (eq this-command last-command) py-already-guessed-indent-offset) - py-already-guessed-indent-offset) - (t (default-value 'py-indent-offset))))) - (setq need (if (and (eq this-command last-command) py-already-guessed-indent-offset) - (if region - (save-excursion - ;; if previous command was an indent - ;; already, position reached might - ;; produce false guesses - (goto-char beg) (py-compute-indentation beg nil nil nil nil nil py-already-guessed-indent-offset)) - (py-compute-indentation nil nil nil nil nil nil py-already-guessed-indent-offset)) - (if region - (save-excursion (goto-char beg) (py-compute-indentation nil nil nil nil nil nil this-indent-offset)) - (py-compute-indentation nil nil nil nil nil nil this-indent-offset)))) - (py--indent-line-base) - (if region - (and (or py-tab-shifts-region-p - py-tab-indents-region-p) - (not (eq (point) orig)) - (exchange-point-and-mark)) - (and (< (current-column) (current-indentation))(back-to-indentation))) - (when (and (interactive-p) py-verbose-p)(message "%s" (current-indentation))) - (current-indentation))) - (setq need (py-compute-indentation)) - (unless (eq cui need) - (beginning-of-line) - (delete-horizontal-space) - (indent-to need) - (if (< (point) orig) (goto-char orig)(back-to-indentation)))))) - -(defun py-newline-and-indent () - "Add a newline and indent to outmost reasonable indent. -When indent is set back manually, this is honoured in following lines. " - (interactive "*") - (let ((orig (point)) - erg pos) - (newline) - (if (and py-empty-line-closes-p (or (eq this-command last-command)(py-after-empty-line))) - (setq erg (indent-to-column (save-excursion (py-beginning-of-statement)(- (current-indentation) py-indent-offset)))) - (when (or py-newline-delete-trailing-whitespace-p py-trailing-whitespace-smart-delete-p) - (setq pos (copy-marker (point))) - (save-excursion - (goto-char orig) - (if (and (bolp)(eolp)) - (if (string-match "23.4" emacs-version) - (progn (save-restriction - (narrow-to-region (point) pos) - (delete-trailing-whitespace))) - (delete-trailing-whitespace (line-beginning-position) pos)) - (skip-chars-backward " \t") - (if (string-match "23.4" emacs-version) - (progn (save-restriction - (narrow-to-region (point) pos) - (delete-trailing-whitespace))) - (delete-trailing-whitespace (point) (marker-position pos)))))) - (setq erg (indent-to-column (py-compute-indentation)))) - (when (and (interactive-p) py-verbose-p) (message "%s" erg)) - erg)) - -(defalias 'py-newline-and-close-block 'py-newline-and-dedent) -(defun py-newline-and-dedent () - "Add a newline and indent to one level below current. -Returns column. " - (interactive "*") - (let ((cui (current-indentation)) - erg) - (newline) - (when (< 0 cui) - (setq erg (- (py-compute-indentation) py-indent-offset)) - (indent-to-column erg)) - (when (and (interactive-p) py-verbose-p) (message "%s" erg)) - erg)) - -(defun py-indent-tabs-mode (arg &optional iact) - "With positive ARG switch `indent-tabs-mode' on. - -With negative ARG switch `indent-tabs-mode' off. -Returns value of `indent-tabs-mode' switched to. " - (interactive "p") - (if (< 0 arg) - (progn - (setq indent-tabs-mode t) - (setq tab-width py-indent-offset)) - (setq indent-tabs-mode nil)) - (when (and py-verbose-p (or iact (interactive-p))) (message "indent-tabs-mode %s py-indent-offset %s" indent-tabs-mode py-indent-offset)) - indent-tabs-mode) - -;; Guess indent offset -(defun py-guessed-sanity-check (guessed) - (and (>= guessed 2)(<= guessed 8)(eq 0 (% guessed 2)))) - -(defun py-guess-indent-final (indents orig) - "Calculate and do sanity-check. " - (let* ((first (car indents)) - (second (cadr indents)) - (erg (if (and first second) - (if (< second first) - ;; (< (point) orig) - (- first second) - (- second first)) - (default-value 'py-indent-offset)))) - (setq erg (and (py-guessed-sanity-check erg) erg)) - erg)) - -(defun py-guess-indent-forward () - "Called when moving to end of a form and `py-smart-indentation' is on. " - (interactive) - (let* ((first (if - (py-beginning-of-statement-p) - (current-indentation) - (progn - (py-end-of-statement) - (py-beginning-of-statement) - (current-indentation)))) - (second (if (or (looking-at py-extended-block-or-clause-re)(eq 0 first)) - (progn - (py-end-of-statement) - (py-end-of-statement) - (py-beginning-of-statement) - (current-indentation)) - ;; when not starting from block, look above - (while (and (re-search-backward py-extended-block-or-clause-re nil 'movet 1) - (or (>= (current-indentation) first) - (nth 8 (syntax-ppss))))) - (current-indentation)))) - (list first second))) - -(defun py-guess-indent-backward () - "Called when moving to beginning of a form and `py-smart-indentation' is on. " - (let* ((cui (current-indentation)) - (indent (if (< 0 cui) cui 999)) - (pos (progn (while (and (re-search-backward py-extended-block-or-clause-re nil 'movet 1) - (or (>= (current-indentation) indent) - (nth 8 (syntax-ppss))))) - (unless (bobp) (point)))) - (first (and pos (current-indentation))) - (second (and pos (py-end-of-statement) (py-end-of-statement) (py-beginning-of-statement)(current-indentation)))) - (list first second))) - -(defun py-guess-indent-offset (&optional direction) - "Guess `py-indent-offset'. - -Set local value of `py-indent-offset', return it - -Might change local value of `py-indent-offset' only when called -downwards from beginning of block followed by a statement. Otherwise default-value is returned. -" - (interactive) - (save-excursion - (let* ((orig (point)) - (indents - (cond (direction - (if (eq 'forward direction) - (py-guess-indent-forward) - (py-guess-indent-backward))) - ;; guess some usable indent is above current position - ((eq 0 (current-indentation)) - (py-guess-indent-forward)) - (t (py-guess-indent-backward)))) - (erg (py-guess-indent-final indents orig))) - (if erg (setq py-indent-offset erg) - (setq py-indent-offset - (default-value 'py-indent-offset))) - (when (interactive-p) (message "%s" py-indent-offset)) - py-indent-offset))) - -;;; -(defun py-comment-indent-function () - "Python version of `comment-indent-function'." - ;; This is required when filladapt is turned off. Without it, when - ;; filladapt is not used, comments which start in column zero - ;; cascade one character to the right - (save-excursion - (beginning-of-line) - (let ((eol (line-end-position))) - (and comment-start-skip - (re-search-forward comment-start-skip eol t) - (setq eol (match-beginning 0))) - (goto-char eol) - (skip-chars-backward " \t") - (max comment-column (+ (current-column) (if (bolp) 0 1)))))) - -(defun py-narrow-to-defun () - "Make text outside current def or class invisible. - -The defun visible is the one that contains point or follows point. " - (interactive) - (save-excursion - (let ((end (py-beginning-of-def-or-class))) - (py-end-of-def-or-class) - (narrow-to-region (point) end)))) - -;; make general form below work also in these cases -(defalias 'py-beginning-of-paragraph 'backward-paragraph) -(defalias 'py-end-of-paragraph 'forward-paragraph) - -;;; Shifting - -(defalias 'py-shift-region-left 'py-shift-left) -(defun py-shift-left (&optional count start end) - "Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. " - (interactive "p") - (setq count (or count 1)) - (let ((erg (py-shift-intern (- count) start end))) - (when (and (interactive-p) py-verbose-p) (message "%s" erg)) - erg)) - -(defalias 'py-shift-region-right 'py-shift-right) -(defun py-shift-right (&optional count beg end) - "Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. " - (interactive "p") - (setq count (or count 1)) - (let ((erg (py-shift-intern count beg end))) - (when (and (interactive-p) py-verbose-p) (message "%s" erg)) - erg)) - -(defun py-shift-intern (count &optional start end) - (save-excursion - (let* ((inhibit-point-motion-hooks t) - deactivate-mark - (beg (cond (start) - ((region-active-p) - (save-excursion - (goto-char - (region-beginning)))) - (t (line-beginning-position)))) - (end (cond (end) - ((region-active-p) - (save-excursion - (goto-char - (region-end)))) - (t (line-end-position)))) - (orig end)) - (setq beg (copy-marker beg)) - (setq end (copy-marker end)) - (if (< 0 count) - (indent-rigidly beg end py-indent-offset) - (indent-rigidly beg end (- py-indent-offset))) - (push-mark beg t) - (goto-char end) - (skip-chars-backward " \t\r\n\f")) - (py-indentation-of-statement))) - -(defun py-shift-forms-base (form arg &optional beg end) - (let* ((begform (intern-soft (concat "py-beginning-of-" form))) - (endform (intern-soft (concat "py-end-of-" form))) - (orig (copy-marker (point))) - (beg (cond (beg) - ((region-active-p) - (save-excursion - (goto-char (region-beginning)) - (line-beginning-position))) - (t (save-excursion - (funcall begform) - (line-beginning-position))))) - (end (cond (end) - ((region-active-p) - (region-end)) - (t (funcall endform)))) - (erg (py-shift-intern arg beg end))) - (goto-char orig) - erg)) - -(defun py-shift-paragraph-right (&optional arg) - "Indent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "paragraph" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-paragraph-left (&optional arg) - "Dedent paragraph by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "paragraph" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-block-right (&optional arg) - "Indent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "block" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-block-left (&optional arg) - "Dedent block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "block" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-minor-block-left (&optional arg) - "Dedent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. " - (interactive "*P") - (let ((erg (py-shift-forms-base "minor-block" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-minor-block-right (&optional arg) - "Indent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. -A minor block is started by a `for', `if', `try' or `with'. " - (interactive "*P") - (let ((erg (py-shift-forms-base "minor-block" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-clause-right (&optional arg) - "Indent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "clause" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-clause-left (&optional arg) - "Dedent clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "clause" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-block-or-clause-right (&optional arg) - "Indent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "block-or-clause" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-block-or-clause-left (&optional arg) - "Dedent block-or-clause by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "block-or-clause" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-def-right (&optional arg) - "Indent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "def" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-def-left (&optional arg) - "Dedent def by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "def" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-class-right (&optional arg) - "Indent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "class" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-class-left (&optional arg) - "Dedent class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "class" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-def-or-class-right (&optional arg) - "Indent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "def-or-class" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-def-or-class-left (&optional arg) - "Dedent def-or-class by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "def-or-class" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-line-right (&optional arg) - "Indent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "line" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-line-left (&optional arg) - "Dedent line by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "line" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-statement-right (&optional arg) - "Indent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "statement" (or arg py-indent-offset)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-shift-statement-left (&optional arg) - "Dedent statement by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. " - (interactive "*P") - (let ((erg (py-shift-forms-base "statement" (- (or arg py-indent-offset))))) - (when (interactive-p) (message "%s" erg)) - erg)) - -;; -(defun py-indent-and-forward () - "Indent current line according to mode, move one line forward. " - (interactive "*") - (beginning-of-line) - (fixup-whitespace) - (indent-to (py-compute-indentation)) - (if (eobp) - (newline-and-indent) - (forward-line 1)) - (back-to-indentation)) - -(defun py-indent-region (start end &optional indent-offset recursive) - "Reindent a region of Python code. - -With optional INDENT-OFFSET specify a different value than `py-indent-offset' at place. - -Guesses the outmost reasonable indent -Returns and keeps relative position " - (interactive "*r\nP") - (let ((orig (copy-marker (point))) - (beg start) - (end (copy-marker end)) - (py-indent-offset (prefix-numeric-value - (or indent-offset py-indent-offset)))) - (goto-char beg) - (while (< (line-end-position) end) - (if (and (bolp)(eolp)) - (forward-line 1) - (py-indent-and-forward))) - (unless (and (bolp)(eolp)) (py-indent-line)) - (goto-char orig))) - -;;; Positions -(defun py-beginning-of-paragraph-position () - "Returns beginning of paragraph position. " - (interactive) - (save-excursion - (let ((erg (progn - (py-beginning-of-paragraph) - (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-paragraph-position () - "Returns end of paragraph position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-paragraph) - (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-block-position () - "Returns beginning of block position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-block))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-block-position () - "Returns end of block position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-block)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-minor-block-position () - "Returns beginning of minor-block position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-minor-block))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-minor-block-position () - "Returns end of minor-block position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-minor-block)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-clause-position () - "Returns beginning of clause position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-clause))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-clause-position () - "Returns end of clause position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-clause)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-block-or-clause-position () - "Returns beginning of block-or-clause position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-block-or-clause))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-block-or-clause-position () - "Returns end of block-or-clause position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-block-or-clause)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-def-position () - "Returns beginning of def position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-def))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-def-position () - "Returns end of def position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-def)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-class-position () - "Returns beginning of class position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-class))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-class-position () - "Returns end of class position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-class)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-def-or-class-position () - "Returns beginning of def-or-class position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-def-or-class))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-def-or-class-position () - "Returns end of def-or-class position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-def-or-class)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-line-position () - "Returns beginning of line position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-line))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-line-position () - "Returns end of line position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-line)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-statement-position () - "Returns beginning of statement position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-statement))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-statement-position () - "Returns end of statement position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-statement)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-comment-position () - "Returns beginning of comment position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-comment))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-comment-position () - "Returns end of comment position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-comment)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-top-level-position () - "Returns beginning of top-level position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-top-level))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-top-level-position () - "Returns end of top-level position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-top-level)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-partial-expression-position () - "Returns beginning of partial-expression position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-partial-expression))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-partial-expression-position () - "Returns end of partial-expression position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-partial-expression)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning-of-expression-position () - "Returns beginning of expression position. " - (interactive) - (save-excursion - (let ((erg (py-beginning-of-expression))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-expression-position () - "Returns end of expression position. " - (interactive) - (save-excursion - (let ((erg (progn - (when (looking-at "[ \\t\\r\\n\\f]*$") - (skip-chars-backward " \t\r\n\f") - (forward-char -1)) - (py-end-of-expression)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -;;; some more Positions not generated by -;; `py-write-beg-end-position-forms' -(defalias 'py-in-list-p 'py-list-beginning-position) -(defun py-list-beginning-position (&optional start) - "Return lists beginning position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'." - (interactive) - (let* ((ppstart (or start (point-min))) - (erg (nth 1 (syntax-ppss)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-end-of-list-position (&optional arg) - "Return end position, nil if not inside. - -Optional ARG indicates a start-position for `parse-partial-sexp'." - (interactive) - (let* ((ppstart (or arg (point-min))) - (erg (syntax-ppss)) - (beg (nth 1 erg)) - end) - (when beg - (save-excursion - (goto-char beg) - (forward-list 1) - (setq end (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" end)) - end)) - -(defun py-in-comment-p () - "Return the beginning of current line's comment, if inside. " - (save-restriction - (widen) - (let* ((pps (syntax-ppss)) - (erg (when (nth 4 pps) (nth 8 pps)))) - (unless erg - (when (looking-at (concat "^[ \t]*" comment-start-skip)) - (setq erg (point)))) - erg))) - -(defun py-in-triplequoted-string-p () - "Returns character address of start tqs-string, nil if not inside. " - (interactive) - (let* ((pps (syntax-ppss)) - (erg (when (and (nth 3 pps) (nth 8 pps))(nth 2 pps)))) - (save-excursion - (unless erg (setq erg - (progn - (when (looking-at "\"\"\"\\|''''") - (goto-char (match-end 0)) - (setq pps (syntax-ppss)) - (when (and (nth 3 pps) (nth 8 pps)) (nth 2 pps))))))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-in-string-p () - "Returns character address of start of string, nil if not inside. " - (interactive) - (let* ((pps (syntax-ppss)) - (erg (when (nth 3 pps) (nth 8 pps)))) - (save-excursion - (unless erg (setq erg - (progn - (when (looking-at "\"\\|'") - (forward-char 1) - (setq pps (syntax-ppss)) - (when (nth 3 pps) (nth 8 pps))))))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-in-statement-p () - "Returns list of beginning and end-position if inside. - -Result is useful for booleans too: (when (py-in-statement-p)...) -will work. -" - (interactive) - (let ((orig (point)) - beg end erg) - (save-excursion - (setq end (py-end-of-statement)) - (setq beg (py-beginning-of-statement)) - (when (and (<= beg orig)(<= orig end)) - (setq erg (cons beg end)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)))) - -;;; Bounds -(defun py-bounds-of-statement (&optional position) - "Returns bounds of statement at point. - -With optional POSITION, a number, report bounds of statement at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-statement-position)) - (end (py-end-of-statement-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-statements () - "Bounds of consecutive multitude of statements around point. - -Indented same level, which don't open blocks. " - (interactive) - (let* ((orig-indent (progn - (back-to-indentation) - (unless (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (unless (py-beginning-of-block-p) - (current-indentation)))) - (orig (point)) - last beg end) - (when orig-indent - (setq beg (point)) - (while (and (setq last beg) - (setq beg - (when (py-beginning-of-statement) - (line-beginning-position))) - (not (py-in-string-p)) - (not (py-beginning-of-block-p)) - (eq (current-indentation) orig-indent))) - (setq beg last) - (goto-char orig) - (setq end (line-end-position)) - (while (and (setq last (line-end-position)) - (setq end (py-down-statement)) - (not (py-beginning-of-block-p)) - (not (py-in-string-p)) - (eq (py-indentation-of-statement) orig-indent))) - (setq end last) - (goto-char orig) - (if (and beg end) - (progn - (when (and py-verbose-p (interactive-p)) (message "%s %s" beg end)) - (cons beg end)) - (when (and py-verbose-p (interactive-p)) (message "%s" nil)) - nil)))) - -(defun py-bounds-of-block (&optional position) - "Returns bounds of block at point. - -With optional POSITION, a number, report bounds of block at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-block-position)) - (end (py-end-of-block-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-clause (&optional position) - "Returns bounds of clause at point. - -With optional POSITION, a number, report bounds of clause at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-clause-position)) - (end (py-end-of-clause-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-block-or-clause (&optional position) - "Returns bounds of block-or-clause at point. - -With optional POSITION, a number, report bounds of block-or-clause at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-block-or-clause-position)) - (end (py-end-of-block-or-clause-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-def (&optional position) - "Returns bounds of def at point. - -With optional POSITION, a number, report bounds of def at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-def-position)) - (end (py-end-of-def-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-class (&optional position) - "Returns bounds of class at point. - -With optional POSITION, a number, report bounds of class at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-class-position)) - (end (py-end-of-class-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-region () - "Returns bounds of region at point. - -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (let ((beg (region-beginning)) - (end (region-end))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-beginning-of-buffer-position () - (point-min)) - -(defun py-end-of-buffer-position () - (point-max)) - -(defun py-bounds-of-buffer (&optional position) - "Returns bounds of buffer at point. - -With optional POSITION, a number, report bounds of buffer at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-buffer-position)) - (end (py-end-of-buffer-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-expression (&optional position) - "Returns bounds of expression at point. - -With optional POSITION, a number, report bounds of expression at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-expression-position)) - (end (py-end-of-expression-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-partial-expression (&optional position) - "Returns bounds of partial-expression at point. - -With optional POSITION, a number, report bounds of partial-expression at POSITION. -Returns a list, whose car is beg, cdr - end." - (interactive) - (save-excursion - (save-restriction - (widen) - (when position (goto-char position)) - (let ((beg (py-beginning-of-partial-expression-position)) - (end (py-end-of-partial-expression-position))) - (if (and beg end) - (when (and py-verbose-p (interactive-p)) (message "%s" (list beg end))) - (list beg end)))))) - -(defun py-bounds-of-declarations () - "Bounds of consecutive multitude of assigments resp. statements around point. - -Indented same level, which don't open blocks. -Typically declarations resp. initialisations of variables following -a class or function definition. -See also py-bounds-of-statements " - (interactive) - (let* ((orig-indent (progn - (back-to-indentation) - (unless (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (unless (py-beginning-of-block-p) - (current-indentation)))) - (orig (point)) - last beg end) - (when orig-indent - (setq beg (line-beginning-position)) - ;; look upward first - (while (and - (progn - (unless (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (line-beginning-position)) - (py-beginning-of-statement) - (not (py-beginning-of-block-p)) - (eq (current-indentation) orig-indent)) - (setq beg (line-beginning-position))) - (goto-char orig) - (while (and (setq last (line-end-position)) - (setq end (py-down-statement)) - (not (py-beginning-of-block-p)) - (eq (py-indentation-of-statement) orig-indent))) - (setq end last) - (goto-char beg) - (if (and beg end) - (progn - (when (and py-verbose-p (interactive-p)) (message "%s %s" beg end)) - (cons beg end)) - (when (and py-verbose-p (interactive-p)) (message "%s" nil)) - nil)))) - -;;; Comments, Filling -(defun py-beginning-of-comment () - "Go to the beginning of current line's comment, if any. - -Returns position if succesful. " - (interactive) - (save-restriction - (widen) - (let ((pps (syntax-ppss))) - (when (nth 4 pps) - (goto-char - (nth 8 pps)))))) - -(defun py-end-of-comment () - "Go to the end of comment at point. - -Returns position, nil if not in comment." - - (interactive) - (let ((orig (point)) - last) - (while (and (not (eobp)) (or (looking-at (concat "[ \t]*" comment-start))(nth 4 (syntax-ppss))(and (bolp)(eolp)))) - (unless (and (bolp)(eolp)) - (setq last (point))) - (forward-line 1)) - (if last - (progn - (goto-char last) - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (point)) - last))) - -;;; Comment forms -(defun py-comment-region (beg end &optional arg) - "Like `comment-region' but uses double hash (`#') comment starter." - (interactive "r\nP") - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start))) - (comment-region beg end arg))) - -(defun py-comment-block (&optional beg end arg) - "Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-block-position))) - (end (or end (py-end-of-block-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-minor-block (&optional beg end arg) - "Comments minor-block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-minor-block-position))) - (end (or end (py-end-of-minor-block-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-top-level (&optional beg end arg) - "Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-top-level-position))) - (end (or end (py-end-of-top-level-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-clause (&optional beg end arg) - "Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-clause-position))) - (end (or end (py-end-of-clause-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-block-or-clause (&optional beg end arg) - "Comments block-or-clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-block-or-clause-position))) - (end (or end (py-end-of-block-or-clause-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-def (&optional beg end arg) - "Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-def-position))) - (end (or end (py-end-of-def-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-class (&optional beg end arg) - "Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-class-position))) - (end (or end (py-end-of-class-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-def-or-class (&optional beg end arg) - "Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-def-or-class-position))) - (end (or end (py-end-of-def-or-class-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -(defun py-comment-statement (&optional beg end arg) - "Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default" - (interactive "*") - (save-excursion - (let ((comment-start (if py-block-comment-prefix-p - py-block-comment-prefix - comment-start)) - (beg (or beg (py-beginning-of-statement-position))) - (end (or end (py-end-of-statement-position)))) - (goto-char beg) - (push-mark) - (goto-char end) - (comment-region beg end arg)))) - -;; Comment forms -(defun py-uncomment-intern (beg end) - (uncomment-region beg end) - (when py-uncomment-indents-p - (py-indent-region beg end))) - -(defun py-uncomment (&optional beg end) - "Uncomment commented lines at point. - -If region is active, restrict uncommenting at region " - (interactive "*") - (save-excursion - (save-restriction - (when (use-region-p) - (narrow-to-region (region-beginning) (region-end))) - (let* (last - (beg (or beg (save-excursion - (while (and (py-beginning-of-comment) (setq last (point))(prog1 (forward-line -1)(end-of-line)))) - last)))) - (and (py-end-of-comment)) - (py-uncomment-intern beg (point)))))) - -(defun py-delete-comments-in-def-or-class () - "Delete all commented lines in def-or-class at point" - (interactive "*") - (save-excursion - (let ((beg (py-beginning-of-def-or-class-position)) - (end (py-end-of-def-or-class-position))) - (and beg end (py--delete-comments-intern beg end))))) - -(defun py-delete-comments-in-class () - "Delete all commented lines in class at point" - (interactive "*") - (save-excursion - (let ((beg (py-beginning-of-class-position)) - (end (py-end-of-class-position))) - (and beg end (py--delete-comments-intern beg end))))) - -(defun py-delete-comments-in-block () - "Delete all commented lines in block at point" - (interactive "*") - (save-excursion - (let ((beg (py-beginning-of-block-position)) - (end (py-end-of-block-position))) - (and beg end (py--delete-comments-intern beg end))))) - -(defun py-delete-comments-in-region (beg end) - "Delete all commented lines in region. " - (interactive "r*") - (save-excursion - (py--delete-comments-intern beg end))) - -(defun py--delete-comments-intern (beg end) - (save-restriction - (narrow-to-region beg end) - (goto-char beg) - (while (and (< (line-end-position) end) (not (eobp))) - (beginning-of-line) - (if (looking-at (concat "[ \t]*" comment-start)) - (delete-region (point) (1+ (line-end-position))) - (forward-line 1))))) -;;; -(defun py-join-words-wrapping (words separator line-prefix line-length) - (let ((lines ()) - (current-line line-prefix)) - (while words - (let* ((word (car words)) - (maybe-line (concat current-line word separator))) - (if (> (length maybe-line) line-length) - (setq lines (cons (substring current-line 0 -1) lines) - current-line (concat line-prefix word separator " ")) - (setq current-line (concat maybe-line " ")))) - (setq words (cdr words))) - (setq lines (cons (substring - current-line 0 (- 0 (length separator) 1)) lines)) - (mapconcat 'identity (nreverse lines) "\n"))) - -(defun py-fix-this-indent (indent) - (unless (and (eq (current-indentation) (current-column)) - (eq (current-column) indent)) - (beginning-of-line) - (indent-to-column indent) - (delete-region - (point) - (progn (skip-chars-forward " \t") (point))))) - -(defun py-fill-comment (&optional justify) - "Fill the comment paragraph at point" - (interactive "*P") - (let (;; Non-nil if the current line contains a comment. - has-comment - - ;; If has-comment, the appropriate fill-prefix for the comment. - comment-fill-prefix) - - ;; Figure out what kind of comment we are looking at. - (save-excursion - (beginning-of-line) - (cond - ;; A line with nothing but a comment on it? - ((looking-at "[ \t]*#[# \t]*") - (setq has-comment t - comment-fill-prefix (buffer-substring (match-beginning 0) - (match-end 0)))) - - ;; A line with some code, followed by a comment? Remember that the hash - ;; which starts the comment shouldn't be part of a string or character. - ((progn - (while (not (looking-at "#\\|$")) - (skip-chars-forward "^#\n\"'\\") - (cond - ((eq (char-after (point)) ?\\) (forward-char 2)) - ((memq (char-after (point)) '(?\" ?')) (forward-sexp 1)))) - (looking-at "#+[\t ]*")) - (setq has-comment t) - (setq comment-fill-prefix - (concat (make-string (current-column) ? ) - (buffer-substring (match-beginning 0) (match-end 0))))))) - - (if (not has-comment) - (fill-paragraph justify) - - ;; Narrow to include only the comment, and then fill the region. - (save-restriction - (narrow-to-region - - ;; Find the first line we should include in the region to fill. - (save-excursion - (while (and (zerop (forward-line -1)) - (looking-at "^[ \t]*#"))) - - ;; We may have gone to far. Go forward again. - (or (looking-at "^[ \t]*#") - (forward-line 1)) - (point)) - - ;; Find the beginning of the first line past the region to fill. - (save-excursion - (while (progn (forward-line 1) - (looking-at "^[ \t]*#"))) - (point))) - - ;; Lines with only hashes on them can be paragraph boundaries. - (let ((paragraph-start (concat paragraph-start "\\|[ \t#]*$")) - (paragraph-separate (concat paragraph-separate "\\|[ \t#]*$")) - (fill-prefix comment-fill-prefix)) - ;;(message "paragraph-start %S paragraph-separate %S" - ;;paragraph-start paragraph-separate) - (fill-paragraph justify)))) - t)) - -(defun py-until-found (search-string liste) - "Search liste for search-string until found. " - (let ((liste liste) element) - (while liste - (if (member search-string (car liste)) - (setq element (car liste) liste nil)) - (setq liste (cdr liste))) - element)) - -(defun py-end-of-string (&optional beginning-of-string-position) - "Go to end of string at point, return position. - -Takes the result of (syntax-ppss)" - (interactive) - (let ((beginning-of-string-position (or beginning-of-string-position (and (nth 3 (syntax-ppss))(nth 8 (syntax-ppss))) - (and (looking-at "\"\"\"\\|'''\\|\"\\|\'")(match-beginning 0)))) - erg) - (if beginning-of-string-position - (progn - (goto-char beginning-of-string-position) - (goto-char (scan-sexps (point) 1)) - (setq erg (point))) - (error (concat "py-end-of-string: don't see end-of-string at " (buffer-name (current-buffer)) "at pos " (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-fill-this-paragraph (justify style) - "Fill just the paragraph at point. " - (interactive "*") - (py-fill-string justify style (if (py-beginning-of-paragraph-p) (point) (progn (py-beginning-of-paragraph)(point))) (progn (py-end-of-paragraph)(point)))) - -(defun py-fill-paragraph (&optional justify style start end docstring) - "`fill-paragraph-function' - -If `py-paragraph-fill-docstring-p' and inside a docstring, the whole docstring is formatted. -See also `py-fill-string' " - (interactive "P") - (or (fill-comment-paragraph justify) - (let* ((orig (copy-marker (point))) - (pps (syntax-ppss)) - (docstring (and - ;; py-paragraph-fill-docstring-p - - (or docstring (py-docstring-p (nth 8 pps))))) - (beg (cond (start) - ((use-region-p) - (region-beginning)) - ((and docstring - ;; (or py-paragraph-fill-docstring-p - ;; pep-257-nn, delimiters are on first line - ;; (and - ;; (eq py-docstring-style 'pep-257-nn) - (ignore-errors (<= (py-beginning-of-paragraph-position)(nth 8 pps)))) - (nth 8 pps)) - (t (py-beginning-of-paragraph-position)))) - (end (copy-marker - (cond (end) - ((use-region-p) (region-end)) - (docstring (py-end-of-string (nth 8 pps))) - (t (if (or (looking-at paragraph-start)(re-search-forward paragraph-start nil t 1)) - (progn (skip-chars-backward " \t\r\n\f")(point)) - (point)))))) - (style (or style py-docstring-style)) - (this-end (point-min)) - last) - ;; (when (and (nth 3 pps) (< beg (nth 8 pps)) - ;; docstring - ;; (setq beg (nth 8 pps))) - ;; (setq end (py-end-of-string (nth 8 pps)))) - (save-excursion - (save-restriction - (narrow-to-region beg end) - (cond - ;; Comments - ((nth 4 pps) - (py-fill-comment justify)) - ;; Strings/Docstrings - ((or (nth 3 pps) - (equal (string-to-syntax "|") - (syntax-after (point))) - (looking-at py-string-delim-re)) - (goto-char beg) - (if (and py-paragraph-fill-docstring-p docstring - ;; (re-search-forward (concat "^" py-labelled-re) nil t) - ) - (progn - (goto-char beg) - ;; must process one by one - (while (and (not (eobp)) (setq last (point)) (forward-paragraph) (< last (point))(< (point) end)(setq this-end (point))) - (save-restriction - (narrow-to-region last this-end) - (goto-char last) - ;; (if (re-search-forward (concat "^" py-labelled-re) nil t this-end) - ;; (py-fill-labelled-string last this-end) - - (py-fill-string justify style last this-end pps 'no) - ;;) - (goto-char this-end) - (widen)))) - (goto-char orig) - (py-fill-this-paragraph justify style))) - ;; Decorators - ((save-excursion - (and (py-beginning-of-statement) - (equal (char-after) - ;; (back-to-indentation) - ;; (point)) - ?\@))) - (py-fill-decorator justify)) - (t (goto-char orig) - (py-fill-string justify style (if (py-beginning-of-paragraph-p) (point) (py-beginning-of-paragraph)) (py-end-of-paragraph)))))) - (goto-char orig) - (back-to-indentation)) - (recenter-top-bottom) - ;; fill-paragraph expexts t - t)) - -(defun py-fill-labelled-string (beg end) - "Fill string or paragraph containing lines starting with label - -See lp:1066489 " - (interactive "r*") - (let ((end (copy-marker end)) - (last (copy-marker (point))) - this-beg this-end) - (save-excursion - (save-restriction - (narrow-to-region beg end) - (goto-char beg) - (skip-chars-forward " \t\r\n\f") - (if (looking-at py-labelled-re) - (progn - (setq this-beg (line-beginning-position)) - (goto-char (match-end 0)) - (while (and (not (eobp)) (re-search-forward py-labelled-re end t 1)(< last (match-beginning 0))(setq last (match-beginning 0))) - (save-match-data (fill-region this-beg (1- (line-beginning-position)))) - (setq this-beg (line-beginning-position)) - (goto-char (match-end 0))))))))) - -(defun py-fill-string (&optional justify style beg end pps docstring) - "String fill function for `py-fill-paragraph'. -JUSTIFY should be used (if applicable) as in `fill-paragraph'. - -DOCSTRING is either a boolean or 'no -If `py-paragraph-fill-docstring-p' is `t', `M-q` fills the -complete docstring according to setting of `py-docstring-style' " - (interactive "P") - (save-excursion - (save-restriction - (let* ((style (or style py-docstring-style)) - (fill-column (if (integerp py-docstring-fill-column) - py-docstring-fill-column - fill-column)) - ;; unset python-mode value this time - forward-sexp-function - (orig (point-marker)) - (pps-raw (or pps (syntax-ppss))) - (pps (or (nth 8 pps-raw)(and (equal (string-to-syntax "|") - (syntax-after (point))) - (skip-chars-forward "\"'") - (syntax-ppss)) - (and (equal (string-to-syntax "|") - (syntax-after (1- (point)))) - (skip-chars-backward "\"'") - (syntax-ppss)))) - ;; if beginning of string is closer than arg beg, use this - (beg (or (and (numberp beg) - (ignore-errors (copy-marker beg))) - (cond ((and (nth 3 pps) (nth 8 pps)) - (goto-char (nth 8 pps)) - (skip-chars-forward "\"'") - (copy-marker (point))) - ((equal (string-to-syntax "|") - (syntax-after (point))) - (copy-marker (point)))))) - ;; Assume docstrings at BOL resp. indentation - (docstring (unless (eq 'no docstring) - (py-docstring-p (nth 8 pps)))) - (end (or (ignore-errors (and end (goto-char end) (skip-chars-backward "\"' \t\f\n")(copy-marker (point)))) - (progn (or (eq (marker-position beg) (point)) (goto-char (nth 8 pps))) - (forward-sexp) - ;; (scan-sexps (point) 1) - (skip-chars-backward "\"'") (point-marker)))) - multi-line-p - delimiters-style - erg) - ;; whitespace and newline will be added according to mode again - (goto-char beg) - (setq beg (progn (skip-chars-forward "\"'") (copy-marker (point)))) - (and docstring - (delete-region (point) (progn (skip-chars-forward " \t\r\n\f") (skip-chars-forward " \t\r\n\f")(point)))) - (goto-char end) - (and docstring - (delete-region (point) (progn (skip-chars-backward " \t\r\n\f")(point)))) - (cond - ((and docstring - (string-match (concat "^" py-labelled-re) (buffer-substring-no-properties beg end))) - (py-fill-labelled-string beg end)) - ((and docstring) - (narrow-to-region beg end) - (fill-region (point-min) (point-max))) - (t (narrow-to-region beg end) - (sit-for 0.1) - (fill-region beg end))) - (and docstring (setq multi-line-p - (> (count-matches "\n" beg end) 0))) - (and docstring - (setq delimiters-style - (case style - ;; delimiters-style is a cons cell with the form - ;; (START-NEWLINES . END-NEWLINES). When any of the sexps - ;; is NIL means to not add any newlines for start or end - ;; of docstring. See `py-docstring-style' for a - ;; graphic idea of each style. - (django (cons 1 1)) - (onetwo (and multi-line-p (cons 1 2))) - (pep-257 (and multi-line-p (cons nil 2))) - (pep-257-nn (and multi-line-p (cons nil 1))) - (symmetric (and multi-line-p (cons 1 1)))))) - (and docstring py-verbose-p (message "%s" delimiters-style)) - (widen) - (save-excursion - (when (and docstring style) - ;; Add the number of newlines indicated by the selected style - ;; at the start of the docstring. - (goto-char beg) - (and - (car delimiters-style) - (unless (or (and (bolp)(eolp)) (save-excursion (forward-line -1)(and (bolp)(eolp)))) - (or (newline (car delimiters-style)) t)) - (indent-region beg end)) - (and multi-line-p - (forward-line 1) - (unless (and (bolp)(eolp)) (insert "\n"))) - ;; Add the number of newlines indicated by the selected style - ;; at the end of the docstring. - (goto-char end) - (unless (eq (char-after) ?\n) - (and - (cdr delimiters-style) - (or (newline (cdr delimiters-style)) t))) - (setq end (progn (skip-chars-forward " \t\r\n\f")(skip-chars-forward "\"'")(copy-marker (point)))) - (setq beg (progn (goto-char beg) (skip-chars-backward " \t\r\n\f")(skip-chars-backward "\"'") (copy-marker (point))))) - (indent-region beg end) - (goto-char end) - (beginning-of-line) - (unless (eq (current-indentation) (setq erg (py-compute-indentation))) - (fixup-whitespace) - (indent-to erg))))))) - -(defun py-fill-decorator (&optional justify) - "Decorator fill function for `py-fill-paragraph'. -" - ;; (interactive "*P") - t) - -(defun py-fill-string-django (&optional justify) - "Fill docstring according to Django's coding standards style. - - \"\"\" - Process foo, return bar. - \"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' -" - (interactive "*P") - (py-fill-string justify 'django)) - -(defun py-fill-string-onetwo (&optional justify) - "One newline and start and Two at end style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' -" - (interactive "*P") - (py-fill-string justify 'onetwo)) - -(defun py-fill-string-pep-257 (&optional justify) - "PEP-257 with 2 newlines at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' -" - (interactive "*P") - (py-fill-string justify 'pep-257)) - -(defun py-fill-string-pep-257-nn (&optional justify) - "PEP-257 with 1 newline at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' -" - (interactive "*P") - (py-fill-string justify 'pep-257-nn)) - -(defun py-fill-string-symmetric (&optional justify) - "Symmetric style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' -" - (interactive "*P") - (py-fill-string justify 'symmetric)) - -;; (defun py-fill-paragraph (&optional justify) -;; "Like \\[fill-paragraph], but handle Python comments and strings. -;; -;; If any of the current line is a comment, fill the comment or the -;; paragraph of it that point is in, preserving the comment's indentation -;; and initial `#'s. -;; If point is inside a string, narrow to that string and fill. -;; " -;; (interactive "P") -;; (save-excursion -;; (save-restriction -;; (widen) -;; (let ((pps -;; (if (featurep 'xemacs) -;; (parse-partial-sexp (point-min) (point)) -;; (syntax-ppss)))) -;; (cond -;; ;; inside a comment -;; ((nth 4 pps) -;; (py-fill-comment justify)) -;; ;; only whitespace before the comment start -;; ((save-excursion (beginning-of-line) (looking-at "[ \t]*#")) -;; (py-fill-comment justify)) -;; ;; inside a string -;; ((nth 3 pps) -;; (py-fill-string (nth 8 pps))) -;; ;; opening quote of a string -;; ((progn (save-excursion (forward-char 1)(nth 3 pps))) -;; (save-excursion -;; (forward-char 1) -;; (py-fill-string (nth 8 pps))))))))) - -;; Beginning-of- p -(defun py-beginning-of-top-level-p () - "Returns position, if cursor is at the beginning of a top-level, nil otherwise. " - (interactive) - (let (erg) - (and (py-beginning-of-statement-p) - (eq 0 (current-column)) - (setq erg (point)) - erg))) - -(defun py-beginning-of-line-p () - "Returns position, if cursor is at the beginning of a line, nil otherwise. " - (when (bolp)(point))) - -(defun py-beginning-of-buffer-p () - "Returns position, if cursor is at the beginning of buffer, nil otherwise. " - (when (bobp)(point))) - -(defun py-beginning-of-paragraph-p () - "Returns position, if cursor is at the beginning of a paragraph, nil otherwise. " - (let ((orig (point)) - erg) - (if (and (bolp) (looking-at paragraph-separate)) - (setq erg (point)) - (save-excursion - (py-end-of-paragraph) - (py-beginning-of-paragraph) - (when (eq orig (point)) - (setq erg orig))) - erg))) - -(defun py-beginning-of-statement-p () - "Returns position, if cursor is at the beginning of a statement, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-end-of-statement) - (py-beginning-of-statement) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-beginning-of-expression-p () - "Returns position, if cursor is at the beginning of a expression, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-end-of-expression) - (py-beginning-of-expression) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-beginning-of-partial-expression-p () - "Returns position, if cursor is at the beginning of a partial-expression, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-end-of-partial-expression) - (py-beginning-of-partial-expression) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-beginning-of-block-p () - "Returns position, if cursor is at the beginning of a block, nil otherwise. " - (when (and (looking-at py-block-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-clause-p () - "Returns position, if cursor is at the beginning of a clause, nil otherwise. " - (when (and (looking-at py-clause-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-block-or-clause-p () - "Returns position, if cursor is at the beginning of a block-or-clause, nil otherwise. " - (when (and (looking-at py-block-or-clause-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-def-p () - "Returns position, if cursor is at the beginning of a def, nil otherwise. " - (when (and (looking-at py-def-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-class-p () - "Returns position, if cursor is at the beginning of a class, nil otherwise. " - (when (and (looking-at py-class-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-def-or-class-p () - "Returns position, if cursor is at the beginning of a def-or-class, nil otherwise. " - (when (and (looking-at py-def-or-class-re) - (not (py-in-string-or-comment-p))) - (point))) - -(defun py-beginning-of-minor-block-p () - "Returns position, if cursor is at the beginning of a minor-block, nil otherwise. - -A minor block is started by a `for', `if', `try' or `with'. -" - (when (and (looking-at py-minor-block-re) - (not (py-in-string-or-comment-p))) - (point))) - -;; End-of- p -(defun py-end-of-line-p () - "Returns position, if cursor is at the end of a line, nil otherwise. " - (when (eolp)(point))) - -(defun py-end-of-buffer-p () - "Returns position, if cursor is at the end of buffer, nil otherwise. " - (when (eobp)(point))) - -(defun py-end-of-paragraph-p () - "Returns position, if cursor is at the end of a paragraph, nil otherwise. " - (let ((orig (point)) - erg) - (if (and (eolp) (looking-at paragraph-separate)) - (setq erg (point)) - (save-excursion - (py-beginning-of-paragraph) - (py-end-of-paragraph) - (when (eq orig (point)) - (setq erg orig))) - erg))) - -(defun py-end-of-statement-p () - "Returns position, if cursor is at the end of a statement, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-statement) - (py-end-of-statement) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-expression-p () - "Returns position, if cursor is at the end of a expression, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-expression) - (py-end-of-expression) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-partial-expression-p () - "Returns position, if cursor is at the end of a partial-expression, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-partial-expression) - (py-end-of-partial-expression) - (when (eq orig (point)) - (setq erg orig))) - erg)) - -(defun py-end-of-block-p () - "Returns position, if cursor is at the end of a block, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-block) - (py-end-of-block) - (when (eq orig (point)) - (setq erg orig))) - erg)) - -(defun py-end-of-clause-p () - "Returns position, if cursor is at the end of a clause, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-clause) - (py-end-of-clause) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-block-or-clause-p () - "Returns position, if cursor is at the end of a block-or-clause, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-block-or-clause) - (py-end-of-block-or-clause) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-def-p () - "Returns position, if cursor is at the end of a def, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-def) - (py-end-of-def) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-class-p () - "Returns position, if cursor is at the end of a class, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-class) - (py-end-of-class) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defun py-end-of-def-or-class-p () - "Returns position, if cursor is at the end of a def-or-class, nil otherwise. " - (let ((orig (point)) - erg) - (save-excursion - (py-beginning-of-def-or-class) - (py-end-of-def-or-class) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -;;; Opens-p -(defun py-statement-opens-block-p (&optional regexp) - "Return position if the current statement opens a block -in stricter or wider sense. - -For stricter sense specify regexp. " - (interactive) - (let* ((regexp (or regexp py-block-or-clause-re)) - (erg (py-statement-opens-base regexp))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-statement-opens-base (regexp) - (let ((orig (point)) - erg) - (save-excursion - (back-to-indentation) - (py-end-of-statement) - (py-beginning-of-statement) - (when (and - (<= (line-beginning-position) orig)(looking-back "^[ \t]*")(looking-at regexp)) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-statement-opens-clause-p () - "Return position if the current statement opens block or clause. " - (interactive) - (py-statement-opens-base py-clause-re)) - -(defun py-statement-opens-block-or-clause-p () - "Return position if the current statement opens block or clause. " - (interactive) - (py-statement-opens-base py-block-or-clause-re)) - -(defun py-statement-opens-class-p () - "Return `t' if the statement opens a functions or class definition, nil otherwise. " - (interactive) - (py-statement-opens-base py-class-re)) - -(defun py-statement-opens-def-p () - "Return `t' if the statement opens a functions or class definition, nil otherwise. " - (interactive) - (py-statement-opens-base py-def-re)) - -(defun py-statement-opens-def-or-class-p () - "Return `t' if the statement opens a functions or class definition, nil otherwise. " - (interactive) - (py-statement-opens-base py-def-or-class-re)) - -(defun py-statement-closes-block-p () - "Return t iff the current statement closes a block. -I.e., if the line starts with `return', `raise', `break', `continue', -and `pass'. This doesn't catch embedded statements." - (let ((here (point))) - (unless (py-beginning-of-statement-p) (py-beginning-of-statement)) - (prog1 - (looking-at py-block-closing-keywords-re) - (goto-char here)))) - -(defun py-end-of-clause-intern (&optional regexp orig) - "Used internal by functions going to the end of a current clause. " - (unless (eobp) - (let* ((regexp (or regexp py-block-or-clause-re)) - (orig (or orig (point))) - (erg (if (py-statement-opens-block-p regexp) - (point) - (py-go-to-keyword py-extended-block-or-clause-re) - (when (py-statement-opens-block-p regexp) - (point)))) - ind res) - (if erg - (progn - (setq ind (+ py-indent-offset (current-indentation))) - (py-end-of-statement) - (forward-line 1) - (setq erg (py-travel-current-indent ind))) - (goto-char orig) - (py-look-downward-for-clause)) - (when (and (bolp)(eolp)) - (skip-chars-backward " \t\r\n\f") - (py-beginning-of-comment) - (skip-chars-backward " \t\r\n\f")) - (when (eq (point) orig) - (py-look-downward-for-clause)) - (when (< orig (point)) - (setq res (point))) - res))) - -(defun py-end-base (regexp &optional orig decorator) - "Used internal by functions going to the end forms. " - (unless (eobp) - (let* ((orig (or orig (point))) - (regexp (or regexp 'py-extended-block-or-clause-re)) - (thisregexp - (cond ((eq regexp 'py-def-or-class-re) - (concat "@\\|" py-def-or-class-re)) - ((eq regexp 'py-def-re) - (concat "@\\|" py-def-re)) - ((eq regexp 'py-class-re) - (concat "@\\|" py-class-re)) - ((eq regexp 'py-minor-block-re) - py-minor-block-re) - (t (concat "@\\|" py-extended-block-or-clause-re)))) - - bofst - (this (progn (back-to-indentation) - (setq bofst (py-beginning-of-statement-p)) - (cond ((and bofst (eq regexp 'py-clause-re)(looking-at py-extended-block-or-clause-re)) - (point)) - ((and bofst (looking-at (symbol-value regexp))) - (point)) - (t - (when - (cdr-safe - (py-go-to-keyword - thisregexp)) - (when (py-statement-opens-block-p py-extended-block-or-clause-re) - (point))))))) - ind erg last pps thisindent done) - (cond (this - (setq thisindent (current-indentation)) - (cond ((and py-close-provides-newline - (or (eq regexp 'py-def-re)(eq regexp 'py-class-re)(eq regexp 'py-def-or-class-re))) - (while (and (setq last (point))(re-search-forward "^$")(skip-chars-forward " \t\r\n\f")(or (nth 8 (setq pps (syntax-ppss))) (nth 1 pps) (< thisindent (current-column))))) - ;; (goto-char last) - (skip-chars-backward " \t\r\n\f") - (setq done t) - (and (nth 8 (setq pps (syntax-ppss))) - (py-beginning-of-statement) - (py-end-of-statement))) - (t (while - (and (py-down-statement) - (or (< thisindent (current-indentation)) - (and (eq thisindent (current-indentation)) - (or (eq regexp 'py-minor-block-re) - (eq regexp 'py-block-re)) - (looking-at py-clause-re))) - (py-end-of-statement)(setq last (point)))) - (goto-char last)))) - (t (goto-char orig))) - (when (and (<= (point) orig)(not (looking-at (symbol-value regexp)))) - ;; found the end above - ;; py-travel-current-indent will stop of clause at equal indent - (when (py-look-downward-for-beginning (symbol-value regexp)) - (py-end-base regexp orig))) - (setq pps (syntax-ppss)) - (if (and (< orig (point)) (not (or (looking-at comment-start) (nth 8 pps) (nth 1 pps)))) - (point) - (goto-char (point-max)) - nil)))) - -(defun py-look-downward-for-beginning (regexp) - "When above any beginning of FORM, search downward. " - (let* ((orig (point)) - (erg orig) - (last orig) - pps) - (while (and (setq last (point)) (not (eobp)) (re-search-forward regexp nil t 1)(setq erg (match-beginning 0)) (setq pps (syntax-ppss)) - (or (nth 8 pps) (nth 1 pps)))) - (cond ((not (or (nth 8 pps) (nth 1 pps) (or (looking-at comment-start)))) - (when (ignore-errors (< orig erg)) - erg))))) - -(defun py-look-downward-for-clause (&optional ind orig regexp) - "If beginning of other clause exists downward in current block. - -If succesful return position. " - (interactive) - (unless (eobp) - (let ((ind (or ind - (save-excursion - (py-beginning-of-statement) - (if (py-statement-opens-block-p) - (current-indentation) - (- (current-indentation) py-indent-offset))))) - (orig (or orig (point))) - (regexp (or regexp py-extended-block-or-clause-re)) - erg last) - (end-of-line) - (when (re-search-forward regexp nil t 1) - (when (nth 8 (syntax-ppss)) - (while (and (re-search-forward regexp nil t 1) - (nth 8 (syntax-ppss))))) - (setq last (point)) - (back-to-indentation) - (unless (and (looking-at py-clause-re) - (not (nth 8 (syntax-ppss))) (eq (current-indentation) ind)) - (progn (setq ind (current-indentation)) - (while (and (py-end-of-statement-bol)(not (looking-at py-clause-re))(<= ind (current-indentation))))) - (if (and (looking-at py-clause-re) - (not (nth 8 (syntax-ppss))) - (< orig (point))) - (setq erg (point)) - (goto-char orig)))) - (when (interactive-p) (message "%s" erg)) - erg))) - -(defun py-current-defun (&optional iact) - "Go to the outermost method or class definition in current scope. - -Python value for `add-log-current-defun-function'. -This tells add-log.el how to find the current function/method/variable. -Returns name of class or methods definition, if found, nil otherwise. - -See customizable variables `py-current-defun-show' and `py-current-defun-delay'." - (interactive "p") - (save-restriction - (widen) - (save-excursion - (let ((erg (when (py-beginning-of-def-or-class) - (forward-word 1) - (skip-chars-forward " \t") - (prin1-to-string (symbol-at-point))))) - (when (and erg py-current-defun-show (push-mark (point) t t) (skip-chars-forward "^ (") - (exchange-point-and-mark) - (sit-for py-current-defun-delay))) - (when iact (message (prin1-to-string erg))) - erg)))) - -(defun py-sort-imports () - "Sort multiline imports. - -Put point inside the parentheses of a multiline import and hit -\\[py-sort-imports] to sort the imports lexicographically" - (interactive) - (save-excursion - (let ((open-paren (save-excursion (progn (up-list -1) (point)))) - (close-paren (save-excursion (progn (up-list 1) (point)))) - sorted-imports) - (goto-char (1+ open-paren)) - (skip-chars-forward " \n\t") - (setq sorted-imports - (sort - (delete-dups - (split-string (buffer-substring - (point) - (save-excursion (goto-char (1- close-paren)) - (skip-chars-backward " \n\t") - (point))) - ", *\\(\n *\\)?")) - ;; XXX Should this sort case insensitively? - 'string-lessp)) - ;; Remove empty strings. - (delete-region open-paren close-paren) - (goto-char open-paren) - (insert "(\n") - (insert (py-join-words-wrapping (remove "" sorted-imports) "," " " 78)) - (insert ")")))) - -(defun py-in-literal (&optional lim) - "Return non-nil if point is in a Python literal (a comment or string). -Optional argument LIM indicates the beginning of the containing form, -i.e. the limit on how far back to scan." - (let* ((lim (or lim (point-min))) - (state (syntax-ppss))) - (cond - ((nth 3 state) 'string) - ((nth 4 state) 'comment)))) - -(defun py-which-def-or-class () - "Returns concatenated `def' and `class' names in hierarchical order, if cursor is inside. - -Returns \"???\" otherwise -Used by variable `which-func-functions' " - (interactive) - (let* ((orig (point)) - (first t) - def-or-class - done last erg name) - (and first (looking-at "[ \t]*\\_<\\(def\\|class\\)\\_>[ \n\t]\\([[:alnum:]_]+\\)")(not (nth 8 (syntax-ppss))) - (add-to-list 'def-or-class (match-string-no-properties 2))) - (while - (and (not (bobp)) (not done) (or (< 0 (current-indentation)) first)) - (py-beginning-of-def-or-class) - (looking-at "[ \t]*\\_<\\(def\\|class\\)\\_>[ \n\t]\\([[:alnum:]_]+\\)") - (setq last (point)) - (setq name (match-string-no-properties 2)) - (if first - (progn - (setq first nil) - (py-end-of-def-or-class) - (if - (<= orig (point)) - (goto-char last) - (setq done t) - (goto-char orig))) - t) - (unless done (add-to-list 'def-or-class name))) - (unless done (setq def-or-class (mapconcat 'identity def-or-class "."))) - (goto-char orig) - (or def-or-class (setq def-or-class "???")) - (when (interactive-p) (message "%s" def-or-class)) - def-or-class)) - -(defun py-which-function () - "Return the name of the function or class, if curser is in, return nil otherwise. " - (interactive) - (save-excursion - (save-restriction - (widen) - (let ((orig (point)) - (erg (if (and (looking-at (concat py-def-or-class-re " +\\([^(]+\\)(.+")) (not (py-in-string-or-comment-p))) - (match-string-no-properties 2) - (progn - (py-beginning-of-def-or-class) - (when (looking-at (concat py-def-or-class-re " +\\([^(]+\\)(.+")) - (match-string-no-properties 2)))))) - (if (and erg (< orig (py-end-of-def-or-class))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - (setq erg nil) - (when (and py-verbose-p (interactive-p)) (message "%s" "Not inside a function or class")) - erg))))) - -(defconst py-help-address "python-mode@python.org" - "List dealing with usage and developing python-mode. - -Also accepts submission of bug reports, whilst a ticket at -http://launchpad.net/python-mode -is preferable for that. ") - -;;; Beginning/End -(defalias 'py-backward-statements 'py-beginning-of-statements) -(defun py-beginning-of-statements () - "Got to the beginning of statements in current level which don't open blocks. " - (interactive) - (let* ((bounds (py-bounds-of-statements)) - (erg (car bounds))) - (when erg (goto-char erg)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defalias 'py-forward-of-statements 'py-end-of-statements) -(defun py-end-of-statements () - "Got to the end of statements in current level which don't open blocks. " - (interactive) - (let* ((bounds (py-bounds-of-statements)) - (erg (cdr bounds))) - (when erg (goto-char erg)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defalias 'py-backward-expression 'py-beginning-of-expression) -(defun py-beginning-of-expression (&optional arg) - "Go to the beginning of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -If already at the beginning or before a expression, go to next expression in buffer upwards - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes. -" - (interactive "p") - (or arg (setq arg 1)) - (let (erg) - (if (< 0 arg) - (save-restriction - (widen) - (setq erg (py-beginning-of-expression-intern))) - (setq arg (abs arg)) - (setq erg (py-end-of-expression arg))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-beginning-of-expression-intern (&optional orig) - (unless (bobp) - (let ((orig (or orig (point))) - (pps (syntax-ppss)) - erg) - (cond - ((and (bolp)(eolp)) - (while - (and (and (bolp)(eolp))(not (bobp))) - (forward-line -1) - (end-of-line)) - (py-beginning-of-expression-intern orig)) - ;; lists - ((nth 1 pps) - (goto-char (nth 1 pps)) - (skip-chars-backward py-expression-skip-chars) - (while (or (looking-back (concat py-string-delim-re py-expression-re py-string-delim-re py-operator-regexp) (line-beginning-position) t) - (looking-back (concat "[[:alnum:]_]*" py-operator-regexp "[ \t]*") (line-beginning-position) t)) - (goto-char (match-beginning 0)))) - ;; listed elements - ((looking-back (concat "[^ \t\n\r\f]+" py-delimiter-regexp)) - (goto-char (match-beginning 0)) - (while (looking-back (concat "[^ \t\n\r\f]+" py-delimiter-regexp)) - (goto-char (match-beginning 0))) - (unless (or (looking-back py-assignment-regexp) (looking-back "^[ \t]*")) - (py-beginning-of-expression-intern orig))) - ;; strings - ((and (nth 3 pps)(nth 8 pps) - (goto-char (nth 8 pps))) - (cond (;; consider expression a string starting at BOL - (bolp)) - ((looking-back py-assignment-regexp)) - ((looking-back py-operator-regexp) - (when (nth 2 pps) - (goto-char (nth 2 pps)))) - (t (py-beginning-of-expression-intern orig)))) - ;; comments left - ((nth 8 pps) - (goto-char (nth 8 pps)) - (unless (bobp) - (py-beginning-of-expression-intern orig))) - ;; concatenated strings - ((looking-back (concat py-string-delim-re py-expression-re py-string-delim-re py-operator-regexp py-string-delim-re py-expression-re py-string-delim-re)) - (goto-char (match-beginning 0)) - (while (looking-back (concat py-string-delim-re py-expression-re py-string-delim-re py-operator-regexp) (line-beginning-position) t) - (goto-char (match-beginning 0))) - (skip-chars-backward py-expression-skip-chars)) - ;; before comment - ((and (looking-at "[ \t]*#") (looking-back "^[ \t]*")) - (forward-line -1) - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (unless (bobp) - (forward-char -1) - (py-beginning-of-expression-intern orig))) - ;; before assignment - ((looking-back py-assignment-regexp) - (goto-char (1- (match-beginning 0))) - (forward-char -1) - (py-beginning-of-expression-intern orig)) - ((looking-back py-operator-regexp) - (goto-char (1- (match-beginning 0))) - (forward-char -1) - (unless (< 0 (abs (skip-chars-backward py-expression-skip-chars))) - (py-beginning-of-expression-intern orig))) - ((looking-back "\"\\|'") - (forward-char -1) - (skip-chars-backward "\"'") - (unless (looking-back py-assignment-regexp) - (py-beginning-of-expression-intern orig))) - ((looking-back "(\\|\\[") - (forward-char -1) - (unless (looking-back py-assignment-regexp) - (py-beginning-of-expression-intern orig))) - ((looking-back "[\])}]") - (forward-char -1) - (unless (looking-back py-assignment-regexp) - (py-beginning-of-expression-intern orig))) - ;; inside expression - ((looking-back py-expression-re) - (skip-chars-backward py-expression-skip-chars) - (unless (or (looking-back "^[ \t]*") (looking-back py-assignment-regexp)) - (py-beginning-of-expression-intern orig))) - ((looking-back (concat "[ \t]*" "[[:alnum:]_]*" py-operator-regexp "[[:alnum:]_]*") (line-beginning-position) t) - (goto-char (match-beginning 0)) - (unless (looking-back "^[ \t]*") - (py-beginning-of-expression-intern orig))) - ((and (eq (point) orig) (looking-back "[ \t\r\n\f]")) - (skip-chars-backward " \t\r\n\f") - (unless (bobp) - (forward-char -1) - (py-beginning-of-expression-intern orig))) - ((and (eq (point) orig) (not (bobp)) (looking-back py-expression-re)) - (forward-char -1) - (when (< 0 (abs (skip-chars-backward py-expression-skip-chars))) - (py-beginning-of-expression-intern orig))) - ((and (looking-at py-expression-re) (not (looking-back "[ \t\r\n\f]"))) - (unless (< 0 (abs (skip-chars-backward py-expression-skip-chars))) - (py-beginning-of-expression-intern orig))) - ((and (eq (point) orig)(looking-back "[ \t]*=")) - (goto-char (match-beginning 0)) - (skip-chars-backward " \t\r\n\f") - (py-beginning-of-expression-intern orig))) - (unless (or (eq (point) orig)(looking-at "[ \t]*#")) - (setq erg (point))) - erg))) - -(defun py-end-of-expression (&optional arg) - "Go to the end of a compound python expression. - -With numeric ARG do it that many times. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference - -Operators however are left aside resp. limit py-expression designed for edit-purposes. " - (interactive "p") - (or arg (setq arg 1)) - (let (erg) - (if (< 0 arg) - (save-restriction - (widen) - (while (< 0 arg) - (setq erg (py-end-of-expression-intern)) - (setq arg (1- arg)))) - (setq arg (abs arg)) - (setq erg (py-beginning-of-expression arg))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-expression-intern (&optional orig) - (unless (eobp) - (let* ((orig (or orig (point))) - (pps (syntax-ppss)) - erg - ;; use by scan-lists - parse-sexp-ignore-comments) - (cond - ((nth 1 pps) - (goto-char (nth 1 pps)) - (let ((parse-sexp-ignore-comments t)) - (forward-list)) - (unless (or (looking-at "[ \t]*$")(looking-at py-assignment-regexp)) - (py-end-of-expression-intern orig))) - ;; in comment - ((nth 4 pps) - (or (< (point) (progn (forward-comment 1)(point)))(forward-line 1)) - (py-end-of-expression-intern orig)) - ((and (bolp)(eolp)) - (while - (and (and (bolp)(eolp))(not (eobp))) - (forward-line 1)) - (py-end-of-expression-intern orig)) - ((looking-at (concat py-string-delim-re py-expression-re py-string-delim-re py-operator-regexp py-string-delim-re py-expression-re py-string-delim-re)) - (goto-char (match-end 0)) - (while (looking-at (concat py-operator-regexp py-string-delim-re py-expression-re py-string-delim-re)) - (goto-char (match-end 0)))) - ;; inside string - ((py-in-string-p) - (when (looking-at "\"\"\"\\|'''\\|\"\\|'") - (goto-char (match-end 0))) - (while - (nth 3 (syntax-ppss)) - (forward-char 1)) - ;; (if (looking-at ":") - ;; (forward-char 1) - (unless (looking-at "[ \t]*$") - (py-end-of-expression-intern orig))) - ((looking-at "[(\[]") - (forward-list) - ;; (if (looking-at ":") - ;; (forward-char 1) - (unless (looking-at "[ \t]*$") - (py-end-of-expression-intern orig))) - ;; ((looking-at ":") - ;; (forward-char 1) - ;; (unless (or (looking-at "[ \t]*$")(looking-at py-assignment-regexp)) - ;; (py-end-of-expression-intern orig))) - ((and (looking-at "[ \t]*#")(looking-back "^[ \t]*")) - (while (and (looking-at "[ \t]*#") (not (eobp))) - (forward-line 1)) - (py-end-of-expression-intern orig)) - ((looking-at py-assignment-regexp) - (goto-char (match-end 0)) - (if (looking-at "[(\[]") - (forward-list 1) - (py-end-of-expression-intern orig))) - ((looking-at (concat "[^ \t\n\r\f]+" py-delimiter-regexp)) - (goto-char (match-end 0)) - (while (looking-at (concat "[^ \t\n\r\f]+" py-delimiter-regexp)) - (goto-char (match-end 0))) - (forward-char -1) - (unless (looking-at (concat py-assignment-regexp "\\|[ \t]*$\\|" py-delimiter-regexp)) - (py-end-of-expression-intern orig))) - ((looking-at (concat "[ \t]*" "[^ (\t\n\r\f]+" py-operator-regexp "[^ \t\n\r\f]+")) - (goto-char (match-end 0)) - (while (looking-at (concat "[ \t]*" "[^ (\t]+" py-operator-regexp "[^ \t]+")) - (goto-char (match-end 0))) - (unless (or (looking-at "[ \t]*$")(looking-at py-assignment-regexp)) - (py-end-of-expression-intern orig))) - ((looking-at py-not-expression-regexp) - (skip-chars-forward py-not-expression-chars) - (unless (or (looking-at "[ \t]*$")(looking-at py-assignment-regexp)) - (py-end-of-expression-intern orig))) - ((looking-at py-expression-skip-regexp) - (skip-chars-forward py-expression-skip-chars) - (unless (or (looking-at "[ \n\t\r\f]*$")(looking-at py-assignment-regexp)) - (py-end-of-expression-intern orig))) - ;; ((looking-at ":") - ;; (forward-char 1)) - ) - (unless (or (eq (point) orig)(and (eobp)(bolp))) - (setq erg (point))) - erg))) - -;; Partial- or Minor Expression -(defalias 'py-backward-partial-expression 'py-beginning-of-partial-expression) -(defun py-beginning-of-partial-expression (&optional orig) - (interactive) - (let (erg) - (skip-chars-backward py-partial-expression-forward-chars) - (setq erg (point)) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defalias 'py-forward-partial-expression 'py-end-of-partial-expression) -(defun py-end-of-partial-expression (&optional orig) - (interactive) - (let (erg) - (skip-chars-forward py-partial-expression-backward-chars) - ;; group arg - (and - (looking-at "[\[{(]") - (goto-char (scan-sexps (point) 1))) - (setq erg (point)) - (when (interactive-p) (message "%s" erg)) - erg)) - -;; Line -(defun py-beginning-of-line () - "Go to beginning-of-line, return position. - -If already at beginning-of-line and not at BOB, go to beginning of previous line. " - (interactive) - (let ((erg (unless (bobp) - (if (bolp) - (progn - (forward-line -1) - (progn (beginning-of-line)(point))) - (progn (beginning-of-line)(point)))))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-line () - "Go to end-of-line, return position. - -If already at end-of-line and not at EOB, go to end of next line. " - (interactive) - (let ((erg (unless (eobp) - (if (eolp) - (progn - (forward-line 1) - (progn (end-of-line)(point))) - (progn (end-of-line)(point)))))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -;; Statement -(defalias 'py-backward-statement 'py-beginning-of-statement) -(defalias 'py-previous-statement 'py-beginning-of-statement) -(defalias 'py-statement-backward 'py-beginning-of-statement) -(defun py-beginning-of-statement (&optional orig done limit) - "Go to the initial line of a simple statement. - -For beginning of compound statement use py-beginning-of-block. -For beginning of clause py-beginning-of-clause. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html -" - (interactive) - (save-restriction - (unless (bobp) - (let* ((orig (or orig (point))) - (this (point)) - (cui (current-indentation)) - - (pps (progn (goto-char this) - (parse-partial-sexp (or limit (point-min))(point)))) - (done done) - erg) - (cond - ((and (bolp)(eolp)) - (skip-chars-backward " \t\r\n\f") - (py-beginning-of-statement orig done limit)) - ((nth 8 pps) - (and (nth 3 pps) (setq done t)) - (goto-char (nth 8 pps)) - (py-beginning-of-statement orig done limit)) - ((nth 1 pps) - (goto-char (1- (nth 1 pps))) - (setq done t) - (py-beginning-of-statement orig done limit)) - ((py-preceding-line-backslashed-p) - (forward-line -1) - (back-to-indentation) - (setq done t) - (py-beginning-of-statement orig done limit)) - ((and (looking-at "[ \t]*#")(looking-back "^[ \t]*")) - (forward-comment -1) - (while (and (not (bobp)) (looking-at "[ \t]*#")(looking-back "^[ \t]*")) - (forward-comment -1)) - (unless (bobp) - (py-beginning-of-statement orig done limit))) - ((looking-at "[ \t]*#") - (skip-chars-backward (concat "^" comment-start) (line-beginning-position)) - (back-to-indentation) - (unless (bobp) - (py-beginning-of-statement orig done limit))) - ((and (not done) (looking-at py-string-delim-re)) - (when (< 0 (abs (skip-chars-backward " \t\r\n\f"))) - (setq done t)) - (back-to-indentation) - (py-beginning-of-statement orig done limit)) - ((and (not (eq (point) orig))(looking-back "^[ \t]*")) - (setq erg (point))) - ((and (not done) (not (eq 0 (skip-chars-backward " \t\r\n\f")))) - ;; (setq done t) - (py-beginning-of-statement orig done limit)) - ((not (eq (current-column) (current-indentation))) - (if (< 0 (abs (skip-chars-backward "^\t\r\n\f"))) - (progn - (setq done t) - (back-to-indentation) - (py-beginning-of-statement orig done limit)) - (back-to-indentation) - (setq done t) - (py-beginning-of-statement orig done limit)))) - (unless (and (looking-at "[ \t]*#") (looking-back "^[ \t]*")) - (when (< (point) orig)(setq erg (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)))) - -(defalias 'py-backward-declarations 'py-beginning-of-declarations) -(defun py-beginning-of-declarations () - "Got to the beginning of assigments resp. statements in current level which don't open blocks. -" - (interactive) - (let* ((bounds (py-bounds-of-declarations)) - (erg (car bounds))) - (when erg (goto-char erg)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defalias 'py-forward-of-declarations 'py-end-of-declarations) -(defun py-end-of-declarations () - "Got to the end of assigments resp. statements in current level which don't open blocks. " - (interactive) - (let* ((bounds (py-bounds-of-declarations)) - (erg (cdr bounds))) - (when erg (goto-char erg)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -;;; Beginning of forms -(defun py-beginning-of-form-intern (regexp &optional iact indent orig lc) - "Go to beginning of FORM. - -With INDENT, go to beginning one level above. -Whit IACT, print result in message buffer. - -Returns beginning of FORM if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let (erg) - (unless (bobp) - (let* ((orig (or orig (point))) - (indent (or indent (progn - (back-to-indentation) - (or (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (current-indentation))))) - (setq erg (cond ((and (< (point) orig) (looking-at (symbol-value regexp))) - (point)) - ((and (eq 0 (current-column)) (numberp indent) (< 0 indent)) - (when (< 0 (abs (skip-chars-backward " \t\r\n\f"))) - (py-beginning-of-statement) - (unless (looking-at (symbol-value regexp)) - (cdr (py-go-to-keyword (symbol-value regexp) (current-indentation)))))) - ;; indent from first beginning of clause matters - ;; ((not (looking-at py-extended-block-or-clause-re)) - ;; (py-go-to-keyword py-extended-block-or-clause-re indent) - ;; (if (looking-at (symbol-value regexp)) - ;; (setq erg (point)) - ;; (py-beginning-of-form-intern regexp iact (current-indentation) orig))) - ((numberp indent) - (ignore-errors - (cdr (py-go-to-keyword (symbol-value regexp) indent)))) - (t (ignore-errors - (cdr (py-go-to-keyword (symbol-value regexp) - (- (progn (if (py-beginning-of-statement-p) (current-indentation) (save-excursion (py-beginning-of-statement) (current-indentation)))) py-indent-offset))))))) - (when lc (beginning-of-line) (setq erg (point))))) - (when (and py-verbose-p iact) (message "%s" erg)) - erg)) - -(defun py--narrow-in-comint-modes (&optional done limit) - "In comint-modes, limit region to previous prompt. " - (let ((pos (point)) - (limit - (or limit - (and - (or (eq major-mode 'comint-mode)(eq major-mode 'inferior-python-mode)) - (if (re-search-backward comint-prompt-regexp nil t 1) - (match-end 0) - (error (format "py-beginning-of-statement: No prompt found in %s mode" major-mode))))))) - (and limit (not done) (goto-char (match-end 0)) (skip-chars-forward " \t") (narrow-to-region (point) pos)))) - -(defun py-beginning-of-prepare (indent final-re &optional inter-re iact lc) - (let ((orig (point)) - (indent - (or indent - (progn (back-to-indentation) - (or (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (cond ((eq 0 (current-indentation)) - (current-indentation)) - ((looking-at (symbol-value inter-re)) - (current-indentation)) - (t - (if (<= py-indent-offset (current-indentation)) - (- (current-indentation) (if py-smart-indentation (py-guess-indent-offset) py-indent-offset)) - py-indent-offset)))))) - erg) - (if (and (< (point) orig) (looking-at (symbol-value final-re))) - (progn - (and lc (beginning-of-line)) - (setq erg (point)) - (when (and py-verbose-p iact) (message "%s" erg)) - erg) - (py-beginning-of-form-intern final-re iact indent orig lc)))) - -(defun py-beginning-of-block (&optional indent) - "Go to beginning block, skip whitespace at BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-block-re 'py-clause-re (interactive-p))) - -(defun py-beginning-of-clause (&optional indent) - "Go to beginning clause, skip whitespace at BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-extended-block-or-clause-re 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-beginning-of-block-or-clause (&optional indent) - "Go to beginning block-or-clause, skip whitespace at BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-extended-block-or-clause-re 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-beginning-of-def (&optional indent) - "Go to beginning def, skip whitespace at BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-def-re 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-beginning-of-class (&optional indent) - "Go to beginning class, skip whitespace at BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-class-re 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-beginning-of-def-or-class (&optional indent) - "Go to beginning def-or-class, skip whitespace at BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. " - (interactive) - (py-beginning-of-prepare indent 'py-def-or-class-re 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-beginning-of-if-block (&optional indent) - "Go to beginning if-block, skip whitespace at BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-if-block-re 'py-clause-re (interactive-p))) - -(defun py-beginning-of-try-block (&optional indent) - "Go to beginning try-block, skip whitespace at BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-try-block-re 'py-clause-re (interactive-p))) - -(defun py-beginning-of-minor-block (&optional indent) - "Go to beginning minor-block, skip whitespace at BOL. - -Returns beginning of minor-block if successful, nil otherwise -A minor block is started by a `for', `if', `try' or `with'. -" - (interactive) - (py-beginning-of-prepare indent 'py-minor-block-re 'py-clause-re (interactive-p))) - -(defalias 'py-beginning-of-block-bol 'py-beginning-of-block-lc) -(defun py-beginning-of-block-lc (&optional indent) - "Go to beginning block, go to BOL. - -Returns beginning of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-block-re 'py-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-clause-bol 'py-beginning-of-clause-lc) -(defun py-beginning-of-clause-lc (&optional indent) - "Go to beginning clause, go to BOL. - -Returns beginning of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-extended-block-or-clause-re 'py-extended-block-or-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-block-or-clause-bol 'py-beginning-of-block-or-clause-lc) -(defun py-beginning-of-block-or-clause-lc (&optional indent) - "Go to beginning block-or-clause, go to BOL. - -Returns beginning of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-extended-block-or-clause-re 'py-extended-block-or-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-def-bol 'py-beginning-of-def-lc) -(defun py-beginning-of-def-lc (&optional indent) - "Go to beginning def, go to BOL. - -Returns beginning of def if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-def-re 'py-extended-block-or-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-class-bol 'py-beginning-of-class-lc) -(defun py-beginning-of-class-lc (&optional indent) - "Go to beginning class, go to BOL. - -Returns beginning of class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-class-re 'py-extended-block-or-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-def-or-class-bol 'py-beginning-of-def-or-class-lc) -(defun py-beginning-of-def-or-class-lc (&optional indent) - "Go to beginning def-or-class, go to BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-def-or-class-re 'py-extended-block-or-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-if-block-bol 'py-beginning-of-if-block-lc) -(defun py-beginning-of-if-block-lc (&optional indent) - "Go to beginning if-block, go to BOL. - -Returns beginning of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-if-block-re 'py-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-try-block-bol 'py-beginning-of-try-block-lc) -(defun py-beginning-of-try-block-lc (&optional indent) - "Go to beginning try-block, go to BOL. - -Returns beginning of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-try-block-re 'py-clause-re (interactive-p) t)) - -(defalias 'py-beginning-of-minor-block-bol 'py-beginning-of-minor-block-lc) -(defun py-beginning-of-minor-block-lc (&optional indent) - "Go to beginning minor-block, go to BOL. - -Returns beginning of minor-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-prepare indent 'py-minor-block-re 'py-clause-re (interactive-p) t)) - -;;; -(defun py-beginning-of-top-level () - "Go up to beginning of statments until level of indentation is null. - -Returns position if successful, nil otherwise " - (interactive) - (let (erg) - (unless (bobp) - (while (and (not (bobp)) (setq erg (py-beginning-of-statement)) - (< 0 (current-indentation)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-end-of-top-level () - "Go to end of top-level form at point. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (let ((orig (point)) - erg) - (unless (eobp) - (unless (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (unless (eq 0 (current-column)) - (py-beginning-of-top-level)) - (cond ((looking-at py-def-re) - (setq erg (py-end-of-def))) - ((looking-at py-class-re) - (setq erg (py-end-of-class))) - ((looking-at py-block-re) - (setq erg (py-end-of-block))) - (t (setq erg (py-end-of-statement)))) - (unless (< orig (point)) - (while (and (not (eobp)) (py-down-statement)(< 0 (current-indentation)))) - (if (looking-at py-block-re) - (setq erg (py-end-of-block)) - (setq erg (py-end-of-statement)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py-beginning () - "Go to beginning of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive) - (py-beginning-of-form-intern 'py-extended-block-or-clause-re (interactive-p))) - -(defun py-end (&optional indent) - "Go to end of of compound statement or definition at point. - -Returns position block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-extended-block-or-clause-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-up (&optional indent) - "Go up or to beginning of form if inside. - -If inside a delimited form --string or list-- go to it's beginning. -If not at beginning of a statement or block, go to it's beginning. -If at beginning of a statement or block, go to beginning one level above of compound statement or definition at point. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let ((pps (syntax-ppss))) - (cond ((nth 8 pps) (goto-char (nth 8 pps))) - ((nth 1 pps) (goto-char (nth 1 pps))) - ((py-beginning-of-statement-p) (py-beginning-of-form-intern 'py-extended-block-or-clause-re (interactive-p))) - (t (py-beginning-of-statement))))) - -(defun py-down (&optional indent) - - "Go to beginning one level below of compound statement or definition at point. - -If no statement or block below, but a delimited form --string or list-- go to it's beginning. Repeated call from there will behave like down-list. - -Returns position if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - erg - (indent (if - (py-beginning-of-statement-p) - (current-indentation) - (progn - (py-beginning-of-statement) - (current-indentation)))) - last) - (while (and (setq last (point)) (py-end-of-statement) (py-end-of-statement) (py-beginning-of-statement) (eq (current-indentation) indent))) - (if (< indent (current-indentation)) - (setq erg (point)) - (goto-char last)) - (when (< (point) orig) - (goto-char orig)) - (when (and (eq (point) orig) - (progn (forward-char 1) - (skip-chars-forward "^\"'[({" (line-end-position)) - (member (char-after) (list ?\( ?\" ?\' ?\[ ?\{))) - (setq erg (point)))) - (unless erg - (goto-char orig)) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-block (&optional indent) - "Go to end of block. - -Returns end of block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-block-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-clause (&optional indent) - "Go to end of clause. - -Returns end of clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-clause-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-block-or-clause (&optional indent) - "Go to end of block-or-clause. - -Returns end of block-or-clause if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-block-or-clause-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-def (&optional indent) - "Go to end of def. - -Returns end of def if successful, nil otherwise - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-def-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-class (&optional indent) - "Go to end of class. - -Returns end of class if successful, nil otherwise - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-class-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-def-or-class (&optional indent) - "Go to end of def-or-class. - -Returns end of def-or-class if successful, nil otherwise - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. " - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-def-or-class-re orig))) - (when (and py-verbose-p (interactive-p)) - (message "%s" erg)) - erg)) - -(defun py-end-of-if-block (&optional indent) - "Go to end of if-block. - -Returns end of if-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-if-block-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-try-block (&optional indent) - "Go to end of try-block. - -Returns end of try-block if successful, nil otherwise - -Referring python program structures see for example: -http://docs.python.org/reference/compound_stmts.html" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-try-block-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-minor-block (&optional indent) - "Go to end of minor-block. - -Returns end of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. -" - (interactive "P") - (let* ((orig (point)) - (erg (py-end-base 'py-minor-block-re orig))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -;; Buffer -(defun py-beginning-of-buffer () - "Go to beginning-of-buffer, return position. " - (let ((erg (unless (bobp) - (goto-char (point-min))))) - erg)) - -(defun py-end-of-buffer () - "Go to end-of-buffer, return position. - - If already at end-of-buffer and not at EOB, go to end of next line. " - (let ((erg (unless (eobp) - (goto-char (point-max))))) - erg)) - -(defalias 'py-forward-block 'py-end-of-block) -(defalias 'py-forward-block-or-clause 'py-end-of-block-or-clause) -(defalias 'py-forward-class 'py-end-of-class) -(defalias 'py-forward-clause 'py-end-of-clause) -(defalias 'end-of-def-or-class 'py-end-of-def-or-class) -(defalias 'py-forward-def-or-class 'py-end-of-def-or-class) -(defalias 'py-previous-block 'py-beginning-of-block) -(defalias 'py-goto-block-up 'py-beginning-of-block) -(defalias 'py-backward-block 'py-beginning-of-block) -(defalias 'py-previous-block-or-clause 'py-beginning-of-block-or-clause) -(defalias 'py-goto-block-or-clause-up 'py-beginning-of-block-or-clause) -(defalias 'py-backward-block-or-clause 'py-beginning-of-block-or-clause) -(defalias 'beginning-of-class 'py-beginning-of-class) -(defalias 'py-backward-class 'py-beginning-of-class) -(defalias 'py-previous-class 'py-beginning-of-class) -(defalias 'py-previous-clause 'py-beginning-of-clause) -(defalias 'py-goto-clause-up 'py-beginning-of-clause) -(defalias 'py-backward-clause 'py-beginning-of-clause) -(defalias 'py-backward-def-or-class 'py-beginning-of-def-or-class) -(defalias 'py-previous-def-or-class 'py-beginning-of-def-or-class) - -;;; Forms -;; Declarations -(defun py-declarations () - "Copy and mark assigments resp. statements in current level which don't open blocks or start with a keyword. - -See also `py-statements', which is more general, taking also simple statements starting with a keyword. " - (interactive) - (let* ((bounds (py-bounds-of-declarations)) - (beg (car bounds)) - (end (cdr bounds))) - (when (and beg end) - (goto-char beg) - (push-mark) - (goto-char end) - (kill-new (buffer-substring-no-properties beg end)) - (exchange-point-and-mark)))) - -;; Statements -(defun py-statements () - "Copy and mark simple statements in current level which don't open blocks. - -More general than py-declarations, which would stop at keywords like a print-statement. " - (interactive) - (let* ((bounds (py-bounds-of-statements)) - (beg (car bounds)) - (end (cdr bounds))) - (when (and beg end) - (goto-char beg) - (push-mark) - (goto-char end) - (kill-new (buffer-substring-no-properties beg end)) - (exchange-point-and-mark)))) - -(defun py-go-to-keyword (regexp &optional maxindent) - "Returns a list, whose car is indentation, cdr position. " - (let ((orig (point)) - (maxindent (or maxindent (and (< 0 (current-indentation))(current-indentation)) - ;; make maxindent large enough if not set - (* 99 py-indent-offset))) - (first t) - done erg cui) - (while (and (not done) (not (bobp))) - (while (and (re-search-backward regexp nil 'move 1)(nth 8 (syntax-ppss)))) - ;; (or (< (point) orig) (py-beginning-of-statement)) - (if (and (looking-at regexp)(if maxindent - (<= (current-indentation) maxindent) t)) - (progn - (setq erg (point)) - (setq done t)) - (when (and first (not maxindent)) - (setq maxindent (current-indentation)) - (setq first nil)))) - (when erg (setq erg (cons (current-indentation) erg))) - erg)) - -(defun py-go-to-keyword-above (regexp &optional maxindent) - "Returns a list, whose car is indentation, cdr position. " - (let ((orig (point)) - (maxindent (or maxindent (and (< 0 (current-indentation))(current-indentation)) - ;; make maxindent large enough if not set - (* 99 py-indent-offset))) - (first t) - done erg cui) - (while (and (not done) (not (bobp))) - (py-beginning-of-statement) - (if (and (looking-at regexp)(if maxindent - (< (current-indentation) maxindent) t)) - (progn - (setq erg (point)) - (setq done t)) - (when (and first (not maxindent)) - (setq maxindent (current-indentation)) - (setq first nil)))) - (when erg - (if (looking-at regexp) - (setq erg (cons (current-indentation) erg)) - (setq erg nil - ))) - erg)) - -(defun py-eos-handle-comment-start () - (end-of-line) - (forward-comment 99999) - ;; (skip-chars-forward (concat "^" comment-start) (line-end-position)) - ;; (skip-chars-backward " \t\r\n\f" (line-beginning-position)) - ) - -(defun py-eos-handle-doublequoted-string-start (this) - "Internal use, find possible end of statement from string start. " - (when - (and (setq this (point)) (progn (while (and (not (eobp)) (search-forward (match-string-no-properties 0) nil t 1) (nth 8 (syntax-ppss)))) (< this (point)))) - (skip-chars-forward (concat "^" comment-start) (line-end-position)) - (skip-chars-backward " \t\r\n\f"))) - -(defun py-eos-handle-singlequoted-string-start (this) - "Internal use, find possible end of statement from string start. " - (when - (and (setq this (point)) (progn (ignore-errors (goto-char (scan-sexps (point) 1))) (< this (point)))) - (skip-chars-forward (concat "^" comment-start) (line-end-position)) - (skip-chars-backward " \t\r\n\f"))) - -(defun py-handle-eol () - (skip-chars-backward " \t\r\n\f" (line-beginning-position)) - (when (py-beginning-of-comment) - (skip-chars-backward " \t\r\n\f" (line-beginning-position)))) - -(defun py-eos-handle-string-start (this) - "Internal use, find possible end of statement from string start. " - (when - (and (setq this (point)) (progn (or (if (save-match-data (string-match "'" (match-string-no-properties 0))) (ignore-errors (goto-char (scan-sexps (point) 1)))) (while (and (search-forward (match-string-no-properties 0) nil t 1) (nth 8 (syntax-ppss))))) (< this (point)))) - (skip-chars-forward (concat "^" comment-start) (line-end-position)) - (skip-chars-backward " \t\r\n\f"))) - -(defalias 'py-statement-forward 'py-end-of-statement) -(defalias 'py-next-statement 'py-end-of-statement) -(defalias 'py-forward-statement 'py-end-of-statement) -(defun py--skip-to-comment-or-semicolon () - (and (< 0 (abs (skip-chars-forward "^#;" (line-end-position)))) - (if (eq ?\; (char-after)) - (skip-chars-forward ";" (line-end-position)) - (skip-chars-backward " \t" (line-beginning-position))) - (setq done t))) - -(defun py--eos-in-string () - "Return stm, i.e. if string is part of a (print)-statement. " - (let ((orig (point)) - pos stm) - (goto-char (nth 8 pps)) - (unless (looking-back "^[ \t]*") - (setq stm t)) - ;; go to end of string - (and (member (char-after) (list ?' ?\")) - (ignore-errors (setq pos (scan-sexps (point) 1))) - (goto-char pos)) - ;; if no closing string delimiter, pos doesn't exist - (unless (or stm (not pos)) - (setq done t) - (unless (eq 10 (char-after)) - (and (< 0 (abs (skip-chars-forward "^;#" (line-end-position)))) - (eq ?\; (char-after)) - (skip-chars-forward ";")))) - stm)) - -(defun py--end-of-comment-intern (pos) - (while (and (not (eobp)) - (forward-comment 99999))) - ;; forward-comment fails sometimes - (and (eq pos (point)) (prog1 (forward-line 1) (back-to-indentation)) - (while (member (char-after) (list ?# 10))(forward-line 1)(back-to-indentation)))) - -(defun py--end-of-statement-intern () - (py--skip-to-comment-or-semicolon) - (let ((pos (point)) - (pps (syntax-ppss)) - stm) - (cond ((nth 3 pps) - (and (py--eos-in-string) (py--end-of-statement-intern))) - ((nth 4 pps) - (py--end-of-comment-intern pos)) - ((nth 1 pps) - (when (< orig (point)) - (setq orig (point))) - (goto-char (nth 1 pps)) - (let ((parse-sexp-ignore-comments t)) - (if (ignore-errors (forward-list)) - (progn - (when (looking-at ":[ \t]*$") - (forward-char 1)) - (setq done t) - (skip-chars-forward "^#" (line-end-position)) - (skip-chars-backward " \t\r\n\f" (line-beginning-position)) - (py-end-of-statement orig done repeat)) - (goto-char orig))))))) - -(defun py-end-of-statement (&optional orig done repeat) - "Go to the last char of current statement. - -To go just beyond the final line of the current statement, use `py-down-statement-bol'. - -Optional argument REPEAT, the number of loops done already, is checked for py-max-specpdl-size error. Avoid eternal loops due to missing string delimters etc. " - (interactive) - (unless (eobp) - (let ((repeat (or (and repeat (1+ repeat)) 0)) - (orig (or orig (point))) - erg pos last - ;; use by scan-lists - parse-sexp-ignore-comments - forward-sexp-function - stringchar stm pps) - (unless done - (py--skip-to-comment-or-semicolon)) - (setq pps (syntax-ppss)) - ;; (origline (or origline (py-count-lines))) - (cond - ;; wich-function-mode, lp:1235375 - ((< py-max-specpdl-size repeat) - (error "py-end-of-statement reached loops max. If no error, customize `py-max-specpdl-size'")) - ;; list - ((nth 1 pps) - (when (< orig (point)) - (setq orig (point))) - (goto-char (nth 1 pps)) - (let ((parse-sexp-ignore-comments t)) - (if (ignore-errors (forward-list)) - (progn - (when (looking-at ":[ \t]*$") - (forward-char 1)) - (setq done t) - (skip-chars-forward "^#" (line-end-position)) - (skip-chars-backward " \t\r\n\f" (line-beginning-position)) - (py-end-of-statement orig done repeat)) - (goto-char orig)))) - ;; string - ((nth 3 pps) - (and (py--eos-in-string) (py--end-of-statement-intern)) - (setq pps (syntax-ppss)) - (unless (and done (not (or (nth 1 pps) (nth 8 pps)))) (py-end-of-statement orig t repeat))) - ;; in comment - ((nth 4 pps) - (py--end-of-comment-intern (point)) - (py--skip-to-comment-or-semicolon) - ;; (and (not done) - ;; (< 0 (abs (skip-chars-forward "^;#" (line-end-position)))) - ;; (or (and (eq ?\; (char-after)) - ;; (skip-chars-forward ";")) - ;; (skip-chars-backward " \t"))) - ;; travle backslashed lines - (while (and (eq (char-before (point)) ?\\ ) - (py-escaped)(setq last (point))) - (forward-line 1)(end-of-line)) - (and last (goto-char last) - (forward-line 1) - (back-to-indentation)) - (py-end-of-statement orig t repeat)) - ((py-current-line-backslashed-p) - (end-of-line) - (skip-chars-backward " \t\r\n\f" (line-beginning-position)) - (while (and (eq (char-before (point)) ?\\ ) - (py-escaped)) - (forward-line 1) - (end-of-line) - (skip-chars-backward " \t\r\n\f" (line-beginning-position))) - (unless (eobp) - (py-end-of-statement orig done repeat))) - ((eq (current-indentation) (current-column)) - (or (py--skip-to-comment-or-semicolon) - (forward-char 1)) - (setq pps (syntax-ppss)) - (unless done (py--end-of-statement-intern) - (py-end-of-statement orig done repeat))) - - ((eq orig (point)) - (skip-chars-forward " \t\r\n\f#'\"") - (py--skip-to-comment-or-semicolon) - (py--end-of-statement-intern) - (py-end-of-statement orig done repeat))) - (unless - (or - (eq (point) orig) - (member (char-before) (list 10 32 9))) - (setq erg (point))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) -;;; -(defun py-goto-statement-below () - "Goto beginning of next statement. " - (interactive) - (let ((orig (point)) - (erg (py-end-of-statement))) - (py-beginning-of-statement) - (when (< (point) orig) - (goto-char erg) - (py-end-of-statement) - (py-beginning-of-statement)))) - -;; Decorator -(defun py-beginning-of-decorator () - "Go to the beginning of a decorator. - -Returns position if succesful " - (interactive) - (back-to-indentation) - (while (and (not (looking-at "@\\w+"))(not (and (bolp)(eolp)))(not (bobp))(forward-line -1)) - (back-to-indentation)) - (let ((erg (when (looking-at "@\\w+")(match-beginning 0)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-end-of-decorator () - "Go to the end of a decorator. - -Returns position if succesful " - (interactive) - (let ((orig (point)) erg) - (unless (looking-at "@\\w+") - (setq erg (py-beginning-of-decorator))) - (when erg - (if - (re-search-forward py-def-or-class-re nil t) - (progn - (back-to-indentation) - (skip-chars-backward " \t\r\n\f") - (py-leave-comment-or-string-backward) - (skip-chars-backward " \t\r\n\f") - (setq erg (point))) - (goto-char orig) - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (when (ignore-errors (goto-char (py-in-list-p))) - (forward-list)) - (when (< orig (point)) - (setq erg (point)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg))) - -(defun py--base (form &optional py-mark-decorators) - "Returns boundaries of FORM, a cons. " - (let* ((begform (intern-soft (concat "py-beginning-of-" form))) - (endform (intern-soft (concat "py-end-of-" form))) - (begcheckform (intern-soft (concat "py-beginning-of-" form "-p"))) - (orig (point)) - beg end erg) - (setq beg (if - (setq beg (funcall begcheckform)) - beg - (funcall begform))) - (and py-mark-decorators - (and (setq erg (py-beginning-of-decorator)) - (setq beg erg))) - (setq end (funcall endform)) - (unless end (when (< beg (point)) - (setq end (point)))) - (when (interactive-p) (message "%s %s" beg end)) - (cons beg end))) - -;;; Forms -(defun py-statement () - "Statement at point. - -Return code of `py-statement' at point, a string. " - (interactive) - (let ((erg (py--base "statement"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-top-level () - "Top-Level at point. - -Return code of `py-top-level' at point, a string. " - (interactive) - (let ((erg (py--base "top-level"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-block () - "Block at point. - -Return code of `py-block' at point, a string. " - (interactive) - (let ((erg (py--base "block"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-clause () - "Clause at point. - -Return code of `py-clause' at point, a string. " - (interactive) - (let ((erg (py--base "clause"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-block-or-clause () - "Block-Or-Clause at point. - -Return code of `py-block-or-clause' at point, a string. " - (interactive) - (let ((erg (py--base "block-or-clause"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-def () - "Def at point. - -Return code of `py-def' at point, a string. " - (interactive) - (let ((erg (py--base "def"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-class () - "Class at point. - -Return code of `py-class' at point, a string. " - (interactive) - (let ((erg (py--base "class"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-def-or-class () - "Def-Or-Class at point. - -Return code of `py-def-or-class' at point, a string. " - (interactive) - (let ((erg (py--base "def-or-class"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-expression () - "Expression at point. - -Return code of `py-expression' at point, a string. " - (interactive) - (let ((erg (py--base "expression"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-partial-expression () - "Partial-Expression at point. - -Return code of `py-partial-expression' at point, a string. " - (interactive) - (let ((erg (py--base "partial-expression"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -(defun py-minor-block () - "Minor-Block at point. - -Return code of `py-minor-block' at point, a string. " - (interactive) - (let ((erg (py--base "minor-block"))) - (buffer-substring-no-properties (car erg) (cdr erg)))) - -;;; Mark -(defun py-mark-base (form &optional py-mark-decorators) - "Calls py--base, returns bounds of form, a cons. " - (let* ((bounds (py--base form py-mark-decorators)) - (beg (car bounds))) - (push-mark beg t t) - bounds)) - -(defun py-mark-paragraph () - "Mark paragraph at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "paragraph")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-block () - "Mark block at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "block")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-minor-block () - "Mark minor-block at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "minor-block")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-clause () - "Mark clause at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "clause")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-block-or-clause () - "Mark block-or-clause at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "block-or-clause")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-def (&optional arg) - "Mark def at point. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base "def" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-class (&optional arg) - "Mark class at point. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base "class" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-def-or-class (&optional arg) - "Mark def-or-class at point. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of marked area, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base "def-or-class" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-line () - "Mark line at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "line")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-statement () - "Mark statement at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "statement")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-top-level () - "Mark top-level form at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "top-level")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-expression () - "Mark expression at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "expression")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-mark-partial-expression () - "Mark partial-expression at point. - -Returns beginning and end positions of marked area, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base "partial-expression")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -;;; Copy - -(defun py-copy-statement () - "Copy statement at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "statement"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-top-level () - "Copy top-level at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "top-level"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-block () - "Copy block at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "block"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-clause () - "Copy clause at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "clause"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-block-or-clause () - "Copy block-or-clause at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "block-or-clause"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-def () - "Copy def at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "def"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-class () - "Copy class at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "class"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-def-or-class () - "Copy def-or-class at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "def-or-class"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-expression () - "Copy expression at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "expression"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-partial-expression () - "Copy partial-expression at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "partial-expression"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-copy-minor-block () - "Copy minor-block at point. - -Store data in kill ring, so it might yanked back. " - (interactive "*") - (let ((erg (py-mark-base "minor-block"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -;;; Delete -(defun py-delete-statement () - "Delete STATEMENT at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "statement"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-top-level () - "Delete TOP-LEVEL at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "top-level"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-block () - "Delete BLOCK at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-block-or-clause () - "Delete BLOCK-OR-CLAUSE at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "block-or-clause"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-def () - "Delete DEF at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "def"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-class () - "Delete CLASS at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "class"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-def-or-class () - "Delete DEF-OR-CLASS at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "def-or-class"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-expression () - "Delete EXPRESSION at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "expression"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-partial-expression () - "Delete PARTIAL-EXPRESSION at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base "partial-expression"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-delete-minor-block () - "Delete MINOR-BLOCK at point. - -Don't store data in kill ring. -A minor block is started by a `for', `if', `try' or `with'." - (interactive "*") - (let ((erg (py-mark-base "minor-block"))) - (delete-region (car erg) (cdr erg)))) - -;;; Kill -(defun py-kill-statements () - "Delete statements declared in current level. - -Store deleted statements in kill-ring " - (interactive "*") - (let* ((bounds (py-bounds-of-statements)) - (beg (car bounds)) - (end (cdr bounds))) - (when (and beg end) - (goto-char beg) - (push-mark) - (goto-char end) - (kill-new (buffer-substring-no-properties beg end)) - (delete-region beg end)))) - -(defun py-kill-declarations () - "Delete variables declared in current level. - -Store deleted variables in kill-ring " - (interactive "*") - (let* ((bounds (py-bounds-of-declarations)) - (beg (car bounds)) - (end (cdr bounds))) - (when (and beg end) - (goto-char beg) - (push-mark) - (goto-char end) - (kill-new (buffer-substring-no-properties beg end)) - (delete-region beg end)))) - -(defun py-kill-expression () - "Delete expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive) - (let ((erg (py-mark-base "expression"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-partial-expression () - "Delete partial-expression at point. - Stores data in kill ring. Might be yanked back using `C-y'. - -\".\" operators delimit a partial-expression expression on it's level, that's the difference to compound expressions." - (interactive) - (let ((erg (py-mark-base "partial-expression"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-statement () - "Delete statement at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "statement"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-top-level () - "Delete top-level form at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "top-level"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-block () - "Delete block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-minor-block () - "Delete minor-block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "minor-block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-block-or-clause () - "Delete block-or-clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "block-or-clause"))) - (kill-region (region-beginning) (region-end)))) - -(defun py-kill-def-or-class () - "Delete def-or-class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "def-or-class"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-class () - "Delete class at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "class"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-def () - "Delete def at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "def"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-kill-clause () - "Delete clause at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base "clause"))) - (kill-region (car erg) (cdr erg)))) - -(defalias 'py-kill-minor-expression 'py-kill-partial-expression) -;;; Beginning of line forms -(defun py-mark-base-bol (form &optional py-mark-decorators) - (let* ((begform (intern-soft (concat "py-beginning-of-" form "-bol"))) - (endform (intern-soft (concat "py-end-of-" form "-bol"))) - (begcheckform (intern-soft (concat "py-beginning-of-" form "-bol-p"))) - (orig (point)) - beg end erg) - (setq beg (if - (setq beg (funcall begcheckform)) - beg - (funcall begform))) - (when py-mark-decorators - (save-excursion - (when (setq erg (py-beginning-of-decorator-bol)) - (setq beg erg)))) - (setq end (funcall endform)) - (push-mark beg t t) - (unless end (when (< beg (point)) - (setq end (point)))) - (when (interactive-p) (message "%s %s" beg end)) - (cons beg end))) - -(defun py-beginning-of-block-bol-p () - "Returns position, if cursor is at the beginning of block, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-block-bol) - (py-beginning-of-block-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-block-lc 'py-end-of-block-bol) -(defun py-end-of-block-bol () - "Goto beginning of line following end of block. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block': down from current definition to next beginning of block below. " - (interactive) - (let ((erg (py-end-of-block))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-block-bol () - "Mark block, take beginning of line positions. - -Returns beginning and end positions of region, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base-bol "block")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-block-bol () - "Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-block-bol () - "Delete block bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-block-bol () - "Delete block bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-clause-bol-p () - "Returns position, if cursor is at the beginning of clause, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-clause-bol) - (py-beginning-of-clause-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-clause-lc 'py-end-of-clause-bol) -(defun py-end-of-clause-bol () - "Goto beginning of line following end of clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-clause': down from current definition to next beginning of clause below. " - (interactive) - (let ((erg (py-end-of-clause))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-clause-bol () - "Mark clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base-bol "clause")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-clause-bol () - "Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "clause"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-clause-bol () - "Delete clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-clause-bol () - "Delete clause bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-block-or-clause-bol-p () - "Returns position, if cursor is at the beginning of block-or-clause, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-block-or-clause-bol) - (py-beginning-of-block-or-clause-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-block-or-clause-lc 'py-end-of-block-or-clause-bol) -(defun py-end-of-block-or-clause-bol () - "Goto beginning of line following end of block-or-clause. - Returns position reached, if successful, nil otherwise. - -See also `py-down-block-or-clause': down from current definition to next beginning of block-or-clause below. " - (interactive) - (let ((erg (py-end-of-block-or-clause))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-block-or-clause-bol () - "Mark block-or-clause, take beginning of line positions. - -Returns beginning and end positions of region, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base-bol "block-or-clause")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-block-or-clause-bol () - "Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block-or-clause"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-block-or-clause-bol () - "Delete block-or-clause bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-block-or-clause-bol () - "Delete block-or-clause bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-def-bol-p () - "Returns position, if cursor is at the beginning of def, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-def-bol) - (py-beginning-of-def-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-def-lc 'py-end-of-def-bol) -(defun py-end-of-def-bol () - "Goto beginning of line following end of def. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def': down from current definition to next beginning of def below. " - (interactive) - (let ((erg (py-end-of-def))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-def-bol (&optional arg) - "Mark def, take beginning of line positions. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base-bol "def" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-def-bol () - "Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "def"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-def-bol () - "Delete def bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-def-bol () - "Delete def bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-class-bol-p () - "Returns position, if cursor is at the beginning of class, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-class-bol) - (py-beginning-of-class-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-class-lc 'py-end-of-class-bol) -(defun py-end-of-class-bol () - "Goto beginning of line following end of class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-class': down from current definition to next beginning of class below. " - (interactive) - (let ((erg (py-end-of-class))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-class-bol (&optional arg) - "Mark class, take beginning of line positions. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base-bol "class" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-class-bol () - "Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "class"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-class-bol () - "Delete class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-class-bol () - "Delete class bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-def-or-class-bol-p () - "Returns position, if cursor is at the beginning of def-or-class, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-def-or-class-bol) - (py-beginning-of-def-or-class-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-down-def-or-class-lc 'py-end-of-def-or-class-bol) -(defun py-end-of-def-or-class-bol () - "Goto beginning of line following end of def-or-class. - Returns position reached, if successful, nil otherwise. - -See also `py-down-def-or-class': down from current definition to next beginning of def-or-class below. " - (interactive) - (let ((erg (py-end-of-def-or-class))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-def-or-class-bol (&optional arg) - "Mark def-or-class, take beginning of line positions. - -With \\[universal argument] or `py-mark-decorators' set to `t', decorators are marked too. -Returns beginning and end positions of region, a cons. " - (interactive "P") - (let ((py-mark-decorators (or arg py-mark-decorators)) - erg) - (py-mark-base-bol "def-or-class" py-mark-decorators) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-def-or-class-bol () - "Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "def-or-class"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-def-or-class-bol () - "Delete def-or-class bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-def-or-class-bol () - "Delete def-or-class bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -(defun py-beginning-of-statement-bol-p () - "Returns position, if cursor is at the beginning of statement, at beginning of line, nil otherwise. " - (interactive) - (let ((orig (point)) - (indent (current-indentation)) - erg) - (save-excursion - (py-end-of-statement-bol) - (py-beginning-of-statement-bol indent) - (when (eq orig (point)) - (setq erg orig)) - erg))) - -(defalias 'py-beginning-of-statement-lc 'py-beginning-of-statement-bol) -(defun py-beginning-of-statement-bol (&optional indent) - "Goto beginning of line where statement starts. - Returns position reached, if successful, nil otherwise. - -See also `py-up-statement': up from current definition to next beginning of statement above. " - (interactive) - (let* ((indent (or indent (when (eq 'py-end-of-statement-bol (car py-bol-forms-last-indent))(cdr py-bol-forms-last-indent)))) - erg) - (if indent - (while (and (setq erg (py-beginning-of-statement)) (< indent (current-indentation))(not (bobp)))) - (setq erg (py-beginning-of-statement))) - ;; reset - (setq py-bol-forms-last-indent nil) - (when erg - (unless (eobp) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defalias 'py-down-statement-lc 'py-end-of-statement-bol) -(defun py-end-of-statement-bol () - "Goto beginning of line following end of statement. - Returns position reached, if successful, nil otherwise. - -See also `py-down-statement': down from current definition to next beginning of statement below. " - (interactive) - (let ((erg (py-end-of-statement))) - (when erg - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (setq erg (point)))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-mark-statement-bol () - "Mark statement, take beginning of line positions. - -Returns beginning and end positions of region, a cons. " - (interactive) - (let (erg) - (setq erg (py-mark-base-bol "statement")) - (exchange-point-and-mark) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-copy-statement-bol () - "Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "statement"))) - (copy-region-as-kill (car erg) (cdr erg)))) - -(defun py-kill-statement-bol () - "Delete statement bol at point. - -Stores data in kill ring. Might be yanked back using `C-y'. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (kill-region (car erg) (cdr erg)))) - -(defun py-delete-statement-bol () - "Delete statement bol at point. - -Don't store data in kill ring. " - (interactive "*") - (let ((erg (py-mark-base-bol "block"))) - (delete-region (car erg) (cdr erg)))) - -;;; Up/Down -(defun py-up-statement () - "Go to the beginning of next statement upwards in buffer. - -Return position if statement found, nil otherwise. " - (interactive) - (let ((orig (point)) - erg) - (if (py-beginning-of-statement-p) - (setq erg (py-beginning-of-statement)) - (setq erg (and (py-beginning-of-statement) (py-beginning-of-statement)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-down-statement () - "Go to the beginning of next statement downwards in buffer. - -Return position if statement found, nil otherwise. " - (interactive) - (let* ((orig (point)) - (erg - (cond ((py-end-of-statement-p) - (and (py-end-of-statement) (py-beginning-of-statement))) - ((ignore-errors (< orig (progn (py-end-of-statement) (py-beginning-of-statement)))) - (point)) - (t (goto-char orig) (and (py-end-of-statement) (py-end-of-statement)(py-beginning-of-statement)))))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-up-base (regexp) - "Go to the beginning of next form upwards in buffer. - -Return position if form found, nil otherwise. " - (let* ((orig (point)) - erg) - (if (bobp) - (setq erg nil) - (while (and (re-search-backward regexp nil t 1) - (nth 8 (syntax-ppss)))) - (back-to-indentation) - (when (looking-at regexp) (setq erg (point))) - (when py-verbose-p (message "%s" erg)) - erg))) - -(defun py-down-base (regexp) - "Go to the beginning of next form below in buffer. - -Return position if form found, nil otherwise. " - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (let* ((orig (point)) - erg) - (if (eobp) - (setq erg nil) - (while (and (re-search-forward regexp nil 'move 1) - (nth 8 (syntax-ppss)))) - (back-to-indentation) - (when (looking-at regexp) (setq erg (point))) - (when py-verbose-p (message "%s" erg)) - erg)))) - -(defun py-up-base-bol (regexp) - "Go to the beginning of next form upwards in buffer. - -Return position if form found, nil otherwise. " - (let* ((orig (point)) - erg) - (if (bobp) - (setq erg nil) - (while (and (re-search-backward regexp nil t 1) - (nth 8 (syntax-ppss)))) - (beginning-of-line) - (when (looking-at regexp) (setq erg (point))) - (when py-verbose-p (message "%s" erg)) - erg))) - -(defun py-down-base-bol (regexp) - "Go to the beginning of next form below in buffer. - -Return position if form found, nil otherwise. " - (unless (eobp) - (forward-line 1) - (beginning-of-line) - (let* ((orig (point)) - erg) - (if (eobp) - (setq erg nil) - (while (and (re-search-forward regexp nil t 1) - (nth 8 (syntax-ppss)))) - (beginning-of-line) - (when (looking-at regexp) (setq erg (point))) - (when py-verbose-p (message "%s" erg)) - erg)))) - -(defun py-up-block () - "Go to the beginning of next block upwards in buffer. - -Return position if block found, nil otherwise. " - (interactive) - (py-up-base py-block-re)) - -(defun py-up-minor-block () - "Go to the beginning of next minor-block upwards in buffer. - -Return position if minor-block found, nil otherwise. " - (interactive) - (py-up-base py-minor-block-re)) - -(defun py-up-clause () - "Go to the beginning of next clause upwards in buffer. - -Return position if clause found, nil otherwise. " - (interactive) - (py-up-base py-clause-re)) - -(defun py-up-block-or-clause () - "Go to the beginning of next block-or-clause upwards in buffer. - -Return position if block-or-clause found, nil otherwise. " - (interactive) - (py-up-base py-block-or-clause-re)) - -(defun py-up-def () - "Go to the beginning of next def upwards in buffer. - -Return position if def found, nil otherwise. " - (interactive) - (py-up-base py-def-re)) - -(defun py-up-class () - "Go to the beginning of next class upwards in buffer. - -Return position if class found, nil otherwise. " - (interactive) - (py-up-base py-class-re)) - -(defun py-up-def-or-class () - "Go to the beginning of next def-or-class upwards in buffer. - -Return position if def-or-class found, nil otherwise. " - (interactive) - (py-up-base py-def-or-class-re)) - -(defun py-down-block () - "Go to the beginning of next block below in buffer. - -Return position if block found, nil otherwise. " - (interactive) - (py-down-base py-block-re)) - -(defun py-down-minor-block () - "Go to the beginning of next minor-block below in buffer. - -Return position if minor-block found, nil otherwise. " - (interactive) - (py-down-base py-minor-block-re)) - -(defun py-down-clause () - "Go to the beginning of next clause below in buffer. - -Return position if clause found, nil otherwise. " - (interactive) - (py-down-base py-clause-re)) - -(defun py-down-block-or-clause () - "Go to the beginning of next block-or-clause below in buffer. - -Return position if block-or-clause found, nil otherwise. " - (interactive) - (py-down-base py-block-or-clause-re)) - -(defun py-down-def () - "Go to the beginning of next def below in buffer. - -Return position if def found, nil otherwise. " - (interactive) - (py-down-base py-def-re)) - -(defun py-down-class () - "Go to the beginning of next class below in buffer. - -Return position if class found, nil otherwise. " - (interactive) - (py-down-base py-class-re)) - -(defun py-down-def-or-class () - "Go to the beginning of next def-or-class below in buffer. - -Return position if def-or-class found, nil otherwise. " - (interactive) - (py-down-base py-def-or-class-re)) - -(defun py-up-block-bol () - "Go to the beginning of next block upwards in buffer. - -Go to beginning of line. -Return position if block found, nil otherwise. " - (interactive) - (py-up-base-bol py-block-re)) - -(defun py-up-minor-block-bol () - "Go to the beginning of next minor-block upwards in buffer. - -Go to beginning of line. -Return position if minor-block found, nil otherwise. " - (interactive) - (py-up-base-bol py-minor-block-re)) - -(defun py-up-clause-bol () - "Go to the beginning of next clause upwards in buffer. - -Go to beginning of line. -Return position if clause found, nil otherwise. " - (interactive) - (py-up-base-bol py-clause-re)) - -(defun py-up-block-or-clause-bol () - "Go to the beginning of next block-or-clause upwards in buffer. - -Go to beginning of line. -Return position if block-or-clause found, nil otherwise. " - (interactive) - (py-up-base-bol py-block-or-clause-re)) - -(defun py-up-def-bol () - "Go to the beginning of next def upwards in buffer. - -Go to beginning of line. -Return position if def found, nil otherwise. " - (interactive) - (py-up-base-bol py-def-re)) - -(defun py-up-class-bol () - "Go to the beginning of next class upwards in buffer. - -Go to beginning of line. -Return position if class found, nil otherwise. " - (interactive) - (py-up-base-bol py-class-re)) - -(defun py-up-def-or-class-bol () - "Go to the beginning of next def-or-class upwards in buffer. - -Go to beginning of line. -Return position if def-or-class found, nil otherwise. " - (interactive) - (py-up-base-bol py-def-or-class-re)) - -(defun py-down-block-bol () - "Go to the beginning of next block below in buffer. - -Go to beginning of line -Return position if block found, nil otherwise " - (interactive) - (py-down-base-bol py-block-re)) - -(defun py-down-minor-block-bol () - "Go to the beginning of next minor-block below in buffer. - -Go to beginning of line -Return position if minor-block found, nil otherwise " - (interactive) - (py-down-base-bol py-minor-block-re)) - -(defun py-down-clause-bol () - "Go to the beginning of next clause below in buffer. - -Go to beginning of line -Return position if clause found, nil otherwise " - (interactive) - (py-down-base-bol py-clause-re)) - -(defun py-down-block-or-clause-bol () - "Go to the beginning of next block-or-clause below in buffer. - -Go to beginning of line -Return position if block-or-clause found, nil otherwise " - (interactive) - (py-down-base-bol py-block-or-clause-re)) - -(defun py-down-def-bol () - "Go to the beginning of next def below in buffer. - -Go to beginning of line -Return position if def found, nil otherwise " - (interactive) - (py-down-base-bol py-def-re)) - -(defun py-down-class-bol () - "Go to the beginning of next class below in buffer. - -Go to beginning of line -Return position if class found, nil otherwise " - (interactive) - (py-down-base-bol py-class-re)) - -(defun py-down-def-or-class-bol () - "Go to the beginning of next def-or-class below in buffer. - -Go to beginning of line -Return position if def-or-class found, nil otherwise " - (interactive) - (py-down-base-bol py-def-or-class-re)) - -;; ripped from cc-mode -(defun py-forward-into-nomenclature (&optional arg iact) - "Move forward to end of a nomenclature section or word. - -With \\[universal-argument] (programmatically, optional argument ARG), do it that many times. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores." - (interactive "p") - (or arg (setq arg 1)) - (let ((case-fold-search nil) - (orig (point)) - erg) - (if (> arg 0) - (while (and (not (eobp)) (> arg 0)) - ;; (setq erg (re-search-forward "\\(\\W+[_[:lower:][:digit:]ß]+\\)" nil t 1)) - (cond - ((or (not (eq 0 (skip-chars-forward "[[:blank:][:punct:]\n\r]"))) - (not (eq 0 (skip-chars-forward "_")))) - (when (or - (< 1 (skip-chars-forward "[:upper:]")) - (not (eq 0 (skip-chars-forward "[[:lower:][:digit:]ß]"))) - (not (eq 0 (skip-chars-forward "[[:lower:][:digit:]]")))) - (setq arg (1- arg)))) - ((or - (< 1 (skip-chars-forward "[:upper:]")) - (not (eq 0 (skip-chars-forward "[[:lower:][:digit:]ß]"))) - (not (eq 0 (skip-chars-forward "[[:lower:][:digit:]]")))) - (setq arg (1- arg))))) - (while (and (not (bobp)) (< arg 0)) - (when (not (eq 0 (skip-chars-backward "[[:blank:][:punct:]\n\r\f_]"))) - - (forward-char -1)) - (or - (not (eq 0 (skip-chars-backward "[:upper:]"))) - (not (eq 0 (skip-chars-backward "[[:lower:][:digit:]ß]"))) - (skip-chars-backward "[[:lower:][:digit:]ß]")) - (setq arg (1+ arg)))) - (if (< (point) orig) - (progn - (when (looking-back "[[:upper:]]") - ;; (looking-back "[[:blank:]]" - (forward-char -1)) - (if (looking-at "[[:alnum:]ß]") - (setq erg (point)) - (setq erg nil))) - (if (and (< orig (point)) (not (eobp))) - (setq erg (point)) - (setq erg nil))) - (when (and py-verbose-p (or iact (interactive-p))) (message "%s" erg)) - erg)) - -(defun py-backward-into-nomenclature (&optional arg) - "Move backward to beginning of a nomenclature section or word. - -With optional ARG, move that many times. If ARG is negative, move -forward. - -A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores." - (interactive "p") - (setq arg (or arg 1)) - (py-forward-into-nomenclature (- arg) arg)) - -(defun match-paren (&optional arg) - "Go to the matching brace, bracket or parenthesis if on its counterpart. - -Otherwise insert the character, the key is assigned to, here `%'. -With universal arg \C-u insert a `%'. " - (interactive "P") - (let ((parse-sexp-ignore-comments t)) - (if arg - (self-insert-command (if (numberp arg) arg 1)) - (cond - ((and (not match-paren-no-use-syntax-pps) (looking-at "\\s(")) - (forward-list 1) - (backward-char 1)) - ((and (not match-paren-no-use-syntax-pps)(looking-at "\\s)")) - (forward-char 1) (backward-list 1)) - ;; if match-paren-no-syntax-pps - ((looking-at "(") - (ar-parentized-end-atpt)) - ((looking-at ")") - (ar-parentized-beginning-atpt)) - ((looking-at "\\\[") - (ar-bracketed-end-atpt)) - ((looking-at "]") - (ar-bracketed-beginning-atpt)) - ((looking-at "{") - (ar-braced-end-atpt)) - ((looking-at "}") - (ar-braced-beginning-atpt)) - (t (self-insert-command 1)))))) - -(defun py-beginning-of-block-current-column () - "Reach next beginning of block upwards which starts at current column. - -Return position" - (interactive) - (let* ((orig (point)) - (cuco (current-column)) - (str (make-string cuco ?\s)) - pps erg) - (while (and (not (bobp))(re-search-backward (concat "^" str py-block-keywords) nil t)(or (nth 8 (setq pps (syntax-ppss))) (nth 1 pps)))) - (back-to-indentation) - (and (< (point) orig)(setq erg (point))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-travel-current-indent (indent &optional orig) - "Moves down until clause is closed, i.e. current indentation is reached. - -Takes a list, INDENT and START position. " - (unless (eobp) - (let ((orig (or orig (point))) - last) - (while (and (setq last (point))(not (eobp))(py-end-of-statement) - (save-excursion (or (<= indent (progn (py-beginning-of-statement)(current-indentation)))(eq last (line-beginning-position)))) - (py-end-of-statement-p))) - (goto-char last) - (when (< orig last) - last)))) - -(defalias 'iyp 'ipython) -(defalias 'ipy 'ipython) -;;; Python named shells -(defun python (&optional argprompt) - "Start an Python interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python")) - -(defun ipython (&optional argprompt) - "Start an IPython interpreter. - -Optional \\[universal-argument] prompts for options to pass to the IPython interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "ipython")) - -(defun python3 (&optional argprompt) - "Start an Python3 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python3 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python3")) - -(defun python2 (&optional argprompt) - "Start an Python2 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python2 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python2")) - -(defun python2.7 (&optional argprompt) - "Start an Python2.7 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python2.7")) - -(defun jython (&optional argprompt) - "Start an Jython interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Jython interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "jython")) - -(defun python3.2 (&optional argprompt) - "Start an Python3.2 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python3.2")) - -(defun python3.3 (&optional argprompt) - "Start an Python3.3 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python3.3")) - -(defun python3.4 (&optional argprompt) - "Start an Python3.3 interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "python3.4")) - -(defun bpython (&optional argprompt) - "Start an Bpython interpreter. - -Optional \\[universal-argument] prompts for options to pass to the Bpython interpreter. See `py-python-command-args'. " - (interactive "P") - (py-shell argprompt nil "bpython")) - -;; dedicated -(defun python-dedicated (&optional argprompt switch) - "Start an unique Python interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python"))) - -(defun ipython-dedicated (&optional argprompt switch) - "Start an unique IPython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the IPython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "ipython"))) - -(defun python3-dedicated (&optional argprompt switch) - "Start an unique Python3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python3"))) - -(defun python2-dedicated (&optional argprompt switch) - "Start an unique Python2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python2"))) - -(defun python2.7-dedicated (&optional argprompt switch) - "Start an unique Python2.7 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python2.7"))) - -(defun jython-dedicated (&optional argprompt switch) - "Start an unique Jython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Jython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "jython"))) - -(defun python3.2-dedicated (&optional argprompt switch) - "Start an unique Python3.2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python3.2"))) - -(defun python3.3-dedicated (&optional argprompt switch) - "Start an unique Python3.3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "python3.3"))) - -(defun bpython-dedicated (&optional argprompt switch) - "Start an unique Bpython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Bpython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t)) - (py-shell argprompt t "bpython"))) - -;; switch -(defun python-switch (&optional argprompt) - "Switch to Python interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python"))) - -(defun ipython-switch (&optional argprompt) - "Switch to IPython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the IPython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "ipython"))) - -(defun python3-switch (&optional argprompt) - "Switch to Python3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python3"))) - -(defun python2-switch (&optional argprompt) - "Switch to Python2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python2"))) - -(defun python2.7-switch (&optional argprompt) - "Switch to Python2.7 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python2.7"))) - -(defun jython-switch (&optional argprompt) - "Switch to Jython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Jython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "jython"))) - -(defun python3.2-switch (&optional argprompt) - "Switch to Python3.2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python3.2"))) - -(defun python3.3-switch (&optional argprompt) - "Switch to Python3.3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "python3.3"))) - -(defun bpython-switch (&optional argprompt) - "Switch to Bpython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Bpython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell argprompt nil "bpython"))) - -;; no-switch -(defun python-no-switch (&optional argprompt) - "Open an Python interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python"))) - -(defun ipython-no-switch (&optional argprompt) - "Open an IPython interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the IPython interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "ipython"))) - -(defun python3-no-switch (&optional argprompt) - "Open an Python3 interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python3 interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python3"))) - -(defun python2-no-switch (&optional argprompt) - "Open an Python2 interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python2 interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python2"))) - -(defun python2.7-no-switch (&optional argprompt) - "Open an Python2.7 interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python2.7"))) - -(defun jython-no-switch (&optional argprompt) - "Open an Jython interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Jython interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "jython"))) - -(defun python3.2-no-switch (&optional argprompt) - "Open an Python3.2 interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python3.2"))) - -(defun python3.3-no-switch (&optional argprompt) - "Open an Python3.3 interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "python3.3"))) - -(defun bpython-no-switch (&optional argprompt) - "Open an Bpython interpreter in another window, but do not switch to it. - -Optional \\[universal-argument] prompts for options to pass to the Bpython interpreter. See `py-python-command-args'." - (interactive "P") - (let (py-switch-buffers-on-execute-p) - (py-shell argprompt nil "bpython"))) - -;; dedicated switch -(defalias 'python-dedicated-switch 'python-switch-dedicated) -(defun python-switch-dedicated (&optional argprompt) - "Switch to an unique Python interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python"))) - -(defalias 'ipython-dedicated-switch 'ipython-switch-dedicated) -(defun ipython-switch-dedicated (&optional argprompt) - "Switch to an unique IPython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the IPython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "ipython"))) - -(defalias 'python3-dedicated-switch 'python3-switch-dedicated) -(defun python3-switch-dedicated (&optional argprompt) - "Switch to an unique Python3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python3"))) - -(defalias 'python2-dedicated-switch 'python2-switch-dedicated) -(defun python2-switch-dedicated (&optional argprompt) - "Switch to an unique Python2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python2"))) - -(defalias 'python2.7-dedicated-switch 'python2.7-switch-dedicated) -(defun python2.7-switch-dedicated (&optional argprompt) - "Switch to an unique Python2.7 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python2.7"))) - -(defalias 'jython-dedicated-switch 'jython-switch-dedicated) -(defun jython-switch-dedicated (&optional argprompt) - "Switch to an unique Jython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Jython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "jython"))) - -(defalias 'python3.2-dedicated-switch 'python3.2-switch-dedicated) -(defun python3.2-switch-dedicated (&optional argprompt) - "Switch to an unique Python3.2 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.2 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python3.2"))) - -(defalias 'python3.3-dedicated-switch 'python3.3-switch-dedicated) -(defun python3.3-switch-dedicated (&optional argprompt) - "Switch to an unique Python3.3 interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "python3.3"))) - -(defalias 'bpython-dedicated-switch 'bpython-switch-dedicated) -(defun bpython-switch-dedicated (&optional argprompt) - "Switch to an unique Bpython interpreter in another window. - -Optional \\[universal-argument] prompts for options to pass to the Bpython interpreter. See `py-python-command-args'." - (interactive "P") - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell argprompt t "bpython"))) - - -;;; -(defalias 'Python 'python) -(defalias 'Python2 'python2) -(defalias 'Python3 'python3) -(defalias 'IPython 'ipython) -(defalias 'Ipython 'ipython) -;;; Code execution -(declare-function compilation-shell-minor-mode "compile" (&optional arg)) - -(defun py-which-execute-file-command (filename) - "Return the command appropriate to Python version. - -Per default it's \"(format \"execfile(r'%s') # PYTHON-MODE\\n\" filename)\" for Python 2 series." - (interactive) - (let* ((erg (py-which-python)) - (cmd (if (< erg 3) - (format "execfile(r'%s') # PYTHON-MODE\n" filename) - (format "exec(compile(open('%s').read(), '%s', 'exec')) # PYTHON-MODE\n" filename filename)))) - (when (interactive-p) (message "%s" (prin1-to-string cmd))) - cmd)) - -(defun py-execute-region-no-switch (start end) - "Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', buffer with region stays current. - " - (interactive "r") - (let (py-switch-buffers-on-execute-p) - (py-execute-base start end))) - -(defun py-execute-region-switch (start end) - "Send the region to a Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p', output-buffer will being switched to. -" - (interactive "r") - (let ((py-switch-buffers-on-execute-p t)) - (py-execute-base start end))) - -(defun py-execute-region (start end &optional shell dedicated) - "Send the region to a Python interpreter. - -When called with \\[universal-argument], execution through `default-value' of `py-shell-name' is forced. -When called with \\[universal-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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. - -Optional DEDICATED (boolean) -" - (interactive "r\nP") - (save-excursion - (let ((py-shell-name (cond ((or py-force-py-shell-name-p (eq 4 (prefix-numeric-value shell))) (default-value 'py-shell-name)) - ((and (numberp shell) (not (eq 1 (prefix-numeric-value shell)))) - (read-from-minibuffer "(path-to-)shell-name: " (default-value 'py-shell-name))) - (t shell))) - (py-dedicated-process-p (or dedicated py-dedicated-process-p))) - (py-execute-base start end)))) - -(defun py-execute-region-default (start end) - "Send the region to the systems default Python interpreter. " - (interactive "r") - (let ((py-dedicated-process-p (default-value 'py-dedicated-process-p)) - (py-shell-name (default-value 'py-shell-name))) - (py-execute-base start end))) - -(defun py-execute-region-dedicated (start end &optional shell) - "Get the region processed by an unique Python interpreter. - -When called with \\[universal-argument], execution through `default-value' of `py-shell-name' is forced. -When called with \\[universal-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. - -When called from a programm, it accepts a string specifying a shell which will be forced upon execute as argument. " - (interactive "r\nP") - (let ((py-shell-name (cond ((eq 4 (prefix-numeric-value shell)) (default-value 'py-shell-name)) - ((and (numberp shell) (not (eq 1 (prefix-numeric-value shell)))) - (read-from-minibuffer "(path-to-)shell-name: " (default-value 'py-shell-name))) - (t shell))) - (py-dedicated-process-p t)) - (py-execute-base start end))) - -(defalias 'py-execute-region-dedicated-default 'py-execute-region-default-dedicated) -(defun py-execute-region-default-dedicated (start end) - "Send the region to an unique shell of systems default Python. " - (interactive "r") - (let ((py-dedicated-process-p t)) - (py-execute-base start end (default-value 'py-shell-name)))) - -(defun py-delete-temporary (&optional file localname filebuf) - (when (file-readable-p file) - (delete-file file)) - (when (buffer-live-p filebuf) - (set-buffer filebuf) - (set-buffer-modified-p 'nil) - (kill-buffer filebuf)) - (when (buffer-live-p localname) - (kill-buffer localname))) - -(defun py-execute-buffer-finally (start end execute-directory wholebuf) - (let* ((strg (buffer-substring-no-properties start end)) - (temp (make-temp-name - (concat (replace-regexp-in-string py-separator-char "-" (replace-regexp-in-string (concat "^" py-separator-char) "" (replace-regexp-in-string ":" "-" py-shell-name))) "-"))) - (tempfile (concat (expand-file-name py-temp-directory) py-separator-char (replace-regexp-in-string py-separator-char "-" temp) ".py")) - (tempbuf (get-buffer-create temp)) - (wholebuf (when (boundp 'wholebuf) wholebuf)) - erg err-p lineadd output-buffer) - ;; (message "%s" strg) - (set-buffer tempbuf) - (erase-buffer) - (unless py-if-name-main-permission-p - (setq strg (replace-regexp-in-string - "if[( ]*__name__[) ]*==[( ]*['\"]\\{1,3\\}__main__['\"]\\{1,3\\}[) ]*:" - ;; space after __main__, i.e. will not be executed - "if __name__ == '__main__ ':" strg))) - (insert strg) - (py-fix-start (point-min)(point-max)) - (set-buffer tempbuf) - (write-region (point-min) (point-max) tempfile nil t nil 'ask) - (set-buffer-modified-p 'nil) - (unwind-protect - (setq erg (py-execute-file-base proc tempfile nil py-buffer-name py-orig-buffer-or-file execute-directory)) - (sit-for 0.1) - (and (or py-debug-p py-cleanup-temporary) - (py-delete-temporary tempfile tempbuf))) - (and erg (or py-debug-p py-store-result-p) (unless (string= (car kill-ring) erg) (kill-new erg))) - erg)) - -(defun py-execute-python-mode-v5 (start end) - (interactive "r") - (let ((py-exception-buffer (current-buffer)) - (pcmd (concat py-shell-name (if (string-equal py-which-bufname - "Jython") - " -" - ;; " -c " - "")))) - (save-excursion - (shell-command-on-region start end - pcmd py-output-buffer)) - (if (not (get-buffer py-output-buffer)) - (message "No output.") - - (let* ((err-p (py-postprocess-output-buffer py-output-buffer)) - (line (cadr err-p))) - (if err-p - (when (and py-jump-on-exception line) - (pop-to-buffer py-exception-buffer)) - (pop-to-buffer py-output-buffer) - (goto-char (point-max)) - (copy-marker (point))))))) - -(defun py-execute-ge24.3 (start end file execute-directory &optional py-exception-buffer proc) - "An alternative way to do it. - -May we get rid of the temporary file? " - (and (buffer-file-name) buffer-offer-save (buffer-modified-p) (y-or-n-p "Save buffer before executing? ") - (write-file (buffer-file-name))) - (let* ((start (copy-marker start)) - (end (copy-marker end)) - (py-exception-buffer (or py-exception-buffer (current-buffer))) - (line (count-lines (point-min) (if (eq start (line-beginning-position)) (1+ start) start))) - (strg (buffer-substring-no-properties start end)) - (tempfile (or (buffer-file-name) (concat (expand-file-name py-temp-directory) py-separator-char (replace-regexp-in-string py-separator-char "-" "temp") ".py"))) - - (proc (or proc (if py-dedicated-process-p - (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name py-buffer-name t)) - (or (get-buffer-process py-buffer-name) - (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name py-buffer-name t)))))) - (procbuf (process-buffer proc)) - (file (or file (with-current-buffer py-buffer-name - (concat (file-remote-p default-directory) tempfile)))) - (filebuf (get-buffer-create file)) - err-p) - (set-buffer filebuf) - (erase-buffer) - (newline line) - (save-excursion - (insert strg)) - (py-fix-start (point) (point-max)) - (unless (string-match "[jJ]ython" py-shell-name) - (when (and execute-directory py-use-current-dir-when-execute-p - (not (string= execute-directory default-directory))) - (message "Warning: options `execute-directory' and `py-use-current-dir-when-execute-p' may conflict")) - (and execute-directory - (process-send-string proc (concat "import os; os.chdir(\"" execute-directory "\")\n")) - ;; (py-send-string-no-output (concat "import os; os.chdir(\"" execute-directory "\")\n") proc) - )) - (set-buffer filebuf) - (process-send-string proc - (buffer-substring-no-properties - (point-min) (point-max))) - (sit-for 0.1) - (if (and (setq err-p (save-excursion (py-postprocess-output-buffer procbuf))) - (car err-p) - (not (markerp err-p))) - (py-jump-to-exception err-p) - (py-shell-manage-windows procbuf py-buffer-name) - (unless (string= (buffer-name (current-buffer)) (buffer-name procbuf)) - (when py-verbose-p (message "Output buffer: %s" procbuf)))))) - -(defun py-execute-base (&optional start end shell filename proc file wholebuf) - "Select the handler. - -When optional FILE is `t', no temporary file is needed. " - (let* ((start (or start (and (use-region-p) (region-beginning)) (point-min))) - (end (or end (and (use-region-p) (region-end)) (point-max))) - (wholebuf (unless file (or wholebuf (and (eq (buffer-size) (- end start)))))) - (windows-config (window-configuration-to-register 313465889)) - (origline - (save-restriction - (widen) - (count-lines - (point-min) - ;; count-lines doesn't honor current line when at BOL - end))) - (py-shell-name (or shell (py-choose-shell))) - (py-exception-buffer (current-buffer)) - (execute-directory - (cond ((ignore-errors (file-name-directory (file-remote-p (buffer-file-name) 'localname)))) - ((and py-use-current-dir-when-execute-p (buffer-file-name)) - (file-name-directory (buffer-file-name))) - ((and py-use-current-dir-when-execute-p - py-fileless-buffer-use-default-directory-p) - (expand-file-name default-directory)) - ((stringp py-execute-directory) - py-execute-directory) - ((getenv "VIRTUAL_ENV")) - (t (getenv "HOME")))) - (py-buffer-name (or py-buffer-name (py-buffer-name-prepare))) - (filename (or (and filename (expand-file-name filename)) (and (not (buffer-modified-p)) (buffer-file-name)))) - (py-orig-buffer-or-file (or filename (current-buffer))) - (proc (or proc (if py-dedicated-process-p - (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name py-buffer-name t)) - (or (and (boundp 'py-buffer-name) (get-buffer-process py-buffer-name)) - (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name (and (boundp 'py-buffer-name) py-buffer-name) t)))))) - err-p) - (set-buffer py-exception-buffer) - (py-update-execute-directory proc py-buffer-name execute-directory) - (cond (;; enforce proceeding as python-mode.el v5 - python-mode-v5-behavior-p - (py-execute-python-mode-v5 start end)) - (py-execute-no-temp-p - (py-execute-ge24.3 start end filename execute-directory py-exception-buffer proc)) - ;; No need for a temporary filename than - ((and filename wholebuf) - (py-execute-file-base proc filename nil py-buffer-name filename execute-directory)) - (t - ;; (message "%s" (current-buffer)) - (py-execute-buffer-finally start end execute-directory wholebuf))))) - -(defun py-execute-string (&optional string shell) - "Send the argument STRING to a Python interpreter. - -See also `py-execute-region'. " - (interactive) - (let ((string (or string (read-from-minibuffer "String: "))) - (shell (or shell (default-value 'py-shell-name)))) - (with-temp-buffer - (insert string) - (py-execute-region (point-min) (point-max) shell)))) - -(defun py-execute-string-dedicated (&optional string shell) - "Send the argument STRING to an unique Python interpreter. - -See also `py-execute-region'. " - (interactive) - (let ((string (or string (read-from-minibuffer "String: "))) - (shell (or shell (default-value 'py-shell-name))) - (py-dedicated-process-p t)) - (with-temp-buffer - (insert string) - (py-execute-region (point-min) (point-max) shell)))) - -(defun py-if-needed-insert-shell () - (let ((erg (or (py-choose-shell-by-shebang) - (py-choose-shell-by-import) - py-shell-name))) - (when (string-match " " erg) (setq erg (substring erg (1+ (string-match " " erg)))) - ;; closing ">" - (setq erg (substring erg 0 (1- (length erg))))) - (goto-char (point-min)) - (while (and (bolp)(eolp)) (delete-region (point) (1+ (line-end-position)))) - (unless (looking-at py-shebang-regexp) - (if (string-match (concat "^" erg) "ipython") - (progn - (shell-command "type ipython" t) - (when (looking-at "[^/\n\r]+") - (replace-match "#! "))) - (if (string-match py-separator-char erg) - (insert (concat "#! " erg "\n")) - (insert (concat py-shebang-startstring " " erg "\n"))))))) - -(defun py-insert-execute-directory (directory &optional orig done) - (let ((orig (or orig (point))) - (done done)) - (if done (goto-char done) (goto-char (point-min))) - (cond ((re-search-forward "^from __future__ import " nil t 1) - (py-end-of-statement) - (setq done (point)) - (py-insert-execute-directory directory orig done)) - ((re-search-forward py-encoding-string-re nil t 1) - (setq done (point)) - (py-insert-execute-directory directory orig done)) - ((re-search-forward py-shebang-regexp nil t 1) - (setq done (point)) - (py-insert-execute-directory directory orig done)) - (t (forward-line 1) - (unless (and (bolp)(eolp)) (newline)) - (insert (concat "import os; os.chdir(\"" directory "\")\n")))))) - -(defun py-insert-coding () - (goto-char (point-min)) - (unless (re-search-forward py-encoding-string-re nil t) - (goto-char (point-min)) - (if (re-search-forward py-shebang-regexp nil t 1) - (progn - (newline) - (insert (concat py-encoding-string "\n"))) - (insert (concat py-encoding-string "\n"))))) - -(defun py-if-needed-insert-if () - "Internal use by py-execute... functions. -Inserts an incentive true form \"if 1:\\n.\" " - (let ((needs-if (/= (py-point 'bol) (py-point 'boi)))) - (when needs-if - (insert "if 1:\n") - (setq py-line-number-offset (- py-line-number-offset 1))))) - -(defun py-fix-start (start end) - "Internal use by py-execute... functions. -Avoid empty lines at the beginning. " - (python-mode) - (goto-char start) - (while (and (bolp)(eolp)) - (delete-region (line-beginning-position) (1+ (line-end-position)))) - (back-to-indentation) - (unless (py-beginning-of-statement-p) - (py-down-statement)) - (while (not (eq (current-indentation) 0)) - (py-shift-left py-indent-offset start end)) - (goto-char (point-max)) - (unless (and (bolp)(eolp)) - (newline))) - -(defun py-fetch-py-master-file () - "Lookup if a `py-master-file' is specified. - -See also doku of variable `py-master-file' " - (interactive) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (when (re-search-forward "^ *# Local Variables:" nil (quote move) 1) - (when - (re-search-forward (concat "^\\( *# py-master-file: *\\)\"\\([^ \t]+\\)\" *$") nil t 1) - (setq py-master-file (match-string-no-properties 2)))))) - (when (and py-verbose-p (interactive-p)) (message "%s" py-master-file))) - -(defun py-execute-import-or-reload (&optional argprompt shell) - "Import the current buffer's file in a Python interpreter. - -If the file has already been imported, then do reload instead to get -the latest version. - -If the file's name does not end in \".py\", then do execfile instead. - -If the current buffer is not visiting a file, do `py-execute-buffer' -instead. - -If the file local variable `py-master-file' is non-nil, import or -reload the named file instead of the buffer's file. The file may be -saved based on the value of `py-execute-import-or-reload-save-p'. - -See also `\\[py-execute-region]'. - -This may be preferable to `\\[py-execute-buffer]' because: - - - Definitions stay in their module rather than appearing at top - level, where they would clutter the global namespace and not affect - uses of qualified names (MODULE.NAME). - - - The Python debugger gets line number information about the functions." - (interactive "P") - ;; Check file local variable py-master-file - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (let ((py-shell-name (or shell (py-choose-shell argprompt shell))) - (file (buffer-file-name (current-buffer)))) - (if file - (let ((proc (or - (ignore-errors (get-process (file-name-directory shell))) - (get-buffer-process (py-shell argprompt py-dedicated-process-p shell (or shell (default-value 'py-shell-name)) t))))) - ;; Maybe save some buffers - (save-some-buffers (not py-ask-about-save) nil) - (py-execute-file-base proc file - (if (string-match "\\.py$" file) - (let ((m (py-qualified-module-name (expand-file-name file)))) - (if (string-match "python2" (file-name-nondirectory shell)) - (format "import sys\nif sys.modules.has_key('%s'):\n reload(%s)\nelse:\n import %s\n" m m m) - (format "import sys,imp\nif'%s' in sys.modules:\n imp.reload(%s)\nelse:\n import %s\n" m m m))) - ;; (format "execfile(r'%s')\n" file) - (py-which-execute-file-command file)))) - (py-execute-buffer)))) - -(defun py-qualified-module-name (file) - "Find the qualified module name for filename FILE. - -Basically, this goes down the directory tree as long as there are __init__.py files there." - (let ((rec #'(lambda (d f) - (let* ((dir (file-name-directory d)) - (initpy (concat dir "__init__.py"))) - (if (file-exists-p initpy) - (let ((d2 (directory-file-name d))) - (funcall rec (file-name-directory d2) - (concat (file-name-nondirectory d2) "." f))) - f))))) - (funcall rec (file-name-directory file) - (file-name-sans-extension (file-name-nondirectory file))))) - -(defun py-execute-buffer-dedicated () - "Send the contents of the buffer to a unique Python interpreter. " - (interactive) - (let ((py-dedicated-process-p t)) - (py-execute-buffer-base))) - -(defun py-execute-buffer-switch () - "Send the contents of the buffer to a Python interpreter and switches to output. " - (interactive) - (let ((py-switch-buffers-on-execute-p t)) - (py-execute-buffer-base))) - -(defalias 'py-execute-buffer-switch-dedicated 'py-execute-buffer-dedicated-switch) -(defun py-execute-buffer-dedicated-switch () - "Send the contents of the buffer to an unique Python interpreter. - -Ignores setting of `py-switch-buffers-on-execute-p'. " - (interactive) - (let ((py-dedicated-process-p t) - (py-switch-buffers-on-execute-p t)) - (py-execute-buffer-base))) - -(defun py-execute-buffer () - "Send the contents of the buffer to a Python interpreter. " - (interactive) - (let ((origline 1)) - (and py-prompt-on-changed-p (buffer-file-name) (interactive-p) (buffer-modified-p) - (y-or-n-p "Buffer changed, save first? ") - (write-file (buffer-file-name))) - (py-execute-region (point-min) (point-max)))) - -(defun py-execute-buffer-base () - "Honor `py-master-file'. " - (let* ((py-master-file (or py-master-file (py-fetch-py-master-file))) - (file - (if py-master-file - (expand-file-name py-master-file) - (buffer-file-name)))) - (py-execute-file file))) - -(defun py-execute-buffer-no-switch () - "Send the contents of the buffer to a Python interpreter but don't switch to output. " - (interactive) - (let (py-switch-buffers-on-execute-p) - (py-execute-buffer-base))) - -;; Fixme: Try to define the function or class within the relevant -;; module, not just at top level. -(defun py-execute-defun () - "Send the current defun (class or method) to the inferior Python process." - (interactive) - (save-excursion (py-execute-region (progn (beginning-of-defun) (point)) - (progn (end-of-defun) (point))))) - -(defun py-process-file (filename &optional output-buffer error-buffer) - "Process \"python filename\". - -Optional OUTPUT-BUFFER and ERROR-BUFFER might be given. " - (interactive "fDatei:") - (let ((coding-system-for-read 'utf-8) - (coding-system-for-write 'utf-8) - (output-buffer (or output-buffer (make-temp-name "py-process-file-output"))) - (pcmd (py-choose-shell))) - (unless (buffer-live-p output-buffer) - (set-buffer (get-buffer-create output-buffer))) - (shell-command (concat pcmd " " filename) output-buffer error-buffer) - (when (interactive-p) (switch-to-buffer output-buffer)))) - -;;; -(defun py-execute-line () - "Send current line from beginning of indent to Python interpreter. " - (interactive) - (save-excursion - (let ((beg (progn (back-to-indentation) - (point)))) - (py-execute-region beg (line-end-position))))) - -(defun py-output-filter (string) - "Clear output buffer from py-shell-input prompt etc. " - (interactive "*") - (replace-regexp-in-string - (concat "\\(\n\\|" py-shell-input-prompt-1-regexp "\\|" py-shell-input-prompt-2-regexp "\\|" "^In \\[[0-9]+\\]: *" "\\)") "" string)) - -(defun py-execute-file (filename) - "When called interactively, user is prompted for filename. " - (interactive "fFilename: ") - (let (;; py-postprocess-output-buffer might want origline - (origline 1) - (windows-config (window-configuration-to-register 313465889)) - (py-exception-buffer filename) - erg) - (if (file-readable-p filename) - (if py-store-result-p - (setq erg (py-execute-file-base nil (expand-file-name filename))) - (py-execute-file-base nil (expand-file-name filename))) - (message "%s not readable. %s" filename "Do you have write permissions?")) - erg)) - -(defun py-update-separator-char () - "Return the file-path separator char from current machine. - -When `py-separator-char' is customized, its taken. -Returns char found. " - (let ((erg (cond ((characterp py-separator-char) - (char-to-string py-separator-char)) - ;; epd hack - ((and - (string-match "[Ii][Pp]ython" py-shell-name) - (string-match "epd\\|EPD" py-shell-name)) - (replace-regexp-in-string "\n" "" - (shell-command-to-string (concat py-shell-name " -c \"import os; print(os.sep)\""))))))) - (if (and erg (string-match "^$" erg)) - (setq erg (substring erg (string-match "^$" erg))) - (setq erg (replace-regexp-in-string "\n" "" (shell-command-to-string (concat py-shell-name " -W ignore" " -c \"import os; print(os.sep)\""))))) - erg)) - -(defun py-current-working-directory (&optional shell) - "Return the directory of current `py-shell'." - (replace-regexp-in-string "\n" "" (shell-command-to-string (concat (or shell py-shell-name) " -c \"import os; print(os.getcwd())\"")))) - -(defun py-update-execute-directory-intern (dir proc) - (comint-send-string proc (concat "import os;os.chdir(\"" dir "\")\n"))) - -(defun py-update-execute-directory (proc procbuf execute-directory) - (let ((oldbuf (current-buffer)) - orig cwd) - (set-buffer procbuf) - (setq cwd (py-current-working-directory)) - (setq orig (point)) - (unless (string= execute-directory (concat cwd "/")) - (py-update-execute-directory-intern (or py-execute-directory execute-directory) proc) - (delete-region orig (point-max))) - (set-buffer oldbuf))) - -(defun py-execute-file-base (&optional proc filename cmd procbuf origfile execute-directory) - "Send to Python interpreter process PROC, in Python version 2.. \"execfile('FILENAME')\". - -Make that process's buffer visible and force display. Also make -comint believe the user typed this string so that -`kill-output-from-shell' does The Right Thing. -Returns position where output starts. " - (let* ((cmd (or cmd (format "exec(compile(open('%s').read(), '%s', 'exec')) # PYTHON-MODE\n" filename filename))) - (msg (and py-verbose-p (format "## executing %s...\n" (or origfile filename)))) - (procbuf (or procbuf (py-shell nil nil nil procbuf t))) - (proc (or proc (get-buffer-process procbuf))) - erg orig err-p) - (set-buffer procbuf) - (goto-char (point-max)) - ;; (switch-to-buffer (current-buffer)) - (setq orig (point)) - (comint-send-string proc cmd) - (if - (setq err-p (save-excursion (py-postprocess-output-buffer procbuf))) - (py-shell-manage-windows py-buffer-name nil windows-config) - (and py-store-result-p - (sit-for 0.1) - (setq erg - (py-output-filter - (buffer-substring-no-properties orig (point-max)))) - (unless (string= (car kill-ring) erg) (kill-new erg))) - (py-shell-manage-windows (current-buffer) nil windows-config) - erg))) - -;;; Pdb -;; Autoloaded. -(declare-function compilation-shell-minor-mode "compile" (&optional arg)) - -(defun py-pdbtrack-overlay-arrow (activation) - "Activate or de arrow at beginning-of-line in current buffer." - ;; This was derived/simplified from edebug-overlay-arrow - (cond (activation - (setq overlay-arrow-position (make-marker)) - (setq overlay-arrow-string "=>") - (set-marker overlay-arrow-position (line-beginning-position) (current-buffer)) - (setq py-pdbtrack-is-tracking-p t)) - (overlay-arrow-position - (setq overlay-arrow-position nil) - (setq py-pdbtrack-is-tracking-p nil)))) - -(defun py-pdbtrack-track-stack-file (text) - "Show the file indicated by the pdb stack entry line, in a separate window. - -Activity is disabled if the buffer-local variable -`py-pdbtrack-do-tracking-p' is nil. - -We depend on the pdb input prompt matching `py-pdbtrack-input-prompt' -at the beginning of the line. - -If the traceback target file path is invalid, we look for the most -recently visited python-mode buffer which either has the name of the -current function \(or class) or which defines the function \(or -class). This is to provide for remote scripts, eg, Zope's 'Script -\(Python)' - put a _copy_ of the script in a buffer named for the -script, and set to python-mode, and pdbtrack will find it.)" - ;; Instead of trying to piece things together from partial text - ;; (which can be almost useless depending on Emacs version), we - ;; monitor to the point where we have the next pdb prompt, and then - ;; check all text from comint-last-input-end to process-mark. - ;; - ;; Also, we're very conservative about clearing the overlay arrow, - ;; to minimize residue. This means, for instance, that executing - ;; other pdb commands wipe out the highlight. You can always do a - ;; 'where' (aka 'w') command to reveal the overlay arrow. - (let* ((origbuf (current-buffer)) - (currproc (get-buffer-process origbuf))) - - (if (not (and currproc py-pdbtrack-do-tracking-p)) - (py-pdbtrack-overlay-arrow nil) - - (let* ((procmark (process-mark currproc)) - (block (buffer-substring (max comint-last-input-end - (- procmark - py-pdbtrack-track-range)) - procmark)) - target target_fname target_lineno target_buffer) - - (if (not (string-match (concat py-pdbtrack-input-prompt "$") block)) - (py-pdbtrack-overlay-arrow nil) - - (setq target (py-pdbtrack-get-source-buffer block)) - - (if (stringp target) - (message "pdbtrack: %s" target) - - (setq target_lineno (car target)) - (setq target_buffer (cadr target)) - (setq target_fname (buffer-file-name target_buffer)) - (switch-to-buffer-other-window target_buffer) - (goto-char (point-min)) - (forward-line (1- target_lineno)) - (message "pdbtrack: line %s, file %s" target_lineno target_fname) - (py-pdbtrack-overlay-arrow t) - (pop-to-buffer origbuf t))))))) - -(defun py-pdbtrack-map-filename (filename) - - (let - ((replacement-val (assoc-default - filename py-pdbtrack-filename-mapping - (lambda (mapkey path) - (string-match - (concat "^" (regexp-quote mapkey)) - path))) - )) - (if (not (eq replacement-val nil)) - (replace-match replacement-val 't 't filename) - filename))) - -(defun py-pdbtrack-get-source-buffer (block) - "Return line number and buffer of code indicated by block's traceback text. - -We look first to visit the file indicated in the trace. - -Failing that, we look for the most recently visited python-mode buffer -with the same name or having the named function. - -If we're unable find the source code we return a string describing the -problem as best as we can determine." - - (if (and (not (string-match py-pdbtrack-stack-entry-regexp block)) - ;; pydb integration still to be done - ;; (not (string-match py-pydbtrack-stack-entry-regexp block)) - ) - "Traceback cue not found" - (let* ((filename (match-string - py-pdbtrack-marker-regexp-file-group block)) - (lineno (string-to-number (match-string - py-pdbtrack-marker-regexp-line-group - block))) - (funcname (match-string py-pdbtrack-marker-regexp-funcname-group - block)) - funcbuffer) - - (cond ((file-exists-p filename) - (list lineno (find-file-noselect filename))) - - ((file-exists-p (py-pdbtrack-map-filename filename)) - (list lineno (find-file-noselect (py-pdbtrack-map-filename filename)))) - - ((setq funcbuffer (py-pdbtrack-grub-for-buffer funcname lineno)) - (if (string-match "/Script (Python)$" filename) - ;; Add in number of lines for leading '##' comments: - (setq lineno - (+ lineno - (save-excursion - (set-buffer funcbuffer) - (count-lines - (point-min) - (max (point-min) - (string-match "^\\([^#]\\|#[^#]\\|#$\\)" - (buffer-substring (point-min) - (point-max))))))))) - (list lineno funcbuffer)) - - ((= (elt filename 0) ?\<) - (format "(Non-file source: '%s')" filename)) - - (t (format "Not found: %s(), %s" funcname filename)))))) - -(defun py-pdbtrack-grub-for-buffer (funcname lineno) - "Find most recent buffer itself named or having function funcname. - -We walk the buffer-list history for python-mode buffers that are -named for funcname or define a function funcname." - (let ((buffers (buffer-list)) - buf - got) - (while (and buffers (not got)) - (setq buf (car buffers) - buffers (cdr buffers)) - (if (and (save-excursion (set-buffer buf) - (string= major-mode "python-mode")) - (or (string-match funcname (buffer-name buf)) - (string-match (concat "^\\s-*\\(def\\|class\\)\\s-+" - funcname "\\s-*(") - (save-excursion - (set-buffer buf) - (buffer-substring (point-min) - (point-max)))))) - (setq got buf))) - got)) - - -;; pdbtrack functions -(defun py-pdbtrack-toggle-stack-tracking (arg) - "Set variable `py-pdbtrack-do-tracking-p'. " - (interactive "P") - ;; (if (not (get-buffer-process (current-buffer))) - ;; (error "No process associated with buffer '%s'" (current-buffer))) - - ;; missing or 0 is toggle, >0 turn on, <0 turn off - (cond ((not arg) - (setq py-pdbtrack-do-tracking-p (not py-pdbtrack-do-tracking-p))) - ((zerop (prefix-numeric-value arg)) - (setq py-pdbtrack-do-tracking-p nil)) - ((> (prefix-numeric-value arg) 0) - (setq py-pdbtrack-do-tracking-p t))) - (if py-pdbtrack-do-tracking-p - (progn - (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file t) - (remove-hook 'comint-output-filter-functions 'python-pdbtrack-track-stack-file t)) - (remove-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file t) - (remove-hook 'comint-output-filter-functions 'python-pdbtrack-track-stack-file t)) - (message "%sabled Python's pdbtrack" - (if py-pdbtrack-do-tracking-p "En" "Dis"))) - -(defun turn-on-pdbtrack () - (interactive) - (py-pdbtrack-toggle-stack-tracking 1)) - -(defun turn-off-pdbtrack () - (interactive) - (py-pdbtrack-toggle-stack-tracking 0)) - -;;; Documentation -(defun py-documentation (w) - "Launch PyDOC on the Word at Point" - (interactive - (list (let* ((word (thing-at-point 'word)) - (input (read-string - (format "pydoc entry%s: " - (if (not word) "" (format " (default %s)" word)))))) - (if (string= input "") - (if (not word) (error "No pydoc args given") - word) ;sinon word - input)))) ;sinon input - (shell-command (concat py-shell-name " -c \"from pydoc import help;help(\'" w "\')\"") "*PYDOCS*") - (view-buffer-other-window "*PYDOCS*" t 'kill-buffer-and-window)) - -(defun py-fetch-docu () - "Lookup in current buffer for the doku for the symbol at point. - -Useful for newly defined symbol, not known to python yet. " - (interactive) - (let* ((symb (prin1-to-string (symbol-at-point))) - (args (py-expression)) - erg) - (save-restriction - (widen) - (goto-char (point-min)) - (when (re-search-forward (concat py-def-or-class-re " *" symb) nil (quote move) 1) - (forward-line 1) - (when (looking-at "[ \t]*\"\"\"\\|[ \t]*'''\\|[ \t]*'[^]+\\|[ \t]*\"[^\"]+") - (goto-char (match-end 0)) - (setq erg (buffer-substring-no-properties (match-beginning 0) (re-search-forward "\"\"\"\\|'''" nil 'move))) - (when erg - (set-buffer (get-buffer-create "*Python-Help*")) - (erase-buffer) - (when (and py-verbose-p (interactive-p)) (switch-to-buffer (current-buffer))) - (insert erg))))))) - -(defun py-find-imports () - "Find top-level imports. - -Returns imports " - (interactive) - (let (imports) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward - "^import *[A-Za-z_][A-Za-z_0-9].*\\|^from +[A-Za-z_][A-Za-z_0-9.]+ +import .*" nil t) - (unless (py-end-of-statement-p) - (py-end-of-statement)) - (setq imports - (concat - imports - (replace-regexp-in-string - "[\\]\r?\n?\s*" "" - (buffer-substring-no-properties (match-beginning 0) (point))) ";")))) - ;; (and imports - ;; (setq imports (replace-regexp-in-string ";$" "" imports))) - (when (and py-verbose-p (interactive-p)) (message "%s" imports)) - imports)) - -(defalias 'py-describe-symbol 'py-help-at-point) -(defalias 'py-eldoc-function 'py-help-at-point) -(defun py-help-at-point (&optional debug) - "Print help on symbol at point. - -If symbol is defined in current buffer, jump to it's definition -Optional \\[universal-argument] used for debugging, will prevent deletion of temp file. " - (interactive "P") - (let* ((orig (point)) - (beg (progn (when (and (looking-back "(")(not (looking-at "\\sw"))) (forward-char -1)) (skip-chars-backward "a-zA-Z0-9_." (line-beginning-position))(point))) - (end (progn (skip-chars-forward "a-zA-Z0-9_." (line-end-position))(point))) - (sym (buffer-substring-no-properties beg end)) - (origfile (buffer-file-name)) - (temp (make-temp-name (buffer-name))) - (file (concat (expand-file-name temp py-temp-directory) ".py")) - (cmd (py-find-imports)) - ;; if symbol is defined in current buffer, go to - (erg (progn (goto-char (point-min)) - (when - (re-search-forward (concat "^[ \t]*def " sym "(") nil t 1) - (forward-char -2) - (point))))) - (if erg - (progn (push-mark orig)(push-mark (point)) - (when (and (interactive-p) py-verbose-p) (message "Jump to previous position with %s" "C-u C- C-u C-"))) - (goto-char orig) - (when cmd - (setq cmd (mapconcat - (lambda (arg) (concat "try: " arg "\nexcept: pass\n")) - (split-string cmd ";" t) - ""))) - (setq cmd (concat "import pydoc\n" - cmd)) - (when (not py-remove-cwd-from-path) - (setq cmd (concat cmd "import sys\n" - "sys.path.insert(0, '" - (file-name-directory origfile) "')\n"))) - (setq cmd (concat cmd "pydoc.help('" sym "')\n")) - (with-temp-buffer - (insert cmd) - (write-file file)) - (setq erg (py-process-file file "*Python-Help*")) - (if py-max-help-buffer-p - (progn - (set-buffer "*Python-Help*") - (switch-to-buffer (current-buffer)) - ;; (sit-for 0.1) - (help-mode) - (delete-other-windows)) - (message "%s" erg)) - - (when (file-readable-p file) - (unless (eq 4 (prefix-numeric-value debug)) (delete-file file)))))) - - -(defun py-describe-mode () - "Dump long form of `python-mode' docs." - (interactive) - (py-dump-help-string "Major mode for editing Python files. -Knows about Python indentation, tokens, comments and continuation lines. -Paragraphs are separated by blank lines only. - -Major sections below begin with the string `@'; specific function and -variable docs begin with `->'. - -@EXECUTING PYTHON CODE - -\\[py-execute-import-or-reload]\timports or reloads the file in the Python interpreter -\\[py-execute-buffer]\tsends the entire buffer to the Python interpreter -\\[py-execute-region]\tsends the current region -\\[py-execute-def-or-class]\tsends the current function or class definition -\\[py-execute-string]\tsends an arbitrary string -\\[py-shell]\tstarts a Python interpreter window; this will be used by -\tsubsequent Python execution commands -%c:py-execute-import-or-reload -%c:py-execute-buffer -%c:py-execute-region -%c:py-execute-def-or-class -%c:py-execute-string -%c:py-shell - -@VARIABLES - -py-install-directory\twherefrom `python-mode' looks for extensions -py-indent-offset\tindentation increment -py-block-comment-prefix\tcomment string used by comment-region - -py-shell-name\tshell command to invoke Python interpreter -py-temp-directory\tdirectory used for temp files (if needed) - -py-beep-if-tab-change\tring the bell if tab-width is changed -%v:py-install-directory -%v:py-indent-offset -%v:py-block-comment-prefix -%v:py-shell-name -%v:py-temp-directory -%v:py-beep-if-tab-change - -@KINDS OF LINES - -Each physical line in the file is either a `continuation line' (the -preceding line ends with a backslash that's not part of a comment, or -the paren/bracket/brace nesting level at the start of the line is -non-zero, or both) or an `initial line' (everything else). - -An initial line is in turn a `blank line' (contains nothing except -possibly blanks or tabs), a `comment line' (leftmost non-blank -character is `#'), or a `code line' (everything else). - -Comment Lines - -Although all comment lines are treated alike by Python, Python mode -recognizes two kinds that act differently with respect to indentation. - -An `indenting comment line' is a comment line with a blank, tab or -nothing after the initial `#'. The indentation commands (see below) -treat these exactly as if they were code lines: a line following an -indenting comment line will be indented like the comment line. All -other comment lines (those with a non-whitespace character immediately -following the initial `#') are `non-indenting comment lines', and -their indentation is ignored by the indentation commands. - -Indenting comment lines are by far the usual case, and should be used -whenever possible. Non-indenting comment lines are useful in cases -like these: - -\ta = b # a very wordy single-line comment that ends up being -\t #... continued onto another line - -\tif a == b: -##\t\tprint 'panic!' # old code we've `commented out' -\t\treturn a - -Since the `#...' and `##' comment lines have a non-whitespace -character following the initial `#', Python mode ignores them when -computing the proper indentation for the next line. - -Continuation Lines and Statements - -The `python-mode' commands generally work on statements instead of on -individual lines, where a `statement' is a comment or blank line, or a -code line and all of its following continuation lines (if any) -considered as a single logical unit. The commands in this mode -generally (when it makes sense) automatically move to the start of the -statement containing point, even if point happens to be in the middle -of some continuation line. - -@INDENTATION - -Primarily for entering new code: -\t\\[indent-for-tab-command]\t indent line appropriately -\t\\[py-newline-and-indent]\t insert newline, then indent -\t\\[py-electric-backspace]\t reduce indentation, or delete single character - -Primarily for reindenting existing code: -\t\\[py-guess-indent-offset]\t guess py-indent-offset from file content; change locally -\t\\[universal-argument] \\[py-guess-indent-offset]\t ditto, but change globally - -\t\\[py-indent-region]\t reindent region to match its context -\t\\[py-shift-left]\t shift line or region left by py-indent-offset -\t\\[py-shift-right]\t shift line or region right by py-indent-offset - -Unlike most programming languages, Python uses indentation, and only -indentation, to specify block structure. Hence the indentation supplied -automatically by `python-mode' is just an educated guess: only you know -the block structure you intend, so only you can supply correct -indentation. - -The \\[indent-for-tab-command] and \\[py-newline-and-indent] keys try to suggest plausible indentation, based on -the indentation of preceding statements. E.g., assuming -py-indent-offset is 4, after you enter -\tif a > 0: \\[py-newline-and-indent] -the cursor will be moved to the position of the `_' (_ is not a -character in the file, it's just used here to indicate the location of -the cursor): -\tif a > 0: -\t _ -If you then enter `c = d' \\[py-newline-and-indent], the cursor will move -to -\tif a > 0: -\t c = d -\t _ -`python-mode' cannot know whether that's what you intended, or whether -\tif a > 0: -\t c = d -\t_ -was your intent. In general, `python-mode' either reproduces the -indentation of the (closest code or indenting-comment) preceding -statement, or adds an extra py-indent-offset blanks if the preceding -statement has `:' as its last significant (non-whitespace and non- -comment) character. If the suggested indentation is too much, use -\\[py-electric-backspace] to reduce it. - -Continuation lines are given extra indentation. If you don't like the -suggested indentation, change it to something you do like, and Python- -mode will strive to indent later lines of the statement in the same way. - -If a line is a continuation line by virtue of being in an unclosed -paren/bracket/brace structure (`list', for short), the suggested -indentation depends on whether the current line contains the first item -in the list. If it does, it's indented py-indent-offset columns beyond -the indentation of the line containing the open bracket. If you don't -like that, change it by hand. The remaining items in the list will mimic -whatever indentation you give to the first item. - -If a line is a continuation line because the line preceding it ends with -a backslash, the third and following lines of the statement inherit their -indentation from the line preceding them. The indentation of the second -line in the statement depends on the form of the first (base) line: if -the base line is an assignment statement with anything more interesting -than the backslash following the leftmost assigning `=', the second line -is indented two columns beyond that `='. Else it's indented to two -columns beyond the leftmost solid chunk of non-whitespace characters on -the base line. - -Warning: indent-region should not normally be used! It calls \\[indent-for-tab-command] -repeatedly, and as explained above, \\[indent-for-tab-command] can't guess the block -structure you intend. -%c:indent-for-tab-command -%c:py-newline-and-indent -%c:py-electric-backspace - -The next function may be handy when editing code you didn't write: -%c:py-guess-indent-offset - -The remaining `indent' functions apply to a region of Python code. They -assume the block structure (equals indentation, in Python) of the region -is correct, and alter the indentation in various ways while preserving -the block structure: -%c:py-indent-region -%c:py-shift-left -%c:py-shift-right - -@MARKING & MANIPULATING REGIONS OF CODE - -\\[py-mark-block]\t mark block of lines -\\[py-mark-def-or-class]\t mark smallest enclosing def -\\[universal-argument] \\[py-mark-def-or-class]\t mark smallest enclosing class -\\[comment-region]\t comment out region of code -\\[universal-argument] \\[comment-region]\t uncomment region of code -%c:py-mark-block -%c:py-mark-def-or-class -%c:comment-region - -@MOVING POINT - -\\[py-previous-statement]\t move to statement preceding point -\\[py-next-statement]\t move to statement following point -\\[py-goto-block-up]\t move up to start of current block -\\[py-beginning-of-def-or-class]\t move to start of def -\\[universal-argument] \\[py-beginning-of-def-or-class]\t move to start of class -\\[py-end-of-def-or-class]\t move to end of def -\\[universal-argument] \\[py-end-of-def-or-class]\t move to end of class - -The first two move to one statement beyond the statement that contains -point. A numeric prefix argument tells them to move that many -statements instead. Blank lines, comment lines, and continuation lines -do not count as `statements' for these commands. So, e.g., you can go -to the first code statement in a file by entering -\t\\[beginning-of-buffer]\t to move to the top of the file -\t\\[py-next-statement]\t to skip over initial comments and blank lines -Or do `\\[py-previous-statement]' with a huge prefix argument. -%c:py-previous-statement -%c:py-next-statement -%c:py-goto-block-up -%c:py-beginning-of-def-or-class -%c:py-end-of-def-or-class - -@LITTLE-KNOWN EMACS COMMANDS PARTICULARLY USEFUL IN PYTHON MODE - -`\\[indent-new-comment-line]' is handy for entering a multi-line comment. - -`\\[set-selective-display]' with a `small' prefix arg is ideally suited for viewing the -overall class and def structure of a module. - -`\\[back-to-indentation]' moves point to a line's first non-blank character. - -`\\[indent-relative]' is handy for creating odd indentation. - -@OTHER EMACS HINTS - -If you don't like the default value of a variable, change its value to -whatever you do like by putting a `setq' line in your .emacs file. -E.g., to set the indentation increment to 4, put this line in your -.emacs: -\t(setq py-indent-offset 4) -To see the value of a variable, do `\\[describe-variable]' and enter the variable -name at the prompt. - -When entering a key sequence like `C-c C-n', it is not necessary to -release the CONTROL key after doing the `C-c' part -- it suffices to -press the CONTROL key, press and release `c' (while still holding down -CONTROL), press and release `n' (while still holding down CONTROL), & -then release CONTROL. - -Entering Python mode calls with no arguments the value of the variable -`python-mode-hook', if that value exists and is not nil; for backward -compatibility it also tries `py-mode-hook'; see the `Hooks' section of -the Elisp manual for details. - -Obscure: When python-mode is first loaded, it looks for all bindings -to newline-and-indent in the global keymap, and shadows them with -local bindings to py-newline-and-indent.")) - -;; (require 'info-look) -;; The info-look package does not always provide this function (it -;; appears this is the case with XEmacs 21.1) -(when (fboundp 'info-lookup-maybe-add-help) - (info-lookup-maybe-add-help - :mode 'python-mode - :regexp "[a-zA-Z0-9_]+" - :doc-spec '(("(python-lib)Module Index") - ("(python-lib)Class-Exception-Object Index") - ("(python-lib)Function-Method-Variable Index") - ("(python-lib)Miscellaneous Index")))) - -(declare-function info-lookup-maybe-add-help "info-look" (&rest arg)) - -(defun py-after-info-look () - "Set up info-look for Python. -Used with `eval-after-load'." - (let* ((version (let ((s (shell-command-to-string (concat py-shell-name - " -V")))) - (string-match "^Python \\([0-9]+\\.[0-9.]+\\_>\\)" s) - (match-string 1 s))) - ;; Whether info files have a Python version suffix, e.g. in Debian. - (versioned - (with-temp-buffer - (with-no-warnings (Info-mode)) - (condition-case () - ;; Don't use `info' because it would pop-up a *info* buffer. - (with-no-warnings - (Info-goto-node (format "(python%s-lib)Miscellaneous Index" - version)) - t) - (error nil))))) - (info-lookup-maybe-add-help - :mode 'python-mode - :regexp "[[:alnum:]_]+" - :doc-spec - ;; Fixme: Can this reasonably be made specific to indices with - ;; different rules? Is the order of indices optimal? - ;; (Miscellaneous in -ref first prefers lookup of keywords, for - ;; instance.) - (if versioned - ;; The empty prefix just gets us highlighted terms. - `((,(concat "(python" version "-ref)Miscellaneous Index") nil "") - (,(concat "(python" version "-ref)Module Index" nil "")) - (,(concat "(python" version "-ref)Function-Method-Variable Index" - nil "")) - (,(concat "(python" version "-ref)Class-Exception-Object Index" - nil "")) - (,(concat "(python" version "-lib)Module Index" nil "")) - (,(concat "(python" version "-lib)Class-Exception-Object Index" - nil "")) - (,(concat "(python" version "-lib)Function-Method-Variable Index" - nil "")) - (,(concat "(python" version "-lib)Miscellaneous Index" nil ""))) - '(("(python-ref)Miscellaneous Index" nil "") - ("(python-ref)Module Index" nil "") - ("(python-ref)Function-Method-Variable Index" nil "") - ("(python-ref)Class-Exception-Object Index" nil "") - ("(python-lib)Module Index" nil "") - ("(python-lib)Class-Exception-Object Index" nil "") - ("(python-lib)Function-Method-Variable Index" nil "") - ("(python-lib)Miscellaneous Index" nil "")))))) -(eval-after-load "info-look" '(py-after-info-look)) - -;;; -(defun py-send-receive (string) - "Send STRING to inferior Python (if any) and return result. - -This is a no-op if `py-check-comint-prompt' returns nil." - (or (py-send-string-no-output string) - (let ((proc (py-proc))) - (with-current-buffer (process-buffer proc) - (when (py-check-comint-prompt proc) - (set (make-local-variable 'py-preoutput-result) nil) - (accept-process-output proc 5) - (prog1 py-preoutput-result - (kill-local-variable 'py-preoutput-result))))))) - -(defun py-load-file (file-name) - "Load a Python file FILE-NAME into the inferior Python process. - -If the file has extension `.py' import or reload it as a module. -Treating it as a module keeps the global namespace clean, provides -function location information for debugging, and supports users of -module-qualified names." - (interactive "f") - (py-execute-file-base (get-buffer-process (get-buffer (py-shell))) file-name)) - -(defalias 'py-find-function 'py-find-definition) -(defun py-find-definition (&optional symbol) - "Find source of definition of SYMBOL. - -Interactively, prompt for SYMBOL." - (interactive) - (set-register 98888888 (list (current-window-configuration) (point-marker))) - (let* ((oldbuf (current-buffer)) - (imports (py-find-imports)) - (symbol (or symbol (with-syntax-table py-dotted-expression-syntax-table - (current-word)))) - (enable-recursive-minibuffers t) - (symbol - (if (interactive-p) - (read-string (if symbol - (format "Find location of (default %s): " symbol) - "Find location of: ") - nil nil symbol) - symbol)) - (orig (point)) - (local (or - (py-until-found (concat "class " symbol) imenu--index-alist) - (py-until-found symbol imenu--index-alist))) - source sourcefile path) - ;; ismethod(), isclass(), isfunction() or isbuiltin() - ;; ismethod isclass isfunction isbuiltin) - (if local - (if (numberp local) - (progn - (goto-char local) - (search-forward symbol (line-end-position) nil 1) - (push-mark) - (goto-char (match-beginning 0)) - (exchange-point-and-mark)) - (error "%s" "local not a number")) - (setq source (py-send-string-return-output (concat imports "import inspect;inspect.getmodule(" symbol ")"))) - (cond ((string-match "SyntaxError" source) - (setq source (substring-no-properties source (match-beginning 0))) - (jump-to-register 98888888) - (message "Can't get source: %s" source)) - ((and source (string-match "builtin" source)) - (progn (jump-to-register 98888888) - (message "%s" source))) - ((and source (setq path (replace-regexp-in-string "'" "" (py-send-string-return-output "import os;os.getcwd()"))) - (setq sourcefile (replace-regexp-in-string "'" "" (py-send-string-return-output (concat "inspect.getsourcefile(" symbol ")")))) - (interactive-p) (message "sourcefile: %s" sourcefile) - (find-file (concat path py-separator-char sourcefile)) - (goto-char (point-min)) - (re-search-forward (concat py-def-or-class-re symbol) nil nil 1)) - (push-mark) - (goto-char (match-beginning 0)) - (exchange-point-and-mark) - (display-buffer oldbuf))) - sourcefile))) - -;;; Miscellanus -(defun py-insert-super () - "Insert a function \"super()\" from current environment. - -As example given in Python v3.1 documentation » The Python Standard Library » - -class C(B): - def method(self, arg): - super().method(arg) # This does the same thing as: - # super(C, self).method(arg) - -Returns the string inserted. " - (interactive "*") - (let* ((orig (point)) - (funcname (progn - (py-beginning-of-def) - (when (looking-at (concat py-def-re " *\\([^(]+\\) *(\\(?:[^),]*\\),? *\\([^)]*\\))")) - (match-string-no-properties 2)))) - (args (match-string-no-properties 3)) - (ver (py-which-python)) - classname erg) - (if (< ver 3) - (progn - (py-beginning-of-class) - (when (looking-at (concat py-class-re " *\\([^( ]+\\)")) - (setq classname (match-string-no-properties 2))) - (goto-char orig) - (setq erg (concat "super(" classname ", self)." funcname "(" args ")")) - ;; super(C, self).method(arg)" - (insert erg)) - (goto-char orig) - (setq erg (concat "super()." funcname "(" args ")")) - (insert erg)) - erg)) - -(defun py-nesting-level (&optional pps) - "Accepts the output of `parse-partial-sexp'. " - (interactive) - (let* ((pps (or (ignore-errors (nth 0 pps)) - (if (featurep 'xemacs) - (parse-partial-sexp (point-min) (point)) - (syntax-ppss)))) - (erg (nth 0 pps))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-beginning-of-commented-section (&optional last) - "Leave upwards comments and/or empty lines. " - (interactive) - (let ((pps (syntax-ppss)) - (last (or last (point)))) - (if (and (or (and (nth 4 pps)(goto-char (nth 8 pps)))(looking-at comment-start)) - (looking-back "^[ \t]*")(not (bobp))) - (progn - (skip-chars-backward " \t\r\n\f") - (py-beginning-of-commented-section last)) - (goto-char last)))) - -(defun py-empty-arglist-indent (nesting py-indent-offset indent-offset) - "Internally used by `py-compute-indentation'" - (if - (and (eq 1 nesting) - (save-excursion - (back-to-indentation) - (looking-at py-extended-block-or-clause-re))) - (progn - (back-to-indentation) - (+ (current-column) (* 2 (or indent-offset py-indent-offset)))) - (+ (current-indentation) py-indent-offset))) - -(defun py-line-backward-maybe () - (skip-chars-backward " \t\f" (line-beginning-position)) - (when (< 0 (abs (skip-chars-backward " \t\r\n\f"))) - (setq line t))) - -(defun py-fetch-previous-indent (orig) - "Report the preceding indent. " - (save-excursion - (goto-char orig) - (forward-line -1) - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (current-indentation))) - -(defun py-continuation-offset (&optional arg) - "With numeric ARG different from 1 py-continuation-offset is set to that value; returns py-continuation-offset. " - (interactive "p") - (let ((erg (if (eq 1 arg) - py-continuation-offset - (when (numberp arg) - (prog1 - arg - (setq py-continuation-offset arg)))))) - (when (and py-verbose-p (interactive-p)) (message "%s" py-continuation-offset)) - py-continuation-offset)) - -(defun py-after-empty-line () - "Return `t' if line before contains only whitespace characters. " - (save-excursion - (beginning-of-line) - (forward-line -1) - (beginning-of-line) - (looking-at "\\s-*$"))) - -(defalias 'py-count-indentation 'py-compute-indentation) -(defun py-compute-indentation (&optional orig origline closing line nesting repeat indent-offset liep) - "Compute Python indentation. - -When HONOR-BLOCK-CLOSE-P is non-nil, statements such as `return', -`raise', `break', `continue', and `pass' force one level of dedenting. - -Optional arguments are flags resp. values set and used by `py-compute-indentation' internally -" - (interactive) - (save-excursion - (save-restriction - (widen) - ;; in shell, narrow from previous prompt - ;; needed by closing - (unless orig (back-to-indentation)) - (let* ((orig (or orig (point))) - (origline (or origline (py-count-lines))) - ;; closing indicates: when started, looked - ;; at a single closing parenthesis - ;; line: moved already a line backward - (liep (or liep (line-end-position))) - (line line) - (pps (syntax-ppss)) - (closing - (or closing - (and (nth 1 pps) - (looking-at ".*\\(\\s)\\)")(nth 0 pps) - ;; char doesn't matter for now, maybe drop - (string-to-char (match-string-no-properties 1))))) - ;; in a recursive call already - (repeat repeat) - ;; nesting: started nesting a list - (nesting nesting) - (indent-offset (or indent-offset py-indent-offset)) - (name (current-buffer)) - erg indent this-line) - (if (and (not repeat) - (and (comint-check-proc (current-buffer)) - (re-search-backward (concat py-shell-prompt-regexp "\\|" ipython-de-output-prompt-regexp "\\|" ipython-de-input-prompt-regexp) nil t 1))) - ;; common recursion not suitable because of prompt - (with-temp-buffer - (insert-buffer-substring name (match-end 0) orig) - (goto-char orig) - (setq indent (py-compute-indentation))) - (unless repeat (setq nesting (nth 0 pps)) - (setq repeat t)) - (setq indent - (cond - ((and (bobp) (eq liep (line-end-position))) - (current-indentation)) - ((and (bobp)(py-statement-opens-block-p py-extended-block-or-clause-re)) - (+ (if py-smart-indentation (py-guess-indent-offset) indent-offset) (current-indentation))) - ((and (bobp)(not (py-statement-opens-block-p py-extended-block-or-clause-re))) - (current-indentation)) - ;; in string - ((and (nth 3 pps)(nth 8 pps)) - (if - ;; still at original line - (eq liep (line-end-position)) - (progn - (forward-line -1) - (end-of-line) - (skip-chars-backward " \t\r\n\f") - (if (ignore-errors (< (nth 8 (syntax-ppss)) (line-beginning-position))) - (current-indentation) - (ignore-errors (goto-char (nth 8 pps))) - (py-line-backward-maybe) - (back-to-indentation) - (py-compute-indentation orig origline closing line nesting t indent-offset liep))) - (goto-char (nth 8 pps)) - (current-indentation))) - ((and (looking-at "\"\"\"\\|'''")(not (bobp))) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - ;; comments - ((nth 8 pps) - (if (eq liep (line-end-position)) - (progn - (goto-char (nth 8 pps)) - (py-line-backward-maybe) - (skip-chars-backward " \t") - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (goto-char (nth 8 pps)) - (if - line - (if py-indent-honors-inline-comment - (current-column) - (if py-indent-comments - (progn - (py-beginning-of-commented-section) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - 0)) - (forward-char -1) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)))) - ((and (looking-at "[ \t]*#") (looking-back "^[ \t]*")(not line) - (eq liep (line-end-position))) - (if py-indent-comments - (progn - (setq line t) - (skip-chars-backward " \t\r\n\f") - ;; as previous comment-line might - ;; be wrongly unindented, travel - ;; whole commented section - (py-beginning-of-commented-section) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - 0)) - ((and (looking-at "[ \t]*#") (looking-back "^[ \t]*")(not - (eq liep (line-end-position)))) - (current-indentation)) - ((and (eq ?\# (char-after)) line py-indent-honors-inline-comment) - (current-column)) - ;; lists - ((nth 1 pps) - (cond - ((and nesting (not line)) - ;; still at original line - (save-excursion - (goto-char (nth 1 pps)) - (setq this-line (py-count-lines)) - (cond - ((< 0 (- origline this-line)) - (if (< 1 (- origline this-line)) - (cond - (closing - (cond - (py-closing-list-dedents-bos - (goto-char (nth 1 pps)) - (current-indentation)) - ((looking-back "^[ \t]*") - (current-column)) - ((and (looking-at "\\s([ \t]*$") py-closing-list-keeps-space) - (+ (current-column) py-closing-list-space)) - ((looking-at "\\s([ \t]*$") - (py-empty-arglist-indent nesting py-indent-offset indent-offset)) - (t (py-fetch-previous-indent orig)))) - ;; already behind a dedented element in list - ((<= 2 (- origline this-line)) - (py-fetch-previous-indent orig)) - ((< (current-indentation) (current-column)) - (+ (current-indentation) py-indent-offset)) - (t (py-fetch-previous-indent orig))) - (cond ((looking-at "\\s([ \t]*$") - (py-empty-arglist-indent nesting py-indent-offset indent-offset)) - ((looking-at "\\s([ \t]*\\([^ \t]+.*\\)$") - (goto-char (match-beginning 1)) - (if py-indent-paren-spanned-multilines-p - (+ (current-column) py-indent-offset) - (current-column))) - (t (+ (current-column) (* (nth 0 pps))))))) - ((nth 1 (syntax-ppss)) - (goto-char (nth 1 (syntax-ppss))) - (setq line - ;; should be faster - (< (line-end-position) liep) - ;; (< (py-count-lines) origline) - ) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - ((not (py-beginning-of-statement-p)) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (t (1+ (current-column)))))) - ((and (not nesting) line) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - ((not nesting) - (progn (goto-char (+ py-lhs-inbound-indent (nth 1 pps))) - (when (looking-at "[ \t]+") - (goto-char (match-end 0))) - (current-column))) - (t - (goto-char (nth 1 pps)) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)))) - ((and (eq (char-after) (or ?\( ?\{ ?\[)) line) - (1+ (current-column))) - ((py-preceding-line-backslashed-p) - (progn - (py-beginning-of-statement) - (setq this-line (py-count-lines)) - (if (< 1 (- origline this-line)) - (py-fetch-previous-indent orig) - (if (looking-at "from +\\([^ \t\n]+\\) +import") - py-backslashed-lines-indent-offset - (+ (current-indentation) py-continuation-offset))))) - ((and (looking-at py-block-closing-keywords-re) - (eq liep (line-end-position))) - (skip-chars-backward "[ \t\r\n\f]") - (py-beginning-of-statement) - (cond ((looking-at py-extended-block-or-clause-re) - (+ - (if py-smart-indentation (py-guess-indent-offset) indent-offset) - (current-indentation))) - ((looking-at py-block-closing-keywords-re) - (- (current-indentation) py-indent-offset)) - (t (current-column)))) - ((looking-at py-block-closing-keywords-re) - (if (< (line-end-position) orig) - (- (current-indentation) py-indent-offset) - (py-beginning-of-block-or-clause (current-indentation)) - (current-indentation))) - ((looking-at py-no-outdent-re) - (if - (eq liep (line-end-position)) - (progn - (back-to-indentation) - (py-line-backward-maybe) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (current-indentation))) - ((and (looking-at py-elif-re) (eq (py-count-lines) origline)) - (py-line-backward-maybe) - (car (py-clause-lookup-keyword py-elif-re -1 nil orig origline))) - ((and (looking-at py-clause-re)(not line) - (eq liep (line-end-position))) - (cond ((looking-at py-finally-re) - (car (py-clause-lookup-keyword py-finally-re -1 nil orig origline))) - ((looking-at py-except-re) - (car (py-clause-lookup-keyword py-except-re -1 nil orig origline))) - ((looking-at py-else-re) - (car (py-clause-lookup-keyword py-else-re -1 nil orig origline))) - ((looking-at py-elif-re) - (car (py-clause-lookup-keyword py-elif-re -1 nil orig origline))) - ;; maybe at if, try, with - (t (car (py-clause-lookup-keyword py-block-or-clause-re -1 nil orig origline))))) - ((looking-at py-extended-block-or-clause-re) - (cond ((and (not line) - (eq liep (line-end-position))) - (py-line-backward-maybe) - (setq line t) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (t (+ - (cond (indent-offset) - (py-smart-indentation - (py-guess-indent-offset)) - (t py-indent-offset)) - (current-indentation))))) - ((and - (< (line-end-position) liep) - (eq (current-column) (current-indentation))) - (and - (looking-at py-assignment-re) - (goto-char (match-end 0))) - ;; multiline-assignment - (if (and nesting (looking-at " *[[{(]")(not (looking-at ".+[]})][ \t]*$"))) - (+ (current-indentation) py-indent-offset) - (current-indentation))) - ((looking-at py-assignment-re) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - ((and (< (current-indentation) (current-column))(not line)) - (back-to-indentation) - (unless line - (setq nesting (nth 0 (syntax-ppss)))) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - ((and (not (py-beginning-of-statement-p)) (not (and line (eq ?\# (char-after))))) - (if (bobp) - (current-column) - (if (eq (point) orig) - (progn - (py-line-backward-maybe) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)))) - ((or (py-statement-opens-block-p py-extended-block-or-clause-re)(looking-at "@")) - (if (< (py-count-lines) origline) - (+ (if py-smart-indentation (py-guess-indent-offset) indent-offset) (current-indentation)) - (skip-chars-backward " \t\r\n\f") - (setq line t) - (back-to-indentation) - (py-compute-indentation orig origline closing line nesting t indent-offset liep))) - ((and py-empty-line-closes-p (py-after-empty-line)) - (progn (py-beginning-of-statement) - (- (current-indentation) py-indent-offset))) - ;; still at orignial line - ((and (eq liep (line-end-position)) - (save-excursion - (and (setq erg (py-go-to-keyword py-extended-block-or-clause-re)) - (if py-smart-indentation (setq indent-offset (py-guess-indent-offset)) t) - (ignore-errors (< orig (or (py-end-of-block-or-clause)(point))))))) - (+ (car erg) (if py-smart-indentation - (or indent (py-guess-indent-offset)) - indent-offset))) - ((and (not line) - (eq liep (line-end-position)) - (py-beginning-of-statement-p)) - (py-beginning-of-statement) - (py-compute-indentation orig origline closing line nesting t indent-offset liep)) - (t (current-indentation)))) - (when (and py-verbose-p (interactive-p)) (message "%s" indent)) - indent))))) - -(defalias 'pios 'py-indentation-of-statement) -(defalias 'ios 'py-indentation-of-statement) -(defun py-indentation-of-statement () - "Returns the indenation of the statement at point. " - (interactive) - (let ((erg (save-excursion - (back-to-indentation) - (or (py-beginning-of-statement-p) - (py-beginning-of-statement)) - (current-indentation)))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -;; (defun py-comint-output-filter-function (string) -;; "Watch output for Python prompt and exec next file waiting in queue. -;; This function is appropriate for `comint-output-filter-functions'." -;; ;;remove ansi terminal escape sequences from string -;; (setq string (ansi-color-filter-apply string)) -;; (when (and (string-match py-shell-input-prompt-1-regexp string) -;; py-file-queue) -;; (if py-switch-buffers-on-execute-p -;; (pop-to-buffer (current-buffer))) -;; (ignore-errors (delete-file (car py-file-queue))) -;; (setq py-file-queue (cdr py-file-queue)) -;; (if py-file-queue -;; (let ((pyproc (get-buffer-process (current-buffer)))) -;; (py-execute-file-base pyproc (car py-file-queue)))))) - -(defun py-guess-default-python () - "Defaults to \"python\", if guessing didn't succeed. " - (interactive) - (let* ((ptn (or py-shell-name (py-choose-shell) "python")) - (erg (if py-edit-only-p ptn (executable-find ptn)))) - (when (interactive-p) - (if erg - (message "%s" ptn) - (message "%s" "Could not detect Python on your system"))))) - -(defun py-separator-char () - "Return the file-path separator char from current machine. - -When `py-separator-char' is customized, its taken. -Returns char found. " - (let ((erg (cond ((characterp py-separator-char) - (char-to-string py-separator-char)) - ;; epd hack - ((and - (string-match "[Ii][Pp]ython" py-shell-name) - (string-match "epd\\|EPD" py-shell-name)) - (replace-regexp-in-string "\n" "" - (shell-command-to-string (concat py-shell-name " -c \"import os; print(os.sep)\""))))))) - (if (and erg (string-match "^$" erg)) - (setq erg (substring erg (string-match "^$" erg))) - (setq erg (replace-regexp-in-string "\n" "" (shell-command-to-string (concat py-shell-name " -W ignore" " -c \"import os; print(os.sep)\""))))) - erg)) - -(unless py-separator-char (setq py-separator-char (py-separator-char))) - -(defun py-process-name (&optional name) - "Return the name of the running Python process, `get-process' willsee it. " - (let* ((thisname (if name - (if (string-match py-separator-char name) - (substring name (progn (string-match (concat "\\(.+\\)"py-separator-char "\\(.+\\)$") name) (match-beginning 2))) - - name) - (substring py-shell-name (or (string-match (concat py-separator-char ".+$") py-shell-name) 0)))) - (nname (cond (py-dedicated-process-p - (make-temp-name (concat thisname "-"))) - ;; ((string-match "\*" (buffer-name)) - ;; (replace-regexp-in-string "\*" "" (buffer-name))) - (t thisname))) - (erg (cond ((or (string-match "ipython" nname) - (string-match "IPython" nname)) - "IPython") - (nname)))) - (unless (string-match "^\*" erg)(setq erg (concat "*" erg "*"))) - erg)) - -;; (make-variable-buffer-local 'ipython-completion-command-string) - -;; (setq ipython0.10-completion-command-string "print(';'.join(__IP.Completer.all_completions('%s'))) #PYTHON-MODE SILENT\n") - -;; from ipython.el -(defun py-dirstack-hook () - ;; the following is to synchronize dir-changes - (make-local-variable 'shell-dirstack) - (setq shell-dirstack nil) - (make-local-variable 'shell-last-dir) - (setq shell-last-dir nil) - (make-local-variable 'shell-dirtrackp) - (setq shell-dirtrackp t) - (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t)) - -(defun py-set-ipython-completion-command-string () - "Set and return `ipython-completion-command-string'. " - (interactive) - (let* ((ipython-version (shell-command-to-string (concat py-shell-name " -V")))) - (if (string-match "[0-9]" ipython-version) - (setq ipython-completion-command-string - (cond ((string-match "^1.1.*" ipython-version) - ipython0.11-completion-command-string) - ((string-match "^0.1[1-3]" ipython-version) - ipython0.11-completion-command-string) - ((string= "^0.10" ipython-version) - ipython0.10-completion-command-string))) - (error ipython-version)))) - -(defalias 'py-dedicated-shell 'py-shell-dedicated) -(defun py-shell-dedicated (&optional argprompt) - "Start an interactive Python interpreter in another window. - -With optional \\[universal-argument] user is prompted by -`py-choose-shell' for command and options to pass to the Python -interpreter. -" - (interactive "P") - (py-shell argprompt t)) - -(defun py-buffer-name-prepare () - "Return an appropriate name to display in modeline. -SEPCHAR is the file-path separator of your system. " - (let ((name (capitalize py-shell-name)) - prefix erg suffix liste) - (when (string-match py-separator-char name) - (unless py-modeline-acronym-display-home-p - (when (string-match (concat "^" (expand-file-name "~")) name) - (setq name (replace-regexp-in-string (concat "^" (expand-file-name "~")) "" name)))) - (save-match-data - (setq liste (split-string name py-separator-char))) - (dolist (ele liste) - (unless (string= "" ele) - (setq prefix (concat prefix (char-to-string (aref ele 0)))))) - (unless py-modeline-display-full-path-p - - (setq name (substring name (1+ (string-match (concat py-separator-char "[^" py-separator-char "]+$") name)))))) - (setq erg - (cond ((string= "ipython" name) - (replace-regexp-in-string "ipython" "IPython" name)) - ((string= "jython" name) - (replace-regexp-in-string "jython" "Jython" name)) - ((string= "python" name) - (replace-regexp-in-string "python" "Python" name)) - ((string-match "python2" name) - (replace-regexp-in-string "python2" "Python2" name)) - ((string-match "python3" name) - (replace-regexp-in-string "python3" "Python3" name)) - (t name))) - (when py-dedicated-process-p - (setq erg (make-temp-name (concat erg "-")))) - (cond ((and prefix (string-match "^\*" erg)) - (setq erg (replace-regexp-in-string "^\*" (concat "*" prefix " ") erg))) - (prefix - (setq erg (concat "*" prefix " " erg "*"))) - - (t (setq erg (concat "*" erg "*")))) - erg)) - -(defun py-delete-numbers-and-stars-from-string (string) - "Delete numbering and star chars from string, return result. - -Needed when file-path names are contructed from maybe numbered buffer names like \"\*Python\*<2> \"" - (replace-regexp-in-string - "<\\([0-9]+\\)>" "" - (replace-regexp-in-string - "\*" "" - string))) - -(defun py-shell-manage-windows (output-buffer &optional windows-displayed windows-config) - "Adapt or restore window configuration. Return nil " - (cond ((eq py-keep-windows-configuration 'force) - (py-restore-window-configuration)) - ((and (boundp 'err-p) err-p) - (py-restore-window-configuration) - (py-jump-to-exception err-p py-exception-buffer) - ;; (goto-char (point-max)) - (and (window-full-height-p) - (funcall py-split-windows-on-execute-function)) - (display-buffer output-buffer t)) - (py-keep-windows-configuration - (py-restore-window-configuration)) - ;; split and switch - ((and py-split-windows-on-execute-p - py-switch-buffers-on-execute-p) - (when (< (count-windows) py-max-split-windows) - (funcall py-split-windows-on-execute-function)) - (set-buffer output-buffer) - (goto-char (point-max)) - (switch-to-buffer (current-buffer)) - (display-buffer py-exception-buffer)) - ;; split, not switch - ((and - py-split-windows-on-execute-p - (not py-switch-buffers-on-execute-p)) - (delete-other-windows) - (if (< (count-windows) py-max-split-windows) - (progn - (funcall py-split-windows-on-execute-function) - (set-buffer output-buffer) - (goto-char (point-max)) - (and (bufferp py-exception-buffer)(set-buffer py-exception-buffer) - (switch-to-buffer (current-buffer)) - (display-buffer output-buffer 'display-buffer-reuse-window)) - (display-buffer output-buffer 'display-buffer-reuse-window)))) - ;; no split, switch - ((and - py-switch-buffers-on-execute-p - (not py-split-windows-on-execute-p)) - (let (pop-up-windows) - (set-buffer output-buffer) - (goto-char (point-max)) - (switch-to-buffer (current-buffer)))) - ;; no split, no switch - ((not py-switch-buffers-on-execute-p) - ;; (if (equal (window-list-1) windows-displayed) - ;; (jump-to-register 313465889) - (let (pop-up-windows) - (py-restore-window-configuration)))) - nil) - -(defun py-report-executable (py-buffer-name) - (let ((erg (downcase (replace-regexp-in-string - "<\\([0-9]+\\)>" "" - (replace-regexp-in-string - "\*" "" - (if - (string-match " " py-buffer-name) - (substring py-buffer-name (1+ (string-match " " py-buffer-name))) - py-buffer-name)))))) - (when (string-match "-" erg) - (setq erg (substring erg 0 (string-match "-" erg)))) - erg)) - -(defun py-shell-send-setup-code (process) - "Send all setup code for shell. -This function takes the list of setup code to send from the -`py-setup-codes' list." - (accept-process-output process 1) - (dolist (code py-setup-codes) - (py-send-string-no-output - (symbol-value code) process) - (sit-for 0.1))) - -(defun py--shell-make-comint () - (set-buffer (apply 'make-comint-in-buffer executable py-buffer-name executable nil args)) - (unless (interactive-p) (sit-for 0.1)) - (set (make-local-variable 'comint-prompt-regexp) - (cond ((string-match "[iI][pP]ython[[:alnum:]*-]*$" py-buffer-name) - (concat "\\(" - (mapconcat 'identity - (delq nil (list py-shell-input-prompt-1-regexp py-shell-input-prompt-2-regexp ipython-de-input-prompt-regexp ipython-de-output-prompt-regexp py-pdbtrack-input-prompt py-pydbtrack-input-prompt)) - "\\|") - "\\)")) - (t (concat "\\(" - (mapconcat 'identity - (delq nil (list py-shell-input-prompt-1-regexp py-shell-input-prompt-2-regexp py-pdbtrack-input-prompt py-pydbtrack-input-prompt)) - "\\|") - "\\)"))))) - -(defun py--shell-setup () - (set (make-local-variable 'comint-input-filter) 'py-history-input-filter) - (set (make-local-variable 'comint-prompt-read-only) py-shell-prompt-read-only) - (set (make-local-variable 'comint-use-prompt-regexp) nil) - (set (make-local-variable 'compilation-error-regexp-alist) - python-compilation-regexp-alist) - ;; (setq completion-at-point-functions nil) - (and py-fontify-shell-buffer-p - (set (make-local-variable 'font-lock-defaults) - '(py-font-lock-keywords nil nil nil nil - (font-lock-syntactic-keywords - . py-font-lock-syntactic-keywords)))) - (set (make-local-variable 'comment-start) "# ") - (set (make-local-variable 'comment-start-skip) "^[ \t]*#+ *") - (set (make-local-variable 'comment-column) 40) - (set (make-local-variable 'comment-indent-function) #'py-comment-indent-function) - (set (make-local-variable 'indent-region-function) 'py-indent-region) - (set (make-local-variable 'indent-line-function) 'py-indent-line) - (set (make-local-variable 'inhibit-point-motion-hooks) t) - (setq proc (get-buffer-process (current-buffer))) - (py-shell-send-setup-code proc) - (and py-set-pager-cat-p (comint-simple-send proc "import os;os.environ['PAGER'] = 'cat'")) - (compilation-shell-minor-mode 1) - (setq comint-input-sender 'py-shell-simple-send) - ;; (sit-for 0.1) - (setq comint-input-ring-file-name - (cond ((string-match "[iI][pP]ython[[:alnum:]*-]*$" py-buffer-name) - (if py-honor-IPYTHONDIR-p - (if (getenv "IPYTHONDIR") - (concat (getenv "IPYTHONDIR") "/history") - py-ipython-history) - py-ipython-history)) - (t - (if py-honor-PYTHONHISTORY-p - (if (getenv "PYTHONHISTORY") - (concat (getenv "PYTHONHISTORY") "/" (py-report-executable py-buffer-name) "_history") - py-ipython-history) - py-ipython-history)))) - (comint-read-input-ring t) - (set-process-sentinel (get-buffer-process py-buffer-name) - #'shell-write-history-on-exit) - (add-hook 'comint-output-filter-functions - 'ansi-color-process-output) - (add-hook 'after-change-functions 'py-after-change-function nil t) - - (remove-hook 'comint-output-filter-functions - 'font-lock-extend-jit-lock-region-after-change) - (use-local-map py-shell-map) - (cond - (py-complete-function - (add-hook 'completion-at-point-functions - py-complete-function nil 'local)) - (py-load-pymacs-p - (add-hook 'completion-at-point-functions - 'py-complete-completion-at-point nil 'local)) - (t - (add-hook 'completion-at-point-functions - 'py-shell-complete nil 'local))) - ;; pdbtrack - (and py-pdbtrack-do-tracking-p - (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file t) - (remove-hook 'comint-output-filter-functions 'python-pdbtrack-track-stack-file t)) - (set-syntax-table python-mode-syntax-table)) - -(defun py-shell (&optional argprompt dedicated shell buffer-name no-window-managment) - "Start an interactive Python interpreter in another window. -Interactively, \\[universal-argument] 4 prompts for a buffer. -\\[universal-argument] 2 prompts for `py-python-command-args'. -If `default-directory' is a remote file name, it is also prompted -to change if called with a prefix arg. - -Returns py-shell's buffer-name. -Optional string PYSHELLNAME overrides default `py-shell-name'. -BUFFER allows specifying a name, the Python process is connected to -When DONE is `t', `py-shell-manage-windows' is omitted -" - (interactive "P") - (let* ((dedicated (or dedicated py-dedicated-process-p)) - (py-exception-buffer (or py-exception-buffer (current-buffer))) - (coding-system-for-read 'utf-8) - (coding-system-for-write 'utf-8) - (args py-python-command-args) - (path (getenv "PYTHONPATH")) - (py-shell-name (or shell py-shell-name (py-choose-shell))) - - ;; reset later on - (py-buffer-name - (cond (buffer-name) - (t (and (not dedicated) argprompt - (cond - ((eq 4 (prefix-numeric-value argprompt)) - (prog1 - (read-buffer "Py-Shell buffer: " - (generate-new-buffer-name (py-buffer-name-prepare))) - (when (file-remote-p default-directory) - ;; It must be possible to declare a local default-directory. - (setq default-directory - (expand-file-name - (read-file-name - "Default directory: " default-directory default-directory - t nil 'file-directory-p))) - (setq py-separator-char (py-separator-char))))) - ((and (eq 2 (prefix-numeric-value argprompt)) - (fboundp 'split-string)) - (setq args (split-string - (read-string "Py-Shell arguments: " - (concat - (mapconcat 'identity py-python-command-args " ") " ")))))))))) - ;; If we use a pipe, Unicode characters are not printed - ;; correctly (Bug#5794) and IPython does not work at - ;; all (Bug#5390). python.el - ;; (process-connection-type t) - ;; already in py-choose-shell - (py-use-local-default - (if (not (string= "" py-shell-local-path)) - (expand-file-name py-shell-local-path) - (when py-use-local-default - (error "Abort: `py-use-local-default' is set to `t' but `py-shell-local-path' is empty. Maybe call `py-toggle-local-default-use'")))) - (py-buffer-name (or py-buffer-name (py-buffer-name-prepare))) - (executable (cond (py-shell-name) - (py-buffer-name - (py-report-executable py-buffer-name)))) - proc py-smart-indentation) - ;; lp:1169687, if called from within an existing py-shell, open a new one - (and (bufferp py-exception-buffer)(string= py-buffer-name (buffer-name py-exception-buffer)) - (setq py-buffer-name (generate-new-buffer-name py-buffer-name))) - - (unless (comint-check-proc py-buffer-name) - (py--shell-make-comint) - (py--shell-setup) - ;; (add-hook 'py-shell-hook 'py-dirstack-hook) - (and py-fontify-shell-buffer-p (font-lock-fontify-buffer)) - (unless no-window-managment (py-shell-manage-windows py-buffer-name)) - (when py-shell-hook (run-hooks 'py-shell-hook)) - py-buffer-name))) - -(defun py-indent-forward-line (&optional arg) - "Indent and move one line forward to next indentation. -Returns column of line reached. - -If `py-kill-empty-line' is non-nil, delete an empty line. -When closing a form, use py-close-block et al, which will move and indent likewise. -With \\[universal argument] just indent. -" - (interactive "*P") - (let ((orig (point)) - erg) - (unless (eobp) - (if (and (py-in-comment-p)(not py-indent-comments)) - (forward-line 1) - (py-indent-line-outmost) - (unless (eq 4 (prefix-numeric-value arg)) - (if (eobp) (newline) - (progn (forward-line 1)) - (when (and py-kill-empty-line (and (bolp)(eolp)) (not (looking-at "[ \t]*\n[[:alpha:]]")) (not (eobp))) - (delete-region (line-beginning-position) (line-end-position))))))) - (back-to-indentation) - (when (or (eq 4 (prefix-numeric-value arg)) (< orig (point))) (setq erg (current-column))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-dedent-forward-line (&optional arg) - "Dedent line and move one line forward. " - (interactive "*p") - (py-dedent arg) - (forward-line 1) - (end-of-line) - (skip-chars-backward " \t\r\n\f")) - -(defun py-dedent (&optional arg) - "Dedent line according to `py-indent-offset'. - -With arg, do it that many times. -If point is between indent levels, dedent to next level. -Return indentation reached, if dedent done, nil otherwise. - -Affected by `py-dedent-keep-relative-column'. " - (interactive "*p") - (let ((orig (copy-marker (point))) - erg) - (dotimes (i arg) - (let* ((cui (current-indentation)) - (remain (% cui py-indent-offset)) - (indent (* py-indent-offset (/ cui py-indent-offset)))) - (beginning-of-line) - (fixup-whitespace) - (if (< 0 remain) - (indent-to-column indent) - (indent-to-column (- cui py-indent-offset))))) - (when (< (point) orig) - (setq erg (current-column))) - (if py-dedent-keep-relative-column - (goto-char orig) - (end-of-line) - (skip-chars-backward " \t\r\n\f")) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-close-intern (regexp) - "Core function, internal used only. " - (let ((cui (ignore-errors (car (py-go-to-keyword (symbol-value regexp)))))) - (py-end-base regexp (point)) - (forward-line 1) - (if py-close-provides-newline - (unless (and (bolp)(eolp)) (split-line)) - (fixup-whitespace)) - (indent-to-column cui) - cui)) - -(defun py-close-def () - "Set indent level to that of beginning of function definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. " - (interactive "*") - (let ((erg (py-close-intern py-def-re))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-close-class () - "Set indent level to that of beginning of class definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. " - (interactive "*") - (let ((erg (py-close-intern py-class-re))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-close-clause () - "Set indent level to that of beginning of clause definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. " - (interactive "*") - (let ((erg (py-close-intern py-clause-re))) - (when (and py-verbose-p (interactive-p)) (message "%s" erg)) - erg)) - -(defun py-close-block () - "Set indent level to that of beginning of block definition. - -If final line isn't empty and `py-close-block-provides-newline' non-nil, insert a newline. " - (interactive "*") - (let ((erg (py-close-intern 'py-block-re))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-class-at-point () - "Return class definition as string. - -With interactive call, send it to the message buffer too. " - (interactive) - (save-excursion - (let* ((beg (py-beginning-of-class)) - (end (py-end-of-class)) - (res (when (and (numberp beg)(numberp end)(< beg end)) (buffer-substring-no-properties beg end)))) - (when (and py-verbose-p (interactive-p)) (message "%s" res)) - res))) - -(defun py-line-at-point () - "Return line as string. - With interactive call, send it to the message buffer too. " - (interactive) - (let* ((beg (line-beginning-position)) - (end (line-end-position)) - (res (when (and (numberp beg)(numberp end)(< beg end)) (buffer-substring-no-properties beg end)))) - (when (and py-verbose-p (interactive-p)) (message "%s" res)) - res)) - -(defun py-looking-at-keywords-p () - "If looking at a python keyword. Returns t or nil. " - (interactive) - (let* ((kwds1 (car (nth 1 (eval (eval (quote (car font-lock-defaults))))))) - (kwds3 (car (nth 3 (eval (eval (quote (car font-lock-defaults))))))) - (res - (or - (looking-at kwds1) - (looking-at kwds3)))) - (when (and py-verbose-p (interactive-p)) (message "looking-at keywords: %s" res)) - res)) - -(defun py-match-paren-mode (&optional arg) - "py-match-paren-mode nil oder t" - (interactive "P") - (if (or (eq 4 (prefix-numeric-value arg)) (not py-match-paren-mode)) - (setq py-match-paren-mode t) - (setq py-match-paren-mode nil))) - -(defun py-match-paren () - "Goto to the opening or closing of block before or after point. - -With arg, do it that many times. - Closes unclosed block if jumping from beginning. " - (interactive) - (let ((cuc (current-column)) - (cid (current-indentation))) - (py-beginning-of-block-or-clause) - (if (< cuc (current-indentation)) - (goto-char cuc) - (back-to-indentation) - (when (eq (point) cuc) - (py-end-of-block))))) - -;;; - -(defalias 'druck 'py-printform-insert) -(defun py-printform-insert (&optional arg) - "Inserts a print statement out of current `(car kill-ring)' by default, inserts ARG instead if delivered. " - (interactive "*") - (let* ((name (string-strip (or arg (car kill-ring)))) - ;; guess if doublequotes or parentheses are needed - (numbered (and (string-match "^[0-9]" name) (string-match "^[ \t]*[0-9]" name)(string-match "[0-9][ \t]*$" name))) - (form (cond ((or (eq major-mode 'python-mode)(eq major-mode 'inferior-python-mode)) - (if numbered - (concat "print(\"" name ": %s \" % (" name "))") - (concat "print(\"" name ": %s \" % \"" name "\")")))))) - (insert form))) - -(defun eva () - "Put \"eval(...)\" forms around strings at point. " - (interactive "*") - (skip-chars-forward " \t\r\n\f") - (let* ((bounds (ar-bounds-of-word-atpt)) - (beg (car bounds)) - (end (cdr bounds))) - (goto-char end) - (insert ")") - (goto-char beg) - (insert "eval("))) - -(defun pst-here () - "Kill previous \"pdb.set_trace()\" and insert it at point. " - (interactive "*") - (let ((orig (copy-marker (point)))) - (search-backward "pdb.set_trace()") - (replace-match "") - (when (and (bolp)(eolp)) - (delete-region (line-beginning-position) (line-end-position))) - (goto-char orig) - (insert "pdb.set_trace()"))) - -(defun py-line-to-printform-python2 (&optional arg) - "Transforms the item on current in a print statement. " - (interactive "*") - (let* ((name (thing-at-point 'word)) - (form (cond ((or (eq major-mode 'python-mode)(eq major-mode 'inferior-python-mode)) - (concat "print \"" name ": %s \" % " name))))) - (delete-region (line-beginning-position) (line-end-position)) - (insert form)) - (forward-line 1) - (back-to-indentation)) - -;;; Imenu - -;; Note that in this format, this variable can still be used with the -;; imenu--generic-function. Otherwise, there is no real reason to have -;; it. - -;; These next two variables are used when searching for the Python -;; class/definitions. Just saving some time in accessing the -;; generic-python-expression, really. - -(defun py-switch-imenu-index-function () - "Switch between series 5. index machine `py-imenu-create-index' and `py-imenu-create-index-new', which also lists modules variables " - (interactive) - (if (eq major-mode 'python-mode) - (progn - (if (eq py-imenu-create-index-function 'py-imenu-create-index-new) - ;; (setq py-imenu-create-index-function 'py-imenu-create-index) - (set (make-local-variable 'py-imenu-create-index-function) 'py-imenu-create-index) - ;; (setq py-imenu-create-index-function 'py-imenu-create-index-new) - (set (make-local-variable 'py-imenu-create-index-function) 'py-imenu-create-index-new)) - (when py-menu - (easy-menu-add py-menu)) - (when py-verbose-p (message "imenu-create-index-function: %s" (prin1-to-string py-imenu-create-index-function))) - (funcall imenu-create-index-function)) - (error "%s" "Only available in buffers set to python-mode"))) - -(defalias 'py-imenu-create-index-function 'py-imenu-create-index) -(defun py-imenu-create-index () - "Python interface function for the Imenu package. -Finds all Python classes and functions/methods. Calls function -\\[py-imenu-create-index-engine]. See that function for the details -of how this works." - (setq py-imenu-generic-regexp (car py-imenu-generic-expression) - py-imenu-generic-parens (if py-imenu-show-method-args-p - py-imenu-method-arg-parens - py-imenu-method-no-arg-parens)) - (goto-char (point-min)) - ;; Warning: When the buffer has no classes or functions, this will - ;; return nil, which seems proper according to the Imenu API, but - ;; causes an error in the XEmacs port of Imenu. Sigh. - (py-imenu-create-index-engine nil)) - -(defun py-imenu-create-index-engine (&optional start-indent) - "Function for finding Imenu definitions in Python. - -Finds all definitions (classes, methods, or functions) in a Python -file for the Imenu package. - -Returns a possibly nested alist of the form - - (INDEX-NAME . INDEX-POSITION) - -The second element of the alist may be an alist, producing a nested -list as in - - (INDEX-NAME . INDEX-ALIST) - -This function should not be called directly, as it calls itself -recursively and requires some setup. Rather this is the engine for -the function \\[py-imenu-create-index-function]. - -It works recursively by looking for all definitions at the current -indention level. When it finds one, it adds it to the alist. If it -finds a definition at a greater indentation level, it removes the -previous definition from the alist. In its place it adds all -definitions found at the next indentation level. When it finds a -definition that is less indented then the current level, it returns -the alist it has created thus far. - -The optional argument START-INDENT indicates the starting indentation -at which to continue looking for Python classes, methods, or -functions. If this is not supplied, the function uses the indentation -of the first definition found." - (let (index-alist - sub-method-alist - looking-p - def-name prev-name - cur-indent def-pos - (class-paren (first py-imenu-generic-parens)) - (def-paren (second py-imenu-generic-parens))) - (setq looking-p - (re-search-forward py-imenu-generic-regexp (point-max) t)) - (while looking-p - (save-excursion - ;; used to set def-name to this value but generic-extract-name - ;; is new to imenu-1.14. this way it still works with - ;; imenu-1.11 - ;;(imenu--generic-extract-name py-imenu-generic-parens)) - (let ((cur-paren (if (match-beginning class-paren) - class-paren def-paren))) - (setq def-name - (buffer-substring-no-properties (match-beginning cur-paren) - (match-end cur-paren)))) - (save-match-data - (py-beginning-of-def-or-class)) - (beginning-of-line) - (setq cur-indent (current-indentation))) - ;; HACK: want to go to the next correct definition location. We - ;; explicitly list them here but it would be better to have them - ;; in a list. - (setq def-pos - (or (match-beginning class-paren) - (match-beginning def-paren))) - ;; if we don't have a starting indent level, take this one - (or start-indent - (setq start-indent cur-indent)) - ;; if we don't have class name yet, take this one - (or prev-name - (setq prev-name def-name)) - ;; what level is the next definition on? must be same, deeper - ;; or shallower indentation - (cond - ;; Skip code in comments and strings - ((py-in-literal)) - ;; at the same indent level, add it to the list... - ((= start-indent cur-indent) - (push (cons def-name def-pos) index-alist)) - ;; deeper indented expression, recurse - ((< start-indent cur-indent) - ;; the point is currently on the expression we're supposed to - ;; start on, so go back to the last expression. The recursive - ;; call will find this place again and add it to the correct - ;; list - (re-search-backward py-imenu-generic-regexp (point-min) 'move) - (setq sub-method-alist (py-imenu-create-index-engine cur-indent)) - (if sub-method-alist - ;; we put the last element on the index-alist on the start - ;; of the submethod alist so the user can still get to it. - (let ((save-elmt (pop index-alist))) - (push (cons prev-name - (cons save-elmt sub-method-alist)) - index-alist)))) - ;; found less indented expression, we're done. - (t - (setq looking-p nil) - (re-search-backward py-imenu-generic-regexp (point-min) t))) - ;; end-cond - (setq prev-name def-name) - (and looking-p - (setq looking-p - (re-search-forward py-imenu-generic-regexp - (point-max) 'move)))) - (nreverse index-alist))) - -(defun py-imenu-create-index-new-intern (&optional thisend end) - (let* ((pos (match-beginning 0)) - (name (match-string-no-properties 2)) - (classname (concat "class " name)) - (thisend (or thisend (save-match-data (py-end-of-def-or-class-position)))) - sublist) - (while (and (re-search-forward "^[ \t]*\\(?:\\(def\\|class\\)\\)[ \t]+\\(?:\\(\\sw+\\)\\)" (or thisend end) t 1)(not (nth 8 (syntax-ppss)))) - (let* ((pos (match-beginning 0)) - (name (match-string-no-properties 2)) - (classname (concat "class " name)) - (thisend (or thisend (save-match-data (py-end-of-def-or-class-position))))) - (if (string= "class" (match-string-no-properties 1)) - (py-imenu-create-index-new-intern (save-match-data (py-end-of-def-or-class-position) end)) - (push (cons (concat " " name) pos) sublist)))) - (if classname - (progn - (setq sublist (nreverse sublist)) - (push (cons classname pos) sublist) - (push (cons classname sublist) index-alist)) - (push sublist index-alist)))) - -(defun py-imenu-create-index-new (&optional beg end) - "`imenu-create-index-function' for Python. " - (set (make-local-variable 'imenu-max-items) 99) - (let ((orig (point)) - (beg (or beg (point-min))) - (end (or end (point-max))) - index-alist vars thisend sublist classname pos name) - (goto-char beg) - (while (and (re-search-forward "^[ \t]*\\(def\\|class\\)[ \t]+\\(\\sw+\\)" end t 1)(not (nth 8 (syntax-ppss)))) - (if (save-match-data (string= "class" (match-string-no-properties 1))) - (progn - (setq pos (match-beginning 0) - name (match-string-no-properties 2) - classname (concat "class " name) - thisend (save-match-data (py-end-of-def-or-class-position)) - sublist '()) - (while (and (re-search-forward "^[ \t]*\\(def\\|class\\)[ \t]+\\(\\sw+\\)" (or thisend end) t 1)(not (nth 8 (syntax-ppss)))) - (let* ((pos (match-beginning 0)) - (name (match-string-no-properties 2)) - (classname (concat "class " name)) - (thisend (or thisend (save-match-data (py-end-of-def-or-class-position))))) - (if (string= "class" (match-string-no-properties 1)) - (py-imenu-create-index-new-intern (save-match-data (py-end-of-def-or-class-position)) end) - (push (cons (concat " " name) pos) sublist)))) - (if classname - (progn - (setq sublist (nreverse sublist)) - (push (cons classname pos) sublist) - (push (cons classname sublist) index-alist)) - (push sublist index-alist))) - - (let ((pos (match-beginning 0)) - (name (match-string-no-properties 2))) - (push (cons name pos) index-alist)))) - ;; Look for module variables. - (goto-char (point-min)) - (while (re-search-forward "^\\(\\sw+\\)[ \t]*=" end t) - (unless (nth 8 (syntax-ppss)) - (let ((pos (match-beginning 1)) - (name (match-string-no-properties 1))) - (push (cons name pos) vars)))) - (setq index-alist (nreverse index-alist)) - (when vars - (push (cons "Module variables" - (nreverse vars)) - index-alist)) - (goto-char orig) - index-alist)) - -;;; py-shell -(if py-mode-output-map - nil - (setq py-mode-output-map (make-sparse-keymap)) - (define-key py-mode-output-map [button2] 'py-mouseto-exception) - (define-key py-mode-output-map "\C-c\C-c" 'py-goto-exception) - ;; TBD: Disable all self-inserting keys. This is bogus, we should - ;; really implement this as *Python Output* buffer being read-only - (mapc #' (lambda (key) - (define-key py-mode-output-map key - #'(lambda () (interactive) (beep)))) - (where-is-internal 'self-insert-command))) - -(setq py-shell-map - (let ((map (copy-keymap comint-mode-map))) - (define-key map (kbd "RET") 'comint-send-input) - (define-key map "\C-c-" 'py-up-exception) - (define-key map "\C-c=" 'py-down-exception) - (define-key map (kbd "TAB") 'py-indent-line) - ;; (define-key map [tab] 'tab-to-tab-stop) - ;; (define-key map "\t" 'py-shell-complete) - (define-key map [(meta tab)] 'py-shell-complete) - (define-key map [(control c)(!)] 'py-shell) - map)) - -(defun py-toggle-local-default-use () - (interactive) - "Toggle boolean value of `py-use-local-default'. - -Returns `py-use-local-default' - -See also `py-install-local-shells' -Installing named virualenv shells is the preffered way, -as it leaves your system default unchanged." - (setq py-use-local-default (not py-use-local-default)) - (when (interactive-p) (message "py-use-local-default set to %s" py-use-local-default)) - py-use-local-default) - -(defun py-choose-shell-by-path (&optional py-separator-char) - "Select Python executable according to version desplayed in path, current buffer-file is selected from. - -Returns versioned string, nil if nothing appropriate found " - (interactive) - (lexical-let ((path (buffer-file-name)) - (py-separator-char (or py-separator-char py-separator-char)) - erg) - (when (and path py-separator-char - (string-match (concat py-separator-char "[iI]?[pP]ython[0-9.]+" py-separator-char) path)) - (setq erg (substring path - (1+ (string-match (concat py-separator-char "[iI]?[pP]ython[0-9.]+" py-separator-char) path)) (1- (match-end 0)) ))) - (when (interactive-p) (message "%s" erg)) - erg)) - -(defun py-choose-shell-by-shebang () - "Choose shell by looking at #! on the first line. - -Returns the specified Python resp. Jython shell command name. " - (interactive) - ;; look for an interpreter specified in the first line - (let* (erg res) - (save-excursion - (goto-char (point-min)) - (when (looking-at py-shebang-regexp) - (setq erg (split-string (match-string-no-properties 0) "[#! \t]")) - (dolist (ele erg) - (when (string-match "[bijp]+ython" ele) - (setq res ele))))) - (when (and py-verbose-p (interactive-p)) (message "%s" res)) - res)) - -(defun py-choose-shell-by-import () - "Choose CPython or Jython mode based imports. - -If a file imports any packages in `py-jython-packages', within -`py-import-check-point-max' characters from the start of the file, -return `jython', otherwise return nil." - (let (mode) - (save-excursion - (goto-char (point-min)) - (while (and (not mode) - (search-forward-regexp - "^\\(\\(from\\)\\|\\(import\\)\\) \\([^ \t\n.]+\\)" - py-import-check-point-max t)) - (setq mode (and (member (match-string 4) py-jython-packages) - 'jython)))) - mode)) - -(defalias 'py-version 'py-which-python) -(defun py-which-python () - "Returns version of Python of current environment, a number. " - (interactive) - (let* (treffer (cmd (py-choose-shell)) - version erg) - (setq treffer (string-match "\\([23]*\\.?[0-9\\.]*\\)$" cmd)) - (if treffer - ;; if a number if part of python name, assume it's the version - (setq version (substring-no-properties cmd treffer)) - (setq erg (shell-command-to-string (concat cmd " --version"))) - ;; Result: "bpython version 0.9.7.1 on top of Python 2.7\n(C) 2008-2010 Bob Farrell, Andreas Stuehrk et al. See AUTHORS for detail.\n" - - (setq version (cond ((string-match (concat "\\(on top of Python \\)" "\\([0-9]\\.[0-9]+\\)") erg) - (match-string-no-properties 2 erg)) - ((string-match "\\([0-9]\\.[0-9]+\\)" erg) - (substring erg 7 (1- (length erg))))))) - (when (interactive-p) - (if version - (when py-verbose-p (message "%s" version)) - (message "%s" "Could not detect Python on your system"))) - (string-to-number version))) - -(defun py-python-current-environment () - "Returns path of current Python installation. " - (interactive) - (let* ((cmd (py-choose-shell)) - (denv (shell-command-to-string (concat "type " cmd))) - (erg (substring denv (string-match "/" denv)))) - (when (interactive-p) - (if erg - (when py-verbose-p (message "%s" erg)) - (message "%s" "Could not detect Python on your system"))) - erg)) - -;; backward compatibility -(defalias 'py-switch-shells 'py-switch-shell) -(defalias 'python-toggle-shells 'py-switch-shell) -(defalias 'py-toggle-shell 'py-switch-shell) -(defun py-switch-shell (&optional arg) - "Toggles between the interpreter customized in `py-shell-toggle-1' resp. `py-shell-toggle-2'. Was hard-coded CPython and Jython in earlier versions, now starts with Python2 and Python3 by default. - -ARG might be a python-version string to set to. - -\\[universal-argument] `py-toggle-shell' prompts to specify a reachable Python command. -\\[universal-argument] followed by numerical arg 2 or 3, `py-toggle-shell' opens a respective Python shell. -\\[universal-argument] followed by numerical arg 5 opens a Jython shell. - -Should you need more shells to select, extend this command by adding inside the first cond: - - ((eq NUMBER (prefix-numeric-value arg)) - \"MY-PATH-TO-SHELL\") -" - (interactive "P") - (let ((name (cond ((eq 2 (prefix-numeric-value arg)) - "python2") - ((eq 3 (prefix-numeric-value arg)) - "python3") - ((eq 4 (prefix-numeric-value arg)) - (string-strip - (read-from-minibuffer "Python Shell: " py-shell-name) "\" " "\" " - )) - ((eq 5 (prefix-numeric-value arg)) - "jython") - (t (if (string-match py-shell-name - py-shell-toggle-1) - py-shell-toggle-2 - py-shell-toggle-1)))) - erg msg) - (cond ((or (string= "ipython" name) - (string= "IPython" name)) - (setq py-shell-name name - py-which-bufname "IPython" - msg "IPython" - mode-name "IPython")) - ((string-match "python3" name) - (setq py-shell-name name - py-which-bufname (py-buffer-name-prepare) - msg "CPython" - mode-name (py-buffer-name-prepare))) - ((string-match "jython" name) - (setq py-shell-name name - py-which-bufname (py-buffer-name-prepare) - msg "Jython" - mode-name (py-buffer-name-prepare))) - ((string-match "python" name) - (setq py-shell-name name - py-which-bufname (py-buffer-name-prepare) - msg "CPython" - mode-name py-which-bufname)) - (t - (setq py-shell-name name - py-which-bufname name - msg name - mode-name name))) - ;; py-edit-only-p has no interpreter - ;; (if py-edit-only-p - ;; (setq erg py-shell-name) - (setq erg (executable-find py-shell-name)) - ;;) - (if erg - (progn - (force-mode-line-update) - (when (interactive-p) - (message "Using the %s shell, %s" msg erg)) - (setq py-output-buffer (format "*%s Output*" py-which-bufname))) - (error (concat "Could not detect " py-shell-name " on your sys -tem"))))) - -(defalias 'py-toggle-shells 'py-choose-shell) -(defalias 'py-which-shell 'py-choose-shell) -(defun py-choose-shell (&optional arg pyshell dedicated py-edit-only-p) - "Return an appropriate executable as a string. - -Returns nil, if no executable found. - -This does the following: - - look for an interpreter with `py-choose-shell-by-shebang' - - examine imports using `py-choose-shell-by-import' - - look if Path/To/File indicates a Python version - - if not successful, return default value of `py-shell-name' - -When interactivly called, messages the shell name, Emacs would in the given circtumstances. - -With \\[universal-argument] 4 is called `py-switch-shell' see docu there. -" - (interactive "P") - (if (eq 4 (prefix-numeric-value arg)) - (py-switch-shell '(4)) - (let* ((erg (cond (py-force-py-shell-name-p - py-shell-name) - (py-use-local-default - (if (not (string= "" py-shell-local-path)) - (expand-file-name py-shell-local-path) - (message "Abort: `py-use-local-default' is set to `t' but `py-shell-local-path' is empty. Maybe call `py-toggle-local-default-use'"))) - ((and (comint-check-proc (current-buffer)) - (string-match "ython" (process-name (get-buffer-process (current-buffer))))) - (process-name (get-buffer-process (current-buffer)))) - ((py-choose-shell-by-shebang)) - ((py-choose-shell-by-import)) - ((py-choose-shell-by-path)) - (t (or - (default-value 'py-shell-name) - "python")))) - (cmd (if py-edit-only-p erg - (executable-find erg)))) - (if cmd - (when (interactive-p) - (message "%s" cmd)) - (when (interactive-p) (message "%s" "Could not detect Python on your system. Maybe set `py-edit-only-p'?"))) - erg))) - -;;; - -(defun py-normalize-directory (directory) - "Make sure DIRECTORY ends with a file-path separator char. - -Returns DIRECTORY" - (let ((erg (cond ((string-match (concat py-separator-char "$") directory) - directory) - ((not (string= "" directory)) - (concat directory py-separator-char))))) - (unless erg (when py-verbose-p (message "Warning: directory is empty"))) - erg)) - -(defun py-install-directory-check () - "Do some sanity check for `py-install-directory'. - -Returns `t' if successful. " - (interactive) - (let ((erg (and (boundp 'py-install-directory) (stringp py-install-directory) (< 1 (length py-install-directory))))) - (when (interactive-p) (message "py-install-directory-check: %s" erg)) - erg)) - -(defun py-guess-py-install-directory () - "Takes value of user directory aka $HOME -if `(locate-library \"python-mode\")' is not succesful. - -Used only, if `py-install-directory' is empty. " - (interactive) - (let ((erg (cond ((locate-library "python-mode") - (file-name-directory (locate-library "python-mode"))) - ((and (buffer-file-name)(string-match "python-mode" (buffer-file-name))) - (file-name-directory (buffer-file-name))) - ((string-match "python-mode" (buffer-name)) - default-directory)))) - (if erg - (setq py-install-directory erg) - (setq py-install-directory (expand-file-name "~/"))) - (when (and py-verbose-p (interactive-p)) (message "Setting py-install-directory to: %s" py-install-directory)) - py-install-directory)) - -(defun py-set-load-path () - "Include needed subdirs of python-mode directory. " - (interactive) - (let ((py-install-directory (py-normalize-directory py-install-directory))) - (cond ((and (not (string= "" py-install-directory))(stringp py-install-directory)) - (add-to-list 'load-path (expand-file-name py-install-directory)) - (add-to-list 'load-path (concat (expand-file-name py-install-directory) "completion")) - (add-to-list 'load-path (concat (expand-file-name py-install-directory) "extensions")) - (add-to-list 'load-path (concat (expand-file-name py-install-directory) "test")) - (add-to-list 'load-path (concat (expand-file-name py-install-directory) "tools")) - (add-to-list 'load-path (concat (expand-file-name py-install-directory) "autopair"))) - ((when py-guess-py-install-directory-p - (let ((guessed-py-install-directory (py-guess-py-install-directory))) - (when guessed-py-install-directory - (add-to-list 'load-path guessed-py-install-directory))))) - (t (error "Please set `py-install-directory', see INSTALL")) - (when (interactive-p) (message "%s" load-path))))) - -;;; -(defun py--init-easy-menu () - (and (ignore-errors (require 'easymenu) t) - ;; (easy-menu-define py-menu map "Python Tools" - ;; `("PyTools" - (easy-menu-define - py-menu map "Python Mode menu" - `("Python" - ("Interpreter" - ["Default interpreter..." py-shell - :help " `py-shell' - -Start an interactive Python interpreter. - -Interactively, C-u 4 prompts for a buffer. -C-u 2 prompts for `py-python-command-args'. -If `default-directory' is a remote file name, it is also prompted -to change if called with a prefix arg. - -. "] - ("Other" - :help "Alternative Python Shells" - - ["ipython" ipython - :help "`ipython' -Start an IPython interpreter. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'."] - ["python3" python3 - :help "`python3' -Start an Python3 interpreter. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'."] - ["python2" python2 - :help "`python2' -Start an Python2 interpreter. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'."] - ["python2.7" python2.7 - :help "`python2.7' -Start an Python2.7 interpreter. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'."] - ["jython" jython - :help "`jython' -Start an Jython interpreter. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'."] - - ["python3.3" python3.3 - :help "`python3.3' -Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'."] - - ["python3.4" python3.4 - :help "`python3.3' -Start an Python3.4 interpreter. - -Optional C-u prompts for options to pass to the Python3.4 interpreter. See `py-python-command-args'."] - - "-" - ["python-dedicated" python-dedicated - :help "`python-dedicated' -Start an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'."] - ["ipython-dedicated" ipython-dedicated - :help "`ipython-dedicated' -Start an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'."] - ["python3-dedicated" python3-dedicated - :help "`python3-dedicated' -Start an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'."] - ["python2-dedicated" python2-dedicated - :help "`python2-dedicated' -Start an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'."] - ["python2.7-dedicated" python2.7-dedicated - :help "`python2'.7-dedicated -Start an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'."] - ["jython-dedicated" jython-dedicated - :help "`jython-dedicated' -Start an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'."] - - "-" - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" - - ["Execute file python switch" py-execute-file-python-switch - :help " `py-execute-file-python-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python no-switch" py-execute-file-python-no-switch - :help " `py-execute-file-python-no-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python dedicated" py-execute-file-python-dedicated - :help " `py-execute-file-python-dedicated' -Send file to a Python interpreter. - -Uses a dedicated shell. "] - - ["Execute file python dedicated switch" py-execute-file-python-dedicated-switch - :help " `py-execute-file-python-dedicated-switch' -Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython switch" py-execute-file-ipython-switch - :help " `py-execute-file-ipython-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython no-switch" py-execute-file-ipython-no-switch - :help " `py-execute-file-ipython-no-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file ipython dedicated" py-execute-file-ipython-dedicated - :help " `py-execute-file-ipython-dedicated' -Send file to a Ipython interpreter. - -Uses a dedicated shell. "] - - ["Execute file ipython dedicated switch" py-execute-file-ipython-dedicated-switch - :help " `py-execute-file-ipython-dedicated-switch' -Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 switch" py-execute-file-python3-switch - :help " `py-execute-file-python3-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 no-switch" py-execute-file-python3-no-switch - :help " `py-execute-file-python3-no-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3 dedicated" py-execute-file-python3-dedicated - :help " `py-execute-file-python3-dedicated' -Send file to a Python3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3 dedicated switch" py-execute-file-python3-dedicated-switch - :help " `py-execute-file-python3-dedicated-switch' -Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 switch" py-execute-file-python2-switch - :help " `py-execute-file-python2-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 no-switch" py-execute-file-python2-no-switch - :help " `py-execute-file-python2-no-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2 dedicated" py-execute-file-python2-dedicated - :help " `py-execute-file-python2-dedicated' -Send file to a Python2 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2 dedicated switch" py-execute-file-python2-dedicated-switch - :help " `py-execute-file-python2-dedicated-switch' -Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 switch" py-execute-file-python2.7-switch - :help " `py-execute-file-python2.7-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 no-switch" py-execute-file-python2.7-no-switch - :help " `py-execute-file-python2.7-no-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2.7 dedicated" py-execute-file-python2.7-dedicated - :help " `py-execute-file-python2.7-dedicated' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2.7 dedicated switch" py-execute-file-python2.7-dedicated-switch - :help " `py-execute-file-python2.7-dedicated-switch' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython switch" py-execute-file-jython-switch - :help " `py-execute-file-jython-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython no-switch" py-execute-file-jython-no-switch - :help " `py-execute-file-jython-no-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file jython dedicated" py-execute-file-jython-dedicated - :help " `py-execute-file-jython-dedicated' -Send file to a Jython interpreter. - -Uses a dedicated shell. "] - - ["Execute file jython dedicated switch" py-execute-file-jython-dedicated-switch - :help " `py-execute-file-jython-dedicated-switch' -Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 switch" py-execute-file-python3.3-switch - :help " `py-execute-file-python3.3-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 no-switch" py-execute-file-python3.3-no-switch - :help " `py-execute-file-python3.3-no-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3.3 dedicated" py-execute-file-python3.3-dedicated - :help " `py-execute-file-python3.3-dedicated' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3.3 dedicated switch" py-execute-file-python3.3-dedicated-switch - :help " `py-execute-file-python3.3-dedicated-switch' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython switch" py-execute-file-bpython-switch - :help " `py-execute-file-bpython-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython no-switch" py-execute-file-bpython-no-switch - :help " `py-execute-file-bpython-no-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file bpython dedicated" py-execute-file-bpython-dedicated - :help " `py-execute-file-bpython-dedicated' -Send file to a Bpython interpreter. - -Uses a dedicated shell. "] - - ["Execute file bpython dedicated switch" py-execute-file-bpython-dedicated-switch - :help " `py-execute-file-bpython-dedicated-switch' -Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - ) - - ) - ) - - "-" - ("Mark" - - ["Mark block" py-mark-block - :help " `py-mark-block' - -Mark block at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark minor block" py-mark-minor-block - :help " `py-mark-minor-block' - -Mark minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. -Returns beginning and end positions of marked area, a cons. "] - - ["Mark def or class" py-mark-def-or-class - :help " `py-mark-def-or-class' - -Mark def-or-class at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark statement" py-mark-statement - :help "`py-mark-statement' -Mark statement at point"] - - ["Mark top level" py-mark-top-level - :help " `py-mark-top-level' - -Mark top-level form at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark clause" py-mark-clause - :help "`py-mark-clause' -Mark innermost compound statement at point"] - - ["Mark def" py-mark-def - :help "`py-mark-def' -Mark innermost definition at point"] - - ["Mark expression" py-mark-expression - :help "`py-mark-expression' -Mark expression at point"] - - ["Mark partial expression" py-mark-partial-expression - :help "`py-mark-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - - ["Mark class" py-mark-class - :help "`py-mark-class' -Mark innermost definition at point"] - - ["Mark comment" py-mark-comment - :help "`py-mark-comment' -Mark commented section at point"] - - "-" - - ["Mark block bol" py-mark-block-bol - :help "`py-mark-block-bol' -Mark block at point reaching beginning-of-line. "] - - ["Mark clause bol" py-mark-clause-bol - :help "`py-mark-clause-bol' -Mark clause at point reaching beginning-of-line. "] - - ["Mark block-or-clause bol" py-mark-block-or-clause-bol - :help "`py-mark-block-or-clause-bol' -Mark block-or-clause at point reaching beginning-of-line. "] - - ["Mark def bol" py-mark-def-bol - :help "`py-mark-def-bol' -Mark def at point reaching beginning-of-line. "] - - ["Mark class bol" py-mark-class-bol - :help "`py-mark-class-bol' -Mark class at point reaching beginning-of-line. "] - - ["Mark def-or-class bol" py-mark-def-or-class-bol - :help "`py-mark-def-or-class-bol' -Mark def-or-class at point reaching beginning-of-line. "] - - ["Mark if-block bol" py-mark-if-block-bol - :help "`py-mark-if-block-bol' -Mark if-block at point reaching beginning-of-line. "] - - ["Mark try-block bol" py-mark-try-block-bol - :help "`py-mark-try-block-bol' -Mark try-block at point reaching beginning-of-line. "] - - ["Mark minor-block bol" py-mark-minor-block-bol - :help "`py-mark-minor-block-bol' - -Mark minor-block at point reaching beginning-of-line. -A minor block is started by a `for', `if', `try' or `with'."] - - ) - - "-" - - ["Shift region left" py-shift-region-left - :help " `py-shift-region-left' - -Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. "] - - ["Shift region right" py-shift-region-right - :help " `py-shift-region-right' - -Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. "] - - "-" - - ("Comment" - ["Comment Region" py-comment-region (point) (mark) - :help "Like `comment-region' but uses double hash (`#') comment starter." ] - ["Uncomment" py-uncomment - :help " `py-uncomment' - -Uncomment commented lines at point. - -If region is active, restrict uncommenting at region . "] - - ["Uncomment Region" (py-comment-region (point) (mark) '(4)) - :help "(py-comment-region (point) (mark) '(4))" ] - "-" - ["Comment block" py-comment-block - :help " `py-comment-block' -Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment minor-block" py-comment-minor-block - :help " `py-comment-minor-block' -Comments minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment top level" py-comment-top-level - :help " `py-comment-top-level' - -Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment clause" py-comment-clause - :help " `py-comment-clause' -Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment block or clause" py-comment-block-or-clause - :help " `py-comment-block-or-clause' -Comments block-or-clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment def" py-comment-def - :help " `py-comment-def' -Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment class" py-comment-class - :help " `py-comment-class' -Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment def or class" py-comment-def-or-class - :help " `py-comment-def-or-class' -Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment statement" py-comment-statement - :help " `py-comment-statement' -Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - "-" - - ("Move" - - ["Beginning of block" py-beginning-of-block - :help " `py-beginning-of-block' - -Go to beginning block, skip whitespace at BOL. "] - - ["Go to end of block" py-end-of-block] - - "-" - - ["Beginning of def or class" py-beginning-of-def-or-class - :help " `py-beginning-of-def-or-class' - -Go to beginning def-or-class, skip whitespace at BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. "] - - ["End of def or class" py-end-of-def-or-class - :help " `py-end-of-def-or-class' - -Go to end of def-or-class. - -Returns end of def-or-class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. "] - - "-" - - ["Beginning of statement" py-beginning-of-statement - :help " `py-beginning-of-statement' - -Go to the initial line of a simple statement. "] - - ["End of statement" py-end-of-statement - :help " `py-end-of-statement' - -Go to the last char of current statement. - -To go just beyond the final line of the current statement, use `py-down-statement-bol'. "] - - "-" - - ["Backward into nomenclature" py-backward-into-nomenclature - :help " `py-backward-into-nomenclature' -Go backward into nomenclature - -A nomenclature is a fancy way of saying AWordWithMixedCaseNotUnderscores. "] - - ["Forward into nomenclature" py-forward-into-nomenclature - :help " `py-forward-into-nomenclature' -Go forward into nomenclature - -A nomenclature is a fancy way of saying AWordWithMixedCaseNotUnderscores. "] - - "-" - - ("More" - - ["Up level" py-up - :help " `py-up' -Go to beginning one level above of compound statement or definition at point. "] - - ["Down level" py-down - :help " `py-down' -Go to beginning one level below of compound statement or definition at point. "] - - "-" - - ["Beginning of top level" py-beginning-of-top-level - :help " `py-beginning-of-top-level' - -Go to the very beginning of top-level form at point. "] - - ["End of top level" py-end-of-top-level - :help " `py-end-of-top-level' - -Go to end of top-level form at point. "] - - "-" - - ["Beginning of block current-column" py-beginning-of-block-current-column - :help " `py-beginning-of-block-current-column' - -Reach next beginning of block upwards which starts at current column. - -Return position. "] - - "-" - - ["Move to start of def" py-beginning-of-def t] - - ["Move to end of def" py-end-of-def t] - - "-" - - ["Beginning of clause" py-beginning-of-clause - :help " `py-beginning-of-clause' - -Go to beginning clause, skip whitespace at BOL. "] - - ["End of clause" py-end-of-clause - :help " `py-end-of-clause' - -Go to end of clause. "] - - "-" - - ["Beginning of comment" py-beginning-of-comment - :help " `py-beginning-of-comment' -Go to beginning of comment at point. "] - - ["End of comment" py-end-of-comment - :help " `py-end-of-comment' - -Go to end of comment at point. "] - - "-" - - ["Go to start of expression" (py-beginning-of-expression t) t] - ["Move to end of expression" (py-end-of-expression t) t] - - "-" - - ["Go to start of minor-expression" (py-beginning-of-minor-expression t) t] - - ["Move to end of minor-expression" (py-end-of-minor-expression t) t] - "-" - - ["Beginning of minor block" py-beginning-of-minor-block - :help " `py-beginning-of-minor-block' - -Go to beginning minor-block, skip whitespace at BOL. - -Returns beginning of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. - -"] - - ["End of minor block" py-end-of-minor-block - :help " `py-end-of-minor-block' - -Go to end of minor-block. - -Returns end of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. "] - - ) - - ) - - "-" - - ("Copy " - ["Copy statement" py-copy-statement - :help "`py-copy-statement' -Copy statement at point"] - - ["Copy top level" py-copy-top-level - :help " `py-copy-top-level' - -Copy top-level form at point. "] - - ["Copy clause" py-copy-clause - :help "`py-copy-clause' -Copy innermost clause at point"] - - ["Copy block" py-copy-block - :help "`py-copy-block' -Copy innermost block at point"] - - ["Copy minor block" py-copy-minor-block - :help " `py-copy-minor-block' - -Copy minor-block at point. - -Store data in kill ring, so it might yanked back. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Copy def" py-copy-def - :help "`py-copy-def' -Copy innermost definition at point"] - ["Copy expression" py-copy-expression - :help "`py-copy-expression' -Copy expression at point"] - ["Copy partial expression" py-copy-partial-expression - :help "`py-copy-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - ["Copy class" py-copy-class - :help "`py-copy-class' -Copy innermost definition at point"] - - ["Copy Def-or-Class" py-copy-def-or-class - :help "`py-copy-def-or-class' -Copy innermost definition at point"] - - ) - - "-" - - ["Execute region" py-execute-region - :help " `py-execute-region' - -Send the region to a Python interpreter. - -When called with C-u 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. "] - - ["Execute buffer" py-execute-buffer - :help " `py-execute-buffer' - -Send the contents of the buffer to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -If the file local variable `py-master-file' is non-nil, execute the -named file instead of the buffer's file."] - - ["Execute def or class" py-execute-def-or-class - :help " `py-execute-def-or-class' - -Send def-or-class at point to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -See also `py-force-py-shell-name-p'. - -When called with C-u 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."] - - ["Execute statement" py-execute-statement - :help " `py-execute-statement' - -Send statement at point to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -See also `py-force-py-shell-name-p'. - -When called with C-u 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."] - - ["Execute string" py-execute-string - :help " `py-execute-string' - -Send the argument STRING to a Python interpreter. - -See also `py-execute-region'. "] - ("More... " - :help "Python-specific features" - - ["Execute top level" py-execute-top-level - :help " `py-execute-top-level' - -Send top-level form at point to a Python interpreter. "] - - ["Execute block" py-execute-block - :help "`py-execute-block' - Send block at point to Python interpreter. "] - - ["Execute minor block" py-execute-minor-block - :help " `py-execute-minor-block' - -Send minor-block at point to a Python interpreter. - -A minor block is started by a `for', `if', `try' or `with'. -. "] - - ["Execute def" py-execute-def - :help "`py-execute-def' - Send def at point to Python interpreter. "] - - ["Execute class" py-execute-class - :help "`py-execute-class' - Send class at point to Python interpreter. "] - - ["Execute file" py-execute-file - :help "`py-execute-file' - Send file at point to Python interpreter. "] - - ;; statement - ("Execute statement " - :help "Execute statement functions" - - ["py-execute-statement-python" py-execute-statement-python - :help "Execute statement through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-statement-ipython" py-execute-statement-ipython - :help "Execute statement through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-statement-python3" py-execute-statement-python3 - :help "Execute statement through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-statement-python2" py-execute-statement-python2 - :help "Execute statement through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-statement-python2.7" py-execute-statement-python2.7 - :help "Execute statement through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-statement-jython" py-execute-statement-jython - :help "Execute statement through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-statement-python3.3" py-execute-statement-python3.3 - :help "Execute statement through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-statement-bpython" py-execute-statement-bpython - :help "Execute statement through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-statement-python-dedicated" py-execute-statement-python-dedicated - :help "Execute statement through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-ipython-dedicated" py-execute-statement-ipython-dedicated - :help "Execute statement through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python3-dedicated" py-execute-statement-python3-dedicated - :help "Execute statement through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python2-dedicated" py-execute-statement-python2-dedicated - :help "Execute statement through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python2.7-dedicated" py-execute-statement-python2.7-dedicated - :help "Execute statement through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-jython-dedicated" py-execute-statement-jython-dedicated - :help "Execute statement through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python3.3-dedicated" py-execute-statement-python3.3-dedicated - :help "Execute statement through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-bpython-dedicated" py-execute-statement-bpython-dedicated - :help "Execute statement through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-statement-python-switch" py-execute-statement-python-switch - :help "Execute statement through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-statement-ipython-switch" py-execute-statement-ipython-switch - :help "Execute statement through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-statement-python3-switch" py-execute-statement-python3-switch - :help "Execute statement through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-statement-python2-switch" py-execute-statement-python2-switch - :help "Execute statement through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-statement-python2.7-switch" py-execute-statement-python2.7-switch - :help "Execute statement through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-statement-jython-switch" py-execute-statement-jython-switch - :help "Execute statement through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-statement-python3.3-switch" py-execute-statement-python3.3-switch - :help "Execute statement through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-statement-bpython-switch" py-execute-statement-bpython-switch - :help "Execute statement through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-statement-python-dedicated-switch" py-execute-statement-python-dedicated-switch - :help "Execute statement through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-ipython-dedicated-switch" py-execute-statement-ipython-dedicated-switch - :help "Execute statement through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python3-dedicated-switch" py-execute-statement-python3-dedicated-switch - :help "Execute statement through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python2-dedicated-switch" py-execute-statement-python2-dedicated-switch - :help "Execute statement through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python2.7-dedicated-switch" py-execute-statement-python2.7-dedicated-switch - :help "Execute statement through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-jython-dedicated-switch" py-execute-statement-jython-dedicated-switch - :help "Execute statement through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python3.3-dedicated-switch" py-execute-statement-python3.3-dedicated-switch - :help "Execute statement through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-bpython-dedicated-switch" py-execute-statement-bpython-dedicated-switch - :help "Execute statement through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; block - ("Execute block " - :help "Execute block functions" - - ["py-execute-block-python" py-execute-block-python - :help "Execute block through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-block-ipython" py-execute-block-ipython - :help "Execute block through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-block-python3" py-execute-block-python3 - :help "Execute block through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-block-python2" py-execute-block-python2 - :help "Execute block through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-block-python2.7" py-execute-block-python2.7 - :help "Execute block through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-block-jython" py-execute-block-jython - :help "Execute block through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-block-python3.3" py-execute-block-python3.3 - :help "Execute block through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-block-bpython" py-execute-block-bpython - :help "Execute block through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-block-python-dedicated" py-execute-block-python-dedicated - :help "Execute block through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-ipython-dedicated" py-execute-block-ipython-dedicated - :help "Execute block through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python3-dedicated" py-execute-block-python3-dedicated - :help "Execute block through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python2-dedicated" py-execute-block-python2-dedicated - :help "Execute block through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python2.7-dedicated" py-execute-block-python2.7-dedicated - :help "Execute block through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-jython-dedicated" py-execute-block-jython-dedicated - :help "Execute block through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python3.3-dedicated" py-execute-block-python3.3-dedicated - :help "Execute block through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-bpython-dedicated" py-execute-block-bpython-dedicated - :help "Execute block through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-block-python-switch" py-execute-block-python-switch - :help "Execute block through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-block-ipython-switch" py-execute-block-ipython-switch - :help "Execute block through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-block-python3-switch" py-execute-block-python3-switch - :help "Execute block through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-block-python2-switch" py-execute-block-python2-switch - :help "Execute block through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-block-python2.7-switch" py-execute-block-python2.7-switch - :help "Execute block through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-block-jython-switch" py-execute-block-jython-switch - :help "Execute block through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-block-python3.3-switch" py-execute-block-python3.3-switch - :help "Execute block through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-block-bpython-switch" py-execute-block-bpython-switch - :help "Execute block through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-block-python-dedicated-switch" py-execute-block-python-dedicated-switch - :help "Execute block through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-ipython-dedicated-switch" py-execute-block-ipython-dedicated-switch - :help "Execute block through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python3-dedicated-switch" py-execute-block-python3-dedicated-switch - :help "Execute block through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python2-dedicated-switch" py-execute-block-python2-dedicated-switch - :help "Execute block through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python2.7-dedicated-switch" py-execute-block-python2.7-dedicated-switch - :help "Execute block through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-jython-dedicated-switch" py-execute-block-jython-dedicated-switch - :help "Execute block through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python3.3-dedicated-switch" py-execute-block-python3.3-dedicated-switch - :help "Execute block through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-bpython-dedicated-switch" py-execute-block-bpython-dedicated-switch - :help "Execute block through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; def - ("Execute def " - :help "Execute def functions" - - ["py-execute-def-python" py-execute-def-python - :help "Execute def through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-def-ipython" py-execute-def-ipython - :help "Execute def through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-def-python3" py-execute-def-python3 - :help "Execute def through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-def-python2" py-execute-def-python2 - :help "Execute def through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-def-python2.7" py-execute-def-python2.7 - :help "Execute def through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-def-jython" py-execute-def-jython - :help "Execute def through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-def-python3.3" py-execute-def-python3.3 - :help "Execute def through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-def-bpython" py-execute-def-bpython - :help "Execute def through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-def-python-dedicated" py-execute-def-python-dedicated - :help "Execute def through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-ipython-dedicated" py-execute-def-ipython-dedicated - :help "Execute def through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python3-dedicated" py-execute-def-python3-dedicated - :help "Execute def through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python2-dedicated" py-execute-def-python2-dedicated - :help "Execute def through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python2.7-dedicated" py-execute-def-python2.7-dedicated - :help "Execute def through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-jython-dedicated" py-execute-def-jython-dedicated - :help "Execute def through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python3.3-dedicated" py-execute-def-python3.3-dedicated - :help "Execute def through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-bpython-dedicated" py-execute-def-bpython-dedicated - :help "Execute def through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-def-python-switch" py-execute-def-python-switch - :help "Execute def through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-def-ipython-switch" py-execute-def-ipython-switch - :help "Execute def through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-def-python3-switch" py-execute-def-python3-switch - :help "Execute def through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-def-python2-switch" py-execute-def-python2-switch - :help "Execute def through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-def-python2.7-switch" py-execute-def-python2.7-switch - :help "Execute def through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-def-jython-switch" py-execute-def-jython-switch - :help "Execute def through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-def-python3.3-switch" py-execute-def-python3.3-switch - :help "Execute def through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-def-bpython-switch" py-execute-def-bpython-switch - :help "Execute def through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-def-python-dedicated-switch" py-execute-def-python-dedicated-switch - :help "Execute def through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-ipython-dedicated-switch" py-execute-def-ipython-dedicated-switch - :help "Execute def through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python3-dedicated-switch" py-execute-def-python3-dedicated-switch - :help "Execute def through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python2-dedicated-switch" py-execute-def-python2-dedicated-switch - :help "Execute def through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python2.7-dedicated-switch" py-execute-def-python2.7-dedicated-switch - :help "Execute def through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-jython-dedicated-switch" py-execute-def-jython-dedicated-switch - :help "Execute def through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python3.3-dedicated-switch" py-execute-def-python3.3-dedicated-switch - :help "Execute def through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-bpython-dedicated-switch" py-execute-def-bpython-dedicated-switch - :help "Execute def through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; class - ("Execute class " - :help "Execute class functions" - - ["py-execute-class-python" py-execute-class-python - :help "Execute class through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-class-ipython" py-execute-class-ipython - :help "Execute class through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-class-python3" py-execute-class-python3 - :help "Execute class through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-class-python2" py-execute-class-python2 - :help "Execute class through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-class-python2.7" py-execute-class-python2.7 - :help "Execute class through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-class-jython" py-execute-class-jython - :help "Execute class through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-class-python3.3" py-execute-class-python3.3 - :help "Execute class through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-class-bpython" py-execute-class-bpython - :help "Execute class through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-class-python-dedicated" py-execute-class-python-dedicated - :help "Execute class through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-ipython-dedicated" py-execute-class-ipython-dedicated - :help "Execute class through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python3-dedicated" py-execute-class-python3-dedicated - :help "Execute class through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python2-dedicated" py-execute-class-python2-dedicated - :help "Execute class through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python2.7-dedicated" py-execute-class-python2.7-dedicated - :help "Execute class through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-jython-dedicated" py-execute-class-jython-dedicated - :help "Execute class through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python3.3-dedicated" py-execute-class-python3.3-dedicated - :help "Execute class through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-bpython-dedicated" py-execute-class-bpython-dedicated - :help "Execute class through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-class-python-switch" py-execute-class-python-switch - :help "Execute class through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-class-ipython-switch" py-execute-class-ipython-switch - :help "Execute class through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-class-python3-switch" py-execute-class-python3-switch - :help "Execute class through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-class-python2-switch" py-execute-class-python2-switch - :help "Execute class through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-class-python2.7-switch" py-execute-class-python2.7-switch - :help "Execute class through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-class-jython-switch" py-execute-class-jython-switch - :help "Execute class through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-class-python3.3-switch" py-execute-class-python3.3-switch - :help "Execute class through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-class-bpython-switch" py-execute-class-bpython-switch - :help "Execute class through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-class-python-dedicated-switch" py-execute-class-python-dedicated-switch - :help "Execute class through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-ipython-dedicated-switch" py-execute-class-ipython-dedicated-switch - :help "Execute class through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python3-dedicated-switch" py-execute-class-python3-dedicated-switch - :help "Execute class through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python2-dedicated-switch" py-execute-class-python2-dedicated-switch - :help "Execute class through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python2.7-dedicated-switch" py-execute-class-python2.7-dedicated-switch - :help "Execute class through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-jython-dedicated-switch" py-execute-class-jython-dedicated-switch - :help "Execute class through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python3.3-dedicated-switch" py-execute-class-python3.3-dedicated-switch - :help "Execute class through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-bpython-dedicated-switch" py-execute-class-bpython-dedicated-switch - :help "Execute class through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; region - ("Execute region " - :help "Execute region functions" - - ["py-execute-region-python" py-execute-region-python - :help "Execute region through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-region-ipython" py-execute-region-ipython - :help "Execute region through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-region-python3" py-execute-region-python3 - :help "Execute region through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-region-python2" py-execute-region-python2 - :help "Execute region through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-region-python2.7" py-execute-region-python2.7 - :help "Execute region through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-region-jython" py-execute-region-jython - :help "Execute region through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-region-python3.3" py-execute-region-python3.3 - :help "Execute region through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-region-bpython" py-execute-region-bpython - :help "Execute region through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-region-python-dedicated" py-execute-region-python-dedicated - :help "Execute region through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-ipython-dedicated" py-execute-region-ipython-dedicated - :help "Execute region through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python3-dedicated" py-execute-region-python3-dedicated - :help "Execute region through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python2-dedicated" py-execute-region-python2-dedicated - :help "Execute region through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python2.7-dedicated" py-execute-region-python2.7-dedicated - :help "Execute region through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-jython-dedicated" py-execute-region-jython-dedicated - :help "Execute region through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python3.3-dedicated" py-execute-region-python3.3-dedicated - :help "Execute region through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-bpython-dedicated" py-execute-region-bpython-dedicated - :help "Execute region through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-region-python-switch" py-execute-region-python-switch - :help "Execute region through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-region-ipython-switch" py-execute-region-ipython-switch - :help "Execute region through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-region-python3-switch" py-execute-region-python3-switch - :help "Execute region through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-region-python2-switch" py-execute-region-python2-switch - :help "Execute region through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-region-python2.7-switch" py-execute-region-python2.7-switch - :help "Execute region through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-region-jython-switch" py-execute-region-jython-switch - :help "Execute region through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-region-python3.3-switch" py-execute-region-python3.3-switch - :help "Execute region through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-region-bpython-switch" py-execute-region-bpython-switch - :help "Execute region through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-region-python-dedicated-switch" py-execute-region-python-dedicated-switch - :help "Execute region through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-ipython-dedicated-switch" py-execute-region-ipython-dedicated-switch - :help "Execute region through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python3-dedicated-switch" py-execute-region-python3-dedicated-switch - :help "Execute region through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python2-dedicated-switch" py-execute-region-python2-dedicated-switch - :help "Execute region through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python2.7-dedicated-switch" py-execute-region-python2.7-dedicated-switch - :help "Execute region through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-jython-dedicated-switch" py-execute-region-jython-dedicated-switch - :help "Execute region through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python3.3-dedicated-switch" py-execute-region-python3.3-dedicated-switch - :help "Execute region through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-bpython-dedicated-switch" py-execute-region-bpython-dedicated-switch - :help "Execute region through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; file - ("Execute file " - :help "Execute file functions" - - ["Execute file python" py-execute-file-python - :help " `py-execute-file-python' -Send file to a Python interpreter. "] - - ["Execute file ipython" py-execute-file-ipython - :help " `py-execute-file-ipython' -Send file to a Ipython interpreter. "] - - ["Execute file python3" py-execute-file-python3 - :help " `py-execute-file-python3' -Send file to a Python3 interpreter. "] - - ["Execute file python2" py-execute-file-python2 - :help " `py-execute-file-python2' -Send file to a Python2 interpreter. "] - - ["Execute file python2.7" py-execute-file-python2.7 - :help " `py-execute-file-python2.7' -Send file to a Python2.7 interpreter. "] - - ["Execute file jython" py-execute-file-jython - :help " `py-execute-file-jython' -Send file to a Jython interpreter. "] - - ["Execute file python3.3" py-execute-file-python3.3 - :help " `py-execute-file-python3.3' -Send file to a Python3.3 interpreter. "] - - ["Execute file bpython" py-execute-file-bpython - :help " `py-execute-file-bpython' -Send file to a Bpython interpreter. "] - - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" - - ["Execute file python switch" py-execute-file-python-switch - :help " `py-execute-file-python-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python no-switch" py-execute-file-python-no-switch - :help " `py-execute-file-python-no-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python dedicated" py-execute-file-python-dedicated - :help " `py-execute-file-python-dedicated' -Send file to a Python interpreter. - -Uses a dedicated shell. "] - - ["Execute file python dedicated switch" py-execute-file-python-dedicated-switch - :help " `py-execute-file-python-dedicated-switch' -Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython switch" py-execute-file-ipython-switch - :help " `py-execute-file-ipython-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython no-switch" py-execute-file-ipython-no-switch - :help " `py-execute-file-ipython-no-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file ipython dedicated" py-execute-file-ipython-dedicated - :help " `py-execute-file-ipython-dedicated' -Send file to a Ipython interpreter. - -Uses a dedicated shell. "] - - ["Execute file ipython dedicated switch" py-execute-file-ipython-dedicated-switch - :help " `py-execute-file-ipython-dedicated-switch' -Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 switch" py-execute-file-python3-switch - :help " `py-execute-file-python3-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 no-switch" py-execute-file-python3-no-switch - :help " `py-execute-file-python3-no-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3 dedicated" py-execute-file-python3-dedicated - :help " `py-execute-file-python3-dedicated' -Send file to a Python3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3 dedicated switch" py-execute-file-python3-dedicated-switch - :help " `py-execute-file-python3-dedicated-switch' -Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 switch" py-execute-file-python2-switch - :help " `py-execute-file-python2-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 no-switch" py-execute-file-python2-no-switch - :help " `py-execute-file-python2-no-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2 dedicated" py-execute-file-python2-dedicated - :help " `py-execute-file-python2-dedicated' -Send file to a Python2 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2 dedicated switch" py-execute-file-python2-dedicated-switch - :help " `py-execute-file-python2-dedicated-switch' -Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 switch" py-execute-file-python2.7-switch - :help " `py-execute-file-python2.7-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 no-switch" py-execute-file-python2.7-no-switch - :help " `py-execute-file-python2.7-no-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2.7 dedicated" py-execute-file-python2.7-dedicated - :help " `py-execute-file-python2.7-dedicated' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2.7 dedicated switch" py-execute-file-python2.7-dedicated-switch - :help " `py-execute-file-python2.7-dedicated-switch' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython switch" py-execute-file-jython-switch - :help " `py-execute-file-jython-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython no-switch" py-execute-file-jython-no-switch - :help " `py-execute-file-jython-no-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file jython dedicated" py-execute-file-jython-dedicated - :help " `py-execute-file-jython-dedicated' -Send file to a Jython interpreter. - -Uses a dedicated shell. "] - - ["Execute file jython dedicated switch" py-execute-file-jython-dedicated-switch - :help " `py-execute-file-jython-dedicated-switch' -Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 switch" py-execute-file-python3.3-switch - :help " `py-execute-file-python3.3-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 no-switch" py-execute-file-python3.3-no-switch - :help " `py-execute-file-python3.3-no-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3.3 dedicated" py-execute-file-python3.3-dedicated - :help " `py-execute-file-python3.3-dedicated' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3.3 dedicated switch" py-execute-file-python3.3-dedicated-switch - :help " `py-execute-file-python3.3-dedicated-switch' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython switch" py-execute-file-bpython-switch - :help " `py-execute-file-bpython-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython no-switch" py-execute-file-bpython-no-switch - :help " `py-execute-file-bpython-no-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file bpython dedicated" py-execute-file-bpython-dedicated - :help " `py-execute-file-bpython-dedicated' -Send file to a Bpython interpreter. - -Uses a dedicated shell. "] - - ["Execute file bpython dedicated switch" py-execute-file-bpython-dedicated-switch - :help " `py-execute-file-bpython-dedicated-switch' -Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - ) - ) - ) - - "-" - - ("Virtualenv" - - ["Virtualenv workon" virtualenv-workon - :help " runs `virtualenv-workon' - -Make sure virtualenv is provided - -"] - - ["Virtualenv activate" virtualenv-activate - :help " `virtualenv-activate' - -Activate the virtualenv located in DIR. "] - - ["Virtualenv deactivate" virtualenv-deactivate - :help " `virtualenv-deactivate' - -Deactivate the current virtual enviroment. "] - - ["Virtualenv p" virtualenv-p - :help " `virtualenv-p' - -Check if a directory is a virtualenv. "] - - ) - - ["Execute import or reload" py-execute-import-or-reload - :help " `py-execute-import-or-reload' - -Import the current buffer's file in a Python interpreter. - -If the file has already been imported, then do reload instead to get -the latest version. - -If the file's name does not end in ".py", then do execfile instead. - -If the current buffer is not visiting a file, do `py-execute-buffer' -instead. - -If the file local variable `py-master-file' is non-nil, import or -reload the named file instead of the buffer's file. The file may be -saved based on the value of `py-execute-import-or-reload-save-p'. - -See also `M-x py-execute-region'. - -This may be preferable to `M-x py-execute-buffer' because: - - - Definitions stay in their module rather than appearing at top - level, where they would clutter the global namespace and not affect - uses of qualified names (MODULE.NAME). - - - The Python debugger gets line number information about the functions. "] - - ("Help" - - ["Describe mode" py-describe-mode t] - - ["Help on symbol" py-describe-symbol - :help "`py-describe-symbol'\n -Use pydoc on symbol at point"] - - ;; ["py-complete-help" py-complete-help - ;; :help " `py-complete-help' - ;; Get help on a Python expression.\n - ;; Needs Pymacs "] - ;; - ;; ["Help thing at point" py-complete-help-thing-at-point - ;; :help " `py-complete-help-thing-at-point'\n - ;; Needs Pymacs "] - - ;; ["Signature" py-complete-signature-expr - ;; :help " Print object's signature\n - ;; Needs Pymacs"] - - ) - - ["Debugger" pdb :help "`pdb' Run pdb under GUD"] - - ("Checks" - - ["pychecker-run" py-pychecker-run - :help "`py-pychecker-run' -Run pychecker - -Call `easy_install pyflakes' resp. `pip... 'if not available"] - - ("Pylint " - :help "Extendet report options - -Call `easy_install pylint' resp. `pip...' if not available" - - ["py-pylint-run" py-pylint-run - :help "`py-pylint-run' -Pylint will display a number of messages as it analyzes the code, -as well as some statistics about the number of warnings and -errors found in different files - unless called with arg \"--errors-only\". The messages are classified -under various categories such as errors and warnings - -Pylint checks length of lines of code, if variable names are -well-formed according to your coding standard, if declared -interfaces are truly implemented, and much more. Additionally, it -is possible to write plugins. - -Call `easy_install pylint' resp. `pip...' if not available -"] - - ["py-pylint-help" py-pylint-help - :help "`py-pylint-help' -List extendet report options -"] - ["pylint-flymake-mode" pylint-flymake-mode - :help "`pylint-flymake-mode' -Toggle flymake-mode running `pylint' -"]) - - ("pep8 " - :help "Check formatting - -Call `easy_install pep8' resp. `pip...' if not available" - - ["pep8-run" py-pep8-run - :help "`py-pep8-run' -Check formatting (default on the file currently visited) - -Call `easy_install pep8' resp. `pip...' if not available -"] - - ["pep8-help" py-pep8-help - :help "`py-pep8-help' -Display help for pep8 format checker) -"] - - ["pep8-flymake-mode" pep8-flymake-mode - :help "`pep8-flymake-mode' -Toggle flymake-mode running `pep8' -"]) - - ("Pyflakes " :help "Non intrusive code checker - -Call `easy_install pyflakes' resp. `pip...' if not available" - - ["pyflakes-run" py-pyflakes-run :help - "`py-pyflakes-run' Run pyflakes - -Call `easy_install pyflakes' resp. `pip...' if not available"] - - ["pyflakes-help" py-pyflakes-help :help - "`py-pyflakes-help' Display help for - Pyflakes "] - - ["pyflakes-flymake-mode" pyflakes-flymake-mode :help - "`pyflakes-flymake-mode' -Toggle flymake-mode running `pyflakes' "] - - ) - - ("Flake8 " :help - "code checker running " - - ["Flake8 run" py-flake8-run - :help " `py-flake8-run' - - Flake8 is a wrapper around these tools: - - PyFlakes - - pep8 - - Ned Batchelder's McCabe script - - It also adds features: - - files that contain this line are skipped:: - # flake8: noqa - - lines that contain a ``# noqa`` comment at the end will not issue warnings. - - a Git and a Mercurial hook. - - a McCabe complexity checker. - - extendable through ``flake8.extension`` entry points. - -. "] - - ["Flake8 help" py-flake8-help - :help " `py-flake8-help' - -Display flake8 command line help messages. "] - - ) - - ("Pyflakes-pep8 " :help - "Non intrusive code checker running `pyflakes' and `pep8' -call `easy_install pyflakes' resp. `pip...' and `easy_install pep8' if basics not available" - - ["pyflakespep8-run" py-pyflakespep8-run :help - "`py-pyflakespep8-run' Run `pyflakespep8' - -Call `easy_install pyflakes' resp. `pip...' if not available"] - - ["pyflakespep8-help" py-pyflakespep8-help :help - "`py-pyflakespep8-help' Display help for - Pyflakespep8 "] - - ["pyflakespep8-flymake-mode" pyflakespep8-flymake-mode :help - "`pyflakespep8-flymake-mode' -Toggle flymake-mode running `pyflakespep8' "]) - - ) - - ("Customize" - - ["Python-mode customize group" (customize-group 'python-mode) - :help "Open the customization buffer for Python mode"] - ("Switches" - :help "Toggle useful modes like `highlight-indentation'" - - ("Interpreter" - - ["Execute without temporary file" - (setq py-execute-no-temp-p - (not py-execute-no-temp-p)) - :help " `py-execute-no-temp-p' -Seems Emacs-24.3 provided a way executing stuff without temporary files. -In experimental state yet " - :style toggle :selected py-execute-no-temp-p] - - ["Warn tmp files left " - (setq py-warn-tmp-files-left-p - (not py-warn-tmp-files-left-p)) - :help "Messages a warning, when `py-temp-directory' contains files susceptible being left by previous Python-mode sessions. See also lp:987534 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-warn-tmp-files-left-p] - - ["Shell prompt read only" - (setq py-shell-prompt-read-only - (not py-shell-prompt-read-only)) - :help "If non-nil, the python prompt is read only. Setting this -variable will only effect new shells.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-shell-prompt-read-only] - - ["Remove cwd from path" - (setq py-remove-cwd-from-path - (not py-remove-cwd-from-path)) - :help "Whether to allow loading of Python modules from the current directory. -If this is non-nil, Emacs removes '' from sys.path when starting -an inferior Python process. This is the default, for security -reasons, as it is easy for the Python process to be started -without the user's realization (e.g. to perform completion).Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-remove-cwd-from-path] - - ["Honor IPYTHONDIR " - (setq py-honor-IPYTHONDIR-p - (not py-honor-IPYTHONDIR-p)) - :help "When non-nil ipython-history file is constructed by \$IPYTHONDIR -followed by "/history". Default is nil. - -Otherwise value of py-ipython-history is used. Use `M-x customize-variable' to set it permanently" -:style toggle :selected py-honor-IPYTHONDIR-p] - - ["Honor PYTHONHISTORY " - (setq py-honor-PYTHONHISTORY-p - (not py-honor-PYTHONHISTORY-p)) - :help "When non-nil python-history file is set by \$PYTHONHISTORY -Default is nil. - -Otherwise value of py-python-history is used. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-honor-PYTHONHISTORY-p] - - ["Enforce py-shell-name" force-py-shell-name-p-on - :help "Enforce customized default `py-shell-name' should upon execution. "] - - ["Don't enforce default interpreter" force-py-shell-name-p-off - :help "Make execute commands guess interpreter from environment"] - - ["Enforce local Python shell " py-force-local-shell-on - :help "Locally indicated Python being enforced upon sessions execute commands. "] - - ["Remove local Python shell enforcement, restore default" py-force-local-shell-off - :help "Restore `py-shell-name' default value and `behaviour'. "] - - ["Run `py-shell' at start" - (setq py-start-run-py-shell - (not py-start-run-py-shell)) - :help "If `python-mode' should start a python-shell, `py-shell'. - -Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-start-run-py-shell] - - ["Start run ipython shell" - (setq py-start-run-ipython-shell - (not py-start-run-ipython-shell)) - :help "If `python-mode' should start an ipython-shell. - -Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-start-run-ipython-shell] - - ) - - ("Execute" - - ["Force shell name " - (setq py-force-py-shell-name-p - (not py-force-py-shell-name-p)) - :help "When `t', execution with kind of Python specified in `py-shell-name' is enforced, possibly shebang doesn't take precedence. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-force-py-shell-name-p] - - ["Enforce py-output-buffer" - (setq py-enforce-output-buffer-p - (not py-enforce-output-buffer-p)) - :help " `py-enforce-output-buffer-p' - -When non-nil, value of `py-output-buffer' is used for output, -regardless of environment. Default is nil." - :style toggle :selected py-enforce-output-buffer-p] - - ["Cleanup temporary" - (setq py-cleanup-temporary - (not py-cleanup-temporary)) - :help "If temporary buffers and files used by functions executing region should be deleted afterwards. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-cleanup-temporary] - - ["Execute no temp " - (setq py-execute-no-temp-p - (not py-execute-no-temp-p)) - :help "Seems Emacs-24.3 provided a way executing stuff without temporary files. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-execute-no-temp-p] - - ["Execute \"if name == main\" blocks p" - (setq py-if-name-main-permission-p - (not py-if-name-main-permission-p)) - :help " `py-if-name-main-permission-p' - -Allow execution of code inside blocks delimited by -if __name__ == '__main__' - -Default is non-nil. " - :style toggle :selected py-if-name-main-permission-p] - - ["Ask about save" - (setq py-ask-about-save - (not py-ask-about-save)) - :help "If not nil, ask about which buffers to save before executing some code. -Otherwise, all modified buffers are saved without asking.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-ask-about-save] - - ["Store result" - (setq py-store-result-p - (not py-store-result-p)) - :help " `py-store-result-p' - -When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. " - :style toggle :selected py-store-result-p] - - ["Prompt on changed " - (setq py-prompt-on-changed-p - (not py-prompt-on-changed-p)) - :help "When called interactively, ask for save before a changed buffer is sent to interpreter. - -Default is `t'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-prompt-on-changed-p] - - ["Dedicated process " - (setq py-dedicated-process-p - (not py-dedicated-process-p)) - :help "If commands executing code use a dedicated shell. - -Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-dedicated-process-p] - - ) - - ("TAB related" - - ["indent-tabs-mode" - (setq indent-tabs-mode - (not indent-tabs-mode)) - :help "Indentation can insert tabs if this is non-nil. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected indent-tabs-mode] - - ["Tab indent" - (setq py-tab-indent - (not py-tab-indent)) - :help "Non-nil means TAB in Python mode calls `py-indent-line'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-indent] - - ["Tab shifts region " - (setq py-tab-shifts-region-p - (not py-tab-shifts-region-p)) - :help "If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil -See also `py-tab-indents-region-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-shifts-region-p] - - ["Tab indents region " - (setq py-tab-indents-region-p - (not py-tab-indents-region-p)) - :help "When `t' and first TAB doesn't shift, indent-region is called. - -Default is nil -See also `py-tab-shifts-region-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-indents-region-p] - - ) - - ("Filling" - - ("Docstring styles" - :help "Toggle values of `py-docstring-style' -In order to set permanently customize this variable" - - ("Nil" - :help "Toggle nil value of `py-docstring-style' -Use `M-x customize-variable' to set it permanently" - - ["Toggle nil docstring style" toggle-py-nil-docstring-style - :help "If nil docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Nil on" py-nil-docstring-style-on - :help "Make sure, nil docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Nil off" py-nil-docstring-style-off - :help "Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Onetwo" - :help "Toggle onetwo value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle onetwo docstring style" toggle-py-onetwo-docstring-style - :help "If onetwo docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Onetwo on" py-onetwo-docstring-style-on - :help "Make sure, onetwo docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Onetwo off" py-onetwo-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Pep 257" - :help "Toggle pep-257 value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle pep 257 docstring style" toggle-py-pep-257-docstring-style - :help "If pep-257 docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 on" py-pep-257-docstring-style-on - :help "Make sure, pep-257 docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 off" py-pep-257-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Pep 257 nn" - :help "Toggle pep-257-nn value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle pep 257 nn docstring style" toggle-py-pep-257-nn-docstring-style - :help "If pep-257-nn docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 nn on" py-pep-257-nn-docstring-style-on - :help "Make sure, pep-257-nn docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 nn off" py-pep-257-nn-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Symmetric" - :help "Toggle symmetric value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle symmetric docstring style" toggle-py-symmetric-docstring-style - :help "If symmetric docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Symmetric on" py-symmetric-docstring-style-on - :help "Make sure, symmetric docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Symmetric off" py-symmetric-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Django" - :help "Toggle django value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle django docstring style" toggle-py-django-docstring-style - :help "If django docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Django on" py-django-docstring-style-on - :help "Make sure, django docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Django off" py-django-docstring-style-off - :help "Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - ) - - ["Fill-paragraph fill docstring " - (setq py-paragraph-fill-docstring-p - (not py-paragraph-fill-docstring-p)) - :help "If `py-fill-paragraph', when inside a docstring, should fill the complete string. - -Default is nil. - -Convenient use of `M-q' inside docstrings -See also `py-docstring-style' -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-paragraph-fill-docstring-p] - - ["Auto-fill mode" - (setq py-set-fill-column-p - (not py-set-fill-column-p)) - :help "Set Python specific `fill-column' according to `py-docstring-fill-column' and `py-comment-fill-column' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-set-fill-column-p] - - ["Use current dir when execute" - (setq py-use-current-dir-when-execute-p - (not py-use-current-dir-when-execute-p)) - :help " `toggle-py-use-current-dir-when-execute-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-current-dir-when-execute-p] - - ) - - ("Indent" - - ["Close at start column" - (setq py-closing-list-dedents-bos - (not py-closing-list-dedents-bos)) - :help "When non-nil, indent list's closing delimiter like start-column. - -It will be lined up under the first character of - the line that starts the multi-line construct, as in: - -my_list = \[ - 1, 2, 3, - 4, 5, 6, -] - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-dedents-bos] - - ["Closing list keeps space" - (setq py-closing-list-keeps-space - (not py-closing-list-keeps-space)) - :help "If non-nil, closing parenthesis dedents onto column of opening plus `py-closing-list-space', default is nil Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-keeps-space] - - ["Closing list space" - (setq py-closing-list-space - (not py-closing-list-space)) - :help "Number of chars, closing parenthesis outdent from opening, default is 1 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-space] - - ["Tab shifts region " - (setq py-tab-shifts-region-p - (not py-tab-shifts-region-p)) - :help "If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil -See also `py-tab-indents-region-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-shifts-region-p] - - ["Lhs inbound indent" - (setq py-lhs-inbound-indent - (not py-lhs-inbound-indent)) - :help "When line starts a multiline-assignment: How many colums indent should be more than opening bracket, brace or parenthesis. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-lhs-inbound-indent] - - ["Continuation offset" - (setq py-continuation-offset - (not py-continuation-offset)) - :help "With numeric ARG different from 1 py-continuation-offset is set to that value; returns py-continuation-offset. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-continuation-offset] - - ["Electric colon" - (setq py-electric-colon-active-p - (not py-electric-colon-active-p)) - :help " `py-electric-colon-active-p' - -`py-electric-colon' feature. Default is `nil'. See lp:837065 for discussions. " - :style toggle :selected py-electric-colon-active-p] - - ["Electric colon at beginning of block only" - (setq py-electric-colon-bobl-only - (not py-electric-colon-bobl-only)) - :help "When inserting a colon, do not indent lines unless at beginning of block. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-bobl-only] - - ["Electric yank active " - (setq py-electric-yank-active-p - (not py-electric-yank-active-p)) - :help " When non-nil, `yank' will be followed by an `indent-according-to-mode'. - -Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-yank-active-p] - - ["Electric kill backward " - (setq py-electric-kill-backward-p - (not py-electric-kill-backward-p)) - :help "Affects `py-electric-backspace'. Default is nil. - -If behind a delimited form of braces, brackets or parentheses, -backspace will kill it's contents - -With when cursor after -my_string\[0:1] ---------------^ - -==> - -my_string\[] -----------^ - -In result cursor is insided emptied delimited form.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-kill-backward-p] - - ["Trailing whitespace smart delete " - (setq py-trailing-whitespace-smart-delete-p - (not py-trailing-whitespace-smart-delete-p)) - :help "Default is nil. When t, python-mode calls - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local) - -Also commands may delete trailing whitespace by the way. -When editing other peoples code, this may produce a larger diff than expected Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-trailing-whitespace-smart-delete-p] - - ["Newline delete trailing whitespace " - (setq py-newline-delete-trailing-whitespace-p - (not py-newline-delete-trailing-whitespace-p)) - :help "Delete trailing whitespace maybe left by `py-newline-and-indent'. - -Default is `t'. See lp:1100892 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-newline-delete-trailing-whitespace-p] - - ["Dedent keep relative column" - (setq py-dedent-keep-relative-column - (not py-dedent-keep-relative-column)) - :help "If point should follow dedent or kind of electric move to end of line. Default is t - keep relative position. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-dedent-keep-relative-column] - - ["Indent paren spanned multilines " - (setq py-indent-paren-spanned-multilines-p - (not py-indent-paren-spanned-multilines-p)) - :help "If non-nil, indents elements of list a value of `py-indent-offset' to first element: - -def foo(): - if (foo && - baz): - bar() - -Default lines up with first element: - -def foo(): - if (foo && - baz): - bar() -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-paren-spanned-multilines-p] - - ["Indent honors multiline listing" - (setq py-indent-honors-multiline-listing - (not py-indent-honors-multiline-listing)) - :help "If `t', indents to 1\+ column of opening delimiter. If `nil', indent adds one level to the beginning of statement. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-honors-multiline-listing] - - ["Indent comment " - (setq py-indent-comments - (not py-indent-comments)) - :help "If comments should be indented like code. Default is `nil'. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-comments] - - ["Uncomment indents " - (setq py-uncomment-indents-p - (not py-uncomment-indents-p)) - :help "When non-nil, after uncomment indent lines. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-uncomment-indents-p] - - ["Indent honors inline comment" - (setq py-indent-honors-inline-comment - (not py-indent-honors-inline-comment)) - :help "If non-nil, indents to column of inlined comment start. -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-honors-inline-comment] - - ["Kill empty line" - (setq py-kill-empty-line - (not py-kill-empty-line)) - :help "If t, py-indent-forward-line kills empty lines. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-kill-empty-line] - - ("Smart indentation" - :help "Toggle py-smart-indentation' - -Use `M-x customize-variable' to set it permanently" - - ["Toggle py-smart-indentation" toggle-py-smart-indentation - :help "Toggles py-smart-indentation - -Use `M-x customize-variable' to set it permanently"] - - ["py-smart-indentation on" py-smart-indentation-on - :help "Switches py-smart-indentation on - -Use `M-x customize-variable' to set it permanently"] - - ["py-smart-indentation off" py-smart-indentation-off - :help "Switches py-smart-indentation off - -Use `M-x customize-variable' to set it permanently"] - - ) - - ["Beep if tab change" - (setq py-beep-if-tab-change - (not py-beep-if-tab-change)) - :help "Ring the bell if `tab-width' is changed. -If a comment of the form - - # vi:set tabsize=: - -is found before the first code line when the file is entered, and the -current value of (the general Emacs variable) `tab-width' does not -equal , `tab-width' is set to , a message saying so is -displayed in the echo area, and if `py-beep-if-tab-change' is non-nil -the Emacs bell is also rung as a warning.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-beep-if-tab-change] - - ["Highlight indentation" highlight-indentation - :help "Toggle highlight indentation. - -Use `M-x customize-variable' to set it permanently - -Make sure `highlight-indentation' is installed" - - ] - - ["Electric comment " - (setq py-electric-comment-p - (not py-electric-comment-p)) - :help "If \"#\" should call `py-electric-comment'. Default is `nil'. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-comment-p] - - ["Electric comment add space " - (setq py-electric-comment-add-space-p - (not py-electric-comment-add-space-p)) - :help "If py-electric-comment should add a space. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-comment-add-space-p] - - ["Empty line closes " - (setq py-empty-line-closes-p - (not py-empty-line-closes-p)) - :help "When non-nil, dedent after empty line following block - -if True: - print(\"Part of the if-statement\") - -print(\"Not part of the if-statement\") - -Default is nil - -If non-nil, a C-j from empty line dedents. -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-empty-line-closes-p] - - ) - - ("Fontification" - - ["Mark decorators" - (setq py-mark-decorators - (not py-mark-decorators)) - :help "If py-mark-def-or-class functions should mark decorators too. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-mark-decorators] - - ["Fontify shell buffer " - (setq py-fontify-shell-buffer-p - (not py-fontify-shell-buffer-p)) - :help "If code in Python shell should be highlighted as in script buffer. - -Default is nil. - -If `t', related vars like `comment-start' will be set too. -Seems convenient when playing with stuff in IPython shell -Might not be TRT when a lot of output arrives Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-fontify-shell-buffer-p] - - ["Use font lock doc face " - (setq py-use-font-lock-doc-face-p - (not py-use-font-lock-doc-face-p)) - :help "If documention string inside of def or class get `font-lock-doc-face'. - -`font-lock-doc-face' inherits `font-lock-string-face'. - -Call M-x `customize-face' in order to have a visible effect. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-font-lock-doc-face-p] - - ) - ("Directory" - - ["Guess install directory " - (setq py-guess-py-install-directory-p - (not py-guess-py-install-directory-p)) - :help "If in cases, `py-install-directory' isn't set, `py-set-load-path'should guess it from `buffer-file-name'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-guess-py-install-directory-p] - - ["Use local default" - (setq py-use-local-default - (not py-use-local-default)) - :help "If `t', py-shell will use `py-shell-local-path' instead -of default Python. - -Making switch between several virtualenv's easier, - `python-mode' should deliver an installer, so named-shells pointing to virtualenv's will be available. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-local-default] - - ["Use current dir when execute " - (setq py-use-current-dir-when-execute-p - (not py-use-current-dir-when-execute-p)) - :help "When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands. - -See also `py-execute-directory'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-current-dir-when-execute-p] - - ["Keep shell dir when execute " - (setq py-keep-shell-dir-when-execute-p - (not py-keep-shell-dir-when-execute-p)) - :help "Don't change Python shell's current working directory when sending code. - -See also `py-execute-directory'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-keep-shell-dir-when-execute-p] - - ["Fileless buffer use default directory " - (setq py-fileless-buffer-use-default-directory-p - (not py-fileless-buffer-use-default-directory-p)) - :help "When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shellUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-fileless-buffer-use-default-directory-p] - ) - - ("Display" - - ["Modeline display full path " - (setq py-modeline-display-full-path-p - (not py-modeline-display-full-path-p)) - :help "If the full PATH/TO/PYTHON should be displayed in shell modeline. - -Default is nil. Note: when `py-shell-name' is specified with path, it's shown as an acronym in buffer-name already. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-modeline-display-full-path-p] - - ["Modeline acronym display home " - (setq py-modeline-acronym-display-home-p - (not py-modeline-acronym-display-home-p)) - :help "If the modeline acronym should contain chars indicating the home-directory. - -Default is nil Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-modeline-acronym-display-home-p] - - ["Hide show hide docstrings" - (setq py-hide-show-hide-docstrings - (not py-hide-show-hide-docstrings)) - :help "Controls if doc strings can be hidden by hide-showUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-hide-show-hide-docstrings] - - ["Hide comments when hiding all" - (setq py-hide-comments-when-hiding-all - (not py-hide-comments-when-hiding-all)) - :help "Hide the comments too when you do an `hs-hide-all'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-hide-comments-when-hiding-all] - - ["Max help buffer " - (setq py-max-help-buffer-p - (not py-max-help-buffer-p)) - :help "If \"\*Python-Help\*\"-buffer should appear as the only visible. - -Default is nil. In help-buffer, \"q\" will close it. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-max-help-buffer-p] - - ) - - ("Completion" - - ["Ipython complete use separate shell " - (setq ipython-complete-use-separate-shell-p - (not ipython-complete-use-separate-shell-p)) - :help "If `ipython-complete' should use a separate shell. Thus prompt-counter is not incremented by completion. Use `M-x customize-variable' to set it permanently" - :style toggle :selected ipython-complete-use-separate-shell-p] - - ["Set complete keymap " - (setq py-set-complete-keymap-p - (not py-set-complete-keymap-p)) - :help "If `py-complete-initialize', which sets up enviroment for Pymacs based py-complete, should load it's keys into `python-mode-map' - -Default is nil. -See also resp. edit `py-complete-set-keymap' Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-set-complete-keymap-p] - - ["No completion calls dabbrev expand " - (setq py-no-completion-calls-dabbrev-expand-p - (not py-no-completion-calls-dabbrev-expand-p)) - :help "If completion function should call dabbrev-expand when no completion found. Default is `t' - -See also `py-indent-no-completion-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-no-completion-calls-dabbrev-expand-p] - - ["Indent no completion " - (setq py-indent-no-completion-p - (not py-indent-no-completion-p)) - :help "If completion function should indent when no completion found. Default is `t' - -See also `py-no-completion-calls-dabbrev-expand-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-no-completion-p] - - ["Company pycomplete " - (setq py-company-pycomplete-p - (not py-company-pycomplete-p)) - :help "Load company-pycomplete stuff. Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-company-pycomplete-p] - - ) - - ("Debug" - - ["Pdbtrack do tracking " - (setq py-pdbtrack-do-tracking-p - (not py-pdbtrack-do-tracking-p)) - :help "Controls whether the pdbtrack feature is enabled or not. -When non-nil, pdbtrack is enabled in all comint-based buffers, -e.g. shell buffers and the \*Python\* buffer. When using pdb to debug a -Python program, pdbtrack notices the pdb prompt and displays the -source file and line that the program is stopped at, much the same way -as gud-mode does for debugging C programs with gdb.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-pdbtrack-do-tracking-p] - - ["Jump on exception" - (setq py-jump-on-exception - (not py-jump-on-exception)) - :help "Jump to innermost exception frame in Python output buffer. -When this variable is non-nil and an exception occurs when running -Python code synchronously in a subprocess, jump immediately to the -source code of the innermost traceback frame. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-jump-on-exception] - - ["Highlight error in source " - (setq py-highlight-error-source-p - (not py-highlight-error-source-p )) - :help "Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-highlight-error-source-p] - - ["Pylint offer current " - (setq py-pylint-offer-current-p - (not py-pylint-offer-current-p)) - :help "If current buffers file should be offered for check. - -Default is non-nil. If nil, `py-pylint-run' offers filename from history Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-pylint-offer-current-p] - - ) - - ["Switch buffers on execute" - (setq py-switch-buffers-on-execute-p - (not py-switch-buffers-on-execute-p)) - :help "When non-nil switch to the Python output buffer. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-switch-buffers-on-execute-p] - - ["Split windows on execute" - (setq py-split-windows-on-execute-p - (not py-split-windows-on-execute-p)) - :help "When non-nil split windows. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-split-windows-on-execute-p] - - ("Other" - - ["Defun use top level " - (setq py-defun-use-top-level-p - (not py-defun-use-top-level-p)) - :help "When non-nil, keys C-M-a, C-M-e address top-level form. - -Beginning- end-of-defun forms use -commands `py-beginning-of-top-level', `py-end-of-top-level' - -mark-defun marks top-level form at point etc. " - :style toggle :selected py-defun-use-top-level-p] - - ["Python mode v5 behavior" - (setq python-mode-v5-behavior-p - (not python-mode-v5-behavior-p)) - :help "Execute region through `shell-command-on-region' as -v5 did it - lp:990079. This might fail with certain chars - see UnicodeEncodeError lp:550661 - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected python-mode-v5-behavior-p] - - ["Load pymacs " - (setq py-load-pymacs-p - (not py-load-pymacs-p)) - :help "If Pymacs related stuff should be loaded. - -Default is nil. - -Pymacs has been written by François Pinard and many others. -See original source: http://pymacs.progiciels-bpi.caUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-load-pymacs-p] - - ["Verbose " - (setq py-verbose-p - (not py-verbose-p)) - :help "If functions should report results. - -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-verbose-p] - - ["Edit only " - (setq py-edit-only-p - (not py-edit-only-p)) - :help "When `t' `python-mode' will not take resort nor check for installed Python executables. Default is nil. - -See bug report at launchpad, lp:944093. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-edit-only-p] - - ["Imenu create index " - (setq py-imenu-create-index-p - (not py-imenu-create-index-p)) - :help "Non-nil means Python mode creates and displays an index menu of functions and global variables. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-imenu-create-index-p] - - ["Imenu show method args " - (setq py-imenu-show-method-args-p - (not py-imenu-show-method-args-p)) - :help "Controls echoing of arguments of functions & methods in the Imenu buffer. -When non-nil, arguments are printed.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-imenu-show-method-args-p] - - ["Match paren mode" - (setq py-match-paren-mode - (not py-match-paren-mode)) - :help "Non-nil means, cursor will jump to beginning or end of a block. -This vice versa, to beginning first. -Sets `py-match-paren-key' in python-mode-map. -Customize `py-match-paren-key' which key to use. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-match-paren-mode] - - ["Close provides newline" - (setq py-close-provides-newline - (not py-close-provides-newline)) - :help "If a newline is inserted, when line after block isn't empty. Default is non-nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-close-provides-newline] - - ["Block comment prefix " - (setq py-block-comment-prefix-p - (not py-block-comment-prefix-p)) - :help "If py-comment inserts py-block-comment-prefix. - -Default is tUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-block-comment-prefix-p] - - ["Empty comment line separates paragraph " - (setq empty-comment-line-separates-paragraph-p - (not empty-comment-line-separates-paragraph-p)) - :help "Consider paragraph start/end lines with nothing inside but comment sign. - -Default is non-nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected empty-comment-line-separates-paragraph-p] - - ["Org cycle " - (setq py-org-cycle-p - (not py-org-cycle-p)) - :help "When non-nil, command `org-cycle' is available at shift-TAB, - -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-org-cycle-p] - - ("Underscore word syntax" - :help "Toggle `py-underscore-word-syntax-p'" - - ["Toggle underscore word syntax" toggle-py-underscore-word-syntax-p - :help " `toggle-py-underscore-word-syntax-p' - -If `py-underscore-word-syntax-p' should be on or off. - - Returns value of `py-underscore-word-syntax-p' switched to. . - -Use `M-x customize-variable' to set it permanently"] - - ["Underscore word syntax on" py-underscore-word-syntax-p-on - :help " `py-underscore-word-syntax-p-on' - -Make sure, py-underscore-word-syntax-p' is on. - -Returns value of `py-underscore-word-syntax-p'. . - -Use `M-x customize-variable' to set it permanently"] - - ["Underscore word syntax off" py-underscore-word-syntax-p-off - :help " `py-underscore-word-syntax-p-off' - -Make sure, `py-underscore-word-syntax-p' is off. - -Returns value of `py-underscore-word-syntax-p'. . - -Use `M-x customize-variable' to set it permanently"] - - ) - - ["Set pager cat" - (setq py-set-pager-cat-p - (not py-set-pager-cat-p)) - :help "If the shell environment variable \$PAGER should set to `cat'. - -If `t', use `C-c C-r' to jump to beginning of output. Then scroll normally. - -Avoids lp:783828, \"Terminal not fully functional\", for help('COMMAND') in python-shell - -When non-nil, imports module `os' Use `M-x customize-variable' to -set it permanently" - :style toggle :selected py-set-pager-cat-p] - - ["Current defun show" - (setq py-current-defun-show - (not py-current-defun-show)) - :help "If `py-current-defun' should jump to the definition, highlight it while waiting PY-WHICH-FUNC-DELAY seconds, before returning to previous position. - -Default is `t'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-current-defun-show] - - ("Autopair mode" - :help "Toggle `autopair-mode'" - - ["Toggle autopair mode" toggle-py-autopair-mode - :help " `toggle-autopair-mode' - -If `autopair-mode' should be on or off. - - Returns value of `autopair-mode ' switched to. "] - - ["Autopair mode on" py-autopair-mode-on - :help " `autopair-mode on' - -Make sure, `autopair-mode' is on. - -Returns value of `autopair-mode'. "] - - ["Autopair mode off" py-autopair-mode-off - :help " `autopair-mode' off - -Make sure, `autopair-mode' is off. - -Returns value of `autopair-mode'. "] - - ) - - ["Switch index-function" py-switch-imenu-index-function - :help "`py-switch-imenu-index-function' -Switch between `py-imenu-create-index' from 5.1 series and `py-imenu-create-index-new'."] - - ;; py-smart-operator-mode-p forms - ("Smart operator mode" - :help "Toggle `smart-operator-mode'" - - ["Toggle smart operator mode" toggle-py-smart-operator-mode-p - :help " `toggle-smart-operator-mode' - -If `smart-operator-mode' should be on or off. - - Returns value of `smart-operator-mode ' switched to. "] - - ["Smart operator mode on" py-smart-operator-mode-p-on - :help " `smart-operator-mode -on' - -Make sure, `smart-operator-mode' is on. - -Returns value of `smart-operator-mode'. "] - - ["Smart operator mode off" py-smart-operator-mode-p-off - :help " `smart-operator-mode' off - -Make sure, `smart-operator-mode' is off. - -Returns value of `smart-operator-mode'. "] - - ) - ) - ) - ) - - ("More... " - ("Edit commands " - - ("Kill " - - ["Kill statement" py-kill-statement - :help "`py-kill-statement' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill top level" py-kill-top-level - :help " `py-kill-top-level' - -Delete top-level form at point. - -Stores data in kill ring. Might be yanked back using `C-y'. "] - - ["Kill clause" py-kill-clause - :help "`py-kill-clause' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill block" py-kill-block - :help "`py-kill-block' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill minor block" py-kill-minor-block - :help " `py-kill-minor-block' - -Delete minor-block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. "] - - ["Kill def-or-class" py-kill-def-or-class - :help "`py-kill-def-or-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill expression" py-kill-expression - :help "`py-kill-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill partial-expression" py-kill-partial-expression - :help "`py-kill-partial-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill class" py-kill-class - :help "`py-kill-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill def" py-kill-def - :help "`py-kill-def' -Delete innermost compound statement at point, store deleted string in kill-ring"]) - - ("Delete" - ["Delete statement " py-delete-statement - :help "`py-delete-statement' -Delete STATEMENT at point, don't store in kill-ring. "] - - ["Delete top-level " py-delete-top-level - :help "`py-delete-top-level' -Delete TOP-LEVEL at point, don't store in kill-ring. "] - - ["Delete block " py-delete-block - :help "`py-delete-block' -Delete BLOCK at point, don't store in kill-ring. "] - - ["Delete block-or-clause " py-delete-block-or-clause - :help "`py-delete-block-or-clause' -Delete BLOCK-OR-CLAUSE at point, don't store in kill-ring. "] - - ["Delete def " py-delete-def - :help "`py-delete-def' -Delete DEF at point, don't store in kill-ring. "] - - ["Delete class " py-delete-class - :help "`py-delete-class' -Delete CLASS at point, don't store in kill-ring. "] - - ["Delete def-or-class " py-delete-def-or-class - :help "`py-delete-def-or-class' -Delete DEF-OR-CLASS at point, don't store in kill-ring. "] - - ["Delete expression " py-delete-expression - :help "`py-delete-expression' -Delete EXPRESSION at point, don't store in kill-ring. "] - - ["Delete partial-expression " py-delete-partial-expression - :help "`py-delete-partial-expression' -Delete PARTIAL-EXPRESSION at point, don't store in kill-ring. "] - - ["Delete minor-block " py-delete-minor-block - :help "`py-delete-minor-block' -Delete MINOR-BLOCK at point, don't store in kill-ring. - -A minor block is started by a `for', `if', `try' or `with'. "] - ) - "-" - - ("Shift right " - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift minor block right" py-shift-minor-block-right - :help " `py-shift-minor-block-right' - -Indent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. "] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift block-or-clause right" py-shift-block-or-clause-right - :help "`py-shift-block-or-clause-right' -Shift block-or-clause right. "] - - ["Shift region left" py-shift-region-left - :help " `py-shift-region-left' - -Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. "] - - ["Shift region right" py-shift-region-right - :help " `py-shift-region-right' - -Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. "] - - ) - - ("Shift left " - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "] - - ["Shift minor block left" py-shift-minor-block-left - :help " `py-shift-minor-block-left' - -Dedent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "] - - ["Shift block-or-clause left" py-shift-block-or-clause-left - :help "`py-shift-block-or-clause-left' -Shift block-or-clause left. "] - - ) - ("More" - :help "extended edit commands'" - - ["Empty out list backward" py-empty-out-list-backward - :help " `py-empty-out-list-backward' -Deletes all elements from list before point. "] - - ["Revert boolean assignent" py-boolswitch - :help " `py-boolswitch' -Edit the assigment of a boolean variable, rever them. - -I.e. switch it from \"True\" to \"False\" and vice versa "] - - ["Remove overlays at point" py-remove-overlays-at-point - :help " `py-remove-overlays-at-point' - -Remove overlays as set when `py-highlight-error-source-p' is non-nil. "] - - ) - - ) - - "-" - ("Forms " - ("Comment" - - ["Beginning of comment" py-beginning-of-comment - :help " `py-beginning-of-comment' -Go to beginning of comment at point. "] - - ["End of comment" py-end-of-comment - :help " `py-end-of-comment' - -Go to end of comment at point. "] - ) - ("Block" - ["Beginning of block" py-beginning-of-block - :help "`py-beginning-of-block' -Go to start of innermost compound statement at point"] - ["End of block" py-end-of-block - :help "`py-end-of-block' -Go to end of innermost compound statement at point"] - - ["Down block" py-down-block - :help "`py-down-block' - -Go to the beginning of next block below in buffer. - -Returns indentation if block found, nil otherwise. "] - - ["Up block" py-up-block - :help "`py-up-block' - -Go upwards to the beginning of next block below in buffer. - -Returns indentation if block found, nil otherwise. "] - - ["Copy block" py-copy-block - :help "`py-copy-block' -Copy innermost compound statement at point"] - - ["Kill block" py-kill-block - :help "`py-kill-block' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete block" py-delete-block - :help "`py-delete-block' -Delete innermost compound statement at point, don't store deleted string in kill-ring"] - - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - - ["Comment block" py-comment-block - :help " `py-comment-block' - -Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Top-level form" - - ["Beginning of top-level form" py-beginning-of-top-level - :help "`py-beginning-of-top-level' -Go to start of top-level form form at point"] - - ["End of top-level form" py-end-of-top-level - :help "`py-end-of-top-level' -Go to end of top-level form at point"] - - ["Down top-level form" py-down-top-level - :help "`py-down-top-level' - -Go to the beginning of top-level form below in buffer. "] - - ["Up top-level form" py-up-top-level - :help "`py-up-top-level' - -Go upwards to the beginning of next top-level form in buffer. "] - - ["Copy top-level form" py-copy-top-level - :help "`py-copy-top-level' -Copy innermost top-level form at point"] - - ["Kill top-level form" py-kill-top-level - :help "`py-kill-top-level' -Delete top-level form at point, store deleted string in kill-ring"] - - ["Delete top-level form" py-delete-top-level - :help "`py-delete-top-level' -Delete top-level form at point, don't store deleted string in kill-ring"] - - ["Comment top-level form" py-comment-top-level - :help " `py-comment-top-level' - -Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Minor-block" - - ["Beginning of minor-block" py-beginning-of-minor-block - :help "`py-beginning-of-minor-block' -Go to start of innermost minor-block at point"] - ["End of minor-block" py-end-of-minor-block - :help "`py-end-of-minor-block' -Go to end of innermost minor-block at point"] - - ["Down minor-block" py-down-minor-block - :help "`py-down-minor-block' - -Go to the beginning of next minor-block below in buffer. - -Returns indentation if minor-block found, nil otherwise. "] - - ["Up minor-block" py-up-minor-block - :help "`py-up-minor-block' - -Go upwards to the beginning of next minor-block below in buffer. - -Returns indentation if minor-block found, nil otherwise. "] - - ["Copy minor-block" py-copy-minor-block - :help "`py-copy-minor-block' -Copy innermost minor-block at point"] - - ["Kill minor-block" py-kill-minor-block - :help "`py-kill-minor-block' -Delete innermost minor-block at point, store deleted string in kill-ring"] - - ["Delete minor-block" py-delete-minor-block - :help "`py-delete-minor-block' -Delete innermost minor-block at point, don't store deleted string in kill-ring"] - - ["Shift minor-block right" py-shift-minor-block-right - :help "`py-shift-minor-block-right' -Shift minor-block right. "] - - ["Shift minor-block left" py-shift-minor-block-left - :help "`py-shift-minor-block-left' -Shift minor-block left. "] - - ["Comment minor-block" py-comment-minor-block - :help " `py-comment-minor-block' - -Comments minor-block at point. - -Uses double hash (`#') comment starter when `py-minor-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Def-or-class " - - ["Beginning of Def-or-Class" py-beginning-of-def-or-class - :help "`py-beginning-of-def-or-class' -Go to start of innermost definition at point"] - - ["End of Def-or-Class" py-end-of-def-or-class - :help "`py-end-of-def-or-class' -Go to end of innermost function definition at point"] - - ["Down def-or-class" py-down-def-or-class - :help "`py-down-def-or-class' - -Go to the beginning of next def-or-class below in buffer. - -Returns indentation if def-or-class found, nil otherwise. "] - - ["Up def-or-class" py-up-def-or-class - :help "`py-up-def-or-class' - -Go upwards to the beginning of next def-or-class below in buffer. - -Returns indentation if def-or-class found, nil otherwise. "] - - ["Copy Def-or-Class" py-copy-def-or-class - :help "`py-copy-def-or-class' -Copy innermost definition at point"] - - ["Kill def-or-class" py-kill-def-or-class - :help "`py-kill-def-or-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete def-or-class" py-delete-def-or-class - :help "`py-delete-def-or-class' -Delete def-or-class at point, don't store deleted string in kill-ring"] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ["Comment def or class" py-comment-def-or-class - :help " `py-comment-def-or-class' - -Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Clause " - - ["Beginning of clause" py-beginning-of-clause - :help "`py-beginning-of-clause' -Go to start of innermost compound statement at point"] - ["End of clause" py-end-of-clause - :help "`py-end-of-clause' -Go to end of innermost compound statement at point"] - - ["Down clause" py-down-clause - :help "`py-down-clause' - -Go to the beginning of next clause below in buffer. - -Returns indentation if clause found, nil otherwise. "] - - ["Up clause" py-up-clause - :help "`py-up-clause' - -Go upwards to the beginning of next clause below in buffer. - -Returns indentation if clause found, nil otherwise. "] - - ["Copy clause" py-copy-clause - :help "`py-copy-clause' -Copy innermost compound statement at point"] - - ["Kill clause" py-kill-clause - :help "`py-kill-clause' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete clause" py-delete-clause - :help "`py-delete-clause' -Delete innermost compound statement at point, don't store deleted string in kill-ring"] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "] - - ["Comment clause" py-comment-clause - :help " `py-comment-clause' - -Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Statement " - - ["Beginning of Statement" py-beginning-of-statement - :help "`py-beginning-of-statement' -Go to start of innermost definition at point"] - - ["End of Statement" py-end-of-statement - :help "`py-end-of-statement' -Go to end of innermost function definition at point"] - - ["Copy statement" py-copy-statement - :help "`py-copy-statement' -Copy innermost definition at point"] - - ["Kill statement" py-kill-statement - :help "`py-kill-statement' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete statement" py-delete-statement - :help "`py-delete-statement' -Delete statement at point, don't store deleted string in kill-ring"] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "] - - ["Comment statement" py-comment-statement - :help " `py-comment-statement' - -Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Expression" - - ["Beginning of expression" py-beginning-of-expression - :help "Go to the beginning of a compound python expression. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["End of expression" py-end-of-expression - :help "`py-end-of-expression' -Go to the end of a compound python expression. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["Beginning of expression" py-beginning-of-expression - :help "`py-beginning-of-expression' -Go to start of a Python expression"] - - ["End of expression" py-end-of-expression - :help "`py-end-of-expression' -Go to end of a Python expression"] - - ["Copy expression" py-copy-expression - :help "`py-copy-expression' -Copy expression at point"] - - ["Kill expression" py-kill-expression - :help "`py-kill-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete expression" py-delete-expression - :help "`py-delete-expression' -Delete expression at point, don't store deleted string in kill-ring"]) - - ("Partial expression" - - ["Beginning of minor expression" py-beginning-of-partial-expression - :help "`py-beginning-of-partial-expression' -Go to start of an minor expression - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["End of partial-expression" py-end-of-partial-expression - :help "`py-end-of-partial-expression' -Go to end of an partial-expression - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["Copy partial expression" py-copy-partial-expression - :help "`py-copy-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - - ["Kill partial-expression" py-kill-partial-expression - :help "`py-kill-partial-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete partial-expression" py-delete-partial-expression - :help "`py-delete-partial-expression' -Delete partial-expression at point, don't store deleted string in kill-ring"]) - - ("Class " - - ["Beginning of Class" py-beginning-of-class - :help "`py-beginning-of-class' -Go to start of innermost definition at point"] - - ["End of Class" py-end-of-class - :help "`py-end-of-class' -Go to end of innermost function definition at point"] - - ["Down class" py-down-class - :help "`py-down-class' - -Go to the beginning of next class below in buffer. - -Returns indentation if class found, nil otherwise. "] - - ["Up class" py-up-class - :help "`py-up-class' - -Go upwards to the beginning of next class below in buffer. - -Returns indentation if class found, nil otherwise. "] - - ["Copy class" py-copy-class - :help "`py-copy-class' -Copy innermost definition at point"] - - ["Kill class" py-kill-class - :help "`py-kill-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete class" py-delete-class - :help "`py-delete-class' -Delete class at point, don't store deleted string in kill-ring"] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "] - - ["Comment class" py-comment-class - :help " `py-comment-class' - -Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Def " - - ["Beginning of Def" py-beginning-of-def - :help "`py-beginning-of-def' -Go to start of innermost definition at point"] - - ["End of Def" py-end-of-def - :help "`py-end-of-def' -Go to end of innermost function definition at point"] - - ["Down def" py-down-def - :help "`py-down-def' - -Go to the beginning of next def below in buffer. - -Returns indentation if def found, nil otherwise. "] - - ["Up def" py-up-def - :help "`py-up-def' - -Go upwards to the beginning of next def below in buffer. - -Returns indentation if def found, nil otherwise. "] - - ["Copy def" py-copy-def - :help "`py-copy-def' -Copy innermost definition at point"] - - ["Kill def" py-kill-def - :help "`py-kill-def' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete def" py-delete-def - :help "`py-delete-def' -Delete def at point, don't store deleted string in kill-ring"] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "] - - ["Comment def" py-comment-def - :help " `py-comment-def' - -Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - "-" - - ("Block bol " - - ["Beginning of block bol" py-beginning-of-block-bol - :help "`py-beginning-of-block-bol' -Go to beginning of line at beginning of block. - -Returns position reached, if successful, nil otherwise. "] - - ["End of block bol" py-end-of-block-bol - :help "`py-end-of-block-bol' -Go to beginning of line following end of block. - -Returns position reached, if successful, nil otherwise. "] - - ["Up block bol" py-up-block-bol - :help "`py-up-block-bol' -Go to next block upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down block bol" py-down-block-bol - :help "`py-down-block-bol' -Go to next block downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark block bol" py-mark-block-bol - :help "`py-mark-block-bol' -Mark block at point. "] - - ["Copy block bol" py-copy-block-bol - :help "`py-copy-block-bol' -Copy block at point. "] - - ["Kill block bol" py-kill-block-bol - :help "`py-kill-block-bol' -Kill block at point. "] - - ["Delete block bol" py-delete-block-bol - :help "`py-delete-block-bol' -Delete block at point. "] - - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - ) - - ("Minor-block bol " - - ["Beginning of minor-block bol" py-beginning-of-minor-block-bol - :help "`py-beginning-of-minor-block-bol' -Go to beginning of line at beginning of minor-block. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["End of minor-block bol" py-end-of-minor-block-bol - :help "`py-end-of-minor-block-bol' -Go to beginning of line following end of minor-block. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Up minor-block bol" py-up-minor-block-bol - :help "`py-up-minor-block-bol' -Go to next minor-block upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Down minor-block bol" py-down-minor-block-bol - :help "`py-down-minor-block-bol' -Go to next minor-block downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Mark minor-block bol" py-mark-minor-block-bol - :help "`py-mark-minor-block-bol' -Mark minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Copy minor-block bol" py-copy-minor-block-bol - :help "`py-copy-minor-block-bol' -Copy minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Kill minor-block bol" py-kill-minor-block-bol - :help "`py-kill-minor-block-bol' -Kill minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Delete minor-block bol" py-delete-minor-block-bol - :help "`py-delete-minor-block-bol' -Delete minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Shift minor-block right" py-shift-minor-block-right - :help "`py-shift-minor-block-right' -Shift minor-block right. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Shift minor-block left" py-shift-minor-block-left - :help "`py-shift-minor-block-left' -Shift minor-block left. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ) - - ("Clause bol " - - ["Beginning of clause bol" py-beginning-of-clause-bol - :help "`py-beginning-of-clause-bol' -Go to beginning of line at beginning of clause. - -Returns position reached, if successful, nil otherwise. "] - - ["End of clause bol" py-end-of-clause-bol - :help "`py-end-of-clause-bol' -Go to beginning of line following end of clause. - -Returns position reached, if successful, nil otherwise. "] - - ["Up clause bol" py-up-clause-bol - :help "`py-up-clause-bol' -Go to next clause upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down clause bol" py-down-clause-bol - :help "`py-down-clause-bol' -Go to next clause downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark clause bol" py-mark-clause-bol - :help "`py-mark-clause-bol' -Mark clause at point. "] - - ["Copy clause bol" py-copy-clause-bol - :help "`py-copy-clause-bol' -Copy clause at point. "] - - ["Kill clause bol" py-kill-clause-bol - :help "`py-kill-clause-bol' -Kill clause at point. "] - - ["Delete clause bol" py-delete-clause-bol - :help "`py-delete-clause-bol' -Delete clause at point. "] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "]) - - ("Block-Or-Clause bol " - - ["Beginning of block-or-clause bol" py-beginning-of-block-or-clause-bol - :help "`py-beginning-of-block-or-clause-bol' -Go to beginning of line at beginning of block-or-clause. - -Returns position reached, if successful, nil otherwise. "] - - ["End of block-or-clause bol" py-end-of-block-or-clause-bol - :help "`py-end-of-block-or-clause-bol' -Go to beginning of line following end of block-or-clause. - -Returns position reached, if successful, nil otherwise. "] - - ["Up block-or-clause bol" py-up-block-or-clause-bol - :help "`py-up-block-or-clause-bol' -Go to next block-or-clause upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down block-or-clause bol" py-down-block-or-clause-bol - :help "`py-down-block-or-clause-bol' -Go to next block-or-clause downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark block-or-clause bol" py-mark-block-or-clause-bol - :help "`py-mark-block-or-clause-bol' -Mark block-or-clause at point. "] - - ["Copy block-or-clause bol" py-copy-block-or-clause-bol - :help "`py-copy-block-or-clause-bol' -Copy block-or-clause at point. "] - - ["Kill block-or-clause bol" py-kill-block-or-clause-bol - :help "`py-kill-block-or-clause-bol' -Kill block-or-clause at point. "] - - ["Delete block-or-clause bol" py-delete-block-or-clause-bol - :help "`py-delete-block-or-clause-bol' -Delete block-or-clause at point. "] - - ["Shift block-or-clause right" py-shift-block-or-clause-right - :help "`py-shift-block-or-clause-right' -Shift block-or-clause right. "] - - ["Shift block-or-clause left" py-shift-block-or-clause-left - :help "`py-shift-block-or-clause-left' -Shift block-or-clause left. "]) - - ("Def bol " - - ["Beginning of def bol" py-beginning-of-def-bol - :help "`py-beginning-of-def-bol' -Go to beginning of line at beginning of def. - -Returns position reached, if successful, nil otherwise. "] - - ["End of def bol" py-end-of-def-bol - :help "`py-end-of-def-bol' -Go to beginning of line following end of def. - -Returns position reached, if successful, nil otherwise. "] - - ["Up def bol" py-up-def-bol - :help "`py-up-def-bol' -Go to next def upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down def bol" py-down-def-bol - :help "`py-down-def-bol' -Go to next def downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark def bol" py-mark-def-bol - :help "`py-mark-def-bol' -Mark def at point. "] - - ["Copy def bol" py-copy-def-bol - :help "`py-copy-def-bol' -Copy def at point. "] - - ["Kill def bol" py-kill-def-bol - :help "`py-kill-def-bol' -Kill def at point. "] - - ["Delete def bol" py-delete-def-bol - :help "`py-delete-def-bol' -Delete def at point. "] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "]) - - ("Class bol " - ["Beginning of class bol" py-beginning-of-class-bol - :help "`py-beginning-of-class-bol' -Go to beginning of line at beginning of class. - -Returns position reached, if successful, nil otherwise. "] - - ["End of class bol" py-end-of-class-bol - :help "`py-end-of-class-bol' -Go to beginning of line following end of class. - -Returns position reached, if successful, nil otherwise. "] - - ["Up class bol" py-up-class-bol - :help "`py-up-class-bol' -Go to next class upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down class bol" py-down-class-bol - :help "`py-down-class-bol' -Go to next class downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark class bol" py-mark-class-bol - :help "`py-mark-class-bol' -Mark class at point. "] - - ["Copy class bol" py-copy-class-bol - :help "`py-copy-class-bol' -Copy class at point. "] - - ["Kill class bol" py-kill-class-bol - :help "`py-kill-class-bol' -Kill class at point. "] - - ["Delete class bol" py-delete-class-bol - :help "`py-delete-class-bol' -Delete class at point. "] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "]) - - ("Def-Or-Class bol " - ["Beginning of def-or-class bol" py-beginning-of-def-or-class-bol - :help "`py-beginning-of-def-or-class-bol' -Go to beginning of line at beginning of def-or-class. - -Returns position reached, if successful, nil otherwise. "] - - ["End of def-or-class bol" py-end-of-def-or-class-bol - :help "`py-end-of-def-or-class-bol' -Go to beginning of line following end of def-or-class. - -Returns position reached, if successful, nil otherwise. "] - - ["Up def-or-class bol" py-up-def-or-class-bol - :help "`py-up-def-or-class-bol' -Go to next def-or-class upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down def-or-class bol" py-down-def-or-class-bol - :help "`py-down-def-or-class-bol' -Go to next def-or-class downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark def-or-class bol" py-mark-def-or-class-bol - :help "`py-mark-def-or-class-bol' -Mark def-or-class at point. "] - - ["Copy def-or-class bol" py-copy-def-or-class-bol - :help "`py-copy-def-or-class-bol' -Copy def-or-class at point. "] - - ["Kill def-or-class bol" py-kill-def-or-class-bol - :help "`py-kill-def-or-class-bol' -Kill def-or-class at point. "] - - ["Delete def-or-class bol" py-delete-def-or-class-bol - :help "`py-delete-def-or-class-bol' -Delete def-or-class at point. "] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ) - - ("Statement bol " - ["Beginning of statement bol" py-beginning-of-statement-bol - :help "`py-beginning-of-statement-bol' -Go to beginning of line at beginning of statement. - -Returns position reached, if successful, nil otherwise. "] - - ["End of statement bol" py-end-of-statement-bol - :help "`py-end-of-statement-bol' -Go to beginning of line following end of statement. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark statement bol" py-mark-statement-bol - :help "`py-mark-statement-bol' -Mark statement at point. "] - - ["Copy statement bol" py-copy-statement-bol - :help "`py-copy-statement-bol' -Copy statement at point. "] - - ["Kill statement bol" py-kill-statement-bol - :help "`py-kill-statement-bol' -Kill statement at point. "] - - ["Delete statement bol" py-delete-statement-bol - :help "`py-delete-statement-bol' -Delete statement at point. "] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "]) - ) - "-" - ("Filling" - :help "see also customizable `py-docstring-style'" - - ["Fill string" py-fill-string - :help " `py-fill-string' - -Uses value of `py-docstring-style', if set. "] - - ["Fill paragraph" py-fill-paragraph - :help " `py-fill-paragraph' - -Uses value of `py-docstring-style', if set. "] - - ["Fill comment" py-fill-comment - :help " `py-fill-comment' - -Fill comment at point. "] - - ["Fill string django-style " py-fill-string-django - :help " `py-fill-string-django' - - \"\"\" - Process foo, return bar. - \"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - "] - - ["py fill string onetwo" py-fill-string-onetwo - :help " `py-fill-string-onetwo' -One newline and start and Two at end style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string pep 257" py-fill-string-pep-257 - :help " `py-fill-string-pep-257' - -PEP-257 with 2 newlines at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string pep 257 nn" py-fill-string-pep-257-nn - :help " `py-fill-string-pep-257-nn' - -PEP-257 with 1 newline at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string symmetric" py-fill-string-symmetric - :help " `py-fill-string-symmetric' - -Symmetric style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"]) - - ("Electric " - :help "electric commands'" - - ["Hungry delete backwards" py-hungry-delete-backwards - :help " `py-hungry-delete-backwards' - -Delete the preceding character or all preceding whitespace -back to the previous non-whitespace character. -See also C-c . "] - - ["Hungry delete forward" py-hungry-delete-forward - :help " `py-hungry-delete-forward' - -Delete the following character or all following whitespace -up to the next non-whitespace character. -See also C-c . "] - - ["Electric colon" py-electric-colon - :help " `py-electric-colon' -Insert a colon and indent accordingly. - -If a numeric argument ARG is provided, that many colons are inserted -non-electrically. - -Electric behavior is inhibited inside a string or -comment or by universal prefix C-u. - -Switched by `py-electric-colon-active-p', default is nil -See also `py-electric-colon-greedy-p' "] - - ["Electric colon greedy " - (setq py-electric-colon-greedy-p - (not py-electric-colon-greedy-p)) - :help "If py-electric-colon should indent to the outmost reasonable level. - -If nil, default, it will not move from at any reasonable level. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-greedy-p] - - ["Electric colon newline and indent " - (setq py-electric-colon-newline-and-indent-p - (not py-electric-colon-newline-and-indent-p)) - :help "If non-nil, `py-electric-colon' will call `newline-and-indent'. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-newline-and-indent-p] - - ["Electric delete" py-electric-delete - :help " `py-electric-delete' -Delete following character or levels of whitespace. - -With ARG do that ARG times. "] - - ["Electric backspace" py-electric-backspace - :help " `py-electric-backspace' -Delete preceding character or level of indentation. - -With ARG do that ARG times. -Returns column reached. "] - - ["Electric comment" py-electric-comment - :help " `py-electric-comment' -Insert a comment. If starting a comment, indent accordingly. - -If a numeric argument ARG is provided, that many \"#\" are inserted -non-electrically. -With C-u \"#\" electric behavior is inhibited inside a string or comment. "] - - ["Electric left paren" py-complete-electric-lparen - :help " `py-complete-electric-lparen' -electricly insert '(', and try to get a signature for the stuff to the left.\n -Needs Pymacs"] - - ["Complete electric comma" py-complete-electric-comma - :help " `py-complete-electric-comma' -electricly insert ',', and redisplay latest signature.\n -Needs Pymacs"] - - ["Electric yank" py-electric-yank - :help " `py-electric-yank' -Perform command `yank' followed by an `indent-according-to-mode' . "]) - - ("Abbrevs" - :help "see also `py-add-abbrev'" - :filter (lambda (&rest junk) - (abbrev-table-menu python-mode-abbrev-table))) - ["add-abbrev" py-add-abbrev - :help "Defines python-mode specific abbrev for last expressions before point. -Argument is how many `py-partial-expression's form the expansion; or zero means the region is the expansion. "] - - ("Skeletons" - :help "See also templates in YASnippet" - - ["if" py-if - :help "Inserts if-statement"] - ["py-else" py-else - :help "Inserts else-statement"] - ["py-while" py-while - :help "Inserts while-statement"] - ["py-for" py-for - :help "Inserts for-statement"] - ["py-try/finally" py-try/finally - :help "Inserts py-try/finally-statement"] - ["py-try/except" py-try/except - :help "Inserts py-try/except-statement"] - - ) - - ("Completion" - :help "Completion options" - - ["Complete symbol" py-shell-complete - :help "`py-shell-complete' -Complete (qualified) symbol before point"] - - ["Complete" py-complete - :help " `py-complete' -Complete symbol before point using Pymacs . "]) - - ["Find function" py-find-function - :help "`py-find-function' -Try to find source definition of function at point"] - - ))))) - -(defvar python-mode-map) -(setq python-mode-map - (let ((map (make-sparse-keymap))) - ;; electric keys - (define-key map [(:)] 'py-electric-colon) - (define-key map [(\#)] 'py-electric-comment) - (define-key map [(delete)] 'py-electric-delete) - (define-key map [(backspace)] 'py-electric-backspace) - (define-key map [(control backspace)] 'py-hungry-delete-backwards) - (define-key map [(control c) (delete)] 'py-hungry-delete-forward) - ;; (define-key map [(control y)] 'py-electric-yank) - ;; moving point - (define-key map [(control c)(control p)] 'py-beginning-of-statement) - (define-key map [(control c)(control n)] 'py-end-of-statement) - (define-key map [(control c)(control u)] 'py-beginning-of-block) - (define-key map [(control c)(control q)] 'py-end-of-block) - (define-key map [(control meta a)] 'py-beginning-of-def-or-class) - (define-key map [(control meta e)] 'py-end-of-def-or-class) - - ;; (define-key map [(meta i)] 'py-indent-forward-line) - (define-key map [(control j)] 'py-newline-and-indent) - ;; Most Pythoneers expect RET `py-newline-and-indent' - ;; (define-key map (kbd "RET") 'py-newline-and-dedent) - (define-key map (kbd "RET") py-return-key) - ;; (define-key map (kbd "RET") 'newline) - (define-key map [(super backspace)] 'py-dedent) - ;; (define-key map [(control return)] 'py-newline-and-dedent) - ;; indentation level modifiers - (define-key map [(control c)(control l)] 'py-shift-left) - (define-key map [(control c)(control r)] 'py-shift-right) - (define-key map [(control c)(<)] 'py-shift-left) - (define-key map [(control c)(>)] 'py-shift-right) - (define-key map [(control c)(tab)] 'py-indent-region) - (define-key map [(control c)(:)] 'py-guess-indent-offset) - ;; subprocess commands - (define-key map [(control c)(control c)] 'py-execute-buffer) - (define-key map [(control c)(control m)] 'py-execute-import-or-reload) - (define-key map [(control c)(control s)] 'py-execute-string) - (define-key map [(control c)(|)] 'py-execute-region) - (define-key map [(control meta x)] 'py-execute-def-or-class) - (define-key map [(control c)(!)] 'py-shell) - (define-key map [(control c)(control t)] 'py-toggle-shell) - (define-key map [(control meta h)] 'py-mark-def-or-class) - (define-key map [(control c)(control k)] 'py-mark-block-or-clause) - (define-key map [(control c)(.)] 'py-expression) - ;; Miscellaneous - (define-key map [(super q)] 'py-copy-statement) - (define-key map [(control c)(control d)] 'py-pdbtrack-toggle-stack-tracking) - (define-key map [(control c)(control f)] 'py-sort-imports) - (define-key map [(control c)(\#)] 'py-comment-region) - (define-key map [(control c)(\?)] 'py-describe-mode) - (define-key map [(control c)(control e)] 'py-help-at-point) - (define-key map [(control c)(-)] 'py-up-exception) - (define-key map [(control c)(=)] 'py-down-exception) - (define-key map [(control x) (n) (d)] 'py-narrow-to-defun) - ;; information - (define-key map [(control c)(control b)] 'py-submit-bug-report) - (define-key map [(control c)(control v)] 'py-version) - (define-key map [(control c)(control w)] 'py-pychecker-run) - (define-key map (kbd "TAB") 'py-indent-line) - ;; (if py-complete-function - ;; (progn - ;; (define-key map [(meta tab)] py-complete-function) - ;; (define-key map [(esc) (tab)] py-complete-function)) - ;; (define-key map [(meta tab)] 'py-shell-complete) - ;; (define-key map [(esc) (tab)] 'py-shell-complete)) - (substitute-key-definition 'complete-symbol 'completion-at-point - map global-map) - (substitute-key-definition 'backward-up-list 'py-up - map global-map) - (substitute-key-definition 'down-list 'py-down - map global-map) - - (and (ignore-errors (require 'easymenu) t) - ;; (easy-menu-define py-menu map "Python Tools" - ;; `("PyTools" - (easy-menu-define - py-menu map "Python Mode menu" - `("Python" - ("Interpreter" - ["Default interpreter..." py-shell - :help " `py-shell' - -Start an interactive Python interpreter. - -Interactively, C-u 4 prompts for a buffer. -C-u 2 prompts for `py-python-command-args'. -If `default-directory' is a remote file name, it is also prompted -to change if called with a prefix arg. - -. "] - ("Other" - :help "Alternative Python Shells" - - ["ipython" ipython - :help "`ipython' -Start an IPython interpreter. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'."] - ["python3" python3 - :help "`python3' -Start an Python3 interpreter. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'."] - ["python2" python2 - :help "`python2' -Start an Python2 interpreter. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'."] - ["python2.7" python2.7 - :help "`python2.7' -Start an Python2.7 interpreter. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'."] - ["jython" jython - :help "`jython' -Start an Jython interpreter. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'."] - - ["python3.3" python3.3 - :help "`python3.3' -Start an Python3.3 interpreter. - -Optional C-u prompts for options to pass to the Python3.3 interpreter. See `py-python-command-args'."] - - ["python3.4" python3.4 - :help "`python3.3' -Start an Python3.4 interpreter. - -Optional C-u prompts for options to pass to the Python3.4 interpreter. See `py-python-command-args'."] - - "-" - ["python-dedicated" python-dedicated - :help "`python-dedicated' -Start an unique Python interpreter in another window. - -Optional C-u prompts for options to pass to the Python interpreter. See `py-python-command-args'."] - ["ipython-dedicated" ipython-dedicated - :help "`ipython-dedicated' -Start an unique IPython interpreter in another window. - -Optional C-u prompts for options to pass to the IPython interpreter. See `py-python-command-args'."] - ["python3-dedicated" python3-dedicated - :help "`python3-dedicated' -Start an unique Python3 interpreter in another window. - -Optional C-u prompts for options to pass to the Python3 interpreter. See `py-python-command-args'."] - ["python2-dedicated" python2-dedicated - :help "`python2-dedicated' -Start an unique Python2 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2 interpreter. See `py-python-command-args'."] - ["python2.7-dedicated" python2.7-dedicated - :help "`python2'.7-dedicated -Start an unique Python2.7 interpreter in another window. - -Optional C-u prompts for options to pass to the Python2.7 interpreter. See `py-python-command-args'."] - ["jython-dedicated" jython-dedicated - :help "`jython-dedicated' -Start an unique Jython interpreter in another window. - -Optional C-u prompts for options to pass to the Jython interpreter. See `py-python-command-args'."] - - "-" - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" - - ["Execute file python switch" py-execute-file-python-switch - :help " `py-execute-file-python-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python no-switch" py-execute-file-python-no-switch - :help " `py-execute-file-python-no-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python dedicated" py-execute-file-python-dedicated - :help " `py-execute-file-python-dedicated' -Send file to a Python interpreter. - -Uses a dedicated shell. "] - - ["Execute file python dedicated switch" py-execute-file-python-dedicated-switch - :help " `py-execute-file-python-dedicated-switch' -Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython switch" py-execute-file-ipython-switch - :help " `py-execute-file-ipython-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython no-switch" py-execute-file-ipython-no-switch - :help " `py-execute-file-ipython-no-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file ipython dedicated" py-execute-file-ipython-dedicated - :help " `py-execute-file-ipython-dedicated' -Send file to a Ipython interpreter. - -Uses a dedicated shell. "] - - ["Execute file ipython dedicated switch" py-execute-file-ipython-dedicated-switch - :help " `py-execute-file-ipython-dedicated-switch' -Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 switch" py-execute-file-python3-switch - :help " `py-execute-file-python3-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 no-switch" py-execute-file-python3-no-switch - :help " `py-execute-file-python3-no-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3 dedicated" py-execute-file-python3-dedicated - :help " `py-execute-file-python3-dedicated' -Send file to a Python3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3 dedicated switch" py-execute-file-python3-dedicated-switch - :help " `py-execute-file-python3-dedicated-switch' -Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 switch" py-execute-file-python2-switch - :help " `py-execute-file-python2-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 no-switch" py-execute-file-python2-no-switch - :help " `py-execute-file-python2-no-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2 dedicated" py-execute-file-python2-dedicated - :help " `py-execute-file-python2-dedicated' -Send file to a Python2 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2 dedicated switch" py-execute-file-python2-dedicated-switch - :help " `py-execute-file-python2-dedicated-switch' -Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 switch" py-execute-file-python2.7-switch - :help " `py-execute-file-python2.7-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 no-switch" py-execute-file-python2.7-no-switch - :help " `py-execute-file-python2.7-no-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2.7 dedicated" py-execute-file-python2.7-dedicated - :help " `py-execute-file-python2.7-dedicated' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2.7 dedicated switch" py-execute-file-python2.7-dedicated-switch - :help " `py-execute-file-python2.7-dedicated-switch' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython switch" py-execute-file-jython-switch - :help " `py-execute-file-jython-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython no-switch" py-execute-file-jython-no-switch - :help " `py-execute-file-jython-no-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file jython dedicated" py-execute-file-jython-dedicated - :help " `py-execute-file-jython-dedicated' -Send file to a Jython interpreter. - -Uses a dedicated shell. "] - - ["Execute file jython dedicated switch" py-execute-file-jython-dedicated-switch - :help " `py-execute-file-jython-dedicated-switch' -Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 switch" py-execute-file-python3.3-switch - :help " `py-execute-file-python3.3-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 no-switch" py-execute-file-python3.3-no-switch - :help " `py-execute-file-python3.3-no-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3.3 dedicated" py-execute-file-python3.3-dedicated - :help " `py-execute-file-python3.3-dedicated' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3.3 dedicated switch" py-execute-file-python3.3-dedicated-switch - :help " `py-execute-file-python3.3-dedicated-switch' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython switch" py-execute-file-bpython-switch - :help " `py-execute-file-bpython-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython no-switch" py-execute-file-bpython-no-switch - :help " `py-execute-file-bpython-no-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file bpython dedicated" py-execute-file-bpython-dedicated - :help " `py-execute-file-bpython-dedicated' -Send file to a Bpython interpreter. - -Uses a dedicated shell. "] - - ["Execute file bpython dedicated switch" py-execute-file-bpython-dedicated-switch - :help " `py-execute-file-bpython-dedicated-switch' -Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - ) - - ) - ) - - "-" - ("Mark" - - ["Mark block" py-mark-block - :help " `py-mark-block' - -Mark block at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark minor block" py-mark-minor-block - :help " `py-mark-minor-block' - -Mark minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. -Returns beginning and end positions of marked area, a cons. "] - - ["Mark def or class" py-mark-def-or-class - :help " `py-mark-def-or-class' - -Mark def-or-class at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark statement" py-mark-statement - :help "`py-mark-statement' -Mark statement at point"] - - ["Mark top level" py-mark-top-level - :help " `py-mark-top-level' - -Mark top-level form at point. - -Returns beginning and end positions of marked area, a cons. "] - - ["Mark clause" py-mark-clause - :help "`py-mark-clause' -Mark innermost compound statement at point"] - - ["Mark def" py-mark-def - :help "`py-mark-def' -Mark innermost definition at point"] - - ["Mark expression" py-mark-expression - :help "`py-mark-expression' -Mark expression at point"] - - ["Mark partial expression" py-mark-partial-expression - :help "`py-mark-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - - ["Mark class" py-mark-class - :help "`py-mark-class' -Mark innermost definition at point"] - - ["Mark comment" py-mark-comment - :help "`py-mark-comment' -Mark commented section at point"] - - "-" - - ["Mark block bol" py-mark-block-bol - :help "`py-mark-block-bol' -Mark block at point reaching beginning-of-line. "] - - ["Mark clause bol" py-mark-clause-bol - :help "`py-mark-clause-bol' -Mark clause at point reaching beginning-of-line. "] - - ["Mark block-or-clause bol" py-mark-block-or-clause-bol - :help "`py-mark-block-or-clause-bol' -Mark block-or-clause at point reaching beginning-of-line. "] - - ["Mark def bol" py-mark-def-bol - :help "`py-mark-def-bol' -Mark def at point reaching beginning-of-line. "] - - ["Mark class bol" py-mark-class-bol - :help "`py-mark-class-bol' -Mark class at point reaching beginning-of-line. "] - - ["Mark def-or-class bol" py-mark-def-or-class-bol - :help "`py-mark-def-or-class-bol' -Mark def-or-class at point reaching beginning-of-line. "] - - ["Mark if-block bol" py-mark-if-block-bol - :help "`py-mark-if-block-bol' -Mark if-block at point reaching beginning-of-line. "] - - ["Mark try-block bol" py-mark-try-block-bol - :help "`py-mark-try-block-bol' -Mark try-block at point reaching beginning-of-line. "] - - ["Mark minor-block bol" py-mark-minor-block-bol - :help "`py-mark-minor-block-bol' - -Mark minor-block at point reaching beginning-of-line. -A minor block is started by a `for', `if', `try' or `with'."] - - ) - - "-" - - ["Shift region left" py-shift-region-left - :help " `py-shift-region-left' - -Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. "] - - ["Shift region right" py-shift-region-right - :help " `py-shift-region-right' - -Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. "] - - "-" - - ("Comment" - ["Comment Region" py-comment-region (point) (mark) - :help "Like `comment-region' but uses double hash (`#') comment starter." ] - ["Uncomment" py-uncomment - :help " `py-uncomment' - -Uncomment commented lines at point. - -If region is active, restrict uncommenting at region . "] - - ["Uncomment Region" (py-comment-region (point) (mark) '(4)) - :help "(py-comment-region (point) (mark) '(4))" ] - "-" - ["Comment block" py-comment-block - :help " `py-comment-block' -Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment minor-block" py-comment-minor-block - :help " `py-comment-minor-block' -Comments minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment top level" py-comment-top-level - :help " `py-comment-top-level' - -Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment clause" py-comment-clause - :help " `py-comment-clause' -Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment block or clause" py-comment-block-or-clause - :help " `py-comment-block-or-clause' -Comments block-or-clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment def" py-comment-def - :help " `py-comment-def' -Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment class" py-comment-class - :help " `py-comment-class' -Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment def or class" py-comment-def-or-class - :help " `py-comment-def-or-class' -Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ["Comment statement" py-comment-statement - :help " `py-comment-statement' -Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - "-" - - ("Move" - - ["Beginning of block" py-beginning-of-block - :help " `py-beginning-of-block' - -Go to beginning block, skip whitespace at BOL. "] - - ["Go to end of block" py-end-of-block] - - "-" - - ["Beginning of def or class" py-beginning-of-def-or-class - :help " `py-beginning-of-def-or-class' - -Go to beginning def-or-class, skip whitespace at BOL. - -Returns beginning of def-or-class if successful, nil otherwise - -When `py-mark-decorators' is non-nil, decorators are considered too. "] - - ["End of def or class" py-end-of-def-or-class - :help " `py-end-of-def-or-class' - -Go to end of def-or-class. - -Returns end of def-or-class if successful, nil otherwise - -With M-x universal argument or `py-mark-decorators' set to `t', decorators are marked too. "] - - "-" - - ["Beginning of statement" py-beginning-of-statement - :help " `py-beginning-of-statement' - -Go to the initial line of a simple statement. "] - - ["End of statement" py-end-of-statement - :help " `py-end-of-statement' - -Go to the last char of current statement. - -To go just beyond the final line of the current statement, use `py-down-statement-bol'. "] - - "-" - - ["Backward into nomenclature" py-backward-into-nomenclature - :help " `py-backward-into-nomenclature' -Go backward into nomenclature - -A nomenclature is a fancy way of saying AWordWithMixedCaseNotUnderscores. "] - - ["Forward into nomenclature" py-forward-into-nomenclature - :help " `py-forward-into-nomenclature' -Go forward into nomenclature - -A nomenclature is a fancy way of saying AWordWithMixedCaseNotUnderscores. "] - - "-" - - ("More" - - ["Up level" py-up - :help " `py-up' -Go to beginning one level above of compound statement or definition at point. "] - - ["Down level" py-down - :help " `py-down' -Go to beginning one level below of compound statement or definition at point. "] - - "-" - - ["Beginning of top level" py-beginning-of-top-level - :help " `py-beginning-of-top-level' - -Go to the very beginning of top-level form at point. "] - - ["End of top level" py-end-of-top-level - :help " `py-end-of-top-level' - -Go to end of top-level form at point. "] - - "-" - - ["Beginning of block current-column" py-beginning-of-block-current-column - :help " `py-beginning-of-block-current-column' - -Reach next beginning of block upwards which starts at current column. - -Return position. "] - - "-" - - ["Move to start of def" py-beginning-of-def t] - - ["Move to end of def" py-end-of-def t] - - "-" - - ["Beginning of clause" py-beginning-of-clause - :help " `py-beginning-of-clause' - -Go to beginning clause, skip whitespace at BOL. "] - - ["End of clause" py-end-of-clause - :help " `py-end-of-clause' - -Go to end of clause. "] - - "-" - - ["Beginning of comment" py-beginning-of-comment - :help " `py-beginning-of-comment' -Go to beginning of comment at point. "] - - ["End of comment" py-end-of-comment - :help " `py-end-of-comment' - -Go to end of comment at point. "] - - "-" - - ["Go to start of expression" (py-beginning-of-expression t) t] - ["Move to end of expression" (py-end-of-expression t) t] - - "-" - - ["Go to start of minor-expression" (py-beginning-of-minor-expression t) t] - - ["Move to end of minor-expression" (py-end-of-minor-expression t) t] - "-" - - ["Beginning of minor block" py-beginning-of-minor-block - :help " `py-beginning-of-minor-block' - -Go to beginning minor-block, skip whitespace at BOL. - -Returns beginning of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. - -"] - - ["End of minor block" py-end-of-minor-block - :help " `py-end-of-minor-block' - -Go to end of minor-block. - -Returns end of minor-block if successful, nil otherwise - -A minor block is started by a `for', `if', `try' or `with'. "] - - ) - - ) - - "-" - - ("Copy " - ["Copy statement" py-copy-statement - :help "`py-copy-statement' -Copy statement at point"] - - ["Copy top level" py-copy-top-level - :help " `py-copy-top-level' - -Copy top-level form at point. "] - - ["Copy clause" py-copy-clause - :help "`py-copy-clause' -Copy innermost clause at point"] - - ["Copy block" py-copy-block - :help "`py-copy-block' -Copy innermost block at point"] - - ["Copy minor block" py-copy-minor-block - :help " `py-copy-minor-block' - -Copy minor-block at point. - -Store data in kill ring, so it might yanked back. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Copy def" py-copy-def - :help "`py-copy-def' -Copy innermost definition at point"] - ["Copy expression" py-copy-expression - :help "`py-copy-expression' -Copy expression at point"] - ["Copy partial expression" py-copy-partial-expression - :help "`py-copy-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - ["Copy class" py-copy-class - :help "`py-copy-class' -Copy innermost definition at point"] - - ["Copy Def-or-Class" py-copy-def-or-class - :help "`py-copy-def-or-class' -Copy innermost definition at point"] - - ) - - "-" - - ["Execute region" py-execute-region - :help " `py-execute-region' - -Send the region to a Python interpreter. - -When called with C-u 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. "] - - ["Execute buffer" py-execute-buffer - :help " `py-execute-buffer' - -Send the contents of the buffer to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -When called with C-u 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. - -If the file local variable `py-master-file' is non-nil, execute the -named file instead of the buffer's file."] - - ["Execute def or class" py-execute-def-or-class - :help " `py-execute-def-or-class' - -Send def-or-class at point to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -See also `py-force-py-shell-name-p'. - -When called with C-u 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."] - - ["Execute statement" py-execute-statement - :help " `py-execute-statement' - -Send statement at point to a Python interpreter. - -When called with C-u, execution through `default-value' of `py-shell-name' is forced. -See also `py-force-py-shell-name-p'. - -When called with C-u 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."] - - ["Execute string" py-execute-string - :help " `py-execute-string' - -Send the argument STRING to a Python interpreter. - -See also `py-execute-region'. "] - ("More... " - :help "Python-specific features" - - ["Execute top level" py-execute-top-level - :help " `py-execute-top-level' - -Send top-level form at point to a Python interpreter. "] - - ["Execute block" py-execute-block - :help "`py-execute-block' - Send block at point to Python interpreter. "] - - ["Execute minor block" py-execute-minor-block - :help " `py-execute-minor-block' - -Send minor-block at point to a Python interpreter. - -A minor block is started by a `for', `if', `try' or `with'. -. "] - - ["Execute def" py-execute-def - :help "`py-execute-def' - Send def at point to Python interpreter. "] - - ["Execute class" py-execute-class - :help "`py-execute-class' - Send class at point to Python interpreter. "] - - ["Execute file" py-execute-file - :help "`py-execute-file' - Send file at point to Python interpreter. "] - - ;; statement - ("Execute statement " - :help "Execute statement functions" - - ["py-execute-statement-python" py-execute-statement-python - :help "Execute statement through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-statement-ipython" py-execute-statement-ipython - :help "Execute statement through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-statement-python3" py-execute-statement-python3 - :help "Execute statement through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-statement-python2" py-execute-statement-python2 - :help "Execute statement through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-statement-python2.7" py-execute-statement-python2.7 - :help "Execute statement through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-statement-jython" py-execute-statement-jython - :help "Execute statement through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-statement-python3.3" py-execute-statement-python3.3 - :help "Execute statement through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-statement-bpython" py-execute-statement-bpython - :help "Execute statement through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-statement-python-dedicated" py-execute-statement-python-dedicated - :help "Execute statement through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-ipython-dedicated" py-execute-statement-ipython-dedicated - :help "Execute statement through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python3-dedicated" py-execute-statement-python3-dedicated - :help "Execute statement through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python2-dedicated" py-execute-statement-python2-dedicated - :help "Execute statement through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python2.7-dedicated" py-execute-statement-python2.7-dedicated - :help "Execute statement through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-jython-dedicated" py-execute-statement-jython-dedicated - :help "Execute statement through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-python3.3-dedicated" py-execute-statement-python3.3-dedicated - :help "Execute statement through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-statement-bpython-dedicated" py-execute-statement-bpython-dedicated - :help "Execute statement through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-statement-python-switch" py-execute-statement-python-switch - :help "Execute statement through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-statement-ipython-switch" py-execute-statement-ipython-switch - :help "Execute statement through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-statement-python3-switch" py-execute-statement-python3-switch - :help "Execute statement through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-statement-python2-switch" py-execute-statement-python2-switch - :help "Execute statement through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-statement-python2.7-switch" py-execute-statement-python2.7-switch - :help "Execute statement through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-statement-jython-switch" py-execute-statement-jython-switch - :help "Execute statement through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-statement-python3.3-switch" py-execute-statement-python3.3-switch - :help "Execute statement through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-statement-bpython-switch" py-execute-statement-bpython-switch - :help "Execute statement through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-statement-python-dedicated-switch" py-execute-statement-python-dedicated-switch - :help "Execute statement through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-ipython-dedicated-switch" py-execute-statement-ipython-dedicated-switch - :help "Execute statement through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python3-dedicated-switch" py-execute-statement-python3-dedicated-switch - :help "Execute statement through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python2-dedicated-switch" py-execute-statement-python2-dedicated-switch - :help "Execute statement through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python2.7-dedicated-switch" py-execute-statement-python2.7-dedicated-switch - :help "Execute statement through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-jython-dedicated-switch" py-execute-statement-jython-dedicated-switch - :help "Execute statement through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-python3.3-dedicated-switch" py-execute-statement-python3.3-dedicated-switch - :help "Execute statement through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-statement-bpython-dedicated-switch" py-execute-statement-bpython-dedicated-switch - :help "Execute statement through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; block - ("Execute block " - :help "Execute block functions" - - ["py-execute-block-python" py-execute-block-python - :help "Execute block through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-block-ipython" py-execute-block-ipython - :help "Execute block through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-block-python3" py-execute-block-python3 - :help "Execute block through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-block-python2" py-execute-block-python2 - :help "Execute block through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-block-python2.7" py-execute-block-python2.7 - :help "Execute block through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-block-jython" py-execute-block-jython - :help "Execute block through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-block-python3.3" py-execute-block-python3.3 - :help "Execute block through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-block-bpython" py-execute-block-bpython - :help "Execute block through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-block-python-dedicated" py-execute-block-python-dedicated - :help "Execute block through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-ipython-dedicated" py-execute-block-ipython-dedicated - :help "Execute block through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python3-dedicated" py-execute-block-python3-dedicated - :help "Execute block through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python2-dedicated" py-execute-block-python2-dedicated - :help "Execute block through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python2.7-dedicated" py-execute-block-python2.7-dedicated - :help "Execute block through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-jython-dedicated" py-execute-block-jython-dedicated - :help "Execute block through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-python3.3-dedicated" py-execute-block-python3.3-dedicated - :help "Execute block through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-block-bpython-dedicated" py-execute-block-bpython-dedicated - :help "Execute block through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-block-python-switch" py-execute-block-python-switch - :help "Execute block through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-block-ipython-switch" py-execute-block-ipython-switch - :help "Execute block through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-block-python3-switch" py-execute-block-python3-switch - :help "Execute block through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-block-python2-switch" py-execute-block-python2-switch - :help "Execute block through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-block-python2.7-switch" py-execute-block-python2.7-switch - :help "Execute block through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-block-jython-switch" py-execute-block-jython-switch - :help "Execute block through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-block-python3.3-switch" py-execute-block-python3.3-switch - :help "Execute block through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-block-bpython-switch" py-execute-block-bpython-switch - :help "Execute block through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-block-python-dedicated-switch" py-execute-block-python-dedicated-switch - :help "Execute block through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-ipython-dedicated-switch" py-execute-block-ipython-dedicated-switch - :help "Execute block through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python3-dedicated-switch" py-execute-block-python3-dedicated-switch - :help "Execute block through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python2-dedicated-switch" py-execute-block-python2-dedicated-switch - :help "Execute block through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python2.7-dedicated-switch" py-execute-block-python2.7-dedicated-switch - :help "Execute block through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-jython-dedicated-switch" py-execute-block-jython-dedicated-switch - :help "Execute block through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-python3.3-dedicated-switch" py-execute-block-python3.3-dedicated-switch - :help "Execute block through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-block-bpython-dedicated-switch" py-execute-block-bpython-dedicated-switch - :help "Execute block through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; def - ("Execute def " - :help "Execute def functions" - - ["py-execute-def-python" py-execute-def-python - :help "Execute def through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-def-ipython" py-execute-def-ipython - :help "Execute def through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-def-python3" py-execute-def-python3 - :help "Execute def through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-def-python2" py-execute-def-python2 - :help "Execute def through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-def-python2.7" py-execute-def-python2.7 - :help "Execute def through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-def-jython" py-execute-def-jython - :help "Execute def through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-def-python3.3" py-execute-def-python3.3 - :help "Execute def through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-def-bpython" py-execute-def-bpython - :help "Execute def through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-def-python-dedicated" py-execute-def-python-dedicated - :help "Execute def through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-ipython-dedicated" py-execute-def-ipython-dedicated - :help "Execute def through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python3-dedicated" py-execute-def-python3-dedicated - :help "Execute def through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python2-dedicated" py-execute-def-python2-dedicated - :help "Execute def through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python2.7-dedicated" py-execute-def-python2.7-dedicated - :help "Execute def through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-jython-dedicated" py-execute-def-jython-dedicated - :help "Execute def through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-python3.3-dedicated" py-execute-def-python3.3-dedicated - :help "Execute def through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-def-bpython-dedicated" py-execute-def-bpython-dedicated - :help "Execute def through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-def-python-switch" py-execute-def-python-switch - :help "Execute def through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-def-ipython-switch" py-execute-def-ipython-switch - :help "Execute def through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-def-python3-switch" py-execute-def-python3-switch - :help "Execute def through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-def-python2-switch" py-execute-def-python2-switch - :help "Execute def through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-def-python2.7-switch" py-execute-def-python2.7-switch - :help "Execute def through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-def-jython-switch" py-execute-def-jython-switch - :help "Execute def through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-def-python3.3-switch" py-execute-def-python3.3-switch - :help "Execute def through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-def-bpython-switch" py-execute-def-bpython-switch - :help "Execute def through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-def-python-dedicated-switch" py-execute-def-python-dedicated-switch - :help "Execute def through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-ipython-dedicated-switch" py-execute-def-ipython-dedicated-switch - :help "Execute def through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python3-dedicated-switch" py-execute-def-python3-dedicated-switch - :help "Execute def through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python2-dedicated-switch" py-execute-def-python2-dedicated-switch - :help "Execute def through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python2.7-dedicated-switch" py-execute-def-python2.7-dedicated-switch - :help "Execute def through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-jython-dedicated-switch" py-execute-def-jython-dedicated-switch - :help "Execute def through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-python3.3-dedicated-switch" py-execute-def-python3.3-dedicated-switch - :help "Execute def through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-def-bpython-dedicated-switch" py-execute-def-bpython-dedicated-switch - :help "Execute def through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; class - ("Execute class " - :help "Execute class functions" - - ["py-execute-class-python" py-execute-class-python - :help "Execute class through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-class-ipython" py-execute-class-ipython - :help "Execute class through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-class-python3" py-execute-class-python3 - :help "Execute class through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-class-python2" py-execute-class-python2 - :help "Execute class through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-class-python2.7" py-execute-class-python2.7 - :help "Execute class through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-class-jython" py-execute-class-jython - :help "Execute class through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-class-python3.3" py-execute-class-python3.3 - :help "Execute class through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-class-bpython" py-execute-class-bpython - :help "Execute class through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-class-python-dedicated" py-execute-class-python-dedicated - :help "Execute class through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-ipython-dedicated" py-execute-class-ipython-dedicated - :help "Execute class through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python3-dedicated" py-execute-class-python3-dedicated - :help "Execute class through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python2-dedicated" py-execute-class-python2-dedicated - :help "Execute class through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python2.7-dedicated" py-execute-class-python2.7-dedicated - :help "Execute class through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-jython-dedicated" py-execute-class-jython-dedicated - :help "Execute class through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-python3.3-dedicated" py-execute-class-python3.3-dedicated - :help "Execute class through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-class-bpython-dedicated" py-execute-class-bpython-dedicated - :help "Execute class through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-class-python-switch" py-execute-class-python-switch - :help "Execute class through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-class-ipython-switch" py-execute-class-ipython-switch - :help "Execute class through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-class-python3-switch" py-execute-class-python3-switch - :help "Execute class through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-class-python2-switch" py-execute-class-python2-switch - :help "Execute class through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-class-python2.7-switch" py-execute-class-python2.7-switch - :help "Execute class through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-class-jython-switch" py-execute-class-jython-switch - :help "Execute class through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-class-python3.3-switch" py-execute-class-python3.3-switch - :help "Execute class through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-class-bpython-switch" py-execute-class-bpython-switch - :help "Execute class through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-class-python-dedicated-switch" py-execute-class-python-dedicated-switch - :help "Execute class through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-ipython-dedicated-switch" py-execute-class-ipython-dedicated-switch - :help "Execute class through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python3-dedicated-switch" py-execute-class-python3-dedicated-switch - :help "Execute class through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python2-dedicated-switch" py-execute-class-python2-dedicated-switch - :help "Execute class through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python2.7-dedicated-switch" py-execute-class-python2.7-dedicated-switch - :help "Execute class through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-jython-dedicated-switch" py-execute-class-jython-dedicated-switch - :help "Execute class through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-python3.3-dedicated-switch" py-execute-class-python3.3-dedicated-switch - :help "Execute class through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-class-bpython-dedicated-switch" py-execute-class-bpython-dedicated-switch - :help "Execute class through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; region - ("Execute region " - :help "Execute region functions" - - ["py-execute-region-python" py-execute-region-python - :help "Execute region through a Python interpreter. - With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-region-ipython" py-execute-region-ipython - :help "Execute region through an IPython interpreter. - With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-region-python3" py-execute-region-python3 - :help "Execute region through a Python3 interpreter. - With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-region-python2" py-execute-region-python2 - :help "Execute region through a Python2 interpreter. - With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-region-python2.7" py-execute-region-python2.7 - :help "Execute region through a Python2.7 interpreter. - With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-region-jython" py-execute-region-jython - :help "Execute region through a Jython interpreter. - With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-region-python3.3" py-execute-region-python3.3 - :help "Execute region through a Python3.3 interpreter. - With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-region-bpython" py-execute-region-bpython - :help "Execute region through a Bpython interpreter. - With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated - - ["py-execute-region-python-dedicated" py-execute-region-python-dedicated - :help "Execute region through a unique Python interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-ipython-dedicated" py-execute-region-ipython-dedicated - :help "Execute region through a unique IPython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python3-dedicated" py-execute-region-python3-dedicated - :help "Execute region through a unique Python3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python2-dedicated" py-execute-region-python2-dedicated - :help "Execute region through a unique Python2 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python2.7-dedicated" py-execute-region-python2.7-dedicated - :help "Execute region through a unique Python2.7 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-jython-dedicated" py-execute-region-jython-dedicated - :help "Execute region through a unique Jython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-python3.3-dedicated" py-execute-region-python3.3-dedicated - :help "Execute region through a unique Python3.3 interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - - ["py-execute-region-bpython-dedicated" py-execute-region-bpython-dedicated - :help "Execute region through a unique Bpython interpreter. -Optional \\[universal-argument] forces switch to output buffer, ignores `py-switch-buffers-on-execute-p'. "] - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" ;; switch - - ["py-execute-region-python-switch" py-execute-region-python-switch - :help "Execute region through a Python interpreter. -With \\[universal-argument] use an unique Python interpreter. "] - - ["py-execute-region-ipython-switch" py-execute-region-ipython-switch - :help "Execute region through an IPython interpreter. -With \\[universal-argument] use an unique IPython interpreter. "] - - ["py-execute-region-python3-switch" py-execute-region-python3-switch - :help "Execute region through a Python3 interpreter. -With \\[universal-argument] use an unique Python3 interpreter. "] - - ["py-execute-region-python2-switch" py-execute-region-python2-switch - :help "Execute region through a Python2 interpreter. -With \\[universal-argument] use an unique Python2 interpreter. "] - - ["py-execute-region-python2.7-switch" py-execute-region-python2.7-switch - :help "Execute region through a Python2.7 interpreter. -With \\[universal-argument] use an unique Python2.7 interpreter. "] - - ["py-execute-region-jython-switch" py-execute-region-jython-switch - :help "Execute region through a Jython interpreter. -With \\[universal-argument] use an unique Jython interpreter. "] - - ["py-execute-region-python3.3-switch" py-execute-region-python3.3-switch - :help "Execute region through a Python3.3 interpreter. -With \\[universal-argument] use an unique Python3.3 interpreter. "] - - ["py-execute-region-bpython-switch" py-execute-region-bpython-switch - :help "Execute region through a Bpython interpreter. -With \\[universal-argument] use an unique Bpython interpreter. "] - ;; dedicated-switch - - ["py-execute-region-python-dedicated-switch" py-execute-region-python-dedicated-switch - :help "Execute region through a unique Python interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-ipython-dedicated-switch" py-execute-region-ipython-dedicated-switch - :help "Execute region through a uniquen IPython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python3-dedicated-switch" py-execute-region-python3-dedicated-switch - :help "Execute region through a unique Python3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python2-dedicated-switch" py-execute-region-python2-dedicated-switch - :help "Execute region through a unique Python2 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python2.7-dedicated-switch" py-execute-region-python2.7-dedicated-switch - :help "Execute region through a unique Python2.7 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-jython-dedicated-switch" py-execute-region-jython-dedicated-switch - :help "Execute region through a unique Jython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-python3.3-dedicated-switch" py-execute-region-python3.3-dedicated-switch - :help "Execute region through a unique Python3.3 interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - - ["py-execute-region-bpython-dedicated-switch" py-execute-region-bpython-dedicated-switch - :help "Execute region through a unique Bpython interpreter. -Switch to output buffer; ignores `py-switch-buffers-on-execute-p' "] - )) - - ;; file - ("Execute file " - :help "Execute file functions" - - ["Execute file python" py-execute-file-python - :help " `py-execute-file-python' -Send file to a Python interpreter. "] - - ["Execute file ipython" py-execute-file-ipython - :help " `py-execute-file-ipython' -Send file to a Ipython interpreter. "] - - ["Execute file python3" py-execute-file-python3 - :help " `py-execute-file-python3' -Send file to a Python3 interpreter. "] - - ["Execute file python2" py-execute-file-python2 - :help " `py-execute-file-python2' -Send file to a Python2 interpreter. "] - - ["Execute file python2.7" py-execute-file-python2.7 - :help " `py-execute-file-python2.7' -Send file to a Python2.7 interpreter. "] - - ["Execute file jython" py-execute-file-jython - :help " `py-execute-file-jython' -Send file to a Jython interpreter. "] - - ["Execute file python3.3" py-execute-file-python3.3 - :help " `py-execute-file-python3.3' -Send file to a Python3.3 interpreter. "] - - ["Execute file bpython" py-execute-file-bpython - :help " `py-execute-file-bpython' -Send file to a Bpython interpreter. "] - - ("Ignoring defaults " - :help "Commands will ignore default setting of -`py-switch-buffers-on-execute-p' and `py-split-windows-on-execute-p'" - - ["Execute file python switch" py-execute-file-python-switch - :help " `py-execute-file-python-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python no-switch" py-execute-file-python-no-switch - :help " `py-execute-file-python-no-switch' -Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python dedicated" py-execute-file-python-dedicated - :help " `py-execute-file-python-dedicated' -Send file to a Python interpreter. - -Uses a dedicated shell. "] - - ["Execute file python dedicated switch" py-execute-file-python-dedicated-switch - :help " `py-execute-file-python-dedicated-switch' -Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython switch" py-execute-file-ipython-switch - :help " `py-execute-file-ipython-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file ipython no-switch" py-execute-file-ipython-no-switch - :help " `py-execute-file-ipython-no-switch' -Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file ipython dedicated" py-execute-file-ipython-dedicated - :help " `py-execute-file-ipython-dedicated' -Send file to a Ipython interpreter. - -Uses a dedicated shell. "] - - ["Execute file ipython dedicated switch" py-execute-file-ipython-dedicated-switch - :help " `py-execute-file-ipython-dedicated-switch' -Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 switch" py-execute-file-python3-switch - :help " `py-execute-file-python3-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3 no-switch" py-execute-file-python3-no-switch - :help " `py-execute-file-python3-no-switch' -Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3 dedicated" py-execute-file-python3-dedicated - :help " `py-execute-file-python3-dedicated' -Send file to a Python3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3 dedicated switch" py-execute-file-python3-dedicated-switch - :help " `py-execute-file-python3-dedicated-switch' -Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 switch" py-execute-file-python2-switch - :help " `py-execute-file-python2-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2 no-switch" py-execute-file-python2-no-switch - :help " `py-execute-file-python2-no-switch' -Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2 dedicated" py-execute-file-python2-dedicated - :help " `py-execute-file-python2-dedicated' -Send file to a Python2 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2 dedicated switch" py-execute-file-python2-dedicated-switch - :help " `py-execute-file-python2-dedicated-switch' -Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 switch" py-execute-file-python2.7-switch - :help " `py-execute-file-python2.7-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python2.7 no-switch" py-execute-file-python2.7-no-switch - :help " `py-execute-file-python2.7-no-switch' -Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python2.7 dedicated" py-execute-file-python2.7-dedicated - :help " `py-execute-file-python2.7-dedicated' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python2.7 dedicated switch" py-execute-file-python2.7-dedicated-switch - :help " `py-execute-file-python2.7-dedicated-switch' -Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython switch" py-execute-file-jython-switch - :help " `py-execute-file-jython-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file jython no-switch" py-execute-file-jython-no-switch - :help " `py-execute-file-jython-no-switch' -Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file jython dedicated" py-execute-file-jython-dedicated - :help " `py-execute-file-jython-dedicated' -Send file to a Jython interpreter. - -Uses a dedicated shell. "] - - ["Execute file jython dedicated switch" py-execute-file-jython-dedicated-switch - :help " `py-execute-file-jython-dedicated-switch' -Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 switch" py-execute-file-python3.3-switch - :help " `py-execute-file-python3.3-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file python3.3 no-switch" py-execute-file-python3.3-no-switch - :help " `py-execute-file-python3.3-no-switch' -Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file python3.3 dedicated" py-execute-file-python3.3-dedicated - :help " `py-execute-file-python3.3-dedicated' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. "] - - ["Execute file python3.3 dedicated switch" py-execute-file-python3.3-dedicated-switch - :help " `py-execute-file-python3.3-dedicated-switch' -Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython switch" py-execute-file-bpython-switch - :help " `py-execute-file-bpython-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - - ["Execute file bpython no-switch" py-execute-file-bpython-no-switch - :help " `py-execute-file-bpython-no-switch' -Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "nil". "] - - ["Execute file bpython dedicated" py-execute-file-bpython-dedicated - :help " `py-execute-file-bpython-dedicated' -Send file to a Bpython interpreter. - -Uses a dedicated shell. "] - - ["Execute file bpython dedicated switch" py-execute-file-bpython-dedicated-switch - :help " `py-execute-file-bpython-dedicated-switch' -Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value "non-nil". "] - ) - ) - ) - - "-" - - ("Virtualenv" - - ["Virtualenv workon" virtualenv-workon - :help " runs `virtualenv-workon' - -Make sure virtualenv is provided - -"] - - ["Virtualenv activate" virtualenv-activate - :help " `virtualenv-activate' - -Activate the virtualenv located in DIR. "] - - ["Virtualenv deactivate" virtualenv-deactivate - :help " `virtualenv-deactivate' - -Deactivate the current virtual enviroment. "] - - ["Virtualenv p" virtualenv-p - :help " `virtualenv-p' - -Check if a directory is a virtualenv. "] - - ) - - ["Execute import or reload" py-execute-import-or-reload - :help " `py-execute-import-or-reload' - -Import the current buffer's file in a Python interpreter. - -If the file has already been imported, then do reload instead to get -the latest version. - -If the file's name does not end in ".py", then do execfile instead. - -If the current buffer is not visiting a file, do `py-execute-buffer' -instead. - -If the file local variable `py-master-file' is non-nil, import or -reload the named file instead of the buffer's file. The file may be -saved based on the value of `py-execute-import-or-reload-save-p'. - -See also `M-x py-execute-region'. - -This may be preferable to `M-x py-execute-buffer' because: - - - Definitions stay in their module rather than appearing at top - level, where they would clutter the global namespace and not affect - uses of qualified names (MODULE.NAME). - - - The Python debugger gets line number information about the functions. "] - - ("Help" - - ["Describe mode" py-describe-mode t] - - ["Help on symbol" py-help-at-point - :help "`py-help-at-point'\n -Use pydoc on symbol at point"] - - ;; ["py-complete-help" py-complete-help - ;; :help " `py-complete-help' - ;; Get help on a Python expression.\n - ;; Needs Pymacs "] - ;; - ;; ["Help thing at point" py-complete-help-thing-at-point - ;; :help " `py-complete-help-thing-at-point'\n - ;; Needs Pymacs "] - - ;; ["Signature" py-complete-signature-expr - ;; :help " Print object's signature\n - ;; Needs Pymacs"] - - ) - - ["Debugger" pdb :help "`pdb' Run pdb under GUD"] - - ("Checks" - - ["pychecker-run" py-pychecker-run - :help "`py-pychecker-run' -Run pychecker - -Call `easy_install pyflakes' resp. `pip... 'if not available"] - - ("Pylint " - :help "Extendet report options - -Call `easy_install pylint' resp. `pip...' if not available" - - ["py-pylint-run" py-pylint-run - :help "`py-pylint-run' -Pylint will display a number of messages as it analyzes the code, -as well as some statistics about the number of warnings and -errors found in different files - unless called with arg \"--errors-only\". The messages are classified -under various categories such as errors and warnings - -Pylint checks length of lines of code, if variable names are -well-formed according to your coding standard, if declared -interfaces are truly implemented, and much more. Additionally, it -is possible to write plugins. - -Call `easy_install pylint' resp. `pip...' if not available -"] - - ["py-pylint-help" py-pylint-help - :help "`py-pylint-help' -List extendet report options -"] - ["pylint-flymake-mode" pylint-flymake-mode - :help "`pylint-flymake-mode' -Toggle flymake-mode running `pylint' -"]) - - ("pep8 " - :help "Check formatting - -Call `easy_install pep8' resp. `pip...' if not available" - - ["pep8-run" py-pep8-run - :help "`py-pep8-run' -Check formatting (default on the file currently visited) - -Call `easy_install pep8' resp. `pip...' if not available -"] - - ["pep8-help" py-pep8-help - :help "`py-pep8-help' -Display help for pep8 format checker) -"] - - ["pep8-flymake-mode" pep8-flymake-mode - :help "`pep8-flymake-mode' -Toggle flymake-mode running `pep8' -"]) - - ("Pyflakes " :help "Non intrusive code checker - -Call `easy_install pyflakes' resp. `pip...' if not available" - - ["pyflakes-run" py-pyflakes-run :help - "`py-pyflakes-run' Run pyflakes - -Call `easy_install pyflakes' resp. `pip...' if not available"] - - ["pyflakes-help" py-pyflakes-help :help - "`py-pyflakes-help' Display help for - Pyflakes "] - - ["pyflakes-flymake-mode" pyflakes-flymake-mode :help - "`pyflakes-flymake-mode' -Toggle flymake-mode running `pyflakes' "] - - ) - - ("Flake8 " :help - "code checker running " - - ["Flake8 run" py-flake8-run - :help " `py-flake8-run' - - Flake8 is a wrapper around these tools: - - PyFlakes - - pep8 - - Ned Batchelder's McCabe script - - It also adds features: - - files that contain this line are skipped:: - # flake8: noqa - - lines that contain a ``# noqa`` comment at the end will not issue warnings. - - a Git and a Mercurial hook. - - a McCabe complexity checker. - - extendable through ``flake8.extension`` entry points. - -. "] - - ["Flake8 help" py-flake8-help - :help " `py-flake8-help' - -Display flake8 command line help messages. "] - - ) - - ("Pyflakes-pep8 " :help - "Non intrusive code checker running `pyflakes' and `pep8' -call `easy_install pyflakes' resp. `pip...' and `easy_install pep8' if basics not available" - - ["pyflakespep8-run" py-pyflakespep8-run :help - "`py-pyflakespep8-run' Run `pyflakespep8' - -Call `easy_install pyflakes' resp. `pip...' if not available"] - - ["pyflakespep8-help" py-pyflakespep8-help :help - "`py-pyflakespep8-help' Display help for - Pyflakespep8 "] - - ["pyflakespep8-flymake-mode" pyflakespep8-flymake-mode :help - "`pyflakespep8-flymake-mode' -Toggle flymake-mode running `pyflakespep8' "]) - - ) - - ("Customize" - - ["Python-mode customize group" (customize-group 'python-mode) - :help "Open the customization buffer for Python mode"] - ("Switches" - :help "Toggle useful modes like `highlight-indentation'" - - ("Interpreter" - - ["Execute without temporary file" - (setq py-execute-no-temp-p - (not py-execute-no-temp-p)) - :help " `py-execute-no-temp-p' -Seems Emacs-24.3 provided a way executing stuff without temporary files. -In experimental state yet " - :style toggle :selected py-execute-no-temp-p] - - ["Warn tmp files left " - (setq py-warn-tmp-files-left-p - (not py-warn-tmp-files-left-p)) - :help "Messages a warning, when `py-temp-directory' contains files susceptible being left by previous Python-mode sessions. See also lp:987534 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-warn-tmp-files-left-p] - - ["Shell prompt read only" - (setq py-shell-prompt-read-only - (not py-shell-prompt-read-only)) - :help "If non-nil, the python prompt is read only. Setting this -variable will only effect new shells.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-shell-prompt-read-only] - - ["Remove cwd from path" - (setq py-remove-cwd-from-path - (not py-remove-cwd-from-path)) - :help "Whether to allow loading of Python modules from the current directory. -If this is non-nil, Emacs removes '' from sys.path when starting -an inferior Python process. This is the default, for security -reasons, as it is easy for the Python process to be started -without the user's realization (e.g. to perform completion).Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-remove-cwd-from-path] - - ["Honor IPYTHONDIR " - (setq py-honor-IPYTHONDIR-p - (not py-honor-IPYTHONDIR-p)) - :help "When non-nil ipython-history file is constructed by \$IPYTHONDIR -followed by "/history". Default is nil. - -Otherwise value of py-ipython-history is used. Use `M-x customize-variable' to set it permanently" -:style toggle :selected py-honor-IPYTHONDIR-p] - - ["Honor PYTHONHISTORY " - (setq py-honor-PYTHONHISTORY-p - (not py-honor-PYTHONHISTORY-p)) - :help "When non-nil python-history file is set by \$PYTHONHISTORY -Default is nil. - -Otherwise value of py-python-history is used. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-honor-PYTHONHISTORY-p] - - ["Enforce py-shell-name" force-py-shell-name-p-on - :help "Enforce customized default `py-shell-name' should upon execution. "] - - ["Don't enforce default interpreter" force-py-shell-name-p-off - :help "Make execute commands guess interpreter from environment"] - - ["Enforce local Python shell " py-force-local-shell-on - :help "Locally indicated Python being enforced upon sessions execute commands. "] - - ["Remove local Python shell enforcement, restore default" py-force-local-shell-off - :help "Restore `py-shell-name' default value and `behaviour'. "] - - ["Run `py-shell' at start" - (setq py-start-run-py-shell - (not py-start-run-py-shell)) - :help "If `python-mode' should start a python-shell, `py-shell'. - -Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-start-run-py-shell] - - ["Start run ipython shell" - (setq py-start-run-ipython-shell - (not py-start-run-ipython-shell)) - :help "If `python-mode' should start an ipython-shell. - -Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-start-run-ipython-shell] - - ) - - ("Execute" - - ["Force shell name " - (setq py-force-py-shell-name-p - (not py-force-py-shell-name-p)) - :help "When `t', execution with kind of Python specified in `py-shell-name' is enforced, possibly shebang doesn't take precedence. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-force-py-shell-name-p] - - ["Enforce py-output-buffer" - (setq py-enforce-output-buffer-p - (not py-enforce-output-buffer-p)) - :help " `py-enforce-output-buffer-p' - -When non-nil, value of `py-output-buffer' is used for output, -regardless of environment. Default is nil." - :style toggle :selected py-enforce-output-buffer-p] - - ["Cleanup temporary" - (setq py-cleanup-temporary - (not py-cleanup-temporary)) - :help "If temporary buffers and files used by functions executing region should be deleted afterwards. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-cleanup-temporary] - - ["Execute no temp " - (setq py-execute-no-temp-p - (not py-execute-no-temp-p)) - :help "Seems Emacs-24.3 provided a way executing stuff without temporary files. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-execute-no-temp-p] - - ["Execute \"if name == main\" blocks p" - (setq py-if-name-main-permission-p - (not py-if-name-main-permission-p)) - :help " `py-if-name-main-permission-p' - -Allow execution of code inside blocks delimited by -if __name__ == '__main__' - -Default is non-nil. " - :style toggle :selected py-if-name-main-permission-p] - - ["Ask about save" - (setq py-ask-about-save - (not py-ask-about-save)) - :help "If not nil, ask about which buffers to save before executing some code. -Otherwise, all modified buffers are saved without asking.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-ask-about-save] - - ["Store result" - (setq py-store-result-p - (not py-store-result-p)) - :help " `py-store-result-p' - -When non-nil, put resulting string of `py-execute-...' into kill-ring, so it might be yanked. " - :style toggle :selected py-store-result-p] - - ["Prompt on changed " - (setq py-prompt-on-changed-p - (not py-prompt-on-changed-p)) - :help "When called interactively, ask for save before a changed buffer is sent to interpreter. - -Default is `t'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-prompt-on-changed-p] - - ["Dedicated process " - (setq py-dedicated-process-p - (not py-dedicated-process-p)) - :help "If commands executing code use a dedicated shell. - -Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-dedicated-process-p] - - ) - - ("TAB related" - - ["indent-tabs-mode" - (setq indent-tabs-mode - (not indent-tabs-mode)) - :help "Indentation can insert tabs if this is non-nil. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected indent-tabs-mode] - - ["Tab indent" - (setq py-tab-indent - (not py-tab-indent)) - :help "Non-nil means TAB in Python mode calls `py-indent-line'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-indent] - - ["Tab shifts region " - (setq py-tab-shifts-region-p - (not py-tab-shifts-region-p)) - :help "If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil -See also `py-tab-indents-region-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-shifts-region-p] - - ["Tab indents region " - (setq py-tab-indents-region-p - (not py-tab-indents-region-p)) - :help "When `t' and first TAB doesn't shift, indent-region is called. - -Default is nil -See also `py-tab-shifts-region-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-indents-region-p] - - ) - - ("Filling" - - ("Docstring styles" - :help "Toggle values of `py-docstring-style' -In order to set permanently customize this variable" - - ("Nil" - :help "Toggle nil value of `py-docstring-style' -Use `M-x customize-variable' to set it permanently" - - ["Toggle nil docstring style" toggle-py-nil-docstring-style - :help "If nil docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Nil on" py-nil-docstring-style-on - :help "Make sure, nil docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Nil off" py-nil-docstring-style-off - :help "Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Onetwo" - :help "Toggle onetwo value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle onetwo docstring style" toggle-py-onetwo-docstring-style - :help "If onetwo docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Onetwo on" py-onetwo-docstring-style-on - :help "Make sure, onetwo docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Onetwo off" py-onetwo-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Pep 257" - :help "Toggle pep-257 value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle pep 257 docstring style" toggle-py-pep-257-docstring-style - :help "If pep-257 docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 on" py-pep-257-docstring-style-on - :help "Make sure, pep-257 docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 off" py-pep-257-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Pep 257 nn" - :help "Toggle pep-257-nn value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle pep 257 nn docstring style" toggle-py-pep-257-nn-docstring-style - :help "If pep-257-nn docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 nn on" py-pep-257-nn-docstring-style-on - :help "Make sure, pep-257-nn docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Pep 257 nn off" py-pep-257-nn-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Symmetric" - :help "Toggle symmetric value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle symmetric docstring style" toggle-py-symmetric-docstring-style - :help "If symmetric docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Symmetric on" py-symmetric-docstring-style-on - :help "Make sure, symmetric docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Symmetric off" py-symmetric-docstring-style-off - :help " Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - - ("Django" - :help "Toggle django value of `py-docstring-style' -In order to set permanently customize this variable" - - ["Toggle django docstring style" toggle-py-django-docstring-style - :help "If django docstring-style should be on or off - Returns value of `py-docstring-style' switched to - -Use `M-x customize-variable' to set it permanently"] - - ["Django on" py-django-docstring-style-on - :help "Make sure, django docstring-style is on - -Use `M-x customize-variable' to set it permanently"] - - ["Django off" py-django-docstring-style-off - :help "Restores default value of `py-docstring-style' - -Use `M-x customize-variable' to set it permanently"]) - ) - - ["Fill-paragraph fill docstring " - (setq py-paragraph-fill-docstring-p - (not py-paragraph-fill-docstring-p)) - :help "If `py-fill-paragraph', when inside a docstring, should fill the complete string. - -Default is nil. - -Convenient use of `M-q' inside docstrings -See also `py-docstring-style' -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-paragraph-fill-docstring-p] - - ["Auto-fill mode" - (setq py-set-fill-column-p - (not py-set-fill-column-p)) - :help "Set Python specific `fill-column' according to `py-docstring-fill-column' and `py-comment-fill-column' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-set-fill-column-p] - - ["Use current dir when execute" - (setq py-use-current-dir-when-execute-p - (not py-use-current-dir-when-execute-p)) - :help " `toggle-py-use-current-dir-when-execute-p' - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-current-dir-when-execute-p] - - ) - - ("Indent" - - ["Close at start column" - (setq py-closing-list-dedents-bos - (not py-closing-list-dedents-bos)) - :help "When non-nil, indent list's closing delimiter like start-column. - -It will be lined up under the first character of - the line that starts the multi-line construct, as in: - -my_list = \[ - 1, 2, 3, - 4, 5, 6, -] - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-dedents-bos] - - ["Closing list keeps space" - (setq py-closing-list-keeps-space - (not py-closing-list-keeps-space)) - :help "If non-nil, closing parenthesis dedents onto column of opening plus `py-closing-list-space', default is nil Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-keeps-space] - - ["Closing list space" - (setq py-closing-list-space - (not py-closing-list-space)) - :help "Number of chars, closing parenthesis outdent from opening, default is 1 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-closing-list-space] - - ["Tab shifts region " - (setq py-tab-shifts-region-p - (not py-tab-shifts-region-p)) - :help "If `t', TAB will indent/cycle the region, not just the current line. - -Default is nil -See also `py-tab-indents-region-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-tab-shifts-region-p] - - ["Lhs inbound indent" - (setq py-lhs-inbound-indent - (not py-lhs-inbound-indent)) - :help "When line starts a multiline-assignment: How many colums indent should be more than opening bracket, brace or parenthesis. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-lhs-inbound-indent] - - ["Continuation offset" - (setq py-continuation-offset - (not py-continuation-offset)) - :help "With numeric ARG different from 1 py-continuation-offset is set to that value; returns py-continuation-offset. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-continuation-offset] - - ["Electric colon" - (setq py-electric-colon-active-p - (not py-electric-colon-active-p)) - :help " `py-electric-colon-active-p' - -`py-electric-colon' feature. Default is `nil'. See lp:837065 for discussions. " - :style toggle :selected py-electric-colon-active-p] - - ["Electric colon at beginning of block only" - (setq py-electric-colon-bobl-only - (not py-electric-colon-bobl-only)) - :help "When inserting a colon, do not indent lines unless at beginning of block. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-bobl-only] - - ["Electric yank active " - (setq py-electric-yank-active-p - (not py-electric-yank-active-p)) - :help " When non-nil, `yank' will be followed by an `indent-according-to-mode'. - -Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-yank-active-p] - - ["Electric kill backward " - (setq py-electric-kill-backward-p - (not py-electric-kill-backward-p)) - :help "Affects `py-electric-backspace'. Default is nil. - -If behind a delimited form of braces, brackets or parentheses, -backspace will kill it's contents - -With when cursor after -my_string\[0:1] ---------------^ - -==> - -my_string\[] -----------^ - -In result cursor is insided emptied delimited form.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-kill-backward-p] - - ["Trailing whitespace smart delete " - (setq py-trailing-whitespace-smart-delete-p - (not py-trailing-whitespace-smart-delete-p)) - :help "Default is nil. When t, python-mode calls - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local) - -Also commands may delete trailing whitespace by the way. -When editing other peoples code, this may produce a larger diff than expected Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-trailing-whitespace-smart-delete-p] - - ["Newline delete trailing whitespace " - (setq py-newline-delete-trailing-whitespace-p - (not py-newline-delete-trailing-whitespace-p)) - :help "Delete trailing whitespace maybe left by `py-newline-and-indent'. - -Default is `t'. See lp:1100892 Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-newline-delete-trailing-whitespace-p] - - ["Dedent keep relative column" - (setq py-dedent-keep-relative-column - (not py-dedent-keep-relative-column)) - :help "If point should follow dedent or kind of electric move to end of line. Default is t - keep relative position. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-dedent-keep-relative-column] - - ["Indent paren spanned multilines " - (setq py-indent-paren-spanned-multilines-p - (not py-indent-paren-spanned-multilines-p)) - :help "If non-nil, indents elements of list a value of `py-indent-offset' to first element: - -def foo(): - if (foo && - baz): - bar() - -Default lines up with first element: - -def foo(): - if (foo && - baz): - bar() -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-paren-spanned-multilines-p] - - ["Indent honors multiline listing" - (setq py-indent-honors-multiline-listing - (not py-indent-honors-multiline-listing)) - :help "If `t', indents to 1\+ column of opening delimiter. If `nil', indent adds one level to the beginning of statement. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-honors-multiline-listing] - - ["Indent comment " - (setq py-indent-comments - (not py-indent-comments)) - :help "If comments should be indented like code. Default is `nil'. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-comments] - - ["Uncomment indents " - (setq py-uncomment-indents-p - (not py-uncomment-indents-p)) - :help "When non-nil, after uncomment indent lines. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-uncomment-indents-p] - - ["Indent honors inline comment" - (setq py-indent-honors-inline-comment - (not py-indent-honors-inline-comment)) - :help "If non-nil, indents to column of inlined comment start. -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-honors-inline-comment] - - ["Kill empty line" - (setq py-kill-empty-line - (not py-kill-empty-line)) - :help "If t, py-indent-forward-line kills empty lines. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-kill-empty-line] - - ("Smart indentation" - :help "Toggle py-smart-indentation' - -Use `M-x customize-variable' to set it permanently" - - ["Toggle py-smart-indentation" toggle-py-smart-indentation - :help "Toggles py-smart-indentation - -Use `M-x customize-variable' to set it permanently"] - - ["py-smart-indentation on" py-smart-indentation-on - :help "Switches py-smart-indentation on - -Use `M-x customize-variable' to set it permanently"] - - ["py-smart-indentation off" py-smart-indentation-off - :help "Switches py-smart-indentation off - -Use `M-x customize-variable' to set it permanently"] - - ) - - ["Beep if tab change" - (setq py-beep-if-tab-change - (not py-beep-if-tab-change)) - :help "Ring the bell if `tab-width' is changed. -If a comment of the form - - # vi:set tabsize=: - -is found before the first code line when the file is entered, and the -current value of (the general Emacs variable) `tab-width' does not -equal , `tab-width' is set to , a message saying so is -displayed in the echo area, and if `py-beep-if-tab-change' is non-nil -the Emacs bell is also rung as a warning.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-beep-if-tab-change] - - ["Highlight indentation" highlight-indentation - :help "Toggle highlight indentation. - -Use `M-x customize-variable' to set it permanently - -Make sure `highlight-indentation' is installed" - - ] - - ["Electric comment " - (setq py-electric-comment-p - (not py-electric-comment-p)) - :help "If \"#\" should call `py-electric-comment'. Default is `nil'. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-comment-p] - - ["Electric comment add space " - (setq py-electric-comment-add-space-p - (not py-electric-comment-add-space-p)) - :help "If py-electric-comment should add a space. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-comment-add-space-p] - - ["Empty line closes " - (setq py-empty-line-closes-p - (not py-empty-line-closes-p)) - :help "When non-nil, dedent after empty line following block - -if True: - print(\"Part of the if-statement\") - -print(\"Not part of the if-statement\") - -Default is nil - -If non-nil, a C-j from empty line dedents. -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-empty-line-closes-p] - - ) - - ("Fontification" - - ["Mark decorators" - (setq py-mark-decorators - (not py-mark-decorators)) - :help "If py-mark-def-or-class functions should mark decorators too. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-mark-decorators] - - ["Fontify shell buffer " - (setq py-fontify-shell-buffer-p - (not py-fontify-shell-buffer-p)) - :help "If code in Python shell should be highlighted as in script buffer. - -Default is nil. - -If `t', related vars like `comment-start' will be set too. -Seems convenient when playing with stuff in IPython shell -Might not be TRT when a lot of output arrives Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-fontify-shell-buffer-p] - - ["Use font lock doc face " - (setq py-use-font-lock-doc-face-p - (not py-use-font-lock-doc-face-p)) - :help "If documention string inside of def or class get `font-lock-doc-face'. - -`font-lock-doc-face' inherits `font-lock-string-face'. - -Call M-x `customize-face' in order to have a visible effect. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-font-lock-doc-face-p] - - ) - ("Directory" - - ["Guess install directory " - (setq py-guess-py-install-directory-p - (not py-guess-py-install-directory-p)) - :help "If in cases, `py-install-directory' isn't set, `py-set-load-path'should guess it from `buffer-file-name'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-guess-py-install-directory-p] - - ["Use local default" - (setq py-use-local-default - (not py-use-local-default)) - :help "If `t', py-shell will use `py-shell-local-path' instead -of default Python. - -Making switch between several virtualenv's easier, - `python-mode' should deliver an installer, so named-shells pointing to virtualenv's will be available. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-local-default] - - ["Use current dir when execute " - (setq py-use-current-dir-when-execute-p - (not py-use-current-dir-when-execute-p)) - :help "When `t', current directory is used by Python-shell for output of `py-execute-buffer' and related commands. - -See also `py-execute-directory'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-use-current-dir-when-execute-p] - - ["Keep shell dir when execute " - (setq py-keep-shell-dir-when-execute-p - (not py-keep-shell-dir-when-execute-p)) - :help "Don't change Python shell's current working directory when sending code. - -See also `py-execute-directory'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-keep-shell-dir-when-execute-p] - - ["Fileless buffer use default directory " - (setq py-fileless-buffer-use-default-directory-p - (not py-fileless-buffer-use-default-directory-p)) - :help "When `py-use-current-dir-when-execute-p' is non-nil and no buffer-file exists, value of `default-directory' sets current working directory of Python output shellUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-fileless-buffer-use-default-directory-p] - ) - - ("Display" - - ["Modeline display full path " - (setq py-modeline-display-full-path-p - (not py-modeline-display-full-path-p)) - :help "If the full PATH/TO/PYTHON should be displayed in shell modeline. - -Default is nil. Note: when `py-shell-name' is specified with path, it's shown as an acronym in buffer-name already. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-modeline-display-full-path-p] - - ["Modeline acronym display home " - (setq py-modeline-acronym-display-home-p - (not py-modeline-acronym-display-home-p)) - :help "If the modeline acronym should contain chars indicating the home-directory. - -Default is nil Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-modeline-acronym-display-home-p] - - ["Hide show hide docstrings" - (setq py-hide-show-hide-docstrings - (not py-hide-show-hide-docstrings)) - :help "Controls if doc strings can be hidden by hide-showUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-hide-show-hide-docstrings] - - ["Hide comments when hiding all" - (setq py-hide-comments-when-hiding-all - (not py-hide-comments-when-hiding-all)) - :help "Hide the comments too when you do an `hs-hide-all'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-hide-comments-when-hiding-all] - - ["Max help buffer " - (setq py-max-help-buffer-p - (not py-max-help-buffer-p)) - :help "If \"\*Python-Help\*\"-buffer should appear as the only visible. - -Default is nil. In help-buffer, \"q\" will close it. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-max-help-buffer-p] - - ) - - ("Completion" - - ["Ipython complete use separate shell " - (setq ipython-complete-use-separate-shell-p - (not ipython-complete-use-separate-shell-p)) - :help "If `ipython-complete' should use a separate shell. Thus prompt-counter is not incremented by completion. Use `M-x customize-variable' to set it permanently" - :style toggle :selected ipython-complete-use-separate-shell-p] - - ["Set complete keymap " - (setq py-set-complete-keymap-p - (not py-set-complete-keymap-p)) - :help "If `py-complete-initialize', which sets up enviroment for Pymacs based py-complete, should load it's keys into `python-mode-map' - -Default is nil. -See also resp. edit `py-complete-set-keymap' Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-set-complete-keymap-p] - - ["No completion calls dabbrev expand " - (setq py-no-completion-calls-dabbrev-expand-p - (not py-no-completion-calls-dabbrev-expand-p)) - :help "If completion function should call dabbrev-expand when no completion found. Default is `t' - -See also `py-indent-no-completion-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-no-completion-calls-dabbrev-expand-p] - - ["Indent no completion " - (setq py-indent-no-completion-p - (not py-indent-no-completion-p)) - :help "If completion function should indent when no completion found. Default is `t' - -See also `py-no-completion-calls-dabbrev-expand-p'Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-indent-no-completion-p] - - ["Company pycomplete " - (setq py-company-pycomplete-p - (not py-company-pycomplete-p)) - :help "Load company-pycomplete stuff. Default is nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-company-pycomplete-p] - - ) - - ("Debug" - - ["Pdbtrack do tracking " - (setq py-pdbtrack-do-tracking-p - (not py-pdbtrack-do-tracking-p)) - :help "Controls whether the pdbtrack feature is enabled or not. -When non-nil, pdbtrack is enabled in all comint-based buffers, -e.g. shell buffers and the \*Python\* buffer. When using pdb to debug a -Python program, pdbtrack notices the pdb prompt and displays the -source file and line that the program is stopped at, much the same way -as gud-mode does for debugging C programs with gdb.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-pdbtrack-do-tracking-p] - - ["Jump on exception" - (setq py-jump-on-exception - (not py-jump-on-exception)) - :help "Jump to innermost exception frame in Python output buffer. -When this variable is non-nil and an exception occurs when running -Python code synchronously in a subprocess, jump immediately to the -source code of the innermost traceback frame. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-jump-on-exception] - - ["Highlight error in source " - (setq py-highlight-error-source-p - (not py-highlight-error-source-p )) - :help "Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-highlight-error-source-p] - - ["Pylint offer current " - (setq py-pylint-offer-current-p - (not py-pylint-offer-current-p)) - :help "If current buffers file should be offered for check. - -Default is non-nil. If nil, `py-pylint-run' offers filename from history Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-pylint-offer-current-p] - - ) - - ["Switch buffers on execute" - (setq py-switch-buffers-on-execute-p - (not py-switch-buffers-on-execute-p)) - :help "When non-nil switch to the Python output buffer. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-switch-buffers-on-execute-p] - - ["Split windows on execute" - (setq py-split-windows-on-execute-p - (not py-split-windows-on-execute-p)) - :help "When non-nil split windows. - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-split-windows-on-execute-p] - - ("Other" - - ["Defun use top level " - (setq py-defun-use-top-level-p - (not py-defun-use-top-level-p)) - :help "When non-nil, keys C-M-a, C-M-e address top-level form. - -Beginning- end-of-defun forms use -commands `py-beginning-of-top-level', `py-end-of-top-level' - -mark-defun marks top-level form at point etc. " - :style toggle :selected py-defun-use-top-level-p] - - ["Python mode v5 behavior" - (setq python-mode-v5-behavior-p - (not python-mode-v5-behavior-p)) - :help "Execute region through `shell-command-on-region' as -v5 did it - lp:990079. This might fail with certain chars - see UnicodeEncodeError lp:550661 - -Use `M-x customize-variable' to set it permanently" - :style toggle :selected python-mode-v5-behavior-p] - - ["Load pymacs " - (setq py-load-pymacs-p - (not py-load-pymacs-p)) - :help "If Pymacs related stuff should be loaded. - -Default is nil. - -Pymacs has been written by François Pinard and many others. -See original source: http://pymacs.progiciels-bpi.caUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-load-pymacs-p] - - ["Verbose " - (setq py-verbose-p - (not py-verbose-p)) - :help "If functions should report results. - -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-verbose-p] - - ["Edit only " - (setq py-edit-only-p - (not py-edit-only-p)) - :help "When `t' `python-mode' will not take resort nor check for installed Python executables. Default is nil. - -See bug report at launchpad, lp:944093. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-edit-only-p] - - ["Imenu create index " - (setq py-imenu-create-index-p - (not py-imenu-create-index-p)) - :help "Non-nil means Python mode creates and displays an index menu of functions and global variables. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-imenu-create-index-p] - - ["Imenu show method args " - (setq py-imenu-show-method-args-p - (not py-imenu-show-method-args-p)) - :help "Controls echoing of arguments of functions & methods in the Imenu buffer. -When non-nil, arguments are printed.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-imenu-show-method-args-p] - - ["Match paren mode" - (setq py-match-paren-mode - (not py-match-paren-mode)) - :help "Non-nil means, cursor will jump to beginning or end of a block. -This vice versa, to beginning first. -Sets `py-match-paren-key' in python-mode-map. -Customize `py-match-paren-key' which key to use. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-match-paren-mode] - - ["Close provides newline" - (setq py-close-provides-newline - (not py-close-provides-newline)) - :help "If a newline is inserted, when line after block isn't empty. Default is non-nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-close-provides-newline] - - ["Block comment prefix " - (setq py-block-comment-prefix-p - (not py-block-comment-prefix-p)) - :help "If py-comment inserts py-block-comment-prefix. - -Default is tUse `M-x customize-variable' to set it permanently" - :style toggle :selected py-block-comment-prefix-p] - - ["Empty comment line separates paragraph " - (setq empty-comment-line-separates-paragraph-p - (not empty-comment-line-separates-paragraph-p)) - :help "Consider paragraph start/end lines with nothing inside but comment sign. - -Default is non-nilUse `M-x customize-variable' to set it permanently" - :style toggle :selected empty-comment-line-separates-paragraph-p] - - ["Org cycle " - (setq py-org-cycle-p - (not py-org-cycle-p)) - :help "When non-nil, command `org-cycle' is available at shift-TAB, - -Default is nil. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-org-cycle-p] - - ("Underscore word syntax" - :help "Toggle `py-underscore-word-syntax-p'" - - ["Toggle underscore word syntax" toggle-py-underscore-word-syntax-p - :help " `toggle-py-underscore-word-syntax-p' - -If `py-underscore-word-syntax-p' should be on or off. - - Returns value of `py-underscore-word-syntax-p' switched to. . - -Use `M-x customize-variable' to set it permanently"] - - ["Underscore word syntax on" py-underscore-word-syntax-p-on - :help " `py-underscore-word-syntax-p-on' - -Make sure, py-underscore-word-syntax-p' is on. - -Returns value of `py-underscore-word-syntax-p'. . - -Use `M-x customize-variable' to set it permanently"] - - ["Underscore word syntax off" py-underscore-word-syntax-p-off - :help " `py-underscore-word-syntax-p-off' - -Make sure, `py-underscore-word-syntax-p' is off. - -Returns value of `py-underscore-word-syntax-p'. . - -Use `M-x customize-variable' to set it permanently"] - - ) - - ["Set pager cat" - (setq py-set-pager-cat-p - (not py-set-pager-cat-p)) - :help "If the shell environment variable \$PAGER should set to `cat'. - -If `t', use `C-c C-r' to jump to beginning of output. Then scroll normally. - -Avoids lp:783828, \"Terminal not fully functional\", for help('COMMAND') in python-shell - -When non-nil, imports module `os' Use `M-x customize-variable' to -set it permanently" - :style toggle :selected py-set-pager-cat-p] - - ["Current defun show" - (setq py-current-defun-show - (not py-current-defun-show)) - :help "If `py-current-defun' should jump to the definition, highlight it while waiting PY-WHICH-FUNC-DELAY seconds, before returning to previous position. - -Default is `t'.Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-current-defun-show] - - ("Autopair mode" - :help "Toggle `autopair-mode'" - - ["Toggle autopair mode" toggle-py-autopair-mode - :help " `toggle-autopair-mode' - -If `autopair-mode' should be on or off. - - Returns value of `autopair-mode ' switched to. "] - - ["Autopair mode on" py-autopair-mode-on - :help " `autopair-mode on' - -Make sure, `autopair-mode' is on. - -Returns value of `autopair-mode'. "] - - ["Autopair mode off" py-autopair-mode-off - :help " `autopair-mode' off - -Make sure, `autopair-mode' is off. - -Returns value of `autopair-mode'. "] - - ) - - ["Switch index-function" py-switch-imenu-index-function - :help "`py-switch-imenu-index-function' -Switch between `py-imenu-create-index' from 5.1 series and `py-imenu-create-index-new'."] - - ;; py-smart-operator-mode-p forms - ("Smart operator mode" - :help "Toggle `smart-operator-mode'" - - ["Toggle smart operator mode" toggle-py-smart-operator-mode-p - :help " `toggle-smart-operator-mode' - -If `smart-operator-mode' should be on or off. - - Returns value of `smart-operator-mode ' switched to. "] - - ["Smart operator mode on" py-smart-operator-mode-p-on - :help " `smart-operator-mode -on' - -Make sure, `smart-operator-mode' is on. - -Returns value of `smart-operator-mode'. "] - - ["Smart operator mode off" py-smart-operator-mode-p-off - :help " `smart-operator-mode' off - -Make sure, `smart-operator-mode' is off. - -Returns value of `smart-operator-mode'. "] - - ) - ) - ) - ) - - ("More... " - ("Edit commands " - - ("Kill " - - ["Kill statement" py-kill-statement - :help "`py-kill-statement' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill top level" py-kill-top-level - :help " `py-kill-top-level' - -Delete top-level form at point. - -Stores data in kill ring. Might be yanked back using `C-y'. "] - - ["Kill clause" py-kill-clause - :help "`py-kill-clause' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill block" py-kill-block - :help "`py-kill-block' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill minor block" py-kill-minor-block - :help " `py-kill-minor-block' - -Delete minor-block at point. - -Stores data in kill ring. Might be yanked back using `C-y'. "] - - ["Kill def-or-class" py-kill-def-or-class - :help "`py-kill-def-or-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill expression" py-kill-expression - :help "`py-kill-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill partial-expression" py-kill-partial-expression - :help "`py-kill-partial-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill class" py-kill-class - :help "`py-kill-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Kill def" py-kill-def - :help "`py-kill-def' -Delete innermost compound statement at point, store deleted string in kill-ring"]) - - ("Delete" - ["Delete statement " py-delete-statement - :help "`py-delete-statement' -Delete STATEMENT at point, don't store in kill-ring. "] - - ["Delete top-level " py-delete-top-level - :help "`py-delete-top-level' -Delete TOP-LEVEL at point, don't store in kill-ring. "] - - ["Delete block " py-delete-block - :help "`py-delete-block' -Delete BLOCK at point, don't store in kill-ring. "] - - ["Delete block-or-clause " py-delete-block-or-clause - :help "`py-delete-block-or-clause' -Delete BLOCK-OR-CLAUSE at point, don't store in kill-ring. "] - - ["Delete def " py-delete-def - :help "`py-delete-def' -Delete DEF at point, don't store in kill-ring. "] - - ["Delete class " py-delete-class - :help "`py-delete-class' -Delete CLASS at point, don't store in kill-ring. "] - - ["Delete def-or-class " py-delete-def-or-class - :help "`py-delete-def-or-class' -Delete DEF-OR-CLASS at point, don't store in kill-ring. "] - - ["Delete expression " py-delete-expression - :help "`py-delete-expression' -Delete EXPRESSION at point, don't store in kill-ring. "] - - ["Delete partial-expression " py-delete-partial-expression - :help "`py-delete-partial-expression' -Delete PARTIAL-EXPRESSION at point, don't store in kill-ring. "] - - ["Delete minor-block " py-delete-minor-block - :help "`py-delete-minor-block' -Delete MINOR-BLOCK at point, don't store in kill-ring. - -A minor block is started by a `for', `if', `try' or `with'. "] - ) - "-" - - ("Shift right " - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift minor block right" py-shift-minor-block-right - :help " `py-shift-minor-block-right' - -Indent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. "] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift block-or-clause right" py-shift-block-or-clause-right - :help "`py-shift-block-or-clause-right' -Shift block-or-clause right. "] - - ["Shift region left" py-shift-region-left - :help " `py-shift-region-left' - -Dedent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is dedented. -Returns indentation reached. "] - - ["Shift region right" py-shift-region-right - :help " `py-shift-region-right' - -Indent region according to `py-indent-offset' by COUNT times. - -If no region is active, current line is indented. -Returns indentation reached. "] - - ) - - ("Shift left " - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "] - - ["Shift minor block left" py-shift-minor-block-left - :help " `py-shift-minor-block-left' - -Dedent minor-block by COUNT spaces. - -COUNT defaults to `py-indent-offset', -use \[universal-argument] to specify a different value. - -Returns outmost indentation reached. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "] - - ["Shift block-or-clause left" py-shift-block-or-clause-left - :help "`py-shift-block-or-clause-left' -Shift block-or-clause left. "] - - ) - ("More" - :help "extended edit commands'" - - ["Empty out list backward" py-empty-out-list-backward - :help " `py-empty-out-list-backward' -Deletes all elements from list before point. "] - - ["Revert boolean assignent" py-boolswitch - :help " `py-boolswitch' -Edit the assigment of a boolean variable, rever them. - -I.e. switch it from \"True\" to \"False\" and vice versa "] - - ["Remove overlays at point" py-remove-overlays-at-point - :help " `py-remove-overlays-at-point' - -Remove overlays as set when `py-highlight-error-source-p' is non-nil. "] - - ) - - ) - - "-" - ("Forms " - ("Comment" - - ["Beginning of comment" py-beginning-of-comment - :help " `py-beginning-of-comment' -Go to beginning of comment at point. "] - - ["End of comment" py-end-of-comment - :help " `py-end-of-comment' - -Go to end of comment at point. "] - ) - ("Block" - ["Beginning of block" py-beginning-of-block - :help "`py-beginning-of-block' -Go to start of innermost compound statement at point"] - ["End of block" py-end-of-block - :help "`py-end-of-block' -Go to end of innermost compound statement at point"] - - ["Down block" py-down-block - :help "`py-down-block' - -Go to the beginning of next block below in buffer. - -Returns indentation if block found, nil otherwise. "] - - ["Up block" py-up-block - :help "`py-up-block' - -Go upwards to the beginning of next block below in buffer. - -Returns indentation if block found, nil otherwise. "] - - ["Copy block" py-copy-block - :help "`py-copy-block' -Copy innermost compound statement at point"] - - ["Kill block" py-kill-block - :help "`py-kill-block' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete block" py-delete-block - :help "`py-delete-block' -Delete innermost compound statement at point, don't store deleted string in kill-ring"] - - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - - ["Comment block" py-comment-block - :help " `py-comment-block' - -Comments block at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Top-level form" - - ["Beginning of top-level form" py-beginning-of-top-level - :help "`py-beginning-of-top-level' -Go to start of top-level form form at point"] - - ["End of top-level form" py-end-of-top-level - :help "`py-end-of-top-level' -Go to end of top-level form at point"] - - ["Down top-level form" py-down-top-level - :help "`py-down-top-level' - -Go to the beginning of top-level form below in buffer. "] - - ["Up top-level form" py-up-top-level - :help "`py-up-top-level' - -Go upwards to the beginning of next top-level form in buffer. "] - - ["Copy top-level form" py-copy-top-level - :help "`py-copy-top-level' -Copy innermost top-level form at point"] - - ["Kill top-level form" py-kill-top-level - :help "`py-kill-top-level' -Delete top-level form at point, store deleted string in kill-ring"] - - ["Delete top-level form" py-delete-top-level - :help "`py-delete-top-level' -Delete top-level form at point, don't store deleted string in kill-ring"] - - ["Comment top-level form" py-comment-top-level - :help " `py-comment-top-level' - -Comments top-level form at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Minor-block" - - ["Beginning of minor-block" py-beginning-of-minor-block - :help "`py-beginning-of-minor-block' -Go to start of innermost minor-block at point"] - ["End of minor-block" py-end-of-minor-block - :help "`py-end-of-minor-block' -Go to end of innermost minor-block at point"] - - ["Down minor-block" py-down-minor-block - :help "`py-down-minor-block' - -Go to the beginning of next minor-block below in buffer. - -Returns indentation if minor-block found, nil otherwise. "] - - ["Up minor-block" py-up-minor-block - :help "`py-up-minor-block' - -Go upwards to the beginning of next minor-block below in buffer. - -Returns indentation if minor-block found, nil otherwise. "] - - ["Copy minor-block" py-copy-minor-block - :help "`py-copy-minor-block' -Copy innermost minor-block at point"] - - ["Kill minor-block" py-kill-minor-block - :help "`py-kill-minor-block' -Delete innermost minor-block at point, store deleted string in kill-ring"] - - ["Delete minor-block" py-delete-minor-block - :help "`py-delete-minor-block' -Delete innermost minor-block at point, don't store deleted string in kill-ring"] - - ["Shift minor-block right" py-shift-minor-block-right - :help "`py-shift-minor-block-right' -Shift minor-block right. "] - - ["Shift minor-block left" py-shift-minor-block-left - :help "`py-shift-minor-block-left' -Shift minor-block left. "] - - ["Comment minor-block" py-comment-minor-block - :help " `py-comment-minor-block' - -Comments minor-block at point. - -Uses double hash (`#') comment starter when `py-minor-block-comment-prefix-p' is `t', -the default. "] - - ) - - ("Def-or-class " - - ["Beginning of Def-or-Class" py-beginning-of-def-or-class - :help "`py-beginning-of-def-or-class' -Go to start of innermost definition at point"] - - ["End of Def-or-Class" py-end-of-def-or-class - :help "`py-end-of-def-or-class' -Go to end of innermost function definition at point"] - - ["Down def-or-class" py-down-def-or-class - :help "`py-down-def-or-class' - -Go to the beginning of next def-or-class below in buffer. - -Returns indentation if def-or-class found, nil otherwise. "] - - ["Up def-or-class" py-up-def-or-class - :help "`py-up-def-or-class' - -Go upwards to the beginning of next def-or-class below in buffer. - -Returns indentation if def-or-class found, nil otherwise. "] - - ["Copy Def-or-Class" py-copy-def-or-class - :help "`py-copy-def-or-class' -Copy innermost definition at point"] - - ["Kill def-or-class" py-kill-def-or-class - :help "`py-kill-def-or-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete def-or-class" py-delete-def-or-class - :help "`py-delete-def-or-class' -Delete def-or-class at point, don't store deleted string in kill-ring"] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ["Comment def or class" py-comment-def-or-class - :help " `py-comment-def-or-class' - -Comments def-or-class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Clause " - - ["Beginning of clause" py-beginning-of-clause - :help "`py-beginning-of-clause' -Go to start of innermost compound statement at point"] - ["End of clause" py-end-of-clause - :help "`py-end-of-clause' -Go to end of innermost compound statement at point"] - - ["Down clause" py-down-clause - :help "`py-down-clause' - -Go to the beginning of next clause below in buffer. - -Returns indentation if clause found, nil otherwise. "] - - ["Up clause" py-up-clause - :help "`py-up-clause' - -Go upwards to the beginning of next clause below in buffer. - -Returns indentation if clause found, nil otherwise. "] - - ["Copy clause" py-copy-clause - :help "`py-copy-clause' -Copy innermost compound statement at point"] - - ["Kill clause" py-kill-clause - :help "`py-kill-clause' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete clause" py-delete-clause - :help "`py-delete-clause' -Delete innermost compound statement at point, don't store deleted string in kill-ring"] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "] - - ["Comment clause" py-comment-clause - :help " `py-comment-clause' - -Comments clause at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Statement " - - ["Beginning of Statement" py-beginning-of-statement - :help "`py-beginning-of-statement' -Go to start of innermost definition at point"] - - ["End of Statement" py-end-of-statement - :help "`py-end-of-statement' -Go to end of innermost function definition at point"] - - ["Copy statement" py-copy-statement - :help "`py-copy-statement' -Copy innermost definition at point"] - - ["Kill statement" py-kill-statement - :help "`py-kill-statement' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete statement" py-delete-statement - :help "`py-delete-statement' -Delete statement at point, don't store deleted string in kill-ring"] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "] - - ["Comment statement" py-comment-statement - :help " `py-comment-statement' - -Comments statement at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Expression" - - ["Beginning of expression" py-beginning-of-expression - :help "Go to the beginning of a compound python expression. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["End of expression" py-end-of-expression - :help "`py-end-of-expression' -Go to the end of a compound python expression. - -A a compound python expression might be concatenated by \".\" operator, thus composed by minor python expressions. - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["Beginning of expression" py-beginning-of-expression - :help "`py-beginning-of-expression' -Go to start of a Python expression"] - - ["End of expression" py-end-of-expression - :help "`py-end-of-expression' -Go to end of a Python expression"] - - ["Copy expression" py-copy-expression - :help "`py-copy-expression' -Copy expression at point"] - - ["Kill expression" py-kill-expression - :help "`py-kill-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete expression" py-delete-expression - :help "`py-delete-expression' -Delete expression at point, don't store deleted string in kill-ring"]) - - ("Partial expression" - - ["Beginning of minor expression" py-beginning-of-partial-expression - :help "`py-beginning-of-partial-expression' -Go to start of an minor expression - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["End of partial-expression" py-end-of-partial-expression - :help "`py-end-of-partial-expression' -Go to end of an partial-expression - -Expression here is conceived as the syntactical component of a statement in Python. See http://docs.python.org/reference -Operators however are left aside resp. limit py-expression designed for edit-purposes."] - - ["Copy partial expression" py-copy-partial-expression - :help "`py-copy-partial-expression' -\".\" operators delimit a partial-expression expression on it's level"] - - ["Kill partial-expression" py-kill-partial-expression - :help "`py-kill-partial-expression' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete partial-expression" py-delete-partial-expression - :help "`py-delete-partial-expression' -Delete partial-expression at point, don't store deleted string in kill-ring"]) - - ("Class " - - ["Beginning of Class" py-beginning-of-class - :help "`py-beginning-of-class' -Go to start of innermost definition at point"] - - ["End of Class" py-end-of-class - :help "`py-end-of-class' -Go to end of innermost function definition at point"] - - ["Down class" py-down-class - :help "`py-down-class' - -Go to the beginning of next class below in buffer. - -Returns indentation if class found, nil otherwise. "] - - ["Up class" py-up-class - :help "`py-up-class' - -Go upwards to the beginning of next class below in buffer. - -Returns indentation if class found, nil otherwise. "] - - ["Copy class" py-copy-class - :help "`py-copy-class' -Copy innermost definition at point"] - - ["Kill class" py-kill-class - :help "`py-kill-class' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete class" py-delete-class - :help "`py-delete-class' -Delete class at point, don't store deleted string in kill-ring"] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "] - - ["Comment class" py-comment-class - :help " `py-comment-class' - -Comments class at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "]) - - ("Def " - - ["Beginning of Def" py-beginning-of-def - :help "`py-beginning-of-def' -Go to start of innermost definition at point"] - - ["End of Def" py-end-of-def - :help "`py-end-of-def' -Go to end of innermost function definition at point"] - - ["Down def" py-down-def - :help "`py-down-def' - -Go to the beginning of next def below in buffer. - -Returns indentation if def found, nil otherwise. "] - - ["Up def" py-up-def - :help "`py-up-def' - -Go upwards to the beginning of next def below in buffer. - -Returns indentation if def found, nil otherwise. "] - - ["Copy def" py-copy-def - :help "`py-copy-def' -Copy innermost definition at point"] - - ["Kill def" py-kill-def - :help "`py-kill-def' -Delete innermost compound statement at point, store deleted string in kill-ring"] - - ["Delete def" py-delete-def - :help "`py-delete-def' -Delete def at point, don't store deleted string in kill-ring"] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "] - - ["Comment def" py-comment-def - :help " `py-comment-def' - -Comments def at point. - -Uses double hash (`#') comment starter when `py-block-comment-prefix-p' is `t', -the default. "] - - ) - - "-" - - ("Block bol " - - ["Beginning of block bol" py-beginning-of-block-bol - :help "`py-beginning-of-block-bol' -Go to beginning of line at beginning of block. - -Returns position reached, if successful, nil otherwise. "] - - ["End of block bol" py-end-of-block-bol - :help "`py-end-of-block-bol' -Go to beginning of line following end of block. - -Returns position reached, if successful, nil otherwise. "] - - ["Up block bol" py-up-block-bol - :help "`py-up-block-bol' -Go to next block upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down block bol" py-down-block-bol - :help "`py-down-block-bol' -Go to next block downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark block bol" py-mark-block-bol - :help "`py-mark-block-bol' -Mark block at point. "] - - ["Copy block bol" py-copy-block-bol - :help "`py-copy-block-bol' -Copy block at point. "] - - ["Kill block bol" py-kill-block-bol - :help "`py-kill-block-bol' -Kill block at point. "] - - ["Delete block bol" py-delete-block-bol - :help "`py-delete-block-bol' -Delete block at point. "] - - ["Shift block right" py-shift-block-right - :help "`py-shift-block-right' -Shift block right. "] - - ["Shift block left" py-shift-block-left - :help "`py-shift-block-left' -Shift block left. "] - ) - - ("Minor-block bol " - - ["Beginning of minor-block bol" py-beginning-of-minor-block-bol - :help "`py-beginning-of-minor-block-bol' -Go to beginning of line at beginning of minor-block. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["End of minor-block bol" py-end-of-minor-block-bol - :help "`py-end-of-minor-block-bol' -Go to beginning of line following end of minor-block. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Up minor-block bol" py-up-minor-block-bol - :help "`py-up-minor-block-bol' -Go to next minor-block upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Down minor-block bol" py-down-minor-block-bol - :help "`py-down-minor-block-bol' -Go to next minor-block downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Mark minor-block bol" py-mark-minor-block-bol - :help "`py-mark-minor-block-bol' -Mark minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Copy minor-block bol" py-copy-minor-block-bol - :help "`py-copy-minor-block-bol' -Copy minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Kill minor-block bol" py-kill-minor-block-bol - :help "`py-kill-minor-block-bol' -Kill minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Delete minor-block bol" py-delete-minor-block-bol - :help "`py-delete-minor-block-bol' -Delete minor-block at point. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Shift minor-block right" py-shift-minor-block-right - :help "`py-shift-minor-block-right' -Shift minor-block right. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ["Shift minor-block left" py-shift-minor-block-left - :help "`py-shift-minor-block-left' -Shift minor-block left. - -A minor block is started by a `for', `if', `try' or `with'. "] - - ) - - ("Clause bol " - - ["Beginning of clause bol" py-beginning-of-clause-bol - :help "`py-beginning-of-clause-bol' -Go to beginning of line at beginning of clause. - -Returns position reached, if successful, nil otherwise. "] - - ["End of clause bol" py-end-of-clause-bol - :help "`py-end-of-clause-bol' -Go to beginning of line following end of clause. - -Returns position reached, if successful, nil otherwise. "] - - ["Up clause bol" py-up-clause-bol - :help "`py-up-clause-bol' -Go to next clause upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down clause bol" py-down-clause-bol - :help "`py-down-clause-bol' -Go to next clause downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark clause bol" py-mark-clause-bol - :help "`py-mark-clause-bol' -Mark clause at point. "] - - ["Copy clause bol" py-copy-clause-bol - :help "`py-copy-clause-bol' -Copy clause at point. "] - - ["Kill clause bol" py-kill-clause-bol - :help "`py-kill-clause-bol' -Kill clause at point. "] - - ["Delete clause bol" py-delete-clause-bol - :help "`py-delete-clause-bol' -Delete clause at point. "] - - ["Shift clause right" py-shift-clause-right - :help "`py-shift-clause-right' -Shift clause right. "] - - ["Shift clause left" py-shift-clause-left - :help "`py-shift-clause-left' -Shift clause left. "]) - - ("Block-Or-Clause bol " - - ["Beginning of block-or-clause bol" py-beginning-of-block-or-clause-bol - :help "`py-beginning-of-block-or-clause-bol' -Go to beginning of line at beginning of block-or-clause. - -Returns position reached, if successful, nil otherwise. "] - - ["End of block-or-clause bol" py-end-of-block-or-clause-bol - :help "`py-end-of-block-or-clause-bol' -Go to beginning of line following end of block-or-clause. - -Returns position reached, if successful, nil otherwise. "] - - ["Up block-or-clause bol" py-up-block-or-clause-bol - :help "`py-up-block-or-clause-bol' -Go to next block-or-clause upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down block-or-clause bol" py-down-block-or-clause-bol - :help "`py-down-block-or-clause-bol' -Go to next block-or-clause downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark block-or-clause bol" py-mark-block-or-clause-bol - :help "`py-mark-block-or-clause-bol' -Mark block-or-clause at point. "] - - ["Copy block-or-clause bol" py-copy-block-or-clause-bol - :help "`py-copy-block-or-clause-bol' -Copy block-or-clause at point. "] - - ["Kill block-or-clause bol" py-kill-block-or-clause-bol - :help "`py-kill-block-or-clause-bol' -Kill block-or-clause at point. "] - - ["Delete block-or-clause bol" py-delete-block-or-clause-bol - :help "`py-delete-block-or-clause-bol' -Delete block-or-clause at point. "] - - ["Shift block-or-clause right" py-shift-block-or-clause-right - :help "`py-shift-block-or-clause-right' -Shift block-or-clause right. "] - - ["Shift block-or-clause left" py-shift-block-or-clause-left - :help "`py-shift-block-or-clause-left' -Shift block-or-clause left. "]) - - ("Def bol " - - ["Beginning of def bol" py-beginning-of-def-bol - :help "`py-beginning-of-def-bol' -Go to beginning of line at beginning of def. - -Returns position reached, if successful, nil otherwise. "] - - ["End of def bol" py-end-of-def-bol - :help "`py-end-of-def-bol' -Go to beginning of line following end of def. - -Returns position reached, if successful, nil otherwise. "] - - ["Up def bol" py-up-def-bol - :help "`py-up-def-bol' -Go to next def upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down def bol" py-down-def-bol - :help "`py-down-def-bol' -Go to next def downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark def bol" py-mark-def-bol - :help "`py-mark-def-bol' -Mark def at point. "] - - ["Copy def bol" py-copy-def-bol - :help "`py-copy-def-bol' -Copy def at point. "] - - ["Kill def bol" py-kill-def-bol - :help "`py-kill-def-bol' -Kill def at point. "] - - ["Delete def bol" py-delete-def-bol - :help "`py-delete-def-bol' -Delete def at point. "] - - ["Shift def right" py-shift-def-right - :help "`py-shift-def-right' -Shift def right. "] - - ["Shift def left" py-shift-def-left - :help "`py-shift-def-left' -Shift def left. "]) - - ("Class bol " - ["Beginning of class bol" py-beginning-of-class-bol - :help "`py-beginning-of-class-bol' -Go to beginning of line at beginning of class. - -Returns position reached, if successful, nil otherwise. "] - - ["End of class bol" py-end-of-class-bol - :help "`py-end-of-class-bol' -Go to beginning of line following end of class. - -Returns position reached, if successful, nil otherwise. "] - - ["Up class bol" py-up-class-bol - :help "`py-up-class-bol' -Go to next class upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down class bol" py-down-class-bol - :help "`py-down-class-bol' -Go to next class downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark class bol" py-mark-class-bol - :help "`py-mark-class-bol' -Mark class at point. "] - - ["Copy class bol" py-copy-class-bol - :help "`py-copy-class-bol' -Copy class at point. "] - - ["Kill class bol" py-kill-class-bol - :help "`py-kill-class-bol' -Kill class at point. "] - - ["Delete class bol" py-delete-class-bol - :help "`py-delete-class-bol' -Delete class at point. "] - - ["Shift class right" py-shift-class-right - :help "`py-shift-class-right' -Shift class right. "] - - ["Shift class left" py-shift-class-left - :help "`py-shift-class-left' -Shift class left. "]) - - ("Def-Or-Class bol " - ["Beginning of def-or-class bol" py-beginning-of-def-or-class-bol - :help "`py-beginning-of-def-or-class-bol' -Go to beginning of line at beginning of def-or-class. - -Returns position reached, if successful, nil otherwise. "] - - ["End of def-or-class bol" py-end-of-def-or-class-bol - :help "`py-end-of-def-or-class-bol' -Go to beginning of line following end of def-or-class. - -Returns position reached, if successful, nil otherwise. "] - - ["Up def-or-class bol" py-up-def-or-class-bol - :help "`py-up-def-or-class-bol' -Go to next def-or-class upwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Down def-or-class bol" py-down-def-or-class-bol - :help "`py-down-def-or-class-bol' -Go to next def-or-class downwards in buffer if any. Go to beginning of line. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark def-or-class bol" py-mark-def-or-class-bol - :help "`py-mark-def-or-class-bol' -Mark def-or-class at point. "] - - ["Copy def-or-class bol" py-copy-def-or-class-bol - :help "`py-copy-def-or-class-bol' -Copy def-or-class at point. "] - - ["Kill def-or-class bol" py-kill-def-or-class-bol - :help "`py-kill-def-or-class-bol' -Kill def-or-class at point. "] - - ["Delete def-or-class bol" py-delete-def-or-class-bol - :help "`py-delete-def-or-class-bol' -Delete def-or-class at point. "] - - ["Shift def-or-class right" py-shift-def-or-class-right - :help "`py-shift-def-or-class-right' -Shift def-or-class right. "] - - ["Shift def-or-class left" py-shift-def-or-class-left - :help "`py-shift-def-or-class-left' -Shift def-or-class left. "] - - ) - - ("Statement bol " - ["Beginning of statement bol" py-beginning-of-statement-bol - :help "`py-beginning-of-statement-bol' -Go to beginning of line at beginning of statement. - -Returns position reached, if successful, nil otherwise. "] - - ["End of statement bol" py-end-of-statement-bol - :help "`py-end-of-statement-bol' -Go to beginning of line following end of statement. - -Returns position reached, if successful, nil otherwise. "] - - ["Mark statement bol" py-mark-statement-bol - :help "`py-mark-statement-bol' -Mark statement at point. "] - - ["Copy statement bol" py-copy-statement-bol - :help "`py-copy-statement-bol' -Copy statement at point. "] - - ["Kill statement bol" py-kill-statement-bol - :help "`py-kill-statement-bol' -Kill statement at point. "] - - ["Delete statement bol" py-delete-statement-bol - :help "`py-delete-statement-bol' -Delete statement at point. "] - - ["Shift statement right" py-shift-statement-right - :help "`py-shift-statement-right' -Shift statement right. "] - - ["Shift statement left" py-shift-statement-left - :help "`py-shift-statement-left' -Shift statement left. "]) - ) - "-" - ("Filling" - :help "see also customizable `py-docstring-style'" - - ["Fill string" py-fill-string - :help " `py-fill-string' - -Uses value of `py-docstring-style', if set. "] - - ["Fill paragraph" py-fill-paragraph - :help " `py-fill-paragraph' - -Uses value of `py-docstring-style', if set. "] - - ["Fill comment" py-fill-comment - :help " `py-fill-comment' - -Fill comment at point. "] - - ["Fill string django-style " py-fill-string-django - :help " `py-fill-string-django' - - \"\"\" - Process foo, return bar. - \"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style' - "] - - ["py fill string onetwo" py-fill-string-onetwo - :help " `py-fill-string-onetwo' -One newline and start and Two at end style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string pep 257" py-fill-string-pep-257 - :help " `py-fill-string-pep-257' - -PEP-257 with 2 newlines at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string pep 257 nn" py-fill-string-pep-257-nn - :help " `py-fill-string-pep-257-nn' - -PEP-257 with 1 newline at end of string. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\"Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"] - - ["py fill string symmetric" py-fill-string-symmetric - :help " `py-fill-string-symmetric' - -Symmetric style. - - \"\"\"Process foo, return bar.\"\"\" - - \"\"\" - Process foo, return bar. - - If processing fails throw ProcessingError. - \"\"\" - -See available styles at `py-fill-paragraph' or var `py-docstring-style'"]) - - ("Electric " - :help "electric commands'" - - ["Hungry delete backwards" py-hungry-delete-backwards - :help " `py-hungry-delete-backwards' - -Delete the preceding character or all preceding whitespace -back to the previous non-whitespace character. -See also C-c . "] - - ["Hungry delete forward" py-hungry-delete-forward - :help " `py-hungry-delete-forward' - -Delete the following character or all following whitespace -up to the next non-whitespace character. -See also C-c . "] - - ["Electric colon" py-electric-colon - :help " `py-electric-colon' -Insert a colon and indent accordingly. - -If a numeric argument ARG is provided, that many colons are inserted -non-electrically. - -Electric behavior is inhibited inside a string or -comment or by universal prefix C-u. - -Switched by `py-electric-colon-active-p', default is nil -See also `py-electric-colon-greedy-p' "] - - ["Electric colon greedy " - (setq py-electric-colon-greedy-p - (not py-electric-colon-greedy-p)) - :help "If py-electric-colon should indent to the outmost reasonable level. - -If nil, default, it will not move from at any reasonable level. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-greedy-p] - - ["Electric colon newline and indent " - (setq py-electric-colon-newline-and-indent-p - (not py-electric-colon-newline-and-indent-p)) - :help "If non-nil, `py-electric-colon' will call `newline-and-indent'. Default is `nil'. Use `M-x customize-variable' to set it permanently" - :style toggle :selected py-electric-colon-newline-and-indent-p] - - ["Electric delete" py-electric-delete - :help " `py-electric-delete' -Delete following character or levels of whitespace. - -With ARG do that ARG times. "] - - ["Electric backspace" py-electric-backspace - :help " `py-electric-backspace' -Delete preceding character or level of indentation. - -With ARG do that ARG times. -Returns column reached. "] - - ["Electric comment" py-electric-comment - :help " `py-electric-comment' -Insert a comment. If starting a comment, indent accordingly. - -If a numeric argument ARG is provided, that many \"#\" are inserted -non-electrically. -With C-u \"#\" electric behavior is inhibited inside a string or comment. "] - - ["Electric left paren" py-complete-electric-lparen - :help " `py-complete-electric-lparen' -electricly insert '(', and try to get a signature for the stuff to the left.\n -Needs Pymacs"] - - ["Complete electric comma" py-complete-electric-comma - :help " `py-complete-electric-comma' -electricly insert ',', and redisplay latest signature.\n -Needs Pymacs"] - - ["Electric yank" py-electric-yank - :help " `py-electric-yank' -Perform command `yank' followed by an `indent-according-to-mode' . "]) - - ("Abbrevs" - :help "see also `py-add-abbrev'" - :filter (lambda (&rest junk) - (abbrev-table-menu python-mode-abbrev-table))) - ["add-abbrev" py-add-abbrev - :help "Defines python-mode specific abbrev for last expressions before point. -Argument is how many `py-partial-expression's form the expansion; or zero means the region is the expansion. "] - - ("Skeletons" - :help "See also templates in YASnippet" - - ["if" py-if - :help "Inserts if-statement"] - ["py-else" py-else - :help "Inserts else-statement"] - ["py-while" py-while - :help "Inserts while-statement"] - ["py-for" py-for - :help "Inserts for-statement"] - ["py-try/finally" py-try/finally - :help "Inserts py-try/finally-statement"] - ["py-try/except" py-try/except - :help "Inserts py-try/except-statement"] - - ) - - ("Completion" - :help "Completion options" - - ["Complete symbol" py-shell-complete - :help "`py-shell-complete' -Complete (qualified) symbol before point"] - - ["Complete" py-complete - :help " `py-complete' -Complete symbol before point using Pymacs . "]) - - ["Find function" py-find-function - :help "`py-find-function' -Try to find source definition of function at point"] - - )))) - map)) - -(defvaralias 'py-mode-map 'python-mode-map) - -(defun py-dump-help-string (str) - (with-output-to-temp-buffer "*Help*" - (let ((locals (buffer-local-variables)) - funckind funcname func funcdoc - (start 0) mstart end - keys) - (while (string-match "^%\\([vc]\\):\\(.+\\)\n" str start) - (setq mstart (match-beginning 0) end (match-end 0) - funckind (substring str (match-beginning 1) (match-end 1)) - funcname (substring str (match-beginning 2) (match-end 2)) - func (intern funcname)) - (princ (substitute-command-keys (substring str start mstart))) - (cond - ((equal funckind "c") ; command - (setq funcdoc (documentation func) - keys (concat - "Key(s): " - (mapconcat 'key-description - (where-is-internal func python-mode-map) - ", ")))) - ((equal funckind "v") ; variable - (setq funcdoc (documentation-property func 'variable-documentation) - keys (if (assq func locals) - (concat - "Local/Global values: " - (prin1-to-string (symbol-value func)) - " / " - (prin1-to-string (default-value func))) - (concat - "Value: " - (prin1-to-string (symbol-value func)))))) - (t ; unexpected - (error "Error in py-dump-help-string, tag `%s'" funckind))) - (princ (format "\n-> %s:\t%s\t%s\n\n" - (if (equal funckind "c") "Command" "Variable") - funcname keys)) - (princ funcdoc) - (terpri) - (setq start end)) - (princ (substitute-command-keys (substring str start)))) - (if (featurep 'xemacs) (print-help-return-message) - (help-print-return-message)))) - -;;; Abbrevs -(defun py-edit-abbrevs () - "Jumps to `python-mode-abbrev-table' in a buffer containing lists of abbrev definitions. -You can edit them and type \\\\[edit-abbrevs-redefine] to redefine abbrevs -according to your editing. -Buffer contains a header line for each abbrev table, - which is the abbrev table name in parentheses. -This is followed by one line per abbrev in that table: -NAME USECOUNT EXPANSION HOOK -where NAME and EXPANSION are strings with quotes, -USECOUNT is an integer, and HOOK is any valid function -or may be omitted (it is usually omitted). " - (interactive) - (save-excursion - (let ((mat (abbrev-table-name local-abbrev-table))) - (prepare-abbrev-list-buffer) - (set-buffer "*Abbrevs*") - (switch-to-buffer (current-buffer)) - (goto-char (point-min)) - (search-forward (concat "(" (format "%s" mat)))))) - -(defun py-add-abbrev-propose (table type arg &optional dont-ask) - (save-excursion - (let ((orig (point)) - proposal exp name) - (while (< 0 arg) - (py-beginning-of-partial-expression) - (when (looking-at "[[:alpha:]]") - (setq proposal (concat (downcase (match-string-no-properties 0)) proposal))) - (setq arg (1- arg))) - (setq exp (buffer-substring-no-properties (point) orig)) - (setq name - ;; ask only when interactive - (if dont-ask - proposal - (read-string (format (if exp "%s abbrev for \"%s\": " - "Undefine %s abbrev: ") - type exp) proposal))) - (set-text-properties 0 (length name) nil name) - (when (or (null exp) - (not (abbrev-expansion name table)) - (y-or-n-p (format "%s expands to \"%s\"; redefine? " - name (abbrev-expansion name table)))) - (define-abbrev table (downcase name) exp))))) - -(defun py-add-abbrev (arg) - "Defines python-mode specific abbrev for last expressions before point. -Argument is how many `py-partial-expression's form the expansion; or zero means the region is the expansion. - -Reads the abbreviation in the minibuffer; with numeric arg it displays a proposal for an abbrev. -Proposal is composed from the initial character(s) of the -expansion. - -Don't use this function in a Lisp program; use `define-abbrev' instead." - (interactive "p") - (save-excursion - (py-add-abbrev-propose - (if only-global-abbrevs - global-abbrev-table - (or local-abbrev-table - (error "No per-mode abbrev table"))) - "Mode" arg))) - -;;; - -(add-to-list 'hs-special-modes-alist - (list - 'python-mode - ;; start regex - (concat (if py-hide-show-hide-docstrings - "^\\s-*\"\"\"\\|" "") - (mapconcat 'identity - (mapcar #'(lambda (x) (concat "^\\s-*" x "\\_>")) - py-hide-show-keywords) - "\\|")) - ;; end regex - nil - ;; comment-start regex - "#" - ;; forward-sexp function - (lambda (arg) - (py-end-of-block-or-clause)) - nil)) - -(setq imenu-generic-expression 'py-imenu-generic-regexp) - -(defadvice pdb (before gud-query-cmdline activate) - "Provide a better default command line when called interactively." - (interactive - (list (gud-query-cmdline pdb-path - (file-name-nondirectory buffer-file-name))))) - -(defalias 'py-hungry-delete-forward 'c-hungry-delete-forward) -(defalias 'py-hungry-delete-backwards 'c-hungry-delete-backwards) - -(defun py-kill-emacs-hook () - "Delete files in `py-file-queue'. -These are Python temporary files awaiting execution." - (mapc #'(lambda (filename) - (ignore-errors (delete-file filename))) - py-file-queue)) - -(defun py-python-version (&optional executable verbose) - "Returns versions number of a Python EXECUTABLE, string. - -If no EXECUTABLE given, `py-shell-name' is used. -Interactively output of `--version' is displayed. " - (interactive) - (let* ((executable (or executable py-shell-name)) - (erg (string-strip (shell-command-to-string (concat executable " --version"))))) - (when (interactive-p) (message "%s" erg)) - (unless verbose (setq erg (cadr (split-string erg)))) - erg)) - -(defun py-version () - "Echo the current version of `python-mode' in the minibuffer." - (interactive) - (message "Using `python-mode' version %s" py-version) - (py-keep-region-active)) - -(defun py-install-search-local () - (interactive) - (let ((erg (split-string (shell-command-to-string (concat "find " default-directory " -maxdepth 9 -type f -name \"*python\""))))))) - -;; (defun py-install-local-epdfree () -;; (interactive) -;; (py-install-local-shells "MY-PATH/epdfree")) - -(defun py-install-local-shells (&optional local path-prefix) - "Builds Python-shell commands from executable found in LOCAL. - -If LOCAL is empty, shell-command `find' searches beneath current directory. -Eval resulting buffer to install it, see customizable `py-extensions'. " - (interactive) - (let* ((local-dir (if local - (expand-file-name local) - (read-from-minibuffer "Virtualenv directory: " default-directory))) - (path-separator (if (string-match "/" local-dir) - "/" - "\\" t)) - (shells (split-string (shell-command-to-string (concat "find " local-dir " -maxdepth 9 -type f -executable -name \"*python\"")))) - erg newshell prefix akt end orig curexe aktpath) - (set-buffer (get-buffer-create py-extensions)) - (erase-buffer) - (switch-to-buffer (current-buffer)) - (dolist (elt shells) - (setq prefix "") - (setq curexe (substring elt (1+ (string-match "/[^/]+$" elt)))) - (setq aktpath (substring elt 0 (1+ (string-match "/[^/]+$" elt)))) - (dolist (prf (split-string aktpath (regexp-quote path-separator))) - (unless (string= "" prf) - (setq prefix (concat prefix (substring prf 0 1))))) - (setq orig (point)) - (insert py-shell-template) - (setq end (point)) - (goto-char orig) - (when (re-search-forward "\\" end t 1) - (replace-match (concat prefix "-" (substring elt (1+ (save-match-data (string-match "/[^/]+$" elt)))))t)) - (goto-char orig) - (while (search-forward "DOCNAME" end t 1) - (replace-match (if (string= "ipython" curexe) - "IPython" - (capitalize curexe)) t)) - (goto-char orig) - (when (search-forward "FULLNAME" end t 1) - (replace-match elt t)) - (goto-char (point-max))) - (emacs-lisp-mode) - (if (file-readable-p (concat py-install-directory "/" py-extensions)) - (find-file (concat py-install-directory "/" py-extensions))))) - -(defun py-input-filter (str) - "`comint-input-filter' function for inferior Python. -Don't save anything for STR matching `inferior-python-filter-regexp'." - (not (string-match inferior-python-filter-regexp str))) - -;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-01/msg00076.html -(defalias - 'py-shell-redirect-send-command-to-process - 'comint-redirect-send-command-to-process) -(defalias - 'py-shell-dynamic-simple-complete - 'comint-dynamic-simple-complete) - -(defun py-restore-window-configuration () - "Restore py-restore-window-configuration when completion is done resp. abandoned. " - (and (setq val (get-register 313465889))(and (consp val) (window-configuration-p (car val))(markerp (cadr val)))(marker-buffer (cadr val)) - (jump-to-register 313465889))) - -(defun py-shell-simple-send (proc string) - (comint-simple-send proc string)) - -(defun py-shell-execute-string-now (string &optional shell buffer proc output-buffer) - "Send to Python interpreter process PROC \"exec STRING in {}\". -and return collected output" - (let* (wait - (procbuf (or buffer (process-buffer proc) (progn (setq wait py-new-shell-delay) (py-shell nil nil shell nil t)))) - (proc (or proc (get-buffer-process procbuf))) - (cmd (format "exec '''%s''' in {}" - (mapconcat 'identity (split-string string "\n") "\\n"))) - (outbuf (get-buffer-create (or output-buffer py-output-buffer)))) - ;; wait is used only when a new py-shell buffer was connected - (and wait (sit-for wait)) - (unwind-protect - (condition-case nil - (progn - (with-current-buffer outbuf - (delete-region (point-min) (point-max))) - (with-current-buffer procbuf - ;; (sit-for 3) - (comint-redirect-send-command-to-process - cmd outbuf proc nil t) - (accept-process-output proc 1 1)) - (with-current-buffer outbuf - (buffer-substring (point-min) (point-max)))) - (quit (with-current-buffer procbuf - (interrupt-process proc comint-ptyp) - (while (not comint-redirect-completed) ; wait for output - (accept-process-output proc 1))) - (signal 'quit nil)))))) - -;;; Completion - -;; started from python.el -(defalias 'py-script-complete 'py-shell-complete) - -(defun py-python-script-complete (&optional shell imports beg end word) - "Complete word before point, if any. - -When `py-no-completion-calls-dabbrev-expand-p' is non-nil, try dabbrev-expand. Otherwise, when `py-indent-no-completion-p' is non-nil, call `tab-to-tab-stop'. " - (interactive) - (let* (py-split-windows-on-execute-p - py-switch-buffers-on-execute-p - (orig (point)) - (shell (or shell py-local-versioned-command (py-choose-shell))) - (beg (or beg (save-excursion (skip-chars-backward "a-zA-Z0-9_.") (point)))) - (end (or end (point))) - (word (or word (buffer-substring-no-properties beg end))) - (imports (or imports (py-find-imports))) - proc) - (cond ((string= word "") - (if py-indent-no-completion-p - (tab-to-tab-stop) - (message "%s" "Nothing to complete. "))) - (t (or (setq proc (get-buffer-process (py-buffer-name-prepare))) - (setq proc (get-buffer-process (py-shell nil nil shell)))) - (if (processp proc) - (progn - ;; when completing instances, make them known - (when (string-match "^\\(^[a-zA-Z0-9_]+\\)\\.\\([a-zA-Z0-9_]+\\)$" word) - ;; (message "%s" (match-string 1 word)) - (save-excursion - (save-match-data - (goto-char (point-min)) - (when (re-search-forward (concat "^[ \t]*" (match-string-no-properties 1 word) "[ \t]*=[ \t]*[^ \n\r\f\t]+") nil t 1) - (when py-verbose-p (message "%s" (match-string-no-properties 0))) - (if imports - (setq imports (concat imports (match-string-no-properties 0) ";")) - (setq imports (match-string-no-properties 0))))))) - (py-shell--do-completion-at-point proc imports word)) - (error "No completion process at proc")))))) - -(defun py-python2-shell-complete (&optional shell) - (interactive) - (let* (py-split-windows-on-execute-p - py-switch-buffers-on-execute-p - (shell (or shell py-local-versioned-command)) - (orig (point)) - (beg (save-excursion (skip-chars-backward "a-zA-Z0-9_.") (point))) - (end (point)) - (word (buffer-substring-no-properties beg end)) - proc) - (cond ((string= word "") - (message "%s" "Nothing to complete. ") - (tab-to-tab-stop)) - (t (or (setq proc (get-buffer-process shell)) - (setq proc (get-buffer-process (py-shell nil nil shell t)))) - (py-shell--do-completion-at-point proc nil word orig)))) - nil) - -(defun py-python3-shell-complete (&optional shell) - "Complete word before point, if any. Otherwise insert TAB. " - (interactive) - (let* ((shell (or shell py-local-versioned-command)) - (orig (point)) - (beg (save-excursion (skip-chars-backward "a-zA-Z0-9_.") (point))) - (end (point)) - (word (buffer-substring-no-properties beg end))) - (cond ((string= word "") - (tab-to-tab-stop)) - (t - (py-shell--do-completion-at-point (get-buffer-process (current-buffer)) nil word orig) - nil)))) - -(defun py-comint--complete (shell pos beg end word imports debug) - (let ((shell (or shell (py-report-executable (buffer-name (current-buffer))))) - py-fontify-shell-buffer-p) - (if (string-match "[iI][pP]ython" shell) - (ipython-complete nil nil beg end word shell debug imports) - (let ((proc (get-buffer-process (current-buffer)))) - (cond ((string= word "") - (tab-to-tab-stop)) - (t - ;; (string-match "[pP]ython3[^[:alpha:]]*$" shell) - (py-shell--do-completion-at-point proc imports word pos)) - ;; (t (py-shell-complete-intern word beg end shell imports proc)) - ))))) - -(defun py-complete--base (shell pos beg end word imports debug) - (let* (wait - (shell (or shell (py-choose-shell))) - (proc (or (get-process shell) - (get-buffer-process (progn (setq wait py-new-shell-delay) (py-shell nil nil shell nil t)))))) - (cond ((string= word "") - (tab-to-tab-stop)) - ((string-match "[iI][pP]ython" shell) - (ipython-complete nil nil beg end word shell debug imports pos)) - (t - ;; (string-match "[pP]ython3[^[:alpha:]]*$" shell) - (py-shell--do-completion-at-point proc imports word pos)) - ;; (t (py-shell-complete-intern word beg end shell imports proc debug)) - ))) - -(defun py-shell-complete (&optional shell debug beg end word) - "Complete word before point, if any. Otherwise insert TAB. " - (interactive) - (setq py-completion-last-window-configuration - (current-window-configuration)) - (when debug (setq py-shell-complete-debug nil)) - (let* ((oldbuf (current-buffer)) - (pos (copy-marker (point))) - (beg (or beg (save-excursion (skip-chars-backward "a-zA-Z0-9_.('") (point)))) - (end (or end (point))) - (word (or word (buffer-substring-no-properties beg end))) - (imports (py-find-imports)) - py-fontify-shell-buffer-p py-completion-buffer) - ;; (and (string= "open('" word) - ;; (comint-dynamic-complete-filename)) - ;; (ignore-errors (comint-dynamic-complete)) - (if (or (eq major-mode 'comint-mode)(eq major-mode 'inferior-python-mode)) - (py-comint--complete shell pos beg end word imports debug) - (py-complete--base shell pos beg end word imports debug)) - ;; (goto-char pos) - nil)) - -(defun py-after-change-function (beg end len) - "Restore window-confiuration after completion. " - (when - (and (or - (eq this-command 'completion-at-point) - (eq this-command 'choose-completion) - (eq this-command 'choose-completion) - (eq this-command 'py-shell-complete) - (and (or - (eq last-command 'completion-at-point) - (eq last-command 'choose-completion) - (eq last-command 'choose-completion) - (eq last-command 'py-shell-complete)) - (eq this-command 'self-insert-command)))) - (set-window-configuration - py-completion-last-window-configuration)) - (goto-char end)) - -(defun py-shell-complete-finally () - (if (and completions (not (string= "" (car completions)))) - (cond ((eq completions t) - (when (buffer-live-p (get-buffer py-completion-buffer)) - (kill-buffer (get-buffer py-python-completions))) - (message "Can't find completion for \"%s\"" word) - (ding) - nil) - ((< 1 (length completions)) - (with-output-to-temp-buffer py-completion-buffer - (display-completion-list completions - word) - nil)) - ((not (string= word (car completions))) - (sit-for 0.1) - (completion-in-region beg end completions) - (move-marker pos (point)) - (when (buffer-live-p (get-buffer py-python-completions)) - (kill-buffer (get-buffer py-python-completions))) - nil)) - (when py-no-completion-calls-dabbrev-expand-p - (ignore-errors (dabbrev-expand nil))) - (when py-indent-no-completion-p - (tab-to-tab-stop) - (when (buffer-live-p (get-buffer py-python-completions)) - (kill-buffer (get-buffer py-python-completions))))) - (progn (set-buffer oldbuf)(goto-char pos) - ;; completion-at-point requires a list as return value, so givem - nil)) - -(defun py-shell-complete-intern (word &optional beg end shell imports proc debug) - (when imports - (py-send-string-no-output imports proc)) - (let ((py-completion-buffer py-python-completions) - (result (py-shell-execute-string-now (format " -def print_completions(namespace, text, prefix=''): - for name in namespace: - if name.startswith(text): - print(prefix + name) - -def complete(text): - import __builtin__ - import __main__ - if '.' in text: - terms = text.split('.') - try: - if hasattr(__main__, terms[0]): - obj = getattr(__main__, terms[0]) - else: - obj = getattr(__builtin__, terms[0]) - for term in terms[1:-1]: - obj = getattr(obj, term) - print_completions(dir(obj), terms[-1], text[:text.rfind('.') + 1]) - except AttributeError: - pass - else: - import keyword - print_completions(keyword.kwlist, text) - print_completions(dir(__builtin__), text) - print_completions(dir(__main__), text) -complete('%s')" word) shell nil proc))) - (if (or (eq result nil)(string= "" result)) - (progn - (if py-no-completion-calls-dabbrev-expand-p - (or (ignore-errors (dabbrev-expand nil)) (message "Can't complete")) - (message "No completion found"))) - - (setq result (replace-regexp-in-string comint-prompt-regexp "" result)) - (let ((comint-completion-addsuffix nil) - (completions - (sort - (delete-dups (if (split-string "\n" "\n") - (split-string result "\n" t) ; XEmacs - (split-string result "\n"))) - #'string<))) - (when debug (setq py-shell-complete-debug completions)) - (py-shell-complete-finally))))) - -;; ipython shell complete -;; see also -;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-01/msg00076.html -(defun ipython-complete (&optional done completion-command-string beg end word shell debug imports pos) - "Complete the python symbol before point. - -If no completion available, insert a TAB. -Returns the completed symbol, a string, if successful, nil otherwise. " - - (interactive "*") - (setq py-completion-last-window-configuration - (current-window-configuration)) - (let* (py-fontify-shell-buffer-p - (oldbuf (current-buffer)) - (pos (or pos (copy-marker (point)))) - (beg (or beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol)) - (point)))) - (end (or end (point))) - (pattern (or word (buffer-substring-no-properties beg end))) - (sep ";") - (py-shell-name (or shell (py-choose-shell))) - (processlist (process-list)) - (imports (or imports (py-find-imports))) - (py-completion-buffer py-ipython-completions) - done - (process - (if ipython-complete-use-separate-shell-p - (unless (and (buffer-live-p py-ipython-completions) - (comint-check-proc (process-name (get-buffer-process py-ipython-completions)))) - (get-buffer-process (py-shell nil nil py-shell-name py-ipython-completions t))) - (progn - (while (and processlist (not done)) - (when (and - (string= py-shell-name (process-name (car processlist))) - (processp (car processlist)) - (setq done (car processlist)))) - (setq processlist (cdr processlist))) - done))) - (proc (or process - (get-buffer-process (py-shell nil nil (if (string-match "[iI][pP]ython[^[:alpha:]]*$" py-shell-name) "ipython") nil t)))) - (comint-output-filter-functions - (delq 'py-comint-output-filter-function comint-output-filter-functions)) - (comint-preoutput-filter-functions - (append comint-preoutput-filter-functions - '(ansi-color-filter-apply - (lambda (string) - (setq ugly-return (concat ugly-return string)) - "")))) - (ccs (or completion-command-string - (if imports - (concat imports (py-set-ipython-completion-command-string)) - (py-set-ipython-completion-command-string)))) - completion completions completion-table ugly-return) - (if (string= pattern "") - (tab-to-tab-stop) - (process-send-string proc (format ccs pattern)) - (accept-process-output proc 0.2) - (if ugly-return - (progn - (setq completions - (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep)) - (when debug (setq py-shell-complete-debug completions)) - - (py-shell-complete-finally)) - (message "%s" "No response from Python process. Please check your configuration. If config is okay, please file a bug-regport at http://launchpad.net/python-mode"))))) - -;;; Checker -;; flymake -;; (defun clear-flymake-allowed-file-name-masks (&optional suffix) -;; "Remove entries with SUFFIX from `flymake-allowed-file-name-masks'. - -;; Default is \"\\.py\\'\" " -;; (interactive "P") -;; (let ((suffix (cond ((eq 4 (prefix-numeric-value suffix)) -;; (read-from-minibuffer "Suffix: " "\\\\.py\\\\'")) -;; (suffix suffix) -;; (t "\\\\.py\\\\'"))) -;; (erg flymake-allowed-file-name-masks) -;; (newlist '())) -;; (dolist (ele flymake-allowed-file-name-masks) -;; (unless -;; ;; (string-match "\\\\.py\\\\'" (car ele)) -;; (string-match suffix (car ele)) -;; (add-to-list 'newlist ele t))) -;; (setq flymake-allowed-file-name-masks newlist) -;; (when (and py-verbose-p (interactive-p)) (message "%s" flymake-allowed-file-name-masks)) -;; flymake-allowed-file-name-masks)) - -(defun py-toggle-flymake-intern (name command) - ;; (clear-flymake-allowed-file-name-masks) - (unless (string-match "pyflakespep8" name) - (unless (executable-find name) - (when py-verbose-p (message "Don't see %s. Use `easy_install' %s? " name name)))) - (if (buffer-file-name) - (let* ((temp-file (flymake-init-create-temp-buffer-copy - 'flymake-create-temp-inplace)) - (local-file (file-relative-name - temp-file - (file-name-directory buffer-file-name)))) - (add-to-list 'flymake-allowed-file-name-masks (car (read-from-string (concat "(\"\\.py\\'\" flymake-" name ")")))) - (list command (list local-file))) - (message "%s" "flymake needs a `buffer-file-name'. Please save before calling."))) - -(defun pylint-flymake-mode () - "Toggle `pylint' `flymake-mode'. " - (interactive) - (if flymake-mode - ;; switch off - (flymake-mode 0) - (py-toggle-flymake-intern "pylint" "pylint") - (flymake-mode 1))) - -(defun pyflakes-flymake-mode () - "Toggle `pyflakes' `flymake-mode'. " - (interactive) - (if flymake-mode - ;; switch off - (flymake-mode) - (py-toggle-flymake-intern "pyflakes" "pyflakes") - (flymake-mode))) - -(defun pychecker-flymake-mode () - "Toggle `pychecker' `flymake-mode'. " - (interactive) - (if flymake-mode - ;; switch off - (flymake-mode) - (py-toggle-flymake-intern "pychecker" "pychecker") - (flymake-mode))) - -(defun pep8-flymake-mode () - "Toggle `pep8' `flymake-mode'. " - (interactive) - (if flymake-mode - ;; switch off - (flymake-mode) - (py-toggle-flymake-intern "pep8" "pep8") - (flymake-mode))) - -(defun pyflakespep8-flymake-mode () - "Toggle `pyflakespep8' `flymake-mode'. - -Joint call to pyflakes and pep8 as proposed by - -Keegan Carruthers-Smith - -" - (interactive) - (if flymake-mode - ;; switch off - (flymake-mode) - (py-toggle-flymake-intern "pyflakespep8" "pyflakespep8") - (flymake-mode))) - -;; pep8 -(defun py-pep8-run (command) - "Run pep8, check formatting (default on the file currently visited). -" - (interactive - (let ((default - (if (buffer-file-name) - (format "%s %s %s" py-pep8-command - (mapconcat 'identity py-pep8-command-args " ") - (buffer-file-name)) - (format "%s %s" py-pep8-command - (mapconcat 'identity py-pep8-command-args " ")))) - (last (when py-pep8-history - (let* ((lastcmd (car py-pep8-history)) - (cmd (cdr (reverse (split-string lastcmd)))) - (newcmd (reverse (cons (buffer-file-name) cmd)))) - (mapconcat 'identity newcmd " "))))) - - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run pep8 like this: " - (if last - last - default) - 'py-pep8-history) - (read-string "Run pep8 like this: " - (if last - last - default) - 'py-pep8-history))))) - (save-some-buffers (not py-ask-about-save) nil) - (if (fboundp 'compilation-start) - ;; Emacs. - (compilation-start command) - ;; XEmacs. - (when (featurep 'xemacs) - (compile-internal command "No more errors")))) - -(defun py-pep8-help () - "Display pep8 command line help messages. " - (interactive) - (set-buffer (get-buffer-create "*pep8-Help*")) - (erase-buffer) - (shell-command "pep8 --help" "*pep8-Help*")) - -;; Pylint -(defalias 'pylint 'py-pylint-run) -(defun py-pylint-run (command) - "Run pylint (default on the file currently visited). - -For help see M-x pylint-help resp. M-x pylint-long-help. -Home-page: http://www.logilab.org/project/pylint " - (interactive - (let ((default - (if (buffer-file-name) - (format "%s %s %s" py-pylint-command - (mapconcat 'identity py-pylint-command-args " ") - (buffer-file-name)) - (format "%s %s %s" py-pylint-command - (mapconcat 'identity py-pylint-command-args " ") - (buffer-name (current-buffer))))) - (last (and py-pylint-history (car py-pylint-history))) - erg) - - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run pylint like this: " - (if py-pylint-offer-current-p - (or default last) - (or last default)) - 'py-pylint-history) - (read-string "Run pylint like this: " - (if py-pylint-offer-current-p - (or default last) - (or last default)) - 'py-pylint-history))))) - (save-some-buffers (not py-ask-about-save)) - (unless (file-readable-p buffer-file-name) - (message "Warning: %s" "pylint needs a file")) - (shell-command (concat command " " buffer-file-name))) - -(defalias 'pylint-help 'py-pylint-help) -(defun py-pylint-help () - "Display Pylint command line help messages. - -Let's have this until more Emacs-like help is prepared " - (interactive) - (set-buffer (get-buffer-create "*Pylint-Help*")) - (erase-buffer) - (shell-command "pylint --long-help" "*Pylint-Help*")) - -(defalias 'pylint-doku 'py-pylint-doku) -(defun py-pylint-doku () - "Display Pylint Documentation. - -Calls `pylint --full-documentation'" - (interactive) - (set-buffer (get-buffer-create "*Pylint-Documentation*")) - (erase-buffer) - (shell-command "pylint --full-documentation" "*Pylint-Documentation*")) - -;; Pyflakes -(defalias 'pyflakes 'py-pyflakes-run) -(defun py-pyflakes-run (command) - "Run pyflakes (default on the file currently visited). - -For help see M-x pyflakes-help resp. M-x pyflakes-long-help. -Home-page: http://www.logilab.org/project/pyflakes " - (interactive - (let ((default - (if (buffer-file-name) - (format "%s %s %s" py-pyflakes-command - (mapconcat 'identity py-pyflakes-command-args " ") - (buffer-file-name)) - (format "%s %s" py-pyflakes-command - (mapconcat 'identity py-pyflakes-command-args " ")))) - (last (when py-pyflakes-history - (let* ((lastcmd (car py-pyflakes-history)) - (cmd (cdr (reverse (split-string lastcmd)))) - (newcmd (reverse (cons (buffer-file-name) cmd)))) - (mapconcat 'identity newcmd " "))))) - - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run pyflakes like this: " - (if last - last - default) - 'py-pyflakes-history) - (read-string "Run pyflakes like this: " - (if last - last - default) - 'py-pyflakes-history))))) - (save-some-buffers (not py-ask-about-save) nil) - (if (fboundp 'compilation-start) - ;; Emacs. - (compilation-start command) - ;; XEmacs. - (when (featurep 'xemacs) - (compile-internal command "No more errors")))) - -(defalias 'pyflakes-help 'py-pyflakes-help) -(defun py-pyflakes-help () - "Display Pyflakes command line help messages. - -Let's have this until more Emacs-like help is prepared " - (interactive) - ;; (set-buffer (get-buffer-create "*Pyflakes-Help*")) - ;; (erase-buffer) - (with-help-window "*Pyflakes-Help*" - (with-current-buffer standard-output - (insert " pyflakes [file-or-directory ...] - - Pyflakes is a simple program which checks Python - source files for errors. It is similar to - PyChecker in scope, but differs in that it does - not execute the modules to check them. This is - both safer and faster, although it does not - perform as many checks. Unlike PyLint, Pyflakes - checks only for logical errors in programs; it - does not perform any checks on style. - - All commandline arguments are checked, which - have to be either regular files or directories. - If a directory is given, every .py file within - will be checked. - - When no commandline arguments are given, data - will be read from standard input. - - The exit status is 0 when no warnings or errors - are found. When errors are found the exit status - is 2. When warnings (but no errors) are found - the exit status is 1. - -Extracted from http://manpages.ubuntu.com/manpages/natty/man1/pyflakes.1.html -")))) - -;; Pyflakes-pep8 -(defalias 'pyflakespep8 'py-pyflakespep8-run) -(defun py-pyflakespep8-run (command) - "Run pyflakespep8, check formatting (default on the file currently visited). -" - (interactive - (let ((default - (if (buffer-file-name) - (format "%s %s %s" py-pyflakespep8-command - (mapconcat 'identity py-pyflakespep8-command-args " ") - (buffer-file-name)) - (format "%s %s" py-pyflakespep8-command - (mapconcat 'identity py-pyflakespep8-command-args " ")))) - (last (when py-pyflakespep8-history - (let* ((lastcmd (car py-pyflakespep8-history)) - (cmd (cdr (reverse (split-string lastcmd)))) - (newcmd (reverse (cons (buffer-file-name) cmd)))) - (mapconcat 'identity newcmd " "))))) - - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run pyflakespep8 like this: " - (if last - last - default) - 'py-pyflakespep8-history) - (read-string "Run pyflakespep8 like this: " - (if last - last - default) - 'py-pyflakespep8-history))))) - (save-some-buffers (not py-ask-about-save) nil) - (if (fboundp 'compilation-start) - ;; Emacs. - (compilation-start command) - ;; XEmacs. - (when (featurep 'xemacs) - (compile-internal command "No more errors")))) - -(defun py-pyflakespep8-help () - "Display pyflakespep8 command line help messages. " - (interactive) - (set-buffer (get-buffer-create "*pyflakespep8-Help*")) - (erase-buffer) - (shell-command "pyflakespep8 --help" "*pyflakespep8-Help*")) - -;; flake8 -(defalias 'flake8 'py-flake8-run) -(defun py-flake8-run (command) - "Flake8 is a wrapper around these tools: - - PyFlakes - - pep8 - - Ned Batchelder's McCabe script - - It also adds features: - - files that contain this line are skipped:: - # flake8: noqa - - lines that contain a ``# noqa`` comment at the end will not issue warnings. - - a Git and a Mercurial hook. - - a McCabe complexity checker. - - extendable through ``flake8.extension`` entry points. - -" - (interactive - (let* ((py-flake8-command - (if (string= "" py-flake8-command) - (or (executable-find "flake8") - (error "Don't see \"flake8\" on your system. -Consider \"pip install flake8\" resp. visit \"pypi.python.org\"")) - py-flake8-command)) - (default - (if (buffer-file-name) - (format "%s %s %s" py-flake8-command - (mapconcat 'identity py-flake8-command-args " ") - (buffer-file-name)) - (format "%s %s" py-flake8-command - (mapconcat 'identity py-flake8-command-args " ")))) - (last - (when py-flake8-history - (let* ((lastcmd (car py-flake8-history)) - (cmd (cdr (reverse (split-string lastcmd)))) - (newcmd (reverse (cons (buffer-file-name) cmd)))) - (mapconcat 'identity newcmd " "))))) - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run flake8 like this: " - ;; (if last - ;; last - default - 'py-flake8-history1) - (read-string "Run flake8 like this: " - (if last - last - default) - 'py-flake8-history))))) - (save-some-buffers (not py-ask-about-save) nil) - (if (fboundp 'compilation-start) - ;; Emacs. - (compilation-start command) - ;; XEmacs. - (when (featurep 'xemacs) - (compile-internal command "No more errors")))) - -(defun py-flake8-help () - "Display flake8 command line help messages. " - (interactive) - (set-buffer (get-buffer-create "*flake8-Help*")) - (erase-buffer) - (shell-command "flake8 --help" "*flake8-Help*")) - -;; Pychecker -(defun py-pychecker-run (command) - "Run pychecker (default on the file currently visited)." - (interactive - (let ((default - (if (buffer-file-name) - (format "%s %s %s" py-pychecker-command - (mapconcat 'identity py-pychecker-command-args " ") - (buffer-file-name)) - (format "%s %s" py-pychecker-command - (mapconcat 'identity py-pychecker-command-args " ")))) - (last (when py-pychecker-history - (let* ((lastcmd (car py-pychecker-history)) - (cmd (cdr (reverse (split-string lastcmd)))) - (newcmd (reverse (cons (buffer-file-name) cmd)))) - (mapconcat 'identity newcmd " "))))) - - (list - (if (fboundp 'read-shell-command) - (read-shell-command "Run pychecker like this: " - (if last - last - default) - 'py-pychecker-history) - (read-string "Run pychecker like this: " - (if last - last - default) - 'py-pychecker-history))))) - (save-some-buffers (not py-ask-about-save) nil) - (if (fboundp 'compilation-start) - ;; Emacs. - (compilation-start command) - ;; XEmacs. - (when (featurep 'xemacs) - (compile-internal command "No more errors")))) - -;;; Skeletons -;; Derived from python.el, where it's instrumented as abbrev -;; Original code authored by Dave Love AFAIK - -(defun py-load-skeletons () - "These skeletons are loaded by python-mode, if `py-load-skeletons-p' is non-nil. " - (interactive) - (define-skeleton py-else - "Auxiliary skeleton." - nil - (unless (eq ?y (read-char "Add `else' clause? (y for yes or RET for no) ")) - (signal 'quit t)) - < "else:" \n) - - (define-skeleton py-if - "If condition " - "if " "if " str ":" \n - _ \n - ("other condition, %s: " - < "elif " str ":" \n - > _ \n nil) - '(py-else) | ^) - - (define-skeleton py-else - "Auxiliary skeleton." - nil - (unless (eq ?y (read-char "Add `else' clause? (y for yes or RET for no) ")) - (signal 'quit t)) - "else:" \n - > _ \n) - - (define-skeleton py-while - "Condition: " - "while " "while " str ":" \n - > -1 _ \n - '(py-else) | ^) - - (define-skeleton py-for - "Target, %s: " - "for " "for " str " in " (skeleton-read "Expression, %s: ") ":" \n - > -1 _ \n - '(py-else) | ^) - - (define-skeleton py-try/except - "Py-try/except skeleton " - "try:" "try:" \n - > -1 _ \n - ("Exception, %s: " - < "except " str '(python-target) ":" \n - > _ \n nil) - < "except:" \n - > _ \n - '(py-else) | ^) - - (define-skeleton py-target - "Auxiliary skeleton." - "Target, %s: " ", " str | -2) - - (define-skeleton py-try/finally - "Py-try/finally skeleton " - "try:" \n - > -1 _ \n - < "finally:" \n - > _ \n) - - (define-skeleton py-def - "Name: " - "def " str " (" ("Parameter, %s: " (unless (equal ?\( (char-before)) ", ") - str) "):" \n - "\"\"\"" - "\"\"\"" \n ; Fixme: extra space inserted -- why?). - > _ \n) - - (define-skeleton py-class - "Name: " - "class " str " (" ("Inheritance, %s: " - (unless (equal ?\( (char-before)) ", ") - str) - & ")" | -2 ; close list or remove opening - ":" \n - "\"\"\"" - "\"\"\"" \n - > _ \n) - ) - -;;; Virtualenv -;; Thanks Gabriele Lanaro and all working on that -;; The installation is fairly easy, you have the load option, put this -;; in your .emacs: - -;; (load-file "/path/to/virtualenv.el") -;; -;; Otherwise you can do it with the load path: - -;; (add-to-list 'load-path "Path/to/virtualenv.el/containing/directory/" -;; (require 'virtualenv) - -;; The usage is very intuitive, to activate a virtualenv use - -;; M-x virtualenv-activate - -;; It will prompt you for the virtual environment path. -;; If you want to deactivate a virtual environment, use: - -;; M-x virtualenv-deactivate - -(defvar virtualenv-workon-home nil) - -(defvar virtualenv-name nil) - -(if (getenv "WORKON_HOME") - (setq virtualenv-workon-home (getenv "WORKON_HOME")) - (setq virtualenv-workon-home "~/.virtualenvs")) - -(setq virtualenv-name nil) - -;;TODO: Move to a generic UTILITY or TOOL package -(defun virtualenv-filter (predicate sequence) - "Apply to each element of SEQUENCE the PREDICATE, if FUNCTION - returns non-nil append the element to the return value of - virtualenv-filter: a list" - (let ((retlist '())) - (dolist (element sequence) - (when (funcall predicate element) - (push element retlist))) - (nreverse retlist))) - -(defun virtualenv-append-path (dir var) - "Append DIR to a path-like varibale VAR, for example: - (virtualenv-append-path /usr/bin:/bin /home/test/bin) -> /home/test/bin:/usr/bin:/bin" - (concat (expand-file-name dir) - path-separator - var)) - -(defun virtualenv-add-to-path (dir) - "Add the specified path element to the Emacs PATH" - (setenv "PATH" - (virtualenv-append-path dir - (getenv "PATH")))) - -(defun virtualenv-current () - "Barfs the current activated virtualenv" - (interactive) - (message virtualenv-name)) - -(defun virtualenv-activate (dir) - "Activate the virtualenv located in DIR" - (interactive "DVirtualenv Directory: ") - - ;; Eventually deactivate previous virtualenv - (when virtualenv-name - (virtualenv-deactivate)) - - ;; Storing old variables - (setq virtualenv-old-path (getenv "PATH")) - (setq virtualenv-old-exec-path exec-path) - - (setenv "VIRTUAL_ENV" dir) - (virtualenv-add-to-path (concat (py-normalize-directory dir) "bin")) - (add-to-list 'exec-path (concat (py-normalize-directory dir) "bin")) - - (setq virtualenv-name dir) - - (message (concat "Virtualenv '" virtualenv-name "' activated."))) - -(defun virtualenv-deactivate () - "Deactivate the current virtual enviroment" - (interactive) - - ;; Restoring old variables - (setenv "PATH" virtualenv-old-path) - (setq exec-path virtualenv-old-exec-path) - - (message (concat "Virtualenv '" virtualenv-name "' deactivated.")) - - (setq virtualenv-name nil)) - -(defun virtualenv-p (dir) - "Check if a directory is a virtualenv" - (file-exists-p (concat dir "/bin/activate"))) - -(defun virtualenv-workon-complete () - "return available completions for virtualenv-workon" - (let - ;;Varlist - ((filelist (directory-files virtualenv-workon-home t))) - ;; Get only the basename from the list of the virtual environments - ;; paths - (mapcar 'file-name-nondirectory - ;; Filter the directories and then the virtual environments - (virtualenv-filter 'virtualenv-p - (virtualenv-filter 'file-directory-p filelist))))) - -(defun virtualenv-workon (name) - "Issue a virtualenvwrapper-like virtualenv-workon command" - (interactive (list (completing-read "Virtualenv: " (virtualenv-workon-complete)))) - (if (getenv "WORKON_HOME") - (virtualenv-activate (concat (py-normalize-directory (getenv "WORKON_HOME")) name)) - (virtualenv-activate (concat (py-normalize-directory virtualenv-workon-home) name)))) - -;;; Execute forms at point -(defun py-execute-statement () - "Send statement at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-statement-p) - (py-beginning-of-statement)))) - (end (py-end-of-statement))) - (py-execute-region beg end)))) - -(defun py-execute-top-level () - "Send top-level at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-top-level-p) - (py-beginning-of-top-level)))) - (end (py-end-of-top-level))) - (py-execute-region beg end)))) - -(defun py-execute-block () - "Send block at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-block-p) - (py-beginning-of-block)))) - (end (py-end-of-block))) - (py-execute-region beg end)))) - -(defun py-execute-minor-block () - "Send minor-block at point to a Python interpreter. - -A minor block is started by a `for', `if', `try' or `with'. -" - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-minor-block-p) - (py-beginning-of-minor-block)))) - (end (py-end-of-minor-block))) - (py-execute-region beg end)))) - -(defun py-execute-block-or-clause () - "Send block-or-clause at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-block-or-clause-p) - (py-beginning-of-block-or-clause)))) - (end (py-end-of-block-or-clause))) - (py-execute-region beg end)))) - -(defun py-execute-def () - "Send def at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-def-p) - (py-beginning-of-def)))) - (end (py-end-of-def))) - (py-execute-region beg end)))) - -(defun py-execute-class () - "Send class at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-class-p) - (py-beginning-of-class)))) - (end (py-end-of-class))) - (py-execute-region beg end)))) - -(defun py-execute-def-or-class () - "Send def-or-class at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-def-or-class-p) - (py-beginning-of-def-or-class)))) - (end (py-end-of-def-or-class))) - (py-execute-region beg end)))) - -(defun py-execute-expression () - "Send expression at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-expression-p) - (py-beginning-of-expression)))) - (end (py-end-of-expression))) - (py-execute-region beg end)))) - -(defun py-execute-partial-expression () - "Send partial-expression at point to a Python interpreter. " - (interactive) - (save-excursion - (let ((beg (prog1 - (or (py-beginning-of-partial-expression-p) - (py-beginning-of-partial-expression)))) - (end (py-end-of-partial-expression))) - (py-execute-region beg end)))) - -;;; Execute line -(defalias 'ipython-send-and-indent 'py-execute-line-ipython) -(defalias 'py-execute-region-in-shell 'py-execute-region) -(defalias 'py-shell-command-on-region 'py-execute-region) -(defalias 'py-send-region-ipython 'py-execute-region-ipython) -(defalias 'py-ipython-shell-command-on-region 'py-execute-region-ipython) - -;;; Execute file commands -(defun py-execute-file-python (&optional filename) - "Send file to a Python interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python" nil nil nil nil t)) - -(defun py-execute-file-python-switch (&optional filename) - "Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python" nil 'switch nil nil t)) - -(defun py-execute-file-python-no-switch (&optional filename) - "Send file to a Python interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python" nil 'no-switch nil nil t)) - -(defun py-execute-file-python-dedicated (&optional filename) - "Send file to a Python interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python" 'dedicated nil nil nil t)) - -(defun py-execute-file-python-dedicated-switch (&optional filename) - "Send file to a Python interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-ipython (&optional filename) - "Send file to a Ipython interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "ipython" nil nil nil nil t)) - -(defun py-execute-file-ipython-switch (&optional filename) - "Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "ipython" nil 'switch nil nil t)) - -(defun py-execute-file-ipython-no-switch (&optional filename) - "Send file to a Ipython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "ipython" nil 'no-switch nil nil t)) - -(defun py-execute-file-ipython-dedicated (&optional filename) - "Send file to a Ipython interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "ipython" 'dedicated nil nil nil t)) - -(defun py-execute-file-ipython-dedicated-switch (&optional filename) - "Send file to a Ipython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "ipython" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-python3 (&optional filename) - "Send file to a Python3 interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python3" nil nil nil nil t)) - -(defun py-execute-file-python3-switch (&optional filename) - "Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3" nil 'switch nil nil t)) - -(defun py-execute-file-python3-no-switch (&optional filename) - "Send file to a Python3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3" nil 'no-switch nil nil t)) - -(defun py-execute-file-python3-dedicated (&optional filename) - "Send file to a Python3 interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python3" 'dedicated nil nil nil t)) - -(defun py-execute-file-python3-dedicated-switch (&optional filename) - "Send file to a Python3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-python2 (&optional filename) - "Send file to a Python2 interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python2" nil nil nil nil t)) - -(defun py-execute-file-python2-switch (&optional filename) - "Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2" nil 'switch nil nil t)) - -(defun py-execute-file-python2-no-switch (&optional filename) - "Send file to a Python2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2" nil 'no-switch nil nil t)) - -(defun py-execute-file-python2-dedicated (&optional filename) - "Send file to a Python2 interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python2" 'dedicated nil nil nil t)) - -(defun py-execute-file-python2-dedicated-switch (&optional filename) - "Send file to a Python2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-python2.7 (&optional filename) - "Send file to a Python2.7 interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python2.7" nil nil nil nil t)) - -(defun py-execute-file-python2.7-switch (&optional filename) - "Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2.7" nil 'switch nil nil t)) - -(defun py-execute-file-python2.7-no-switch (&optional filename) - "Send file to a Python2.7 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2.7" nil 'no-switch nil nil t)) - -(defun py-execute-file-python2.7-dedicated (&optional filename) - "Send file to a Python2.7 interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python2.7" 'dedicated nil nil nil t)) - -(defun py-execute-file-python2.7-dedicated-switch (&optional filename) - "Send file to a Python2.7 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python2.7" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-jython (&optional filename) - "Send file to a Jython interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "jython" nil nil nil nil t)) - -(defun py-execute-file-jython-switch (&optional filename) - "Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "jython" nil 'switch nil nil t)) - -(defun py-execute-file-jython-no-switch (&optional filename) - "Send file to a Jython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "jython" nil 'no-switch nil nil t)) - -(defun py-execute-file-jython-dedicated (&optional filename) - "Send file to a Jython interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "jython" 'dedicated nil nil nil t)) - -(defun py-execute-file-jython-dedicated-switch (&optional filename) - "Send file to a Jython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "jython" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-python3.2 (&optional filename) - "Send file to a Python3.2 interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python3.2" nil nil nil nil t)) - -(defun py-execute-file-python3.2-switch (&optional filename) - "Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.2" nil 'switch nil nil t)) - -(defun py-execute-file-python3.2-no-switch (&optional filename) - "Send file to a Python3.2 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.2" nil 'no-switch nil nil t)) - -(defun py-execute-file-python3.2-dedicated (&optional filename) - "Send file to a Python3.2 interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python3.2" 'dedicated nil nil nil t)) - -(defun py-execute-file-python3.2-dedicated-switch (&optional filename) - "Send file to a Python3.2 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.2" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-python3.3 (&optional filename) - "Send file to a Python3.3 interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "python3.3" nil nil nil nil t)) - -(defun py-execute-file-python3.3-switch (&optional filename) - "Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.3" nil 'switch nil nil t)) - -(defun py-execute-file-python3.3-no-switch (&optional filename) - "Send file to a Python3.3 interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.3" nil 'no-switch nil nil t)) - -(defun py-execute-file-python3.3-dedicated (&optional filename) - "Send file to a Python3.3 interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "python3.3" 'dedicated nil nil nil t)) - -(defun py-execute-file-python3.3-dedicated-switch (&optional filename) - "Send file to a Python3.3 interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "python3.3" 'dedicated 'switch nil nil t)) - -(defun py-execute-file-bpython (&optional filename) - "Send file to a Bpython interpreter." - (interactive "fFile: ") - (py-execute-prepare filename "bpython" nil nil nil nil t)) - -(defun py-execute-file-bpython-switch (&optional filename) - "Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "bpython" nil 'switch nil nil t)) - -(defun py-execute-file-bpython-no-switch (&optional filename) - "Send file to a Bpython interpreter. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "bpython" nil 'no-switch nil nil t)) - -(defun py-execute-file-bpython-dedicated (&optional filename) - "Send file to a Bpython interpreter. - -Uses a dedicated shell." - (interactive "fFile: ") - (py-execute-prepare filename "bpython" 'dedicated nil nil nil t)) - -(defun py-execute-file-bpython-dedicated-switch (&optional filename) - "Send file to a Bpython interpreter. - -Uses a dedicated shell. -Ignores default of `py-switch-buffers-on-execute-p', uses it with value \"non-nil\"" - (interactive "fFile: ") - (py-execute-prepare filename "bpython" 'dedicated 'switch nil nil t)) - -;;; Extended executes -;; created by `write-extended-execute-forms' -(defun py-masterfile () - "Internal use. Set master-file, if given. " - (and (or py-master-file (py-fetch-py-master-file)) - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer)))) - -(defun py-execute-prepare (form &optional shell dedicated switch beg end file wholebuf) - "Used by python-extended-executes ." - (save-excursion - (let ((beg (unless file - (prog1 - (or beg (funcall (intern-soft (concat "py-beginning-of-" form "-p"))) - - (funcall (intern-soft (concat "py-beginning-of-" form))) - (push-mark))))) - (end (unless file - (or end (funcall (intern-soft (concat "py-end-of-" form)))))) - (py-shell-name shell) - (py-dedicated-process-p dedicated) - (py-switch-buffers-on-execute-p (cond ((eq 'switch switch) - t) - ((eq 'no-switch switch) - nil) - (t py-switch-buffers-on-execute-p))) - filename erg) - (if file - (progn - (setq filename (expand-file-name form)) - (if (file-readable-p filename) - (setq erg (py-execute-file-base nil filename nil nil (or (and (boundp 'py-orig-buffer-or-file) py-orig-buffer-or-file) filename))) - (message "%s not readable. %s" file "Do you have write permissions?"))) - (py-execute-base beg end shell nil nil wholebuf))))) - -(defun py-execute-statement-python () - "Send statement at point to Python interpreter. " - (interactive) - (py-execute-prepare "statement" "python" nil nil)) - -(defun py-execute-statement-python-switch () - "Send statement at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python" nil 'switch)) - -(defun py-execute-statement-python-no-switch () - "Send statement at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python" nil 'no-switch)) - -(defun py-execute-statement-python-dedicated () - "Send statement at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python" t nil)) - -(defun py-execute-statement-python-dedicated-switch () - "Send statement at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python" t 'switch)) - -(defun py-execute-statement-ipython () - "Send statement at point to IPython interpreter. " - (interactive) - (py-execute-prepare "statement" "ipython" nil nil)) - -(defun py-execute-statement-ipython-switch () - "Send statement at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "ipython" nil 'switch)) - -(defun py-execute-statement-ipython-no-switch () - "Send statement at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "ipython" nil 'no-switch)) - -(defun py-execute-statement-ipython-dedicated () - "Send statement at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "statement" "ipython" t nil)) - -(defun py-execute-statement-ipython-dedicated-switch () - "Send statement at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "ipython" t 'switch)) - -(defun py-execute-statement-python3 () - "Send statement at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "statement" "python3" nil nil)) - -(defun py-execute-statement-python3-switch () - "Send statement at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python3" nil 'switch)) - -(defun py-execute-statement-python3-no-switch () - "Send statement at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python3" nil 'no-switch)) - -(defun py-execute-statement-python3-dedicated () - "Send statement at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python3" t nil)) - -(defun py-execute-statement-python3-dedicated-switch () - "Send statement at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python3" t 'switch)) - -(defun py-execute-statement-python2 () - "Send statement at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "statement" "python2" nil nil)) - -(defun py-execute-statement-python2-switch () - "Send statement at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python2" nil 'switch)) - -(defun py-execute-statement-python2-no-switch () - "Send statement at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python2" nil 'no-switch)) - -(defun py-execute-statement-python2-dedicated () - "Send statement at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python2" t nil)) - -(defun py-execute-statement-python2-dedicated-switch () - "Send statement at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python2" t 'switch)) - -(defun py-execute-statement-python2.7 () - "Send statement at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "statement" "python2.7" nil nil)) - -(defun py-execute-statement-python2.7-switch () - "Send statement at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python2.7" nil 'switch)) - -(defun py-execute-statement-python2.7-no-switch () - "Send statement at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python2.7" nil 'no-switch)) - -(defun py-execute-statement-python2.7-dedicated () - "Send statement at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python2.7" t nil)) - -(defun py-execute-statement-python2.7-dedicated-switch () - "Send statement at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python2.7" t 'switch)) - -(defun py-execute-statement-jython () - "Send statement at point to Jython interpreter. " - (interactive) - (py-execute-prepare "statement" "jython" nil nil)) - -(defun py-execute-statement-jython-switch () - "Send statement at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "jython" nil 'switch)) - -(defun py-execute-statement-jython-no-switch () - "Send statement at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "jython" nil 'no-switch)) - -(defun py-execute-statement-jython-dedicated () - "Send statement at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "statement" "jython" t nil)) - -(defun py-execute-statement-jython-dedicated-switch () - "Send statement at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "jython" t 'switch)) - -(defun py-execute-statement-python3.2 () - "Send statement at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "statement" "python3.2" nil nil)) - -(defun py-execute-statement-python3.2-switch () - "Send statement at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python3.2" nil 'switch)) - -(defun py-execute-statement-python3.2-no-switch () - "Send statement at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python3.2" nil 'no-switch)) - -(defun py-execute-statement-python3.2-dedicated () - "Send statement at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python3.2" t nil)) - -(defun py-execute-statement-python3.2-dedicated-switch () - "Send statement at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python3.2" t 'switch)) - -(defun py-execute-statement-python3.3 () - "Send statement at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "statement" "python3.3" nil nil)) - -(defun py-execute-statement-python3.3-switch () - "Send statement at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "python3.3" nil 'switch)) - -(defun py-execute-statement-python3.3-no-switch () - "Send statement at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "python3.3" nil 'no-switch)) - -(defun py-execute-statement-python3.3-dedicated () - "Send statement at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "statement" "python3.3" t nil)) - -(defun py-execute-statement-python3.3-dedicated-switch () - "Send statement at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "python3.3" t 'switch)) - -(defun py-execute-statement-bpython () - "Send statement at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "statement" "bpython" nil nil)) - -(defun py-execute-statement-bpython-switch () - "Send statement at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "statement" "bpython" nil 'switch)) - -(defun py-execute-statement-bpython-no-switch () - "Send statement at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "statement" "bpython" nil 'no-switch)) - -(defun py-execute-statement-bpython-dedicated () - "Send statement at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "statement" "bpython" t nil)) - -(defun py-execute-statement-bpython-dedicated-switch () - "Send statement at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "statement" "bpython" t 'switch)) - -(defun py-execute-block-python () - "Send block at point to Python interpreter. " - (interactive) - (py-execute-prepare "block" "python" nil nil)) - -(defun py-execute-block-python-switch () - "Send block at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python" nil 'switch)) - -(defun py-execute-block-python-no-switch () - "Send block at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python" nil 'no-switch)) - -(defun py-execute-block-python-dedicated () - "Send block at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "block" "python" t nil)) - -(defun py-execute-block-python-dedicated-switch () - "Send block at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python" t 'switch)) - -(defun py-execute-block-ipython () - "Send block at point to IPython interpreter. " - (interactive) - (py-execute-prepare "block" "ipython" nil nil)) - -(defun py-execute-block-ipython-switch () - "Send block at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "ipython" nil 'switch)) - -(defun py-execute-block-ipython-no-switch () - "Send block at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "ipython" nil 'no-switch)) - -(defun py-execute-block-ipython-dedicated () - "Send block at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "block" "ipython" t nil)) - -(defun py-execute-block-ipython-dedicated-switch () - "Send block at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "ipython" t 'switch)) - -(defun py-execute-block-python3 () - "Send block at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "block" "python3" nil nil)) - -(defun py-execute-block-python3-switch () - "Send block at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python3" nil 'switch)) - -(defun py-execute-block-python3-no-switch () - "Send block at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python3" nil 'no-switch)) - -(defun py-execute-block-python3-dedicated () - "Send block at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "block" "python3" t nil)) - -(defun py-execute-block-python3-dedicated-switch () - "Send block at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python3" t 'switch)) - -(defun py-execute-block-python2 () - "Send block at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "block" "python2" nil nil)) - -(defun py-execute-block-python2-switch () - "Send block at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python2" nil 'switch)) - -(defun py-execute-block-python2-no-switch () - "Send block at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python2" nil 'no-switch)) - -(defun py-execute-block-python2-dedicated () - "Send block at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "block" "python2" t nil)) - -(defun py-execute-block-python2-dedicated-switch () - "Send block at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python2" t 'switch)) - -(defun py-execute-block-python2.7 () - "Send block at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "block" "python2.7" nil nil)) - -(defun py-execute-block-python2.7-switch () - "Send block at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python2.7" nil 'switch)) - -(defun py-execute-block-python2.7-no-switch () - "Send block at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python2.7" nil 'no-switch)) - -(defun py-execute-block-python2.7-dedicated () - "Send block at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "block" "python2.7" t nil)) - -(defun py-execute-block-python2.7-dedicated-switch () - "Send block at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python2.7" t 'switch)) - -(defun py-execute-block-jython () - "Send block at point to Jython interpreter. " - (interactive) - (py-execute-prepare "block" "jython" nil nil)) - -(defun py-execute-block-jython-switch () - "Send block at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "jython" nil 'switch)) - -(defun py-execute-block-jython-no-switch () - "Send block at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "jython" nil 'no-switch)) - -(defun py-execute-block-jython-dedicated () - "Send block at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "block" "jython" t nil)) - -(defun py-execute-block-jython-dedicated-switch () - "Send block at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "jython" t 'switch)) - -(defun py-execute-block-python3.2 () - "Send block at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "block" "python3.2" nil nil)) - -(defun py-execute-block-python3.2-switch () - "Send block at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python3.2" nil 'switch)) - -(defun py-execute-block-python3.2-no-switch () - "Send block at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python3.2" nil 'no-switch)) - -(defun py-execute-block-python3.2-dedicated () - "Send block at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "block" "python3.2" t nil)) - -(defun py-execute-block-python3.2-dedicated-switch () - "Send block at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python3.2" t 'switch)) - -(defun py-execute-block-python3.3 () - "Send block at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "block" "python3.3" nil nil)) - -(defun py-execute-block-python3.3-switch () - "Send block at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "python3.3" nil 'switch)) - -(defun py-execute-block-python3.3-no-switch () - "Send block at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "python3.3" nil 'no-switch)) - -(defun py-execute-block-python3.3-dedicated () - "Send block at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "block" "python3.3" t nil)) - -(defun py-execute-block-python3.3-dedicated-switch () - "Send block at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "python3.3" t 'switch)) - -(defun py-execute-block-bpython () - "Send block at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "block" "bpython" nil nil)) - -(defun py-execute-block-bpython-switch () - "Send block at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block" "bpython" nil 'switch)) - -(defun py-execute-block-bpython-no-switch () - "Send block at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block" "bpython" nil 'no-switch)) - -(defun py-execute-block-bpython-dedicated () - "Send block at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "block" "bpython" t nil)) - -(defun py-execute-block-bpython-dedicated-switch () - "Send block at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block" "bpython" t 'switch)) - -(defun py-execute-clause-python () - "Send clause at point to Python interpreter. " - (interactive) - (py-execute-prepare "clause" "python" nil nil)) - -(defun py-execute-clause-python-switch () - "Send clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python" nil 'switch)) - -(defun py-execute-clause-python-no-switch () - "Send clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python" nil 'no-switch)) - -(defun py-execute-clause-python-dedicated () - "Send clause at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python" t nil)) - -(defun py-execute-clause-python-dedicated-switch () - "Send clause at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python" t 'switch)) - -(defun py-execute-clause-ipython () - "Send clause at point to IPython interpreter. " - (interactive) - (py-execute-prepare "clause" "ipython" nil nil)) - -(defun py-execute-clause-ipython-switch () - "Send clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "ipython" nil 'switch)) - -(defun py-execute-clause-ipython-no-switch () - "Send clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "ipython" nil 'no-switch)) - -(defun py-execute-clause-ipython-dedicated () - "Send clause at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "clause" "ipython" t nil)) - -(defun py-execute-clause-ipython-dedicated-switch () - "Send clause at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "ipython" t 'switch)) - -(defun py-execute-clause-python3 () - "Send clause at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "clause" "python3" nil nil)) - -(defun py-execute-clause-python3-switch () - "Send clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python3" nil 'switch)) - -(defun py-execute-clause-python3-no-switch () - "Send clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python3" nil 'no-switch)) - -(defun py-execute-clause-python3-dedicated () - "Send clause at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python3" t nil)) - -(defun py-execute-clause-python3-dedicated-switch () - "Send clause at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python3" t 'switch)) - -(defun py-execute-clause-python2 () - "Send clause at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "clause" "python2" nil nil)) - -(defun py-execute-clause-python2-switch () - "Send clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python2" nil 'switch)) - -(defun py-execute-clause-python2-no-switch () - "Send clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python2" nil 'no-switch)) - -(defun py-execute-clause-python2-dedicated () - "Send clause at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python2" t nil)) - -(defun py-execute-clause-python2-dedicated-switch () - "Send clause at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python2" t 'switch)) - -(defun py-execute-clause-python2.7 () - "Send clause at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "clause" "python2.7" nil nil)) - -(defun py-execute-clause-python2.7-switch () - "Send clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python2.7" nil 'switch)) - -(defun py-execute-clause-python2.7-no-switch () - "Send clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python2.7" nil 'no-switch)) - -(defun py-execute-clause-python2.7-dedicated () - "Send clause at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python2.7" t nil)) - -(defun py-execute-clause-python2.7-dedicated-switch () - "Send clause at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python2.7" t 'switch)) - -(defun py-execute-clause-jython () - "Send clause at point to Jython interpreter. " - (interactive) - (py-execute-prepare "clause" "jython" nil nil)) - -(defun py-execute-clause-jython-switch () - "Send clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "jython" nil 'switch)) - -(defun py-execute-clause-jython-no-switch () - "Send clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "jython" nil 'no-switch)) - -(defun py-execute-clause-jython-dedicated () - "Send clause at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "clause" "jython" t nil)) - -(defun py-execute-clause-jython-dedicated-switch () - "Send clause at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "jython" t 'switch)) - -(defun py-execute-clause-python3.2 () - "Send clause at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "clause" "python3.2" nil nil)) - -(defun py-execute-clause-python3.2-switch () - "Send clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python3.2" nil 'switch)) - -(defun py-execute-clause-python3.2-no-switch () - "Send clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python3.2" nil 'no-switch)) - -(defun py-execute-clause-python3.2-dedicated () - "Send clause at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python3.2" t nil)) - -(defun py-execute-clause-python3.2-dedicated-switch () - "Send clause at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python3.2" t 'switch)) - -(defun py-execute-clause-python3.3 () - "Send clause at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "clause" "python3.3" nil nil)) - -(defun py-execute-clause-python3.3-switch () - "Send clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "python3.3" nil 'switch)) - -(defun py-execute-clause-python3.3-no-switch () - "Send clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "python3.3" nil 'no-switch)) - -(defun py-execute-clause-python3.3-dedicated () - "Send clause at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "clause" "python3.3" t nil)) - -(defun py-execute-clause-python3.3-dedicated-switch () - "Send clause at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "python3.3" t 'switch)) - -(defun py-execute-clause-bpython () - "Send clause at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "clause" "bpython" nil nil)) - -(defun py-execute-clause-bpython-switch () - "Send clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "clause" "bpython" nil 'switch)) - -(defun py-execute-clause-bpython-no-switch () - "Send clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "clause" "bpython" nil 'no-switch)) - -(defun py-execute-clause-bpython-dedicated () - "Send clause at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "clause" "bpython" t nil)) - -(defun py-execute-clause-bpython-dedicated-switch () - "Send clause at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "clause" "bpython" t 'switch)) - -(defun py-execute-block-or-clause-python () - "Send block-or-clause at point to Python interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python" nil nil)) - -(defun py-execute-block-or-clause-python-switch () - "Send block-or-clause at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python" nil 'switch)) - -(defun py-execute-block-or-clause-python-no-switch () - "Send block-or-clause at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python" nil 'no-switch)) - -(defun py-execute-block-or-clause-python-dedicated () - "Send block-or-clause at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python" t nil)) - -(defun py-execute-block-or-clause-python-dedicated-switch () - "Send block-or-clause at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python" t 'switch)) - -(defun py-execute-block-or-clause-ipython () - "Send block-or-clause at point to IPython interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "ipython" nil nil)) - -(defun py-execute-block-or-clause-ipython-switch () - "Send block-or-clause at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "ipython" nil 'switch)) - -(defun py-execute-block-or-clause-ipython-no-switch () - "Send block-or-clause at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "ipython" nil 'no-switch)) - -(defun py-execute-block-or-clause-ipython-dedicated () - "Send block-or-clause at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "ipython" t nil)) - -(defun py-execute-block-or-clause-ipython-dedicated-switch () - "Send block-or-clause at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "ipython" t 'switch)) - -(defun py-execute-block-or-clause-python3 () - "Send block-or-clause at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3" nil nil)) - -(defun py-execute-block-or-clause-python3-switch () - "Send block-or-clause at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python3" nil 'switch)) - -(defun py-execute-block-or-clause-python3-no-switch () - "Send block-or-clause at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python3" nil 'no-switch)) - -(defun py-execute-block-or-clause-python3-dedicated () - "Send block-or-clause at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3" t nil)) - -(defun py-execute-block-or-clause-python3-dedicated-switch () - "Send block-or-clause at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python3" t 'switch)) - -(defun py-execute-block-or-clause-python2 () - "Send block-or-clause at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python2" nil nil)) - -(defun py-execute-block-or-clause-python2-switch () - "Send block-or-clause at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python2" nil 'switch)) - -(defun py-execute-block-or-clause-python2-no-switch () - "Send block-or-clause at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python2" nil 'no-switch)) - -(defun py-execute-block-or-clause-python2-dedicated () - "Send block-or-clause at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python2" t nil)) - -(defun py-execute-block-or-clause-python2-dedicated-switch () - "Send block-or-clause at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python2" t 'switch)) - -(defun py-execute-block-or-clause-python2.7 () - "Send block-or-clause at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python2.7" nil nil)) - -(defun py-execute-block-or-clause-python2.7-switch () - "Send block-or-clause at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python2.7" nil 'switch)) - -(defun py-execute-block-or-clause-python2.7-no-switch () - "Send block-or-clause at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python2.7" nil 'no-switch)) - -(defun py-execute-block-or-clause-python2.7-dedicated () - "Send block-or-clause at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python2.7" t nil)) - -(defun py-execute-block-or-clause-python2.7-dedicated-switch () - "Send block-or-clause at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python2.7" t 'switch)) - -(defun py-execute-block-or-clause-jython () - "Send block-or-clause at point to Jython interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "jython" nil nil)) - -(defun py-execute-block-or-clause-jython-switch () - "Send block-or-clause at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "jython" nil 'switch)) - -(defun py-execute-block-or-clause-jython-no-switch () - "Send block-or-clause at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "jython" nil 'no-switch)) - -(defun py-execute-block-or-clause-jython-dedicated () - "Send block-or-clause at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "jython" t nil)) - -(defun py-execute-block-or-clause-jython-dedicated-switch () - "Send block-or-clause at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "jython" t 'switch)) - -(defun py-execute-block-or-clause-python3.2 () - "Send block-or-clause at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.2" nil nil)) - -(defun py-execute-block-or-clause-python3.2-switch () - "Send block-or-clause at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.2" nil 'switch)) - -(defun py-execute-block-or-clause-python3.2-no-switch () - "Send block-or-clause at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python3.2" nil 'no-switch)) - -(defun py-execute-block-or-clause-python3.2-dedicated () - "Send block-or-clause at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.2" t nil)) - -(defun py-execute-block-or-clause-python3.2-dedicated-switch () - "Send block-or-clause at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.2" t 'switch)) - -(defun py-execute-block-or-clause-python3.3 () - "Send block-or-clause at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.3" nil nil)) - -(defun py-execute-block-or-clause-python3.3-switch () - "Send block-or-clause at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.3" nil 'switch)) - -(defun py-execute-block-or-clause-python3.3-no-switch () - "Send block-or-clause at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "python3.3" nil 'no-switch)) - -(defun py-execute-block-or-clause-python3.3-dedicated () - "Send block-or-clause at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.3" t nil)) - -(defun py-execute-block-or-clause-python3.3-dedicated-switch () - "Send block-or-clause at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "python3.3" t 'switch)) - -(defun py-execute-block-or-clause-bpython () - "Send block-or-clause at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "bpython" nil nil)) - -(defun py-execute-block-or-clause-bpython-switch () - "Send block-or-clause at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "block-or-clause" "bpython" nil 'switch)) - -(defun py-execute-block-or-clause-bpython-no-switch () - "Send block-or-clause at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "block-or-clause" "bpython" nil 'no-switch)) - -(defun py-execute-block-or-clause-bpython-dedicated () - "Send block-or-clause at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "block-or-clause" "bpython" t nil)) - -(defun py-execute-block-or-clause-bpython-dedicated-switch () - "Send block-or-clause at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "block-or-clause" "bpython" t 'switch)) - -(defun py-execute-def-python () - "Send def at point to Python interpreter. " - (interactive) - (py-execute-prepare "def" "python" nil nil)) - -(defun py-execute-def-python-switch () - "Send def at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python" nil 'switch)) - -(defun py-execute-def-python-no-switch () - "Send def at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python" nil 'no-switch)) - -(defun py-execute-def-python-dedicated () - "Send def at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "def" "python" t nil)) - -(defun py-execute-def-python-dedicated-switch () - "Send def at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python" t 'switch)) - -(defun py-execute-def-ipython () - "Send def at point to IPython interpreter. " - (interactive) - (py-execute-prepare "def" "ipython" nil nil)) - -(defun py-execute-def-ipython-switch () - "Send def at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "ipython" nil 'switch)) - -(defun py-execute-def-ipython-no-switch () - "Send def at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "ipython" nil 'no-switch)) - -(defun py-execute-def-ipython-dedicated () - "Send def at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "def" "ipython" t nil)) - -(defun py-execute-def-ipython-dedicated-switch () - "Send def at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "ipython" t 'switch)) - -(defun py-execute-def-python3 () - "Send def at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "def" "python3" nil nil)) - -(defun py-execute-def-python3-switch () - "Send def at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python3" nil 'switch)) - -(defun py-execute-def-python3-no-switch () - "Send def at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python3" nil 'no-switch)) - -(defun py-execute-def-python3-dedicated () - "Send def at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "def" "python3" t nil)) - -(defun py-execute-def-python3-dedicated-switch () - "Send def at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python3" t 'switch)) - -(defun py-execute-def-python2 () - "Send def at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "def" "python2" nil nil)) - -(defun py-execute-def-python2-switch () - "Send def at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python2" nil 'switch)) - -(defun py-execute-def-python2-no-switch () - "Send def at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python2" nil 'no-switch)) - -(defun py-execute-def-python2-dedicated () - "Send def at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "def" "python2" t nil)) - -(defun py-execute-def-python2-dedicated-switch () - "Send def at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python2" t 'switch)) - -(defun py-execute-def-python2.7 () - "Send def at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "def" "python2.7" nil nil)) - -(defun py-execute-def-python2.7-switch () - "Send def at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python2.7" nil 'switch)) - -(defun py-execute-def-python2.7-no-switch () - "Send def at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python2.7" nil 'no-switch)) - -(defun py-execute-def-python2.7-dedicated () - "Send def at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "def" "python2.7" t nil)) - -(defun py-execute-def-python2.7-dedicated-switch () - "Send def at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python2.7" t 'switch)) - -(defun py-execute-def-jython () - "Send def at point to Jython interpreter. " - (interactive) - (py-execute-prepare "def" "jython" nil nil)) - -(defun py-execute-def-jython-switch () - "Send def at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "jython" nil 'switch)) - -(defun py-execute-def-jython-no-switch () - "Send def at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "jython" nil 'no-switch)) - -(defun py-execute-def-jython-dedicated () - "Send def at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "def" "jython" t nil)) - -(defun py-execute-def-jython-dedicated-switch () - "Send def at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "jython" t 'switch)) - -(defun py-execute-def-python3.2 () - "Send def at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "def" "python3.2" nil nil)) - -(defun py-execute-def-python3.2-switch () - "Send def at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python3.2" nil 'switch)) - -(defun py-execute-def-python3.2-no-switch () - "Send def at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python3.2" nil 'no-switch)) - -(defun py-execute-def-python3.2-dedicated () - "Send def at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "def" "python3.2" t nil)) - -(defun py-execute-def-python3.2-dedicated-switch () - "Send def at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python3.2" t 'switch)) - -(defun py-execute-def-python3.3 () - "Send def at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "def" "python3.3" nil nil)) - -(defun py-execute-def-python3.3-switch () - "Send def at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "python3.3" nil 'switch)) - -(defun py-execute-def-python3.3-no-switch () - "Send def at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "python3.3" nil 'no-switch)) - -(defun py-execute-def-python3.3-dedicated () - "Send def at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "def" "python3.3" t nil)) - -(defun py-execute-def-python3.3-dedicated-switch () - "Send def at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "python3.3" t 'switch)) - -(defun py-execute-def-bpython () - "Send def at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "def" "bpython" nil nil)) - -(defun py-execute-def-bpython-switch () - "Send def at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "def" "bpython" nil 'switch)) - -(defun py-execute-def-bpython-no-switch () - "Send def at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "def" "bpython" nil 'no-switch)) - -(defun py-execute-def-bpython-dedicated () - "Send def at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "def" "bpython" t nil)) - -(defun py-execute-def-bpython-dedicated-switch () - "Send def at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "def" "bpython" t 'switch)) - -(defun py-execute-class-python () - "Send class at point to Python interpreter. " - (interactive) - (py-execute-prepare "class" "python" nil nil)) - -(defun py-execute-class-python-switch () - "Send class at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python" nil 'switch)) - -(defun py-execute-class-python-no-switch () - "Send class at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python" nil 'no-switch)) - -(defun py-execute-class-python-dedicated () - "Send class at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "class" "python" t nil)) - -(defun py-execute-class-python-dedicated-switch () - "Send class at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python" t 'switch)) - -(defun py-execute-class-ipython () - "Send class at point to IPython interpreter. " - (interactive) - (py-execute-prepare "class" "ipython" nil nil)) - -(defun py-execute-class-ipython-switch () - "Send class at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "ipython" nil 'switch)) - -(defun py-execute-class-ipython-no-switch () - "Send class at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "ipython" nil 'no-switch)) - -(defun py-execute-class-ipython-dedicated () - "Send class at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "class" "ipython" t nil)) - -(defun py-execute-class-ipython-dedicated-switch () - "Send class at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "ipython" t 'switch)) - -(defun py-execute-class-python3 () - "Send class at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "class" "python3" nil nil)) - -(defun py-execute-class-python3-switch () - "Send class at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python3" nil 'switch)) - -(defun py-execute-class-python3-no-switch () - "Send class at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python3" nil 'no-switch)) - -(defun py-execute-class-python3-dedicated () - "Send class at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "class" "python3" t nil)) - -(defun py-execute-class-python3-dedicated-switch () - "Send class at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python3" t 'switch)) - -(defun py-execute-class-python2 () - "Send class at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "class" "python2" nil nil)) - -(defun py-execute-class-python2-switch () - "Send class at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python2" nil 'switch)) - -(defun py-execute-class-python2-no-switch () - "Send class at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python2" nil 'no-switch)) - -(defun py-execute-class-python2-dedicated () - "Send class at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "class" "python2" t nil)) - -(defun py-execute-class-python2-dedicated-switch () - "Send class at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python2" t 'switch)) - -(defun py-execute-class-python2.7 () - "Send class at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "class" "python2.7" nil nil)) - -(defun py-execute-class-python2.7-switch () - "Send class at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python2.7" nil 'switch)) - -(defun py-execute-class-python2.7-no-switch () - "Send class at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python2.7" nil 'no-switch)) - -(defun py-execute-class-python2.7-dedicated () - "Send class at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "class" "python2.7" t nil)) - -(defun py-execute-class-python2.7-dedicated-switch () - "Send class at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python2.7" t 'switch)) - -(defun py-execute-class-jython () - "Send class at point to Jython interpreter. " - (interactive) - (py-execute-prepare "class" "jython" nil nil)) - -(defun py-execute-class-jython-switch () - "Send class at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "jython" nil 'switch)) - -(defun py-execute-class-jython-no-switch () - "Send class at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "jython" nil 'no-switch)) - -(defun py-execute-class-jython-dedicated () - "Send class at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "class" "jython" t nil)) - -(defun py-execute-class-jython-dedicated-switch () - "Send class at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "jython" t 'switch)) - -(defun py-execute-class-python3.2 () - "Send class at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "class" "python3.2" nil nil)) - -(defun py-execute-class-python3.2-switch () - "Send class at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python3.2" nil 'switch)) - -(defun py-execute-class-python3.2-no-switch () - "Send class at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python3.2" nil 'no-switch)) - -(defun py-execute-class-python3.2-dedicated () - "Send class at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "class" "python3.2" t nil)) - -(defun py-execute-class-python3.2-dedicated-switch () - "Send class at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python3.2" t 'switch)) - -(defun py-execute-class-python3.3 () - "Send class at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "class" "python3.3" nil nil)) - -(defun py-execute-class-python3.3-switch () - "Send class at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "python3.3" nil 'switch)) - -(defun py-execute-class-python3.3-no-switch () - "Send class at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "python3.3" nil 'no-switch)) - -(defun py-execute-class-python3.3-dedicated () - "Send class at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "class" "python3.3" t nil)) - -(defun py-execute-class-python3.3-dedicated-switch () - "Send class at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "python3.3" t 'switch)) - -(defun py-execute-class-bpython () - "Send class at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "class" "bpython" nil nil)) - -(defun py-execute-class-bpython-switch () - "Send class at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "class" "bpython" nil 'switch)) - -(defun py-execute-class-bpython-no-switch () - "Send class at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "class" "bpython" nil 'no-switch)) - -(defun py-execute-class-bpython-dedicated () - "Send class at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "class" "bpython" t nil)) - -(defun py-execute-class-bpython-dedicated-switch () - "Send class at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "class" "bpython" t 'switch)) - -(defun py-execute-region-python (beg end) - "Send region at point to Python interpreter. " - (interactive "r") - (py-execute-prepare "region" "python" nil nil beg end)) - -(defun py-execute-region-python-switch (beg end) - "Send region at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python" nil 'switch beg end)) - -(defun py-execute-region-python-no-switch (beg end) - "Send region at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python" nil 'no-switch beg end)) - -(defun py-execute-region-python-dedicated (beg end) - "Send region at point to Python unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python" t nil beg end)) - -(defun py-execute-region-python-dedicated-switch (beg end) - "Send region at point to Python unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python" t 'switch beg end)) - -(defun py-execute-region-ipython (beg end) - "Send region at point to IPython interpreter. " - (interactive "r") - (py-execute-prepare "region" "ipython" nil nil beg end)) - -(defun py-execute-region-ipython-switch (beg end) - "Send region at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "ipython" nil 'switch beg end)) - -(defun py-execute-region-ipython-no-switch (beg end) - "Send region at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "ipython" nil 'no-switch beg end)) - -(defun py-execute-region-ipython-dedicated (beg end) - "Send region at point to IPython unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "ipython" t nil beg end)) - -(defun py-execute-region-ipython-dedicated-switch (beg end) - "Send region at point to IPython unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "ipython" t 'switch beg end)) - -(defun py-execute-region-python3 (beg end) - "Send region at point to Python3 interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3" nil nil beg end)) - -(defun py-execute-region-python3-switch (beg end) - "Send region at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python3" nil 'switch beg end)) - -(defun py-execute-region-python3-no-switch (beg end) - "Send region at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python3" nil 'no-switch beg end)) - -(defun py-execute-region-python3-dedicated (beg end) - "Send region at point to Python3 unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3" t nil beg end)) - -(defun py-execute-region-python3-dedicated-switch (beg end) - "Send region at point to Python3 unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python3" t 'switch beg end)) - -(defun py-execute-region-python2 (beg end) - "Send region at point to Python2 interpreter. " - (interactive "r") - (py-execute-prepare "region" "python2" nil nil beg end)) - -(defun py-execute-region-python2-switch (beg end) - "Send region at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python2" nil 'switch beg end)) - -(defun py-execute-region-python2-no-switch (beg end) - "Send region at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python2" nil 'no-switch beg end)) - -(defun py-execute-region-python2-dedicated (beg end) - "Send region at point to Python2 unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python2" t nil beg end)) - -(defun py-execute-region-python2-dedicated-switch (beg end) - "Send region at point to Python2 unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python2" t 'switch beg end)) - -(defun py-execute-region-python2.7 (beg end) - "Send region at point to Python2.7 interpreter. " - (interactive "r") - (py-execute-prepare "region" "python2.7" nil nil beg end)) - -(defun py-execute-region-python2.7-switch (beg end) - "Send region at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python2.7" nil 'switch beg end)) - -(defun py-execute-region-python2.7-no-switch (beg end) - "Send region at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python2.7" nil 'no-switch beg end)) - -(defun py-execute-region-python2.7-dedicated (beg end) - "Send region at point to Python2.7 unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python2.7" t nil beg end)) - -(defun py-execute-region-python2.7-dedicated-switch (beg end) - "Send region at point to Python2.7 unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python2.7" t 'switch beg end)) - -(defun py-execute-region-jython (beg end) - "Send region at point to Jython interpreter. " - (interactive "r") - (py-execute-prepare "region" "jython" nil nil beg end)) - -(defun py-execute-region-jython-switch (beg end) - "Send region at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "jython" nil 'switch beg end)) - -(defun py-execute-region-jython-no-switch (beg end) - "Send region at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "jython" nil 'no-switch beg end)) - -(defun py-execute-region-jython-dedicated (beg end) - "Send region at point to Jython unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "jython" t nil beg end)) - -(defun py-execute-region-jython-dedicated-switch (beg end) - "Send region at point to Jython unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "jython" t 'switch beg end)) - -(defun py-execute-region-python3.2 (beg end) - "Send region at point to Python3.2 interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3.2" nil nil beg end)) - -(defun py-execute-region-python3.2-switch (beg end) - "Send region at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python3.2" nil 'switch beg end)) - -(defun py-execute-region-python3.2-no-switch (beg end) - "Send region at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python3.2" nil 'no-switch beg end)) - -(defun py-execute-region-python3.2-dedicated (beg end) - "Send region at point to Python3.2 unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3.2" t nil beg end)) - -(defun py-execute-region-python3.2-dedicated-switch (beg end) - "Send region at point to Python3.2 unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python3.2" t 'switch beg end)) - -(defun py-execute-region-python3.3 (beg end) - "Send region at point to Python3.3 interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3.3" nil nil beg end)) - -(defun py-execute-region-python3.3-switch (beg end) - "Send region at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "python3.3" nil 'switch beg end)) - -(defun py-execute-region-python3.3-no-switch (beg end) - "Send region at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "python3.3" nil 'no-switch beg end)) - -(defun py-execute-region-python3.3-dedicated (beg end) - "Send region at point to Python3.3 unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "python3.3" t nil beg end)) - -(defun py-execute-region-python3.3-dedicated-switch (beg end) - "Send region at point to Python3.3 unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "python3.3" t 'switch beg end)) - -(defun py-execute-region-bpython (beg end) - "Send region at point to Bpython interpreter. " - (interactive "r") - (py-execute-prepare "region" "bpython" nil nil beg end)) - -(defun py-execute-region-bpython-switch (beg end) - "Send region at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive "r") - (py-execute-prepare "region" "bpython" nil 'switch beg end)) - -(defun py-execute-region-bpython-no-switch (beg end) - "Send region at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive "r") - (py-execute-prepare "region" "bpython" nil 'no-switch beg end)) - -(defun py-execute-region-bpython-dedicated (beg end) - "Send region at point to Bpython unique interpreter. " - (interactive "r") - (py-execute-prepare "region" "bpython" t nil beg end)) - -(defun py-execute-region-bpython-dedicated-switch (beg end) - "Send region at point to Bpython unique interpreter and switch to result. " - (interactive "r") - (py-execute-prepare "region" "bpython" t 'switch beg end)) - -(defun py-execute-buffer-python () - "Send buffer at point to Python interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python-switch () - "Send buffer at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python-no-switch () - "Send buffer at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python-dedicated () - "Send buffer at point to Python unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python-dedicated-switch () - "Send buffer at point to Python unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-ipython () - "Send buffer at point to IPython interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "ipython" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-ipython-switch () - "Send buffer at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "ipython" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-ipython-no-switch () - "Send buffer at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "ipython" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-ipython-dedicated () - "Send buffer at point to IPython unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "ipython" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-ipython-dedicated-switch () - "Send buffer at point to IPython unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "ipython" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3 () - "Send buffer at point to Python3 interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3-switch () - "Send buffer at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3-no-switch () - "Send buffer at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3-dedicated () - "Send buffer at point to Python3 unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3-dedicated-switch () - "Send buffer at point to Python3 unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2 () - "Send buffer at point to Python2 interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python2-switch () - "Send buffer at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2-no-switch () - "Send buffer at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2-dedicated () - "Send buffer at point to Python2 unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python2-dedicated-switch () - "Send buffer at point to Python2 unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2.7 () - "Send buffer at point to Python2.7 interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2.7" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python2.7-switch () - "Send buffer at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2.7" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2.7-no-switch () - "Send buffer at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2.7" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python2.7-dedicated () - "Send buffer at point to Python2.7 unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2.7" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python2.7-dedicated-switch () - "Send buffer at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python2.7" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-jython () - "Send buffer at point to Jython interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "jython" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-jython-switch () - "Send buffer at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "jython" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-jython-no-switch () - "Send buffer at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "jython" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-jython-dedicated () - "Send buffer at point to Jython unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "jython" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-jython-dedicated-switch () - "Send buffer at point to Jython unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "jython" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.2 () - "Send buffer at point to Python3.2 interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.2" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3.2-switch () - "Send buffer at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.2" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.2-no-switch () - "Send buffer at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.2" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.2-dedicated () - "Send buffer at point to Python3.2 unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.2" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3.2-dedicated-switch () - "Send buffer at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.2" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.3 () - "Send buffer at point to Python3.3 interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.3" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3.3-switch () - "Send buffer at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.3" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.3-no-switch () - "Send buffer at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.3" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-python3.3-dedicated () - "Send buffer at point to Python3.3 unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.3" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-python3.3-dedicated-switch () - "Send buffer at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "python3.3" t 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-bpython () - "Send buffer at point to Bpython interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "bpython" nil nil (point-min) (point-max))))) - -(defun py-execute-buffer-bpython-switch () - "Send buffer at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "bpython" nil 'switch (point-min) (point-max))))) - -(defun py-execute-buffer-bpython-no-switch () - "Send buffer at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "bpython" nil 'no-switch (point-min) (point-max))))) - -(defun py-execute-buffer-bpython-dedicated () - "Send buffer at point to Bpython unique interpreter. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "bpython" t nil (point-min) (point-max))))) - -(defun py-execute-buffer-bpython-dedicated-switch () - "Send buffer at point to Bpython unique interpreter and switch to result. " - (interactive) - (save-excursion - (let ((wholebuf t) - (py-master-file (or py-master-file (py-fetch-py-master-file))) - beg end) - (when py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-prepare "buffer" "bpython" t 'switch (point-min) (point-max))))) - -(defun py-execute-expression-python () - "Send expression at point to Python interpreter. " - (interactive) - (py-execute-prepare "expression" "python" nil nil)) - -(defun py-execute-expression-python-switch () - "Send expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python" nil 'switch)) - -(defun py-execute-expression-python-no-switch () - "Send expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python" nil 'no-switch)) - -(defun py-execute-expression-python-dedicated () - "Send expression at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python" t nil)) - -(defun py-execute-expression-python-dedicated-switch () - "Send expression at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python" t 'switch)) - -(defun py-execute-expression-ipython () - "Send expression at point to IPython interpreter. " - (interactive) - (py-execute-prepare "expression" "ipython" nil nil)) - -(defun py-execute-expression-ipython-switch () - "Send expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "ipython" nil 'switch)) - -(defun py-execute-expression-ipython-no-switch () - "Send expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "ipython" nil 'no-switch)) - -(defun py-execute-expression-ipython-dedicated () - "Send expression at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "expression" "ipython" t nil)) - -(defun py-execute-expression-ipython-dedicated-switch () - "Send expression at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "ipython" t 'switch)) - -(defun py-execute-expression-python3 () - "Send expression at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "expression" "python3" nil nil)) - -(defun py-execute-expression-python3-switch () - "Send expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python3" nil 'switch)) - -(defun py-execute-expression-python3-no-switch () - "Send expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python3" nil 'no-switch)) - -(defun py-execute-expression-python3-dedicated () - "Send expression at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python3" t nil)) - -(defun py-execute-expression-python3-dedicated-switch () - "Send expression at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python3" t 'switch)) - -(defun py-execute-expression-python2 () - "Send expression at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "expression" "python2" nil nil)) - -(defun py-execute-expression-python2-switch () - "Send expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python2" nil 'switch)) - -(defun py-execute-expression-python2-no-switch () - "Send expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python2" nil 'no-switch)) - -(defun py-execute-expression-python2-dedicated () - "Send expression at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python2" t nil)) - -(defun py-execute-expression-python2-dedicated-switch () - "Send expression at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python2" t 'switch)) - -(defun py-execute-expression-python2.7 () - "Send expression at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "expression" "python2.7" nil nil)) - -(defun py-execute-expression-python2.7-switch () - "Send expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python2.7" nil 'switch)) - -(defun py-execute-expression-python2.7-no-switch () - "Send expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python2.7" nil 'no-switch)) - -(defun py-execute-expression-python2.7-dedicated () - "Send expression at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python2.7" t nil)) - -(defun py-execute-expression-python2.7-dedicated-switch () - "Send expression at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python2.7" t 'switch)) - -(defun py-execute-expression-jython () - "Send expression at point to Jython interpreter. " - (interactive) - (py-execute-prepare "expression" "jython" nil nil)) - -(defun py-execute-expression-jython-switch () - "Send expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "jython" nil 'switch)) - -(defun py-execute-expression-jython-no-switch () - "Send expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "jython" nil 'no-switch)) - -(defun py-execute-expression-jython-dedicated () - "Send expression at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "expression" "jython" t nil)) - -(defun py-execute-expression-jython-dedicated-switch () - "Send expression at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "jython" t 'switch)) - -(defun py-execute-expression-python3.2 () - "Send expression at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "expression" "python3.2" nil nil)) - -(defun py-execute-expression-python3.2-switch () - "Send expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python3.2" nil 'switch)) - -(defun py-execute-expression-python3.2-no-switch () - "Send expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python3.2" nil 'no-switch)) - -(defun py-execute-expression-python3.2-dedicated () - "Send expression at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python3.2" t nil)) - -(defun py-execute-expression-python3.2-dedicated-switch () - "Send expression at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python3.2" t 'switch)) - -(defun py-execute-expression-python3.3 () - "Send expression at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "expression" "python3.3" nil nil)) - -(defun py-execute-expression-python3.3-switch () - "Send expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "python3.3" nil 'switch)) - -(defun py-execute-expression-python3.3-no-switch () - "Send expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "python3.3" nil 'no-switch)) - -(defun py-execute-expression-python3.3-dedicated () - "Send expression at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "expression" "python3.3" t nil)) - -(defun py-execute-expression-python3.3-dedicated-switch () - "Send expression at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "python3.3" t 'switch)) - -(defun py-execute-expression-bpython () - "Send expression at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "expression" "bpython" nil nil)) - -(defun py-execute-expression-bpython-switch () - "Send expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "expression" "bpython" nil 'switch)) - -(defun py-execute-expression-bpython-no-switch () - "Send expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "expression" "bpython" nil 'no-switch)) - -(defun py-execute-expression-bpython-dedicated () - "Send expression at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "expression" "bpython" t nil)) - -(defun py-execute-expression-bpython-dedicated-switch () - "Send expression at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "expression" "bpython" t 'switch)) - -(defun py-execute-partial-expression-python () - "Send partial-expression at point to Python interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python" nil nil)) - -(defun py-execute-partial-expression-python-switch () - "Send partial-expression at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python" nil 'switch)) - -(defun py-execute-partial-expression-python-no-switch () - "Send partial-expression at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python" nil 'no-switch)) - -(defun py-execute-partial-expression-python-dedicated () - "Send partial-expression at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python" t nil)) - -(defun py-execute-partial-expression-python-dedicated-switch () - "Send partial-expression at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python" t 'switch)) - -(defun py-execute-partial-expression-ipython () - "Send partial-expression at point to IPython interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "ipython" nil nil)) - -(defun py-execute-partial-expression-ipython-switch () - "Send partial-expression at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "ipython" nil 'switch)) - -(defun py-execute-partial-expression-ipython-no-switch () - "Send partial-expression at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "ipython" nil 'no-switch)) - -(defun py-execute-partial-expression-ipython-dedicated () - "Send partial-expression at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "ipython" t nil)) - -(defun py-execute-partial-expression-ipython-dedicated-switch () - "Send partial-expression at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "ipython" t 'switch)) - -(defun py-execute-partial-expression-python3 () - "Send partial-expression at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3" nil nil)) - -(defun py-execute-partial-expression-python3-switch () - "Send partial-expression at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python3" nil 'switch)) - -(defun py-execute-partial-expression-python3-no-switch () - "Send partial-expression at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python3" nil 'no-switch)) - -(defun py-execute-partial-expression-python3-dedicated () - "Send partial-expression at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3" t nil)) - -(defun py-execute-partial-expression-python3-dedicated-switch () - "Send partial-expression at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python3" t 'switch)) - -(defun py-execute-partial-expression-python2 () - "Send partial-expression at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python2" nil nil)) - -(defun py-execute-partial-expression-python2-switch () - "Send partial-expression at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python2" nil 'switch)) - -(defun py-execute-partial-expression-python2-no-switch () - "Send partial-expression at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python2" nil 'no-switch)) - -(defun py-execute-partial-expression-python2-dedicated () - "Send partial-expression at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python2" t nil)) - -(defun py-execute-partial-expression-python2-dedicated-switch () - "Send partial-expression at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python2" t 'switch)) - -(defun py-execute-partial-expression-python2.7 () - "Send partial-expression at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python2.7" nil nil)) - -(defun py-execute-partial-expression-python2.7-switch () - "Send partial-expression at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python2.7" nil 'switch)) - -(defun py-execute-partial-expression-python2.7-no-switch () - "Send partial-expression at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python2.7" nil 'no-switch)) - -(defun py-execute-partial-expression-python2.7-dedicated () - "Send partial-expression at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python2.7" t nil)) - -(defun py-execute-partial-expression-python2.7-dedicated-switch () - "Send partial-expression at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python2.7" t 'switch)) - -(defun py-execute-partial-expression-jython () - "Send partial-expression at point to Jython interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "jython" nil nil)) - -(defun py-execute-partial-expression-jython-switch () - "Send partial-expression at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "jython" nil 'switch)) - -(defun py-execute-partial-expression-jython-no-switch () - "Send partial-expression at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "jython" nil 'no-switch)) - -(defun py-execute-partial-expression-jython-dedicated () - "Send partial-expression at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "jython" t nil)) - -(defun py-execute-partial-expression-jython-dedicated-switch () - "Send partial-expression at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "jython" t 'switch)) - -(defun py-execute-partial-expression-python3.2 () - "Send partial-expression at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3.2" nil nil)) - -(defun py-execute-partial-expression-python3.2-switch () - "Send partial-expression at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python3.2" nil 'switch)) - -(defun py-execute-partial-expression-python3.2-no-switch () - "Send partial-expression at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python3.2" nil 'no-switch)) - -(defun py-execute-partial-expression-python3.2-dedicated () - "Send partial-expression at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3.2" t nil)) - -(defun py-execute-partial-expression-python3.2-dedicated-switch () - "Send partial-expression at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python3.2" t 'switch)) - -(defun py-execute-partial-expression-python3.3 () - "Send partial-expression at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3.3" nil nil)) - -(defun py-execute-partial-expression-python3.3-switch () - "Send partial-expression at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "python3.3" nil 'switch)) - -(defun py-execute-partial-expression-python3.3-no-switch () - "Send partial-expression at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "python3.3" nil 'no-switch)) - -(defun py-execute-partial-expression-python3.3-dedicated () - "Send partial-expression at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "python3.3" t nil)) - -(defun py-execute-partial-expression-python3.3-dedicated-switch () - "Send partial-expression at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "python3.3" t 'switch)) - -(defun py-execute-partial-expression-bpython () - "Send partial-expression at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "bpython" nil nil)) - -(defun py-execute-partial-expression-bpython-switch () - "Send partial-expression at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "partial-expression" "bpython" nil 'switch)) - -(defun py-execute-partial-expression-bpython-no-switch () - "Send partial-expression at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "partial-expression" "bpython" nil 'no-switch)) - -(defun py-execute-partial-expression-bpython-dedicated () - "Send partial-expression at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "partial-expression" "bpython" t nil)) - -(defun py-execute-partial-expression-bpython-dedicated-switch () - "Send partial-expression at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "partial-expression" "bpython" t 'switch)) - -(defun py-execute-line-python () - "Send line at point to Python interpreter. " - (interactive) - (py-execute-prepare "line" "python" nil nil)) - -(defun py-execute-line-python-switch () - "Send line at point to Python interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python" nil 'switch)) - -(defun py-execute-line-python-no-switch () - "Send line at point to Python interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python" nil 'no-switch)) - -(defun py-execute-line-python-dedicated () - "Send line at point to Python unique interpreter. " - (interactive) - (py-execute-prepare "line" "python" t nil)) - -(defun py-execute-line-python-dedicated-switch () - "Send line at point to Python unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python" t 'switch)) - -(defun py-execute-line-ipython () - "Send line at point to IPython interpreter. " - (interactive) - (py-execute-prepare "line" "ipython" nil nil)) - -(defun py-execute-line-ipython-switch () - "Send line at point to IPython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "ipython" nil 'switch)) - -(defun py-execute-line-ipython-no-switch () - "Send line at point to IPython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "ipython" nil 'no-switch)) - -(defun py-execute-line-ipython-dedicated () - "Send line at point to IPython unique interpreter. " - (interactive) - (py-execute-prepare "line" "ipython" t nil)) - -(defun py-execute-line-ipython-dedicated-switch () - "Send line at point to IPython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "ipython" t 'switch)) - -(defun py-execute-line-python3 () - "Send line at point to Python3 interpreter. " - (interactive) - (py-execute-prepare "line" "python3" nil nil)) - -(defun py-execute-line-python3-switch () - "Send line at point to Python3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python3" nil 'switch)) - -(defun py-execute-line-python3-no-switch () - "Send line at point to Python3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python3" nil 'no-switch)) - -(defun py-execute-line-python3-dedicated () - "Send line at point to Python3 unique interpreter. " - (interactive) - (py-execute-prepare "line" "python3" t nil)) - -(defun py-execute-line-python3-dedicated-switch () - "Send line at point to Python3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python3" t 'switch)) - -(defun py-execute-line-python2 () - "Send line at point to Python2 interpreter. " - (interactive) - (py-execute-prepare "line" "python2" nil nil)) - -(defun py-execute-line-python2-switch () - "Send line at point to Python2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python2" nil 'switch)) - -(defun py-execute-line-python2-no-switch () - "Send line at point to Python2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python2" nil 'no-switch)) - -(defun py-execute-line-python2-dedicated () - "Send line at point to Python2 unique interpreter. " - (interactive) - (py-execute-prepare "line" "python2" t nil)) - -(defun py-execute-line-python2-dedicated-switch () - "Send line at point to Python2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python2" t 'switch)) - -(defun py-execute-line-python2.7 () - "Send line at point to Python2.7 interpreter. " - (interactive) - (py-execute-prepare "line" "python2.7" nil nil)) - -(defun py-execute-line-python2.7-switch () - "Send line at point to Python2.7 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python2.7" nil 'switch)) - -(defun py-execute-line-python2.7-no-switch () - "Send line at point to Python2.7 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python2.7" nil 'no-switch)) - -(defun py-execute-line-python2.7-dedicated () - "Send line at point to Python2.7 unique interpreter. " - (interactive) - (py-execute-prepare "line" "python2.7" t nil)) - -(defun py-execute-line-python2.7-dedicated-switch () - "Send line at point to Python2.7 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python2.7" t 'switch)) - -(defun py-execute-line-jython () - "Send line at point to Jython interpreter. " - (interactive) - (py-execute-prepare "line" "jython" nil nil)) - -(defun py-execute-line-jython-switch () - "Send line at point to Jython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "jython" nil 'switch)) - -(defun py-execute-line-jython-no-switch () - "Send line at point to Jython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "jython" nil 'no-switch)) - -(defun py-execute-line-jython-dedicated () - "Send line at point to Jython unique interpreter. " - (interactive) - (py-execute-prepare "line" "jython" t nil)) - -(defun py-execute-line-jython-dedicated-switch () - "Send line at point to Jython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "jython" t 'switch)) - -(defun py-execute-line-python3.2 () - "Send line at point to Python3.2 interpreter. " - (interactive) - (py-execute-prepare "line" "python3.2" nil nil)) - -(defun py-execute-line-python3.2-switch () - "Send line at point to Python3.2 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python3.2" nil 'switch)) - -(defun py-execute-line-python3.2-no-switch () - "Send line at point to Python3.2 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python3.2" nil 'no-switch)) - -(defun py-execute-line-python3.2-dedicated () - "Send line at point to Python3.2 unique interpreter. " - (interactive) - (py-execute-prepare "line" "python3.2" t nil)) - -(defun py-execute-line-python3.2-dedicated-switch () - "Send line at point to Python3.2 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python3.2" t 'switch)) - -(defun py-execute-line-python3.3 () - "Send line at point to Python3.3 interpreter. " - (interactive) - (py-execute-prepare "line" "python3.3" nil nil)) - -(defun py-execute-line-python3.3-switch () - "Send line at point to Python3.3 interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "python3.3" nil 'switch)) - -(defun py-execute-line-python3.3-no-switch () - "Send line at point to Python3.3 interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "python3.3" nil 'no-switch)) - -(defun py-execute-line-python3.3-dedicated () - "Send line at point to Python3.3 unique interpreter. " - (interactive) - (py-execute-prepare "line" "python3.3" t nil)) - -(defun py-execute-line-python3.3-dedicated-switch () - "Send line at point to Python3.3 unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "python3.3" t 'switch)) - -(defun py-execute-line-bpython () - "Send line at point to Bpython interpreter. " - (interactive) - (py-execute-prepare "line" "bpython" nil nil)) - -(defun py-execute-line-bpython-switch () - "Send line at point to Bpython interpreter. - -Switch to output buffer. Ignores `py-switch-buffers-on-execute-p'. " - (interactive) - (py-execute-prepare "line" "bpython" nil 'switch)) - -(defun py-execute-line-bpython-no-switch () - "Send line at point to Bpython interpreter. - -Keep current buffer. Ignores `py-switch-buffers-on-execute-p' " - (interactive) - (py-execute-prepare "line" "bpython" nil 'no-switch)) - -(defun py-execute-line-bpython-dedicated () - "Send line at point to Bpython unique interpreter. " - (interactive) - (py-execute-prepare "line" "bpython" t nil)) - -(defun py-execute-line-bpython-dedicated-switch () - "Send line at point to Bpython unique interpreter and switch to result. " - (interactive) - (py-execute-prepare "line" "bpython" t 'switch)) - -;;; Subprocess utilities and filters - -(defun py-postprocess-output-buffer (buf) - "Highlight exceptions found in BUF. -If an exception occurred return error-string, otherwise return nil. BUF must exist. - -Indicate LINE if code wasn't run from a file, thus remember line of source buffer " - (set-buffer buf) - ;; (sit-for 0.1) - (let ((pmx (copy-marker (point-max))) - file bol err-p estring ecode limit) - (unless (looking-back py-pdbtrack-input-prompt) - (save-excursion - (forward-line -1) - (end-of-line) - (when (or (re-search-backward py-shell-prompt-regexp nil t 1) - ;; (and (string= "ipython" (process-name proc)) - (re-search-backward ipython-de-input-prompt-regexp nil t 1)) - ;; not a useful message, delete it - please tell when thinking otherwise - (and (re-search-forward "File \"\", line 1,.*\n" nil t) - (replace-match "")) - ;; File "/tmp/ipython-3984xMQ.py", line 1 - ;; print(3*5f) - (when (and (re-search-forward py-traceback-line-re limit t) - (match-string-no-properties 0) - (or (match-string 1) (match-string 3))) - (when (match-string-no-properties 1) - (replace-match (buffer-name py-exception-buffer) nil nil nil 1) - (setq file py-exception-buffer) - (and origline - (replace-match (number-to-string origline) nil nil nil 2)) - (goto-char (match-beginning 0)) - ;; if no buffer-file exists, signal "Buffer", not "File" - (save-match-data - (and (not (buffer-file-name - (or - (get-buffer py-exception-buffer) - (get-buffer (file-name-nondirectory py-exception-buffer))))) (string-match "^[ \t]*File" (buffer-substring-no-properties (match-beginning 0) (match-end 0))) - (looking-at "[ \t]*File") - (replace-match " Buffer"))) - (add-to-list 'err-p origline) - (add-to-list 'err-p file) - (overlay-put (make-overlay (match-beginning 0) (match-end 0)) - 'face 'highlight)) - ;; If not file exists, just a buffer, correct message - (forward-line 1) - (when (looking-at "[ \t]*\\([^\t\n\r\f]+\\)[ \t]*$") - (setq estring (match-string-no-properties 1)) - (add-to-list 'err-p estring t) - (setq ecode (buffer-substring-no-properties (line-end-position) - (progn (re-search-forward comint-prompt-regexp nil t 1)(match-beginning 0)))) - (setq ecode (replace-regexp-in-string "[ \n\t\f\r^]+" " " ecode)) - (add-to-list 'err-p ecode t)))))) - err-p)) - -(defun py-remove-overlays-at-point () - "Remove overlays as set when `py-highlight-error-source-p' is non-nil. " - (interactive "*") - (delete-overlay (car (overlays-at (point))))) - -(defun py-jump-to-exception-intern (action exception-buffer) - (let (erg) - (set-buffer exception-buffer) - ;; (message "%s" (current-buffer)) - (goto-char (point-min)) - (forward-line (1- origline)) - (switch-to-buffer (current-buffer)) - (push-mark) - (and (search-forward action (line-end-position) t) - (and py-verbose-p (message "Exception in file %s on line %d" py-exception-buffer origline)) - (and py-highlight-error-source-p - (setq erg (make-overlay (match-beginning 0) (match-end 0))) - (overlay-put erg - 'face 'highlight)) - ;; (remove-overlays (match-beginning 0) (match-end 0) 'face 'highlight) - ))) - -(defun py-jump-to-exception (err-p &optional file) - "Jump to the Python code in FILE at LINE." - (let ( - ;; (inhibit-point-motion-hooks t) - (file (or file (car err-p))) - (line (cadr err-p)) - (action (nth 2 err-p)) - (errm (nth 3 err-p))) - (cond ((and py-exception-buffer - (buffer-live-p py-exception-buffer)) - ;; (pop-to-buffer procbuf) - (py-jump-to-exception-intern action py-exception-buffer)) - ((ignore-errors (file-readable-p file)) - (find-file file) - (py-jump-to-exception-intern action (get-buffer (file-name-nondirectory file)))) - ((buffer-live-p (get-buffer file)) - (set-buffer file) - (switch-to-buffer (current-buffer)) - (py-jump-to-exception-intern action file)) - (t (setq file (find-file (read-file-name "Exception file: " - nil - file t))) - (py-jump-to-exception-intern action file))))) - -(defun py-down-exception (&optional bottom) - "Go to the next line down in the traceback. - -With \\[universal-argument] (programmatically, optional argument -BOTTOM), jump to the bottom (innermost) exception in the exception -stack." - (interactive "P") - (py-find-next-exception-prepare 'down (when (eq 4 (prefix-numeric-value bottom)) "BOTTOM"))) - -(defun py-up-exception (&optional top) - "Go to the previous line up in the traceback. - -With \\[universal-argument] (programmatically, optional argument TOP) -jump to the top (outermost) exception in the exception stack." - (interactive "P") - (unless py-last-exeption-buffer (setq py-last-exeption-buffer (current-buffer))) - (py-find-next-exception-prepare 'up (when (eq 4 (prefix-numeric-value top)) "TOP"))) - -(defun py-find-next-exception-prepare (direction start) - "Setup exception regexps depending from kind of Python shell. " - (let* ((name (get-process (substring (buffer-name (current-buffer)) 1 -1))) - (buffer (cond (name (buffer-name (current-buffer))) - ((buffer-live-p (get-buffer py-output-buffer)) - py-output-buffer) - (py-last-exeption-buffer (buffer-name py-last-exeption-buffer)) - (t (error "Don't see exeption buffer"))))) - (when buffer (set-buffer (get-buffer buffer))) - (switch-to-buffer (current-buffer)) - (if (eq direction 'up) - (if (string= start "TOP") - (py-find-next-exception 'bob buffer 're-search-forward "Top") - (py-find-next-exception 'bol buffer 're-search-backward "Top")) - (if (string= start "BOTTOM") - (py-find-next-exception 'eob buffer 're-search-backward "Bottom") - (py-find-next-exception 'eol buffer 're-search-forward "Bottom"))))) - -(defun py-find-next-exception (start buffer searchdir errwhere) - "Find the next Python exception and jump to the code that caused it. -START is the buffer position in BUFFER from which to begin searching -for an exception. SEARCHDIR is a function, either -`re-search-backward' or `re-search-forward' indicating the direction -to search. ERRWHERE is used in an error message if the limit (top or -bottom) of the trackback stack is encountered." - (let (file line) - (save-excursion - (set-buffer buffer) - (goto-char (py-point start)) - (if (funcall searchdir py-traceback-line-re nil t) - (setq file (match-string 1) - line (string-to-number (match-string 2))))) - (if (and file line) - (py-goto-exception file line) - (error "%s of traceback" errwhere)))) - -(defun py-mouseto-exception (event) - "Jump to the code which caused the Python exception at EVENT. -EVENT is usually a mouse click." - (interactive "e") - (cond - ((fboundp 'event-point) - ;; XEmacs - (let* ((point (event-point event)) - (buffer (event-buffer event)) - (e (and point buffer (extent-at point buffer 'py-exc-info))) - (info (and e (extent-property e 'py-exc-info)))) - (message "Event point: %d, info: %s" point info) - (and info - (py-jump-to-exception (car info) (cdr info))))))) - -(defun py-goto-exception (&optional file line) - "Go to the line indicated by the traceback." - (interactive) - (let ((file file) - (line line)) - (unless (and file line) - (save-excursion - (beginning-of-line) - (if (looking-at py-traceback-line-re) - (setq file (substring-no-properties (match-string 1)) - line (string-to-number (match-string 2)))))) - (if (not file) - (error "Not on a traceback line")) - (find-file file) - (goto-char (point-min)) - (forward-line (1- line)))) - -;; python-mode-send.el -(defun py-output-buffer-filter (&optional beg end) - "Clear output buffer from py-shell-input prompt etc. " - (interactive "*") - (let ((beg (cond (beg) - ((region-active-p) - (region-beginning)) - (t (point-min)))) - (end (cond (end (copy-marker end)) - ((region-active-p) - (copy-marker (region-end))) - (t (copy-marker (point-max)))))) - (goto-char beg) - (while (re-search-forward (concat "\\(" py-shell-input-prompt-1-regexp "\\|" py-shell-input-prompt-2-regexp "\\|" "^In \\[[0-9]+\\]: *" "\\)") nil (quote move) 1) - (replace-match "")) - (goto-char beg))) - -(defun py-send-string (string &optional process) - "Evaluate STRING in inferior Python process." - (interactive "sPython command: ") - (let ((proc (or process (py-shell)))) - (comint-send-string proc string) - (unless (string-match "\n\\'" string) - ;; Make sure the text is properly LF-terminated. - (comint-send-string proc "\n")) - (when (string-match "\n[ \t].*\n?\\'" string) - ;; If the string contains a final indented line, add a second newline so - ;; as to make sure we terminate the multiline instruction. - (comint-send-string proc "\n")))) - -(defun py-send-file (file-name &optional process temp-file-name) - "Send FILE-NAME to inferior Python PROCESS. -If TEMP-FILE-NAME is passed then that file is used for processing -instead, while internally the shell will continue to use -FILE-NAME." - (interactive "fFile to send: ") - (let* ((process (or process (get-buffer-process (py-shell)))) - (temp-file-name (when temp-file-name - (expand-file-name temp-file-name))) - (file-name (or (expand-file-name file-name) temp-file-name)) - py-python-command-args) - (when (not file-name) - (error "If FILE-NAME is nil then TEMP-FILE-NAME must be non-nil")) - (py-shell-send-string - (format - (concat "__pyfile = open('''%s''');" - "exec(compile(__pyfile.read(), '''%s''', 'exec'));" - "__pyfile.close()") - ;; (or (file-remote-p temp-file-name 'localname) file-name) file-name) - (or (file-remote-p temp-file-name 'localname) file-name) "Fehlerdatei") - process))) -;;; - -;; Pymacs -;; (defun py-load-pymacs () -;; "Load Pymacs as delivered with python-mode.el. -;; -;; Pymacs has been written by François Pinard and many others. -;; See original source: http://pymacs.progiciels-bpi.ca" -;; (interactive) -;; (let* ((pyshell (py-choose-shell)) -;; (path (getenv "PYTHONPATH")) -;; (py-install-directory (cond ((string= "" py-install-directory) -;; (py-guess-py-install-directory)) -;; (t (py-normalize-directory py-install-directory)))) -;; (pymacs-installed-p -;; (ignore-errors (string-match (expand-file-name (concat py-install-directory "Pymacs")) path)))) -;; ;; Python side -;; (unless pymacs-installed-p -;; (setenv "PYTHONPATH" (concat -;; (expand-file-name py-install-directory) -;; path-separator -;; (expand-file-name py-install-directory) "completion" -;; (if path (concat path-separator path))))) -;; -;; (if (py-install-directory-check) -;; (progn -;; ;; don't interfere with already installed Pymacs -;; (unless (featurep 'pymacs) -;; (load (concat py-install-directory "pymacs.el") nil t)) -;; (setenv "PYMACS_PYTHON" (if (string-match "IP" pyshell) -;; "python" -;; pyshell)) -;; (autoload 'pymacs-apply "pymacs") -;; (autoload 'pymacs-call "pymacs") -;; (autoload 'pymacs-eval "pymacs") -;; (autoload 'pymacs-exec "pymacs") -;; (autoload 'pymacs-load "pymacs") -;; (require 'pymacs) -;; (load (concat py-install-directory "completion/pycomplete.el") nil t) -;; (add-hook 'python-mode-hook 'py-complete-initialize)) -;; (error "`py-install-directory' not set, see INSTALL")))) -;; -;; (when py-load-pymacs-p (py-load-pymacs)) - -(when (or py-load-pymacs-p (featurep 'pymacs)) - (defun py-load-pycomplete () - "Load Pymacs based pycomplete." - (interactive) - (let* ((path (getenv "PYTHONPATH")) - (py-install-directory (cond ((string= "" py-install-directory) - (py-guess-py-install-directory)) - (t (py-normalize-directory py-install-directory)))) - (pycomplete-directory (concat (expand-file-name py-install-directory) "completion"))) - (if (py-install-directory-check) - (progn - ;; If the Pymacs process is already running, augment its path. - (when (and (get-process "pymacs") (fboundp 'pymacs-exec)) - (pymacs-exec (concat "sys.path.insert(0, '" pycomplete-directory "')"))) - (require 'pymacs) - (setenv "PYTHONPATH" (concat - pycomplete-directory - (if path (concat path-separator path)))) - (add-to-list 'load-path pycomplete-directory) - (require 'pycomplete) - (add-hook 'python-mode-hook 'py-complete-initialize)) - (error "`py-install-directory' not set, see INSTALL"))))) - -(and (or (eq py-complete-function 'py-complete-completion-at-point) py-load-pymacs-p (featurep 'pymacs)) - (py-load-pycomplete)) - -;; Hooks -(add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file) - -;; arrange to kill temp files when Emacs exists -(add-hook 'kill-emacs-hook 'py-kill-emacs-hook) -(add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file) - -(add-hook 'inferior-python-mode-hook 'py-send-shell-setup-code) - -(remove-hook 'python-mode-hook 'python-setup-brm) -;; (add-hook 'python-mode-hook -;; #'(lambda () -;; (when py-smart-indentation -;; (if (bobp) -;; (save-excursion -;; (save-restriction -;; (widen) -;; (while (and (not (eobp)) -;; (or -;; (let ((erg (syntax-ppss))) -;; (or (nth 1 erg) (nth 8 erg))) -;; (eq 0 (current-indentation)))) -;; (forward-line 1)) -;; (back-to-indentation) -;; (py-guess-indent-offset))) -;; (py-guess-indent-offset))))) - -;; (add-hook 'comint-output-filter-functions -;; 'py-comint-output-filter-function) - -(when py-warn-tmp-files-left-p - (add-hook 'python-mode-hook 'py-warn-tmp-files-left)) - -;; FixMe: for unknown reasons this is not done by mode -(if (file-readable-p abbrev-file-name) - (add-hook 'python-mode-hook - (lambda () - (setq py-this-abbrevs-changed abbrevs-changed) - (load abbrev-file-name nil t) - (setq abbrevs-changed py-this-abbrevs-changed))) - (message "Warning: %s" "no abbrev-file found, customize `abbrev-file-name' in order to make mode-specific abbrevs work. ")) - -(when py-sexp-function - (add-hook 'python-mode-hook - (lambda () - (set (make-local-variable 'forward-sexp-function) py-sexp-function)))) - -(add-hook 'python-mode-hook - (lambda () - (setq indent-tabs-mode py-indent-tabs-mode) - (set (make-local-variable 'beginning-of-defun-function) 'py-beginning-of-def-or-class) - (set (make-local-variable 'end-of-defun-function) 'py-end-of-def-or-class) - ;; (orgstruct-mode 1) - )) - -;; (add-hook 'python-mode-hook -;; (lambda () -;; (when py-load-highlight-indentation-p -;; (unless (featurep 'highlight-indentation) -;; (load (concat (py-normalize-directory py-install-directory) "extensions" py-separator-char "highlight-indentation.el")))))) - -(add-to-list 'same-window-buffer-names (purecopy "*Python*")) -(add-to-list 'same-window-buffer-names (purecopy "*IPython*")) - -;; interpreter-mode-alist -;; It's handy to add recognition of Python files to the -;; interpreter-mode-alist and to auto-mode-alist. With the former, we -;; can specify different `derived-modes' based on the #! line, but -;; with the latter, we can't. So we just won't add them if they're -;; already added. - -(let ((modes '(("ipython" . python-mode) - ("ipython2" . python-mode) - ("ipython3" . python-mode) - ("jython" . jython-mode) - ("python" . python-mode) - ("python2" . python-mode) - ("python2.4" . python-mode) - ("python2.5" . python-mode) - ("python2.6" . python-mode) - ("python2.7" . python-mode) - ("python3" . python-mode) - ("python3.0" . python-mode) - ("python3.1" . python-mode) - ("python3.2" . python-mode) - ("python3.3" . python-mode) - ("python3.4" . python-mode) - ))) - (while modes - (when (not (assoc (car modes) interpreter-mode-alist)) - (push (car modes) interpreter-mode-alist)) - (setq modes (cdr modes)))) - -(when (not (or (rassq 'python-mode auto-mode-alist) - (rassq 'jython-mode auto-mode-alist))) - (push '("\\.py$" . python-mode) auto-mode-alist)) - -;; (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) -;; (add-to-list 'interpreter-mode-alist (cons (purecopy "python") 'python-mode)) -;; (add-to-list 'interpreter-mode-alist (cons (purecopy "jython") 'jython-mode)) - -(defun py-set-auto-fill-values () - "Internal use by `py-run-auto-fill-timer'" - (let ((pps (syntax-ppss))) - (cond ((and (nth 4 pps)(numberp py-comment-fill-column)) - (set (make-local-variable 'fill-column) py-comment-fill-column)) - ((and (nth 3 pps)(numberp py-docstring-fill-column)) - (set (make-local-variable 'fill-column) py-docstring-fill-column)) - (t (set (make-local-variable 'fill-column) py-fill-column-orig))))) - -(defun py-run-auto-fill-timer () - "Set fill-column to values of `py-docstring-fill-column' resp. to `py-comment-fill-column' according to environment. " - (when py-set-fill-column-p - (unless py-autofill-timer - (setq py-autofill-timer - (run-with-idle-timer - py-autofill-timer-delay t - 'py-set-auto-fill-values))))) - -;;; -(define-derived-mode inferior-python-mode comint-mode "Inferior Python" - "Major mode for interacting with an inferior Python process. -A Python process can be started with \\[py-shell]. - -Hooks `comint-mode-hook' and `inferior-python-mode-hook' are run in -that order. - -You can send text to the inferior Python process from other buffers -containing Python source. - * \\[py-execute-region] sends the current region to the Python process. - -\\{inferior-python-mode-map}" - :group 'python - (require 'ansi-color) ; for ipython - (setq mode-line-process '(":%s")) - (set (make-local-variable 'comint-input-filter) 'py-input-filter) - (add-hook 'comint-preoutput-filter-functions #'py-preoutput-filter - nil t) - (set (make-local-variable 'compilation-error-regexp-alist) - python-compilation-regexp-alist) - (set (make-local-variable 'comint-prompt-regexp) - (cond ((string-match "[iI][pP]ython[[:alnum:]*-]*$" py-buffer-name) - (concat "\\(" - (mapconcat 'identity - (delq nil (list py-shell-input-prompt-1-regexp py-shell-input-prompt-2-regexp ipython-de-input-prompt-regexp ipython-de-output-prompt-regexp py-pdbtrack-input-prompt py-pydbtrack-input-prompt)) - "\\|") - "\\)")) - (t (concat "\\(" - (mapconcat 'identity - (delq nil (list py-shell-input-prompt-1-regexp py-shell-input-prompt-2-regexp py-pdbtrack-input-prompt py-pydbtrack-input-prompt)) - "\\|") - "\\)")))) - (if py-complete-function - (add-hook 'completion-at-point-functions - py-complete-function nil 'local) - (add-hook 'completion-at-point-functions - 'py-shell-complete nil 'local)) - (compilation-shell-minor-mode 1)) - -(define-derived-mode python-mode fundamental-mode python-mode-modeline-display - "Major mode for editing Python files. - -To submit a problem report, enter `\\[py-submit-bug-report]' from a -`python-mode' buffer. Do `\\[py-describe-mode]' for detailed -documentation. To see what version of `python-mode' you are running, -enter `\\[py-version]'. - -This mode knows about Python indentation, tokens, comments and -continuation lines. Paragraphs are separated by blank lines only. - -COMMANDS - -`py-shell'\tStart an interactive Python interpreter in another window -`py-execute-statement'\tSend statement at point to a Python interpreter -`py-beginning-of-statement'\tGo to the initial line of a simple statement - -etc. - -See available commands listed in files commands-python-mode at directory doc - -VARIABLES - -`py-indent-offset' indentation increment -`py-shell-name' shell command to invoke Python interpreter -`py-split-windows-on-execute-p' When non-nil split windows -`py-switch-buffers-on-execute-p' When non-nil switch to the Python output buffer - -See available customizations listed in files variables-python-mode at directory doc - -\\{python-mode-map}" - :group 'python-mode - ;; Local vars - (set (make-local-variable 'outline-regexp) - (concat (mapconcat 'identity - (mapcar #'(lambda (x) (concat "^\\s-*" x "\\_>")) - py-outline-mode-keywords) - "\\|"))) - (if py-use-font-lock-doc-face-p - (set (make-local-variable 'font-lock-defaults) - '(py-font-lock-keywords nil nil nil nil - (font-lock-syntactic-keywords - . py-font-lock-syntactic-keywords) - (font-lock-syntactic-face-function - . py-font-lock-syntactic-face-function))) - (set (make-local-variable 'font-lock-defaults) - '(py-font-lock-keywords nil nil nil nil - (font-lock-syntactic-keywords - . py-font-lock-syntactic-keywords)))) - (set (make-local-variable 'which-func-functions) 'py-which-def-or-class) - (set (make-local-variable 'parse-sexp-lookup-properties) t) - (set (make-local-variable 'parse-sexp-ignore-comments) t) - (set (make-local-variable 'comment-use-syntax) t) - (set (make-local-variable 'comment-start) "#") - (if empty-comment-line-separates-paragraph-p - (progn - (set (make-local-variable 'paragraph-separate) "\f\\|^[ \t]*$\\|^[ \t]*#[ \t]*$\\|^[ \t\f]*:[[:alpha:]]+ [[:alpha:]]+:.+$") - (set (make-local-variable 'paragraph-start) "\f\\|^[ \t]*$\\|^[ \t]*#[ \t]*$\\|^[ \t\f]*:[[:alpha:]]+ [[:alpha:]]+:.+$")) - (set (make-local-variable 'paragraph-separate) "\f\\|^[ \t]*$\\|^[ \t]*#[ \t]*$\\|^[ \t\f]*:[[:alpha:]]+ [[:alpha:]]+:.+$") - (set (make-local-variable 'paragraph-start) "\f\\|^[ \t]*$\\|^[ \t]*#[ \t]*$\\|^[ \t\f]*:[[:alpha:]]+ [[:alpha:]]+:.+$")) - (set (make-local-variable 'comment-start-skip) "^[ \t]*#+ *") - (set (make-local-variable 'comment-column) 40) - (set (make-local-variable 'comment-indent-function) #'py-comment-indent-function) - (set (make-local-variable 'indent-region-function) 'py-indent-region) - (set (make-local-variable 'indent-line-function) 'py-indent-line) - (set (make-local-variable 'hs-hide-comments-when-hiding-all) 'py-hide-comments-when-hiding-all) - (set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n") - (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil) - (set (make-local-variable 'add-log-current-defun-function) 'py-current-defun) - (set (make-local-variable 'fill-paragraph-function) 'py-fill-paragraph) - (set (make-local-variable 'require-final-newline) mode-require-final-newline) - (set (make-local-variable 'tab-width) py-indent-offset) - (set (make-local-variable 'eldoc-documentation-function) - #'py-eldoc-function) - (and py-load-skeletons-p - (py-load-skeletons) - (set (make-local-variable 'skeleton-further-elements) - '((< '(backward-delete-char-untabify (min py-indent-offset - (current-column)))) - (^ '(- (1+ (current-indentation))))))) - (set (make-local-variable 'imenu-create-index-function) 'py-imenu-create-index-function) - (and py-guess-py-install-directory-p (py-set-load-path)) - ;; (add-to-list 'load-path py-install-directory) - ;; (add-to-list 'load-path (concat py-install-directory "extensions")) - (and py-autopair-mode - ;; (py-autopair-check) - (load-library "autopair") - (add-hook 'python-mode-hook - #'(lambda () - (setq autopair-handle-action-fns - (list #'autopair-default-handle-action - #'autopair-python-triple-quote-action)))) - (py-autopair-mode-on)) - (when py-trailing-whitespace-smart-delete-p - (add-hook 'before-save-hook 'delete-trailing-whitespace nil 'local)) - (cond - (py-complete-function - (add-hook 'completion-at-point-functions - py-complete-function nil 'local)) - (py-load-pymacs-p - (add-hook 'completion-at-point-functions - 'py-complete-completion-at-point nil 'local)) - (t - (add-hook 'completion-at-point-functions - 'py-shell-complete nil 'local))) - (if py-set-fill-column-p - (add-hook 'python-mode-hook 'py-run-auto-fill-timer) - (remove-hook 'python-mode-hook 'py-run-auto-fill-timer)) - (add-hook 'after-change-functions 'py-after-change-function nil t) - ;; (add-hook 'post-command-hook 'py-after-change-function nil t) - (when (and py-imenu-create-index-p - (fboundp 'imenu-add-to-menubar) - (ignore-errors (require 'imenu))) - (imenu-add-to-menubar "PyIndex")) - ;; add the menu - (when py-menu - (easy-menu-add py-menu)) - (when py-hide-show-minor-mode-p (hs-minor-mode 1)) - - (when py-start-run-py-shell - ;; py-shell may split window, provide restore - (window-configuration-to-register 213465879) - (unless (get-process (py-process-name py-shell-name)) - (let ((oldbuf (current-buffer))) - (save-excursion - (py-shell) - (set-buffer py-exception-buffer)))) - ;; (jump-to-register 213465879) - ) - ;; (run-mode-hooks 'python-mode-hook) - (when py-outline-minor-mode-p (outline-minor-mode 1)) - (when (interactive-p) (message "python-mode loaded from: %s" python-mode-message-string))) - -(define-derived-mode python2-mode python-mode "Python2" - "Edit and run code used by Python version 2 series. " - :group 'Python - :abbrev nil - (set (make-local-variable 'py-exec-command) '(format "execfile(r'%s') # PYTHON-MODE\n" filename)) - (set (make-local-variable 'py-exec-string-command) '(format "exec(r'%s') # PYTHON-MODE\n" string)) - (py-toggle-shell "python2")) - -(define-derived-mode python3-mode python-mode "Python3" - "Edit and run code used by Python version 3 series. " - :group 'Python - :abbrev nil - (set (make-local-variable 'py-exec-command) '(format "exec(compile(open('%s').read(), '%s', 'exec')) # PYTHON-MODE\n" file file)) - (set (make-local-variable 'py-exec-string-command) '(format "exec(r'(%s)') # PYTHON-MODE\n" string)) - (py-toggle-shell "python3")) - -(make-obsolete 'jpython-mode 'jython-mode nil) -(define-derived-mode jython-mode python-mode "Jython" - "Major mode for editing Jython files. -Like `python-mode', but sets up parameters for Jython subprocesses. -Runs `jython-mode-hook' after `python-mode-hook'." - :group 'python-mode - (py-toggle-shell "jython")) - -(provide 'python-mode) -;; python-mode.el ends here diff --git a/elpa/python-mode-6.1.3/python-mode.elc b/elpa/python-mode-6.1.3/python-mode.elc deleted file mode 100644 index 0910f605aa1553b12ddfaa5d4179942948686fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 882605 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�UJ2HT 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

1yNr04!~2#H?75sD?0=4kH5m66erEXGVz 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

~de{6-)2 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 IdbIcd0kH3Bpa1{> diff --git a/elpa/python-mode-6.1.3/setup.py b/elpa/python-mode-6.1.3/setup.py deleted file mode 100644 index 255a48317..000000000 --- a/elpa/python-mode-6.1.3/setup.py +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- - -from distutils.core import setup - -setup(name='python-mode.el', - version='6.1.3', - url='http://launchpad.net/python-mode', - maintainer_email='andreas.roehler@online.de', - maintainer='Andreas Roehler', - description='Major mode for editing Python programs', - download_url='http://launchpad.net/python-mode/trunk/6.1.3/+download/python-mode.el-6.1.3.tar.gz', - license='GNU GPLv3, Python License', - ) diff --git a/elpa/python-mode-6.1.3/test/doctest-mode.el b/elpa/python-mode-6.1.3/test/doctest-mode.el deleted file mode 100644 index 75bd9cd63..000000000 --- a/elpa/python-mode-6.1.3/test/doctest-mode.el +++ /dev/null @@ -1,2061 +0,0 @@ -;;; doctest-mode.el --- Major mode for editing Python doctest files - -;; Copyright (C) 2004-2007 Edward Loper - -;; Author: Edward Loper -;; Maintainer: edloper@alum.mit.edu -;; Created: Aug 2004 -;; Keywords: python doctest unittest test docstring - -(defconst doctest-version "0.5 alpha" - "`doctest-mode' version number.") - -;; This software is provided as-is, without express or implied -;; warranty. Permission to use, copy, modify, distribute or sell this -;; software, without fee, for any purpose and by any individual or -;; organization, is hereby granted, provided that the above copyright -;; notice and this paragraph appear in all copies. - -;; This is a major mode for editing text files that contain Python -;; doctest examples. Doctest is a testing framework for Python that -;; emulates an interactive session, and checks the result of each -;; command. For more information, see the Python library reference: -;; - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Table of Contents -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; 1. Customization: use-editable variables to customize -;; doctest-mode. -;; -;; 2. Fonts: defines new font-lock faces. -;; -;; 3. Constants: various consts (mainly regexps) used by the rest -;; of the code. -;; -;; 4. Syntax Highlighting: defines variables and functions used by -;; font-lock-mode to perform syntax highlighting. -;; -;; 5. Source code editing & indentation: commands used to -;; automatically indent, dedent, & handle prompts. -;; -;; 6. Code Execution: commands used to start doctest processes, -;; and handle their output. -;; -;; 7. Markers: functions used to insert markers at the start of -;; doctest examples. These are used to keep track of the -;; correspondence between examples in the source buffer and -;; results in the output buffer. -;; -;; 8. Navigation: commands used to navigate between failed examples. -;; -;; 9. Replace Output: command used to replace a doctest example's -;; expected output with its actual output. -;; -;; 10. Helper functions: various helper functions used by the rest -;; of the code. -;; -;; 11. Emacs compatibility functions: defines compatible versions of -;; functions that are defined for some versions of emacs but not -;; others. -;; -;; 12. Doctest Results Mode: defines doctest-results-mode, which is -;; used for the output generated by doctest. -;; -;; 13. Doctest Mode: defines doctest-mode itself. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Customizable Constants -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defgroup doctest nil - "Support for the Python doctest framework" - :group 'languages - :prefix "doctest-") - -(defcustom doctest-default-margin 4 - "The default pre-prompt margin for doctest examples." - :type 'integer - :group 'doctest) - -(defcustom doctest-avoid-trailing-whitespace t - "If true, then delete trailing whitespace when inserting a newline." - :type 'boolean - :group 'doctest) - -(defcustom doctest-temp-directory - (let ((ok '(lambda (x) - (and x - (setq x (expand-file-name x)) ; always true - (file-directory-p x) - (file-writable-p x) - x)))) - (or (funcall ok (getenv "TMPDIR")) - (funcall ok "/usr/tmp") - (funcall ok "/tmp") - (funcall ok "/var/tmp") - (funcall ok ".") - (error (concat "Couldn't find a usable temp directory -- " - "set `doctest-temp-directory'")))) - "Directory used for temporary files created when running doctest. -By default, the first directory from this list that exists and that you -can write into: the value (if any) of the environment variable TMPDIR, -/usr/tmp, /tmp, /var/tmp, or the current directory." - :type 'string - :group 'doctest) - -(defcustom doctest-hide-example-source nil - "If true, then don't display the example source code for each -failure in the results buffer." - :type 'boolean - :group 'doctest) - -(defcustom doctest-python-command "python" - "Shell command used to start the python interpreter" - :type 'string - :group 'doctest) - -(defcustom doctest-results-buffer-name "*doctest-output (%N)*" - "The name of the buffer used to store the output of the doctest -command. This name can contain the following special sequences: - %n -- replaced by the doctest buffer's name. - %N -- replaced by the doctest buffer's name, with '.doctest' - stripped off. - %f -- replaced by the doctest buffer's filename." - :type 'string - :group 'doctest) - -(defcustom doctest-optionflags '() - "Option flags for doctest" - :group 'doctest - :type '(repeat (choice (const :tag "Select an option..." "") - (const :tag "Normalize whitespace" - "NORMALIZE_WHITESPACE") - (const :tag "Ellipsis" - "ELLIPSIS") - (const :tag "Don't accept True for 1" - "DONT_ACCEPT_TRUE_FOR_1") - (const :tag "Don't accept " - "DONT_ACCEPT_BLANKLINE") - (const :tag "Ignore Exception detail" - "IGNORE_EXCEPTION_DETAIL") - (const :tag "Report only first failure" - "REPORT_ONLY_FIRST_FAILURE") - ))) - -(defcustom doctest-async t - "If true, then doctest will be run asynchronously." - :type 'boolean - :group 'doctest) - -(defcustom doctest-trim-exceptions t - "If true, then any exceptions inserted by doctest-replace-output -will have the stack trace lines trimmed." - :type 'boolean - :group 'doctest) - -(defcustom doctest-highlight-strings t - "If true, then highlight strings. If you find that doctest-mode -is responding slowly when you type, turning this off might help." - :type 'boolean - :group 'doctest) - -(defcustom doctest-follow-output t - "If true, then when doctest is run asynchronously, the output buffer -will scroll to display its output as it is generated. If false, then -the output buffer not scroll." - :type 'boolean - :group 'doctest) - -(defvar doctest-mode-hook nil - "Hook called by `doctest-mode'.") - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Fonts -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defface doctest-prompt-face - '((((class color) (background dark)) - (:foreground "#68f")) - (t (:foreground "#226"))) - "Face for Python prompts in doctest examples." - :group 'doctest) - -(defface doctest-output-face - '((((class color) (background dark)) - (:foreground "#afd")) - (t (:foreground "#262"))) - "Face for the output of doctest examples." - :group 'doctest) - -(defface doctest-output-marker-face - '((((class color) (background dark)) - (:foreground "#0f0")) - (t (:foreground "#080"))) - "Face for markers in the output of doctest examples." - :group 'doctest) - -(defface doctest-output-traceback-face - '((((class color) (background dark)) - (:foreground "#f88")) - (t (:foreground "#622"))) - "Face for traceback headers in the output of doctest examples." - :group 'doctest) - -(defface doctest-results-divider-face - '((((class color) (background dark)) - (:foreground "#08f")) - (t (:foreground "#00f"))) - "Face for dividers in the doctest results window." - :group 'doctest) - -(defface doctest-results-loc-face - '((((class color) (background dark)) - (:foreground "#0f8")) - (t (:foreground "#084"))) - "Face for location headers in the doctest results window." - :group 'doctest) - -(defface doctest-results-header-face - '((((class color) (background dark)) - (:foreground "#8ff")) - (t (:foreground "#088"))) - "Face for sub-headers in the doctest results window." - :group 'doctest) - -(defface doctest-results-selection-face - '((((class color) (background dark)) - (:foreground "#ff0" :background "#008")) - (t (:background "#088" :foreground "#fff"))) - "Face for selected failure's location header in the results window." - :group 'doctest) - -(defface doctest-selection-face - '((((class color) (background dark)) - (:foreground "#ff0" :background "#00f" :bold t)) - (t (:foreground "#f00"))) - "Face for selected example's prompt" - :group 'doctest) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Constants -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst doctest-prompt-re - "^\\(?:\\([ \t]*\\)\\(>>> ?\\|[.][.][.] ?\\)\\([ \t]*\\)\\)" - "Regular expression for doctest prompts. It defines three groups: -the pre-prompt margin; the prompt; and the post-prompt indentation.") - -(defconst doctest-open-block-re - "[^\n]+:[ \t]*\\(#.*\\)?$" - "Regular expression for a line that opens a block") - -(defconst doctest-close-block-re - "\\(return\\|raise\\|break\\|continue\\|pass\\)\\b" - "Regular expression for a line that closes a block") - -(defconst doctest-example-source-re - "^Failed example:\n\\(\n\\| [^\n]*\n\\)+" - "Regular expression for example source in doctest's output.") - -(defconst doctest-results-divider-re - "^\\([*]\\{60,\\}\\)$" - "Regular expression for example dividers in doctest's output.") - -(defconst doctest-py24-results-loc-re - "^File \"[^\"]+\", line \\([0-9]+\\), in [^\n]+" - "Regular expression for example location markers in doctest's output.") - -(defconst doctest-py21-results-loc-re - "^from line #\\([0-9]+\\) of [^\n]*" - "Regular expression for example location markers in doctest's output, -when the output was generated by an old version of doctest.") - -(defconst doctest-results-header-re - "^\\([^ \n\t].+:\\|Expected nothing\\|Got nothing\\)$" - "Regular expression for example headers in doctest's output.") - -(defconst doctest-traceback-header-re - "^[ \t]*Traceback (\\(most recent call last\\|innermost last\\)):" - "Regular expression for Python traceback headers.") - -(defconst doctest-py21-results-re - "^from line #" - "Regular expression used to test which version of doctest was used.") - -;; nb: There's a bug in Python's traceback.print_exception function -;; which causes SyntaxError exceptions to be displayed incorrectly; -;; which prevents this regexp from matching. But there shouldn't be -;; too many people testing for SyntaxErrors, so I won't worry about -;; it. -(defconst doctest-traceback-re - (let ((nonprompt - ;; This matches any non-blank line that doesn't start with - ;; a prompt (... or >>>). - (concat - "\\(?:[.][.][^.\n]\\|[>][>][^>\n]\\|" - "[.][^.\n]\\|[>][^>\n]\\|[^.>\n \t]\\)[^\n]*"))) - (concat - "^\\(\\([ \t]*\\)Traceback " - "(\\(?:most recent call last\\|innermost last\\)):\n\\)" - "\\(?:\\2[ \t]+[^ \t\n][^\n]*\n\\)*" - "\\(\\(?:\\2" nonprompt "\n\\)" - "\\(?:\\2[ \t]*" nonprompt "\n\\)*\\)")) - "Regular expression that matches a complete exception traceback. -It contains three groups: group 1 is the header line; group 2 is -the indentation; and group 3 is the exception message.") - -(defconst doctest-blankline-re - "^[ \t]*" - "Regular expression that matches blank line markers in doctest -output.") - -(defconst doctest-outdent-re - (concat "\\(" (mapconcat 'identity - '("else:" - "except\\(\\s +.*\\)?:" - "finally:" - "elif\\s +.*:") - "\\|") - "\\)") - "Regular expression for a line that should be outdented. Any line -that matches `doctest-outdent-re', but does not follow a line matching -`doctest-no-outdent-re', will be outdented.") - -;; It's not clear to me *why* the behavior given by this definition of -;; doctest-no-outdent-re is desirable; but it's basically just copied -;; from python-mode. -(defconst doctest-no-outdent-re - (concat - "\\(" - (mapconcat 'identity - (list "try:" - "except\\(\\s +.*\\)?:" - "while\\s +.*:" - "for\\s +.*:" - "if\\s +.*:" - "elif\\s +.*:" - "\\(return\\|raise\\|break\\|continue\\|pass\\)[ \t\n]" - ) - "\\|") - "\\)") - "Regular expression matching lines not to outdent after. Any line -that matches `doctest-outdent-re', but does not follow a line matching -`doctest-no-outdent-re', will be outdented.") - -(defconst doctest-script - "\ -from doctest import * -import sys -if '%m': - import imp - try: - m = imp.load_source('__imported__', '%m') - globs = m.__dict__ - except Exception, e: - print ('doctest-mode encountered an error while importing ' - 'the current buffer:\\n\\n %s' % e) - sys.exit(1) -else: - globs = {} -doc = open('%t').read() -if sys.version_info[:2] >= (2,4): - test = DocTestParser().get_doctest(doc, globs, '%n', '%f', 0) - r = DocTestRunner(optionflags=%l) - r.run(test) -else: - Tester(globs=globs).runstring(doc, '%f')" - ;; Docstring: - "Python script used to run doctest. -The following special sequences are defined: - %n -- replaced by the doctest buffer's name. - %f -- replaced by the doctest buffer's filename. - %l -- replaced by the doctest flags string. - %t -- replaced by the name of the tempfile containing the doctests." - ) - -(defconst doctest-keyword-re - (let* ((kw1 (mapconcat 'identity - '("and" "assert" "break" "class" - "continue" "def" "del" "elif" - "else" "except" "exec" "for" - "from" "global" "if" "import" - "in" "is" "lambda" "not" - "or" "pass" "print" "raise" - "return" "while" "yield" - ) - "\\|")) - (kw2 (mapconcat 'identity - '("else:" "except:" "finally:" "try:") - "\\|")) - (kw3 (mapconcat 'identity - '("ArithmeticError" "AssertionError" - "AttributeError" "DeprecationWarning" "EOFError" - "Ellipsis" "EnvironmentError" "Exception" "False" - "FloatingPointError" "FutureWarning" "IOError" - "ImportError" "IndentationError" "IndexError" - "KeyError" "KeyboardInterrupt" "LookupError" - "MemoryError" "NameError" "None" "NotImplemented" - "NotImplementedError" "OSError" "OverflowError" - "OverflowWarning" "PendingDeprecationWarning" - "ReferenceError" "RuntimeError" "RuntimeWarning" - "StandardError" "StopIteration" "SyntaxError" - "SyntaxWarning" "SystemError" "SystemExit" - "TabError" "True" "TypeError" "UnboundLocalError" - "UnicodeDecodeError" "UnicodeEncodeError" - "UnicodeError" "UnicodeTranslateError" - "UserWarning" "ValueError" "Warning" - "ZeroDivisionError" "__debug__" - "__import__" "__name__" "abs" "apply" "basestring" - "bool" "buffer" "callable" "chr" "classmethod" - "cmp" "coerce" "compile" "complex" "copyright" - "delattr" "dict" "dir" "divmod" - "enumerate" "eval" "execfile" "exit" "file" - "filter" "float" "getattr" "globals" "hasattr" - "hash" "hex" "id" "input" "int" "intern" - "isinstance" "issubclass" "iter" "len" "license" - "list" "locals" "long" "map" "max" "min" "object" - "oct" "open" "ord" "pow" "property" "range" - "raw_input" "reduce" "reload" "repr" "round" - "setattr" "slice" "staticmethod" "str" "sum" - "super" "tuple" "type" "unichr" "unicode" "vars" - "xrange" "zip") - "\\|")) - (pseudokw (mapconcat 'identity - '("self" "None" "True" "False" "Ellipsis") - "\\|")) - (string (concat "'\\(?:\\\\[^\n]\\|[^\n']*\\)'" "\\|" - "\"\\(?:\\\\[^\n]\\|[^\n\"]*\\)\"")) - (brk "\\(?:[ \t(]\\|$\\)")) - (concat - ;; Comments (group 1) - "\\(#.*\\)" - ;; Function & Class Definitions (groups 2-3) - "\\|\\b\\(class\\|def\\)" - "[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)" - ;; Builtins preceeded by '.'(group 4) - "\\|[.][\t ]*\\(" kw3 "\\)" - ;; Keywords & builtins (group 5) - "\\|\\b\\(" kw1 "\\|" kw2 "\\|" - kw3 "\\|" pseudokw "\\)" brk - ;; Decorators (group 6) - "\\|\\(@[a-zA-Z_][a-zA-Z0-9_]*\\)" - )) - "A regular expression used for syntax highlighting of Python -source code.") - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Syntax Highlighting (font-lock mode) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Define the font-lock keyword table. -(defconst doctest-font-lock-keywords - `( - ;; The following pattern colorizes source lines. In particular, - ;; it first matches prompts, and then looks for any of the - ;; following matches *on the same line* as the prompt. It uses - ;; the form: - ;; - ;; (MATCHER MATCH-HIGHLIGHT - ;; (ANCHOR-MATCHER nil nil MATCH-HIGHLIGHT)) - ;; - ;; See the variable documentation for font-lock-keywords for a - ;; description of what each of those means. - ("^[ \t]*\\(>>>\\|\\.\\.\\.\\)" - (1 'doctest-prompt-face) - (doctest-source-matcher - nil nil - (1 'font-lock-comment-face t t) ; comments - (2 'font-lock-keyword-face t t) ; def/class - (3 'font-lock-type-face t t) ; func/class name - ;; group 4 (builtins preceeded by '.') gets no colorization. - (5 'font-lock-keyword-face t t) ; keywords & builtins - (6 'font-lock-preprocessor-face t t) ; decorators - (7 'font-lock-string-face t t) ; strings - )) - - ;; The following pattern colorizes output lines. In particular, - ;; it uses doctest-output-line-matcher to check if this is an - ;; output line, and if so, it colorizes it, and any special - ;; markers it contains. - (doctest-output-line-matcher - (0 'doctest-output-face t) - ("\\.\\.\\." (beginning-of-line) (end-of-line) - (0 'doctest-output-marker-face t)) - (,doctest-blankline-re (beginning-of-line) (end-of-line) - (0 'doctest-output-marker-face t)) - (doctest-traceback-line-matcher (beginning-of-line) (end-of-line) - (0 'doctest-output-traceback-face t)) - (,doctest-traceback-header-re (beginning-of-line) (end-of-line) - (0 'doctest-output-traceback-face t)) - ) - - ;; A PS1 prompt followed by a non-space is an error. - ("^[ \t]*\\(>>>[^ \t\n][^\n]*\\)" (1 'font-lock-warning-face t)) - ) - "Expressions to highlight in doctest-mode.") - -(defconst doctest-results-font-lock-keywords - `((,doctest-results-divider-re - (0 'doctest-results-divider-face)) - (,doctest-py24-results-loc-re - (0 'doctest-results-loc-face)) - (,doctest-results-header-re - (0 'doctest-results-header-face)) - (doctest-results-selection-matcher - (0 'doctest-results-selection-face t))) - "Expressions to highlight in doctest-results-mode.") - -(defun doctest-output-line-matcher (limit) - "A `font-lock-keyword' MATCHER that returns t if the current -line is the expected output for a doctest example, and if so, -sets `match-data' so that group 0 spans the current line." - ;; The real work is done by doctest-find-output-line. - (when (doctest-find-output-line limit) - ;; If we found one, then mark the entire line. - (beginning-of-line) - (re-search-forward "[^\n]*" limit))) - -(defun doctest-traceback-line-matcher (limit) - "A `font-lock-keyword' MATCHER that returns t if the current line is -the beginning of a traceback, and if so, sets `match-data' so that -group 0 spans the entire traceback. n.b.: limit is ignored." - (beginning-of-line) - (when (looking-at doctest-traceback-re) - (goto-char (match-end 0)) - t)) - -(defun doctest-source-matcher (limit) - "A `font-lock-keyword' MATCHER that returns t if the current line -contains a Python source expression that should be highlighted -after the point. If so, it sets `match-data' to cover the string -literal. The groups in `match-data' should be interpreted as follows: - - Group 1: comments - Group 2: def/class - Group 3: function/class name - Group 4: builtins preceeded by '.' - Group 5: keywords & builtins - Group 6: decorators - Group 7: strings -" - (let ((matchdata nil)) - ;; First, look for string literals. - (when doctest-highlight-strings - (save-excursion - (when (doctest-string-literal-matcher limit) - (setq matchdata - (list (match-beginning 0) (match-end 0) - nil nil nil nil nil nil nil nil nil nil nil nil - (match-beginning 0) (match-end 0)))))) - ;; Then, look for other keywords. If they occur before the - ;; string literal, then they take precedence. - (save-excursion - (when (and (re-search-forward doctest-keyword-re limit t) - (or (null matchdata) - (< (match-beginning 0) (car matchdata)))) - (setq matchdata (match-data)))) - (when matchdata - (set-match-data matchdata) - (goto-char (match-end 0)) - t))) - -(defun doctest-string-literal-matcher (limit &optional debug) - "A `font-lock-keyword' MATCHER that returns t if the current line -contains a string literal starting at or after the point. If so, it -expands `match-data' to cover the string literal. This matcher uses -`doctest-statement-info' to collect information about strings that -continue over multiple lines. It therefore might be a little slow for -very large statements." - (let* ((stmt-info (doctest-statement-info)) - (quotes (reverse (nth 5 stmt-info))) - (result nil)) - (if debug (doctest-debug "quotes %s" quotes)) - (while (and quotes (null result)) - (let* ((quote (pop quotes)) - (start (car quote)) - (end (min limit (or (cdr quote) limit)))) - (if debug (doctest-debug "quote %s-%s pt=%s lim=%s" - start end (point) limit)) - (when (or (and (<= (point) start) (< start limit)) - (and (< start (point)) (< (point) end))) - (setq start (max start (point))) - (set-match-data (list start end)) - (if debug (doctest-debug "marking string %s" (match-data))) - (goto-char end) - (setq result t)))) - result)) - -(defun doctest-results-selection-matcher (limit) - "Matches from `doctest-selected-failure' to the end of the -line. This is used to highlight the currently selected failure." - (when (and doctest-selected-failure - (<= (point) doctest-selected-failure) - (< doctest-selected-failure limit)) - (goto-char doctest-selected-failure) - (re-search-forward "[^\n]+" limit))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Source code editing & indentation -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-indent-source-line (&optional dedent-only) - "Re-indent the current line, as doctest source code. I.e., add a -prompt to the current line if it doesn't have one, and re-indent the -source code (to the right of the prompt). If `dedent-only' is true, -then don't increase the indentation level any." - (interactive "*") - (let ((indent-end nil)) - (save-excursion - (beginning-of-line) - (let ((new-indent (doctest-current-source-line-indentation dedent-only)) - (new-margin (doctest-current-source-line-margin)) - (line-had-prompt (looking-at doctest-prompt-re))) - ;; Delete the old prompt (if any). - (when line-had-prompt - (goto-char (match-beginning 2)) - (delete-char (- (match-end 2) (match-beginning 2)))) - ;; Delete the old indentation. - (delete-backward-char (skip-chars-forward " \t")) - ;; If it's a continuation line, or a new PS1 prompt, - ;; then copy the margin. - (when (or new-indent (not line-had-prompt)) - (beginning-of-line) - (delete-backward-char (skip-chars-forward " \t")) - (insert-char ?\ new-margin)) - ;; Add the new prompt. - (insert-string (if new-indent "... " ">>> ")) - ;; Add the new indentation - (if new-indent (insert-char ?\ new-indent)) - (setq indent-end (point)))) - ;; If we're left of the indentation end, then move up to the - ;; indentation end. - (if (< (point) indent-end) (goto-char indent-end)))) - -(defun doctest-current-source-line-indentation (&optional dedent-only) - "Return the post-prompt indent to use for this line. This is an -integer for a continuation lines, and nil for non-continuation lines." - (save-excursion - ;; Examine the previous doctest line (if present). - (let* ((prev-stmt-info (doctest-prev-statement-info)) - (prev-stmt-indent (nth 0 prev-stmt-info)) - (continuation-indent (nth 1 prev-stmt-info)) - (prev-stmt-opens-block (nth 2 prev-stmt-info)) - (prev-stmt-closes-block (nth 3 prev-stmt-info)) - (prev-stmt-blocks-outdent (nth 4 prev-stmt-info)) - ) - ;; Examine this doctest line. - (let* ((curr-line-indent 0) - (curr-line-outdented nil)) - (beginning-of-line) - (when (looking-at doctest-prompt-re) - (setq curr-line-indent (- (match-end 3) (match-beginning 3))) - (goto-char (match-end 3))) - (setq curr-line-outdented (and (looking-at doctest-outdent-re) - (not prev-stmt-blocks-outdent))) - ;; Compute the overall indent. - (let ((indent (or continuation-indent - (+ prev-stmt-indent - (if curr-line-outdented -4 0) - (if prev-stmt-opens-block 4 0) - (if prev-stmt-closes-block -4 0))))) - ;; If dedent-only is true, then make sure we don't indent. - (when dedent-only - (setq indent (min indent curr-line-indent))) - ;; If indent=0 and we're not outdented, then set indent to - ;; nil (to signify the start of a new source example). - (when (and (= indent 0) - (not (or curr-line-outdented continuation-indent))) - (setq indent nil)) - ;; Return the indentation. - indent))))) - -(defun doctest-prev-statement-info (&optional debug) - (save-excursion - (forward-line -1) - (doctest-statement-info debug))) - -(defun doctest-statement-info (&optional debug) - "Collect info about the previous statement, and return it as a list: - - (INDENT, CONTINUATION, OPENS-BLOCK, CLOSES-BLOCK, BLOCKS-OUTDENT, - QUOTES) - -INDENT -- The indentation of the previous statement (after the prompt) - -CONTINUATION -- If the previous statement is incomplete (e.g., has an -open paren or quote), then this is the appropriate indentation -level; otherwise, it's nil. - -OPENS-BLOCK -- True if the previous statement opens a Python control -block. - -CLOSES-BLOCK -- True if the previous statement closes a Python control -block. - -BLOCKS-OUTDENT -- True if the previous statement should 'block the -next statement from being considered an outdent. - -QUOTES -- A list of (START . END) pairs for all quotation strings. -" - (save-excursion - (end-of-line) - (let ((end (point))) - (while (and (doctest-on-source-line-p "...") (= (forward-line -1) 0))) - (cond - ;; If there's no previous >>> line, then give up. - ((not (doctest-on-source-line-p ">>>")) - '(0 nil nil nil nil)) - - ;; If there is a previous statement, walk through the source - ;; code, checking for operators that may be of interest. - (t - (beginning-of-line) - (let* ((quote-mark nil) (nesting 0) (indent-stack '()) - (stmt-indent 0) - (stmt-opens-block nil) - (stmt-closes-block nil) - (stmt-blocks-outdent nil) - (quotes '()) - (elt-re (concat "\\\\[^\n]\\|" - "(\\|)\\|\\[\\|\\]\\|{\\|}\\|" - "\"\"\"\\|\'\'\'\\|\"\\|\'\\|" - "#[^\n]*\\|" doctest-prompt-re))) - (while (re-search-forward elt-re end t) - (let* ((elt (match-string 0)) - (elt-first-char (substring elt 0 1))) - (if debug (doctest-debug "Debug: %s" elt)) - (cond - ;; Close quote -- set quote-mark back to nil. The - ;; second case is for cases like: ' ''' - (quote-mark - (cond - ((equal quote-mark elt) - (setq quote-mark nil) - (setcdr (car quotes) (point))) - ((equal quote-mark elt-first-char) - (setq quote-mark nil) - (setcdr (car quotes) (point)) - (backward-char 2)))) - ;; Prompt -- check if we're starting a new stmt. If so, - ;; then collect various info about it. - ((string-match doctest-prompt-re elt) - (when (and (null quote-mark) (= nesting 0)) - (let ((indent (- (match-end 3) (match-end 2)))) - (unless (looking-at "[ \t]*\n") - (setq stmt-indent indent) - (setq stmt-opens-block - (looking-at doctest-open-block-re)) - (setq stmt-closes-block - (looking-at doctest-close-block-re)) - (setq stmt-blocks-outdent - (looking-at doctest-no-outdent-re)))))) - ;; Open paren -- increment nesting, and update indent-stack. - ((string-match "(\\|\\[\\|{" elt-first-char) - (let ((elt-pos (point)) - (at-eol (looking-at "[ \t]*\n")) - (indent 0)) - (save-excursion - (re-search-backward doctest-prompt-re) - (if at-eol - (setq indent (+ 4 (- (match-end 3) (match-end 2)))) - (setq indent (- elt-pos (match-end 2)))) - (push indent indent-stack))) - (setq nesting (+ nesting 1))) - ;; Close paren -- decrement nesting, and pop indent-stack. - ((string-match ")\\|\\]\\|}" elt-first-char) - (setq indent-stack (cdr indent-stack)) - (setq nesting (max 0 (- nesting 1)))) - ;; Open quote -- set quote-mark. - ((string-match "\"\\|\'" elt-first-char) - (push (cons (- (point) (length elt)) nil) quotes) - (setq quote-mark elt))))) - - (let* ((continuation-indent - (cond - (quote-mark 0) - ((> nesting 0) (if (null indent-stack) 0 (car indent-stack))) - (t nil))) - (result - (list stmt-indent continuation-indent - stmt-opens-block stmt-closes-block - stmt-blocks-outdent quotes))) - (if debug (doctest-debug "Debug: %s" result)) - result))))))) - -(defun doctest-current-source-line-margin () - "Return the pre-prompt margin to use for this source line. This is -copied from the most recent source line, or set to -`doctest-default-margin' if there are no preceeding source lines." - (save-excursion - (save-restriction - (when (doctest-in-mmm-docstring-overlay) - (doctest-narrow-to-mmm-overlay)) - (beginning-of-line) - (forward-line -1) - (while (and (not (doctest-on-source-line-p)) - (re-search-backward doctest-prompt-re nil t)))) - (cond ((looking-at doctest-prompt-re) - (- (match-end 1) (match-beginning 1))) - ((doctest-in-mmm-docstring-overlay) - (doctest-default-margin-in-mmm-docstring-overlay)) - (t - doctest-default-margin)))) - -(defun doctest-electric-backspace () - "Delete the preceeding character, level of indentation, or -prompt. - -If point is at the leftmost column, delete the preceding newline. - -Otherwise, if point is at the first non-whitespace character -following an indented source line's prompt, then reduce the -indentation to the next multiple of 4; and update the source line's -prompt, when necessary. - -Otherwise, if point is at the first non-whitespace character -following an unindented source line's prompt, then remove the -prompt (converting the line to an output line or text line). - -Otherwise, if point is at the first non-whitespace character of a -line, the delete the line's indentation. - -Otherwise, delete the preceeding character. -" - (interactive "*") - (cond - ;; Beginning of line: delete preceeding newline. - ((bolp) (backward-delete-char 1)) - - ;; First non-ws char following prompt: dedent or remove prompt. - ((and (looking-at "[^ \t\n]\\|$") (doctest-looking-back doctest-prompt-re)) - (let* ((prompt-beg (match-beginning 2)) - (indent-beg (match-beginning 3)) (indent-end (match-end 3)) - (old-indent (- indent-end indent-beg)) - (new-indent (* (/ (- old-indent 1) 4) 4))) - (cond - ;; Indented source line: dedent it. - ((> old-indent 0) - (goto-char indent-beg) - (delete-region indent-beg indent-end) - (insert-char ?\ new-indent) - ;; Change prompt to PS1, when appropriate. - (when (and (= new-indent 0) (not (looking-at doctest-outdent-re))) - (delete-backward-char 4) - (insert-string ">>> "))) - ;; Non-indented source line: remove prompt. - (t - (goto-char indent-end) - (delete-region prompt-beg indent-end))))) - - ;; First non-ws char of a line: delete all indentation. - ((and (looking-at "[^ \n\t]\\|$") (doctest-looking-back "^[ \t]+")) - (delete-region (match-beginning 0) (match-end 0))) - - ;; Otherwise: delete a character. - (t - (backward-delete-char 1)))) - -(defun doctest-newline-and-indent () - "Insert a newline, and indent the new line appropriately. - -If the current line is a source line containing a bare prompt, -then clear the current line, and insert a newline. - -Otherwise, if the current line is a source line, then insert a -newline, and add an appropriately indented prompt to the new -line. - -Otherwise, if the current line is an output line, then insert a -newline and indent the new line to match the example's margin. - -Otherwise, insert a newline. - -If `doctest-avoid-trailing-whitespace' is true, then clear any -whitespace to the left of the point before inserting a newline. -" - (interactive "*") - ;; If we're avoiding trailing spaces, then delete WS before point. - (if doctest-avoid-trailing-whitespace - (delete-char (- (skip-chars-backward " \t")))) - (cond - ;; If we're on an empty prompt, delete it. - ((doctest-on-empty-source-line-p) - (delete-region (match-beginning 0) (match-end 0)) - (insert-char ?\n 1)) - ;; If we're on a doctest line, add a new prompt. - ((doctest-on-source-line-p) - (insert-char ?\n 1) - (doctest-indent-source-line)) - ;; If we're in doctest output, indent to the margin. - ((doctest-on-output-line-p) - (insert-char ?\n 1) - (insert-char ?\ (doctest-current-source-line-margin))) - ;; Otherwise, just add a newline. - (t (insert-char ?\n 1)))) - -(defun doctest-electric-colon () - "Insert a colon, and dedent the line when appropriate." - (interactive "*") - (insert-char ?: 1) - (when (doctest-on-source-line-p) - (doctest-indent-source-line t))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Code Execution -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-execute () - "Run doctest on the current buffer, or on the current docstring -if the point is inside an `mmm-mode' `doctest-docstring' region. -Display the results in the *doctest-output* buffer." - (interactive) - (doctest-execute-region (point-min) (point-max) nil t)) - -(defun doctest-execute-with-diff () - "Run doctest on the current buffer, or on the current docstring -if the point is inside an `mmm-mode' `doctest-docstring' region. -Display the results in the *doctest-output* buffer, using diff format." - (interactive) - (doctest-execute-region (point-min) (point-max) t t)) - -(defun doctest-execute-buffer-with-diff () - "Run doctest on the current buffer, and display the results in the -*doctest-output* buffer, using the diff format." - (interactive) - (doctest-execute-region (point-min) (point-max) t nil)) - -(defun doctest-execute-buffer () - "Run doctest on the current buffer, and display the results in the -*doctest-output* buffer." - (interactive) - (doctest-execute-region (point-min) (point-max) nil nil)) - -(defun doctest-execute-region (start end &optional diff - check-for-mmm-docstring-overlay) - "Run doctest on the current buffer, and display the results in the -*doctest-output* buffer." - (interactive "r") - ;; If it's already running, give the user a chance to restart it. - (when (doctest-process-live-p doctest-async-process) - (when (y-or-n-p "Doctest is already running. Restart it? ") - (doctest-cancel-async-process) - (message "Killing doctest..."))) - (cond - ((and doctest-async (doctest-process-live-p doctest-async-process)) - (message "Can't run two doctest processes at once!")) - (t - (let* ((results-buf-name (doctest-results-buffer-name)) - (in-docstring (and check-for-mmm-docstring-overlay - (doctest-in-mmm-docstring-overlay))) - (temp (doctest-temp-name)) (dir doctest-temp-directory) - (input-file (expand-file-name (concat temp ".py") dir)) - (globs-file (when in-docstring - (expand-file-name (concat temp "-globs.py") dir))) - (cur-buf (current-buffer)) - (in-buf (get-buffer-create "*doctest-input*")) - (script (doctest-script input-file globs-file diff))) - ;; If we're in a docstring, narrow start & end. - (when in-docstring - (let ((bounds (doctest-mmm-overlay-bounds))) - (setq start (max start (car bounds)) - end (min end (cdr bounds))))) - ;; Write the doctests to a file. - (save-excursion - (goto-char (min start end)) - (let ((lineno (doctest-line-number))) - (set-buffer in-buf) - ;; Add blank lines, to keep line numbers the same: - (dotimes (n (- lineno 1)) (insert-string "\n")) - ;; Add the selected region - (insert-buffer-substring cur-buf start end) - ;; Write it to a file - (write-file input-file))) - ;; If requested, write the buffer to a file for use as globs. - (when globs-file - (let ((cur-buf-start (point-min)) (cur-buf-end (point-max))) - (save-excursion - (set-buffer in-buf) - (delete-region (point-min) (point-max)) - (insert-buffer-substring cur-buf cur-buf-start cur-buf-end) - (write-file globs-file)))) - ;; Dispose of in-buf (we're done with it now. - (kill-buffer in-buf) - ;; Prepare the results buffer. Clear it, if it contains - ;; anything, and set its mode. - (setq doctest-results-buffer (get-buffer-create results-buf-name)) - (save-excursion - (set-buffer doctest-results-buffer) - (toggle-read-only 0) - (delete-region (point-min) (point-max)) - (doctest-results-mode) - (setq doctest-source-buffer cur-buf) - ) - ;; Add markers to examples, and record what line number each one - ;; starts at. That way, if the input buffer is edited, we can - ;; still find corresponding examples in the output. - (doctest-mark-examples) - - ;; Run doctest - (cond (doctest-async - ;; Asynchronous mode: - (let ((process (start-process "*doctest*" doctest-results-buffer - doctest-python-command - "-c" script))) - ;; Store some information about the process. - (setq doctest-async-process-buffer cur-buf) - (setq doctest-async-process process) - (push input-file doctest-async-process-tempfiles) - (when globs-file - (push globs-file doctest-async-process-tempfiles)) - ;; Set up a sentinel to respond when it's done running. - (set-process-sentinel process 'doctest-async-process-sentinel) - - ;; Show the output window. - (let ((w (display-buffer doctest-results-buffer))) - (when doctest-follow-output - ;; Insert a newline, which will move the buffer's - ;; point past the process's mark -- this causes the - ;; window to scroll as new output is generated. - (save-current-buffer - (set-buffer doctest-results-buffer) - (insert-string "\n") - (set-window-point w (point))))) - - ;; Let the user know the process is running. - (doctest-update-mode-line ":running") - (message "Running doctest..."))) - (t - ;; Synchronous mode: - (call-process doctest-python-command nil - doctest-results-buffer t "-c" script) - (doctest-handle-output) - (delete-file input-file) - (when globs-file - (delete-file globs-file)))))))) - -(defun doctest-handle-output () - "This function, which is called after the 'doctest' process spawned -by doctest-execute-buffer has finished, checks the doctest results -buffer. If that buffer is empty, it reports no errors and hides it; -if that buffer is not empty, it reports that errors occured, displays -the buffer, and runs doctest-postprocess-results." - ;; If any tests failed, display them. - (cond ((not (buffer-live-p doctest-results-buffer)) - (doctest-warn "Results buffer not found!")) - ((> (buffer-size doctest-results-buffer) 1) - (display-buffer doctest-results-buffer) - (doctest-postprocess-results) - (let ((num (length doctest-example-markers))) - (message "%d doctest example%s failed!" num - (if (= num 1) "" "s")))) - (t - (display-buffer doctest-results-buffer) - (delete-windows-on doctest-results-buffer) - (message "All doctest examples passed!")))) - -(defun doctest-async-process-sentinel (process state) - "A process sentinel, called when the asynchronous doctest process -completes, which calls doctest-handle-output." - ;; Check to make sure we got the process we're expecting. On - ;; some operating systems, this will end up getting called twice - ;; when we use doctest-cancel-async-process; this check keeps us - ;; from trying to clean up after the same process twice (since we - ;; set doctest-async-process to nil when we're done). - (when (and (equal process doctest-async-process) - (buffer-live-p doctest-async-process-buffer)) - (save-current-buffer - (set-buffer doctest-async-process-buffer) - (cond ((not (buffer-live-p doctest-results-buffer)) - (doctest-warn "Results buffer not found!")) - ((equal state "finished\n") - (doctest-handle-output) - (let ((window (get-buffer-window - doctest-async-process-buffer t))) - (when window (set-window-point window (point))))) - ((equal state "killed\n") - (message "Doctest killed.")) - (t - (message "Doctest failed -- %s" state) - (display-buffer doctest-results-buffer))) - (doctest-update-mode-line "") - (while doctest-async-process-tempfiles - (delete-file (pop doctest-async-process-tempfiles))) - (setq doctest-async-process nil)))) - -(defun doctest-cancel-async-process () - "If a doctest process is running, then kill it." - (interactive "") - (when (doctest-process-live-p doctest-async-process) - ;; Update the modeline - (doctest-update-mode-line ":killing") - ;; Kill the process. - (kill-process doctest-async-process) - ;; Run the sentinel. (Depending on what OS we're on, the sentinel - ;; may end up getting called once or twice.) - (doctest-async-process-sentinel doctest-async-process "killed\n") - )) - -(defun doctest-postprocess-results () - "Post-process the doctest results buffer: check what version of -doctest was used, and set doctest-results-py-version accordingly; -turn on read-only mode; filter the example markers; hide the example -source (if `doctest-hide-example-source' is non-nil); and select the -first failure." - (save-excursion - (set-buffer doctest-results-buffer) - ;; Check if we're using an old doctest version. - (goto-char (point-min)) - (if (re-search-forward doctest-py21-results-re nil t) - (setq doctest-results-py-version 'py21) - (setq doctest-results-py-version 'py24)) - ;; Turn on read-only mode. - (toggle-read-only t)) - - (doctest-filter-example-markers) - (if doctest-hide-example-source - (doctest-hide-example-source)) - (doctest-next-failure 1)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Markers -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-mark-examples () - "Add a marker at the beginning of every (likely) example in the -input buffer; and create a list, `doctest-example-markers', -which maps from markers to the line numbers they originally occured -on. This will allow us to find the corresponding example in the -doctest output, even if the input buffer is edited." - (dolist (marker-info doctest-example-markers) - (set-marker (car marker-info) nil)) - (setq doctest-example-markers '()) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "^ *>>> " nil t) - (backward-char 4) - (push (cons (point-marker) (doctest-line-number)) - doctest-example-markers) - (forward-char 4)))) - -(defun doctest-filter-example-markers () - "Remove any entries from `doctest-example-markers' that do not -correspond to a failed example." - (let ((filtered nil) (markers doctest-example-markers)) - (save-excursion - (set-buffer doctest-results-buffer) - (goto-char (point-max)) - (while (re-search-backward (doctest-results-loc-re) nil t) - (let ((lineno (string-to-int (match-string 1)))) - (when (equal doctest-results-py-version 'py21) - (setq lineno (+ lineno 1))) - (while (and markers (< lineno (cdar markers))) - (set-marker (caar markers) nil) - (setq markers (cdr markers))) - (if (and markers (= lineno (cdar markers))) - (push (pop markers) filtered) - (doctest-warn "Example expected on line %d but not found %s" - lineno markers))))) - (dolist (marker-info markers) - (set-marker (car marker-info) nil)) - (setq doctest-example-markers filtered))) - -(defun doctest-prev-example-marker () - "Helper for doctest-replace-output: move to the preceeding example -marker, and return the corresponding 'original' lineno. If none is -found, return nil." - (let ((lineno nil) - (pos nil)) - (save-excursion - (end-of-line) - (when (re-search-backward "^\\( *\\)>>> " nil t) - (goto-char (match-end 1)) - (dolist (marker-info doctest-example-markers) - (when (= (marker-position (car marker-info)) (point)) - (setq lineno (cdr marker-info)) - (setq pos (point)))))) - (unless (null lineno) - (goto-char pos) - lineno))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Navigation -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-next-failure (count) - "Move to the top of the next failing example, and highlight the -example's failure description in *doctest-output*." - (interactive "p") - (cond - ((and doctest-async (doctest-process-live-p doctest-async-process)) - (message "Wait for doctest to finish running!")) - ((not (doctest-results-buffer-valid-p)) - (message "Run doctest first! (C-c C-c)")) - ((equal count 0) - t) - (t - (let ((marker nil) (example-markers doctest-example-markers) - (results-window (display-buffer doctest-results-buffer))) - (save-excursion - (set-buffer doctest-results-buffer) - ;; Pick up where we left off. - ;; (nb: doctest-selected-failure is buffer-local) - (goto-char (or doctest-selected-failure (point-min))) - ;; Skip past anything on *this* line. - (if (>= count 0) (end-of-line) (beginning-of-line)) - ;; Look for the next failure - (when - (if (>= count 0) - (re-search-forward (doctest-results-loc-re) nil t count) - (re-search-backward (doctest-results-loc-re) nil t (- count))) - ;; We found a failure: - (let ((old-selected-failure doctest-selected-failure)) - (beginning-of-line) - ;; Extract the line number for the doctest file. - (let ((orig-lineno (string-to-int (match-string 1)))) - (when (equal doctest-results-py-version 'py21) - (setq orig-lineno (+ orig-lineno 1))) - (dolist (marker-info example-markers) - (when (= orig-lineno (cdr marker-info)) - (setq marker (car marker-info))))) - - ;; Update the window cursor. - (beginning-of-line) - (set-window-point results-window (point)) - ;; Store our position for next time. - (setq doctest-selected-failure (point)) - ;; Update selection. - (doctest-fontify-line old-selected-failure) - (doctest-fontify-line doctest-selected-failure)))) - - (cond - ;; We found a failure -- move point to the selected failure. - (marker - (goto-char (marker-position marker)) - (beginning-of-line)) - ;; We didn't find a failure, but there is one -- wrap. - ((> (length doctest-example-markers) 0) - (if (>= count 0) (doctest-first-failure) (doctest-last-failure))) - ;; We didn't find a failure -- alert the user. - (t (message "No failures found!"))))))) - -(defun doctest-prev-failure (count) - "Move to the top of the previous failing example, and highlight -the example's failure description in *doctest-output*." - (interactive "p") - (doctest-next-failure (- count))) - -(defun doctest-first-failure () - "Move to the top of the first failing example, and highlight -the example's failure description in *doctest-output*." - (interactive) - (if (buffer-live-p doctest-results-buffer) - (save-excursion - (set-buffer doctest-results-buffer) - (let ((old-selected-failure doctest-selected-failure)) - (setq doctest-selected-failure (point-min)) - (doctest-fontify-line old-selected-failure)))) - (doctest-next-failure 1)) - -(defun doctest-last-failure () - "Move to the top of the last failing example, and highlight -the example's failure description in *doctest-output*." - (interactive) - (if (buffer-live-p doctest-results-buffer) - (save-excursion - (set-buffer doctest-results-buffer) - (let ((old-selected-failure doctest-selected-failure)) - (setq doctest-selected-failure (point-max)) - (doctest-fontify-line old-selected-failure)))) - (doctest-next-failure -1)) - -(defun doctest-select-failure () - "Move to the top of the currently selected example, and select that -example in the source buffer. Intended for use in the results -buffer." - (interactive) - (re-search-backward doctest-results-divider-re) - (let ((old-selected-failure doctest-selected-failure)) - (setq doctest-selected-failure (point)) - (doctest-fontify-line doctest-selected-failure) - (doctest-fontify-line old-selected-failure)) - (pop-to-buffer doctest-source-buffer) - (doctest-next-failure 1)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Replace Output -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-replace-output () - "Move to the top of the closest example, and replace its output -with the 'got' output from the *doctest-output* buffer. An error is -displayed if the chosen example is not listed in *doctest-output*, or -if the 'expected' output for the example does not exactly match the -output listed in the source buffer. The user is asked to confirm the -replacement." - (interactive) - ;; Move to the beginning of the example. - (cond - ((and doctest-async (doctest-process-live-p doctest-async-process)) - (message "Wait for doctest to finish running!")) - ((not (doctest-results-buffer-valid-p)) - (message "Run doctest first! (C-c C-c)")) - ((save-excursion (set-buffer doctest-results-buffer) - (equal doctest-results-py-version 'py21)) - (error "doctest-replace-output requires python 2.4+")) - (t - (save-excursion - (save-restriction - (when (doctest-in-mmm-docstring-overlay) - (doctest-narrow-to-mmm-overlay)) - - (let* ((orig-buffer (current-buffer)) - ;; Find an example, and look up its original lineno. - (lineno (doctest-prev-example-marker)) - ;; Find the example's indentation. - (prompt-indent (doctest-line-indentation))) - - ;; Switch to the output buffer, and look for the example. - ;; If we don't find one, complain. - (cond - ((null lineno) (message "Doctest example not found")) - (t - (set-buffer doctest-results-buffer) - (goto-char (point-min)) - (let ((output-re (format "^File .*, line %s," lineno))) - (when (not (re-search-forward output-re nil t)) - (message "This doctest example did not fail") - (setq lineno nil))))) - - ;; If we didn't find an example, give up. - (when (not (null lineno)) - ;; Get the output's 'expected' & 'got' texts. - (let ((doctest-got nil) (doctest-expected nil) (header nil)) - (while (setq header (doctest-results-next-header)) - (cond - ((equal header "Failed example:") - t) - ((equal header "Expected nothing") - (setq doctest-expected "")) - ((equal header "Expected:") - (unless (re-search-forward "^\\(\\( \\).*\n\\)*" nil t) - (error "Error parsing doctest output")) - (setq doctest-expected (doctest-replace-regexp-in-string - "^ " prompt-indent - (match-string 0)))) - ((equal header "Got nothing") - (setq doctest-got "")) - ((or (equal header "Got:") (equal header "Exception raised:")) - (unless (re-search-forward "^\\(\\( \\).*\n\\)*" nil t) - (error "Error parsing doctest output")) - (setq doctest-got (doctest-replace-regexp-in-string - "^ " prompt-indent (match-string 0)))) - ((string-match "^Differences" header) - (error (concat "doctest-replace-output can not be used " - "with diff style output"))) - (t (error "Unexpected header %s" header)))) - - ;; Go back to the source buffer. - (set-buffer orig-buffer) - - ;; Skip ahead to the output. - (beginning-of-line) - (unless (re-search-forward "^ *>>>.*") - (error "Error parsing doctest output")) - (re-search-forward "\\(\n *\\.\\.\\..*\\)*\n?") - (when (looking-at "\\'") (insert-char ?\n)) - - ;; Check that the output matches. - (let ((start (point)) end) - (cond ((re-search-forward "^ *\\(>>>.*\\|$\\)" nil t) - (setq end (match-beginning 0))) - (t - (goto-char (point-max)) - (insert-string "\n") - (setq end (point-max)))) - (when (and doctest-expected - (not (equal (buffer-substring start end) - doctest-expected))) - (warn "{%s} {%s}" (buffer-substring start end) - doctest-expected) - (error (concat "This example's output has been modified " - "since doctest was last run"))) - (setq doctest-expected (buffer-substring start end)) - (goto-char end)) - - ;; Trim exceptions - (when (and doctest-trim-exceptions - (string-match doctest-traceback-re - doctest-got)) - (let ((s1 0) (e1 (match-end 1)) - (s2 (match-beginning 2)) (e2 (match-end 2)) - (s3 (match-beginning 3)) (e3 (length doctest-got))) - (setq doctest-got - (concat (substring doctest-got s1 e1) - (substring doctest-got s2 e2) " . . .\n" - (substring doctest-got s3 e3))))) - - ;; Confirm it with the user. - (let ((confirm-buffer (get-buffer-create "*doctest-confirm*"))) - (set-buffer confirm-buffer) - ;; Erase anything left over in the buffer. - (delete-region (point-min) (point-max)) - ;; Write a confirmation message - (if (equal doctest-expected "") - (insert-string "Replace nothing\n") - (insert-string (concat "Replace:\n" doctest-expected))) - (if (equal doctest-got "") - (insert-string "With nothing\n") - (insert-string (concat "With:\n" doctest-got))) - (let ((confirm-window (display-buffer confirm-buffer))) - ;; Shrink the confirm window. - (shrink-window-if-larger-than-buffer confirm-window) - ;; Return to the original buffer. - (set-buffer orig-buffer) - ;; Match the old expected region. - (when doctest-expected - (search-backward doctest-expected)) - (when (equal doctest-expected "") (backward-char 1)) - ;; Get confirmation & do the replacement - (widen) - (cond ((y-or-n-p "Ok to replace? ") - (when (equal doctest-expected "") (forward-char 1)) - (replace-match doctest-got t t) - (message "Replaced.")) - (t - (message "Replace cancelled."))) - ;; Clean up our confirm window - (kill-buffer confirm-buffer) - (delete-window confirm-window))))))))))) - -(defun doctest-results-next-header () - "Move to the next header in the doctest results buffer, and return -the string contents of that header. If no header is found, return -nil." - (if (re-search-forward (concat doctest-results-header-re "\\|" - doctest-results-divider-re) nil t) - (let ((result (match-string 0))) - (if (string-match doctest-results-header-re result) - result - nil)) - nil)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; mmm-mode support -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; MMM Mode is a minor mode for Emacs which allows Multiple Major -;; Modes to coexist in a single buffer. - -;;;###autoload -(defun doctest-register-mmm-classes (&optional add-mode-ext-classes - fix-mmm-fontify-region-bug) - "Register doctest's mmm classes, allowing doctest to be used as a -submode region in other major modes, such as python-mode and rst-mode. -Two classes are registered: - -`doctest-docstring' - - Used to edit docstrings containing doctest examples in python- - mode. Docstring submode regions start and end with triple-quoted - strings (\"\"\"). In order to avoid confusing start-string - markers and end-string markers, all triple-quote strings in the - buffer are treated as submode regions (even if they're not - actually docstrings). Use (C-c % C-d) to insert a new doctest- - docstring region. When `doctest-execute' (C-c C-c) is called - inside a doctest-docstring region, it executes just the current - docstring. The globals for this execution are constructed by - importing the current buffer's contents in Python. - -`doctest-example' - - Used to edit doctest examples in text-editing modes, such as - `rst-mode' or `text-mode'. Docstring submode regions start with - optionally indented prompts (>>>) and end with blank lines. Use - (C-c % C-e) to insert a new doctest-example region. When - `doctest-execute' (C-c C-c) is called inside a doctest-example - region, it executes all examples in the buffer. - -If ADD-MODE-EXT-CLASSES is true, then register the new classes in -`mmm-mode-ext-classes-alist', which will cause them to be used by -default in the following modes: - - doctest-docstring: python-mode - doctest-example: rst-mode - -If FIX-MMM-FONTIFY-REGION-BUG is true, then register a hook that will -fix a bug in `mmm-fontify-region' that affects some (but not all) -versions of emacs. (See `doctest-fixed-mmm-fontify-region' for more -info.)" - (interactive) - (require 'mmm-auto) - (mmm-add-classes - '( - ;; === doctest-docstring === - (doctest-docstring :submode doctest-mode - - ;; The front is any triple-quote. Include it in the submode region, - ;; to prevent clashes between the two syntax tables over quotes. - :front "\\(\"\"\"\\|'''\\)" :include-front t - - ;; The back matches the front. Include just the first character - ;; of the quote. If we didn't include at least one quote, then - ;; the outer modes quote-counting would be thrown off. But if - ;; we include all three, we run into a bug in mmm-mode. See - ;; for more info about the bug. - :save-matches t :back "~1" :back-offset 1 :end-not-begin t - - ;; Define a skeleton for entering new docstrings. - :insert ((?d docstring nil @ "\"\"" @ "\"" \n - _ \n "\"" @ "\"\"" @))) - - ;; === doctest-example === - (doctest-example - :submode doctest-mode - ;; The front is an optionally indented prompt. - :front "^[ \t]*>>>" :include-front t - ;; The back is a blank line. - :back "^[ \t]*$" - ;; Define a skeleton for entering new docstrings. - :insert ((?e doctest-example nil - @ @ " >>> " _ "\n\n" @ @))))) - - ;; Register some local variables that need to be saved. - (add-to-list 'mmm-save-local-variables - '(doctest-results-buffer buffer)) - (add-to-list 'mmm-save-local-variables - '(doctest-example-markers buffer)) - - ;; Register association with modes, if requested. - (when add-mode-ext-classes - (mmm-add-mode-ext-class 'python-mode nil 'doctest-docstring) - (mmm-add-mode-ext-class 'rst-mode nil 'doctest-example)) - - ;; Fix the buggy mmm-fontify-region, if requested. - (when fix-mmm-fontify-region-bug - (add-hook 'mmm-mode-hook 'doctest-fix-mmm-fontify-region-bug))) - -(defvar doctest-old-mmm-fontify-region 'nil - "Used to hold the original definition of `mmm-fontify-region' when it -is rebound by `doctest-fix-mmm-fontify-region-bug'.") - -(defun doctest-fix-mmm-fontify-region-bug () - "A function for `mmm-mode-hook' which fixes a potential bug in -`mmm-fontify-region' by using `doctest-fixed-mmm-fontify-region' -instead. (See `doctest-fixed-mmm-fontify-region' for more info.)" - (setq font-lock-fontify-region-function - 'doctest-fixed-mmm-fontify-region)) - -(defun doctest-fixed-mmm-fontify-region (start stop &optional loudly) - "A replacement for `mmm-fontify-region', which fixes a bug caused by -versions of emacs where post-command-hooks are run *before* -fontification. `mmm-mode' assumes that its post-command-hook will be -run after fontification; and if it's not, then mmm-mode can end up -with the wrong local variables, keymap, etc. after fontification. We -fix that here by redefining `mmm-fontify-region' to remember what -submode overlay it started in; and to return to that overlay after -fontification is complete. The original definition of -`mmm-fontify-region' is stored in `doctest-old-mmm-fontify-region'." - (let ((overlay mmm-current-overlay)) - (mmm-fontify-region start stop loudly) - (if (and overlay (or (< (point) (overlay-start overlay)) - (> (point) (overlay-end overlay)))) - (goto-char (overlay-start overlay))) - (mmm-update-submode-region))) - -(defun doctest-in-mmm-docstring-overlay () - (and (featurep 'mmm-auto) - (mmm-overlay-at (point)) - (save-excursion - (goto-char (overlay-start (mmm-overlay-at (point)))) - (looking-at "\"\"\"\\|\'\'\'")))) - -(defun doctest-narrow-to-mmm-overlay () - "If we're in an mmm-mode overlay, then narrow to that overlay. -This is useful, e.g., to keep from interpreting the close-quote of a -docstring as part of the example's output." - (let ((bounds (doctest-mmm-overlay-bounds))) - (when bounds (narrow-to-region (car bounds) (cdr bounds))))) - -(defun doctest-default-margin-in-mmm-docstring-overlay () - (save-excursion - (let ((pos (car (doctest-mmm-overlay-bounds)))) - (goto-char pos) - (when (doctest-looking-back "\"\"\"\\|\'\'\'") - (setq pos (- pos 3))) - (beginning-of-line) - (- pos (point))))) - -(defun doctest-mmm-overlay-bounds () - (when (featurep 'mmm-auto) - (let ((overlay (mmm-overlay-at (point)))) - (when overlay - (let ((start (overlay-start overlay)) - (end (overlay-end overlay))) - (when (doctest-in-mmm-docstring-overlay) - (save-excursion - (goto-char start) - (re-search-forward "[\"\']*") - (setq start (point)) - (goto-char end) - (while (doctest-looking-back "[\"\']") - (backward-char 1)) - (setq end (point)))) - (cons start end)))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Helper functions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun doctest-on-source-line-p (&optional prompt) - "Return true if the current line is a source line. The optional -argument prompt can be used to specify which type of source -line (... or >>>)." - (save-excursion - (beginning-of-line) - ;; Check if we're looking at a prompt (of the right type). - (when (and (looking-at doctest-prompt-re) - (or (null prompt) - (equal prompt (substring (match-string 2) 0 3)))) - ;; Scan backwards to make sure there's a >>> somewhere. Otherwise, - ;; this might be a '...' in the text or in an example's output. - (while (looking-at "^[ \t]*[.][.][.]") - (forward-line -1)) - (looking-at "^[ \t]*>>>")))) - -(defun doctest-on-empty-source-line-p () - "Return true if the current line contains a bare prompt." - (save-excursion - (beginning-of-line) - (and (doctest-on-source-line-p) - (looking-at (concat doctest-prompt-re "$"))))) - -(defun doctest-on-output-line-p () - "Return true if the current line is an output line." - (save-excursion - (beginning-of-line) - ;; The line must not be blank or a source line. - (when (not (or (doctest-on-source-line-p) (looking-at "[ \t]*$"))) - ;; The line must follow a source line, with no intervening blank - ;; lines. - (while (not (or (doctest-on-source-line-p) (looking-at "[ \t]*$") - (= (point) (point-min)))) - (forward-line -1)) - (doctest-on-source-line-p)))) - -(defun doctest-find-output-line (&optional limit) - "Move forward to the next doctest output line (staying within -the given bounds). Return the character position of the doctest -output line if one was found, and false otherwise." - (let ((found-it nil) ; point where we found an output line - (limit (or limit (point-max)))) ; default value for limit - (save-excursion - ;; Keep moving forward, one line at a time, until we find a - ;; doctest output line. - (while (and (not found-it) (< (point) limit) (not (eobp))) - (if (and (not (eolp)) (doctest-on-output-line-p)) - (setq found-it (point)) - (forward-line)))) - ;; If we found a doctest output line, then go to it. - (if found-it (goto-char found-it)))) - -(defun doctest-line-indentation () - "Helper for doctest-replace-output: return the whitespace indentation -at the beginning of this line." - (save-excursion - (end-of-line) - (re-search-backward "^\\( *\\)" nil t) - (match-string 1))) - -(defun doctest-optionflags (&optional diff) - "Return a string describing the optionflags that should be used -by doctest. If DIFF is non-nil, then add the REPORT_UDIFF flag." - (let ((flags "0")) - (dolist (flag doctest-optionflags) - (setq flags (concat flags "|" flag))) - (if diff (concat flags "|" "REPORT_UDIFF") flags))) - -(defun doctest-results-loc-re () - "Return the regexp that should be used to look for doctest example -location markers in doctest's output (based on which version of -doctest was used" - (cond - ((equal doctest-results-py-version 'py21) - doctest-py21-results-loc-re) - ((equal doctest-results-py-version 'py24) - doctest-py24-results-loc-re) - (t (error "bad value for doctest-results-py-version")))) - -(defun doctest-results-buffer-name () - "Return the buffer name that should be used for the doctest results -buffer. This is computed from the variable -`doctest-results-buffer-name'." - (doctest-replace-regexp-in-string - "%[nfN]" - (lambda (sym) - (cond ((equal sym "%n") (buffer-name)) - ((equal sym "%N") (doctest-replace-regexp-in-string - "[.]doctest$" "" (buffer-name) t)) - ((equal sym "%f") (buffer-file-name)))) - doctest-results-buffer-name t)) - -(defun doctest-script (input-file globs-file diff) - "..." - (doctest-replace-regexp-in-string - "%[tnflm]" - (lambda (sym) - (cond ((equal sym "%n") (buffer-name)) - ((equal sym "%f") (buffer-file-name)) - ((equal sym "%l") (doctest-optionflags diff)) - ((equal sym "%t") input-file) - ((equal sym "%m") (or globs-file "")))) - doctest-script t)) - -(defun doctest-hide-example-source () - "Delete the source code listings from the results buffer (since it's -easy enough to see them in the original buffer)" - (save-excursion - (set-buffer doctest-results-buffer) - (toggle-read-only 0) - (goto-char (point-min)) - (while (re-search-forward doctest-example-source-re nil t) - (replace-match "" nil nil)) - (toggle-read-only t))) - -(defun doctest-results-buffer-valid-p () - "Return true if this buffer has a live results buffer; and that -results buffer reports this buffer as its source buffer. (Two -buffers in doctest-mode might point to the same results buffer; -but only one of them will be equal to that results buffer's -source buffer." - (let ((cur-buf (current-buffer))) - (and (buffer-live-p doctest-results-buffer) - (save-excursion - (set-buffer doctest-results-buffer) - (equal cur-buf doctest-source-buffer))))) - -(defun doctest-update-mode-line (value) - "Update the doctest mode line with the given string value. This -is used to display information about asynchronous processes that -are run by doctest-mode." - (setq doctest-mode-line-process - value) - (force-mode-line-update t)) - -(defun doctest-version () - "Echo the current version of `doctest-mode' in the minibuffer." - (interactive) - (message "Using `doctest-mode' version %s" doctest-version)) - -(defun doctest-warn (msg &rest args) - "Display a doctest warning message." - (if (fboundp 'display-warning) - (display-warning 'doctest (apply 'format msg args)) - (apply 'message msg args))) - -(defun doctest-debug (msg &rest args) - "Display a doctest debug message." - (if (fboundp 'display-warning) - (display-warning 'doctest (apply 'format msg args) 'debug) - (apply 'message msg args))) - -(defvar doctest-serial-number 0) ;used if broken-temp-names. -(defun doctest-temp-name () - "Return a new temporary filename, for use in calling doctest." - (if (memq 'broken-temp-names features) - (let - ((sn doctest-serial-number) - (pid (and (fboundp 'emacs-pid) (emacs-pid)))) - (setq doctest-serial-number (1+ doctest-serial-number)) - (if pid - (format "doctest-%d-%d" sn pid) - (format "doctest-%d" sn))) - (make-temp-name "doctest-"))) - -(defun doctest-fontify-line (charpos) - "Run font-lock-fontify-region on the line containing the given -position." - (if (and charpos (functionp 'font-lock-fontify-region)) - (save-excursion - (goto-char charpos) - (let ((beg (progn (beginning-of-line) (point))) - (end (progn (end-of-line) (point)))) - (font-lock-fontify-region beg end))))) - -(defun doctest-do-auto-fill () - "If the current line is a soucre line or an output line, do nothing. -Otherwise, call (do-auto-fill)." - (cond - ;; Don't wrap source lines. - ((doctest-on-source-line-p) nil) - ;; Don't wrap output lines - ((doctest-on-output-line-p) nil) - ;; Wrap all other lines - (t (do-auto-fill)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Emacs Compatibility Functions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Define compatible versions of functions that are defined -;; for some versions of emacs but not others. - -;; Backwards compatibility: looking-back -(cond ((fboundp 'looking-back) ;; Emacs 22.x - (defalias 'doctest-looking-back 'looking-back)) - (t - (defun doctest-looking-back (regexp) - "Return true if text before point matches REGEXP." - (save-excursion - (let ((orig-pos (point))) - ;; Search backwards for the regexp. - (if (re-search-backward regexp nil t) - ;; Check if it ends at the original point. - (= orig-pos (match-end 0)))))))) - -;; Backwards compatibility: replace-regexp-in-string -(cond ((fboundp 'replace-regexp-in-string) - (defalias 'doctest-replace-regexp-in-string 'replace-regexp-in-string)) - (t ;; XEmacs 21.x or Emacs 20.x - (defun doctest-replace-regexp-in-string - (regexp rep string &optional fixedcase literal) - "Replace all matches for REGEXP with REP in STRING." - (let ((start 0)) - (while (and (< start (length string)) - (string-match regexp string start)) - (setq start (+ (match-end 0) 1)) - (let ((newtext (if (functionp rep) - (save-match-data - (funcall rep (match-string 0 string))) - rep))) - (setq string (replace-match newtext fixedcase - literal string))))) - string))) - -;; Backwards compatibility: line-number -(cond ((fboundp 'line-number) ;; XEmacs - (defalias 'doctest-line-number 'line-number)) - ((fboundp 'line-number-at-pos) ;; Emacs 22.x - (defalias 'doctest-line-number 'line-number-at-pos)) - (t ;; Emacs 21.x - (defun doctest-line-number (&optional pos) - "Return the line number of POS (default=point)." - (1+ (count-lines 1 - (save-excursion (progn (beginning-of-line) - (or pos (point))))))))) - -;; Backwards compatibility: process-live-p -(cond ((fboundp 'process-live-p) ;; XEmacs - (defalias 'doctest-process-live-p 'process-live-p)) - (t ;; Emacs - (defun doctest-process-live-p (process) - (and (processp process) - (equal (process-status process) 'run))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Doctest Results Mode (output of doctest-execute-buffer) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Register the font-lock keywords (xemacs) -(put 'doctest-results-mode 'font-lock-defaults - '(doctest-results-font-lock-keywords)) - -;; Register the font-lock keywords (older versions of gnu emacs) -(when (boundp 'font-lock-defaults-alist) - (add-to-list 'font-lock-defaults-alist - '(doctest-results-mode doctest-results-font-lock-keywords - nil nil nil nil))) - -(defvar doctest-selected-failure nil - "The location of the currently selected failure. -This variable is uffer-local to doctest-results-mode buffers.") - -(defvar doctest-source-buffer nil - "The buffer that spawned this one. -This variable is uffer-local to doctest-results-mode buffers.") - -(defvar doctest-results-py-version nil - "A symbol indicating which version of Python was used to generate -the results in a doctest-results-mode buffer. Can be either the -symbol `py21' or the symbol `py24'. -This variable is uffer-local to doctest-results-mode buffers.") - -;; Keymap for doctest-results-mode. -(defconst doctest-results-mode-map - (let ((map (make-keymap))) - (define-key map [return] 'doctest-select-failure) - map) - "Keymap for doctest-results-mode.") - -;; Syntax table for doctest-results-mode. -(defvar doctest-results-mode-syntax-table nil - "Syntax table used in `doctest-results-mode' buffers.") -(when (not doctest-results-mode-syntax-table) - (setq doctest-results-mode-syntax-table (make-syntax-table)) - (dolist (entry '(("(" . "()") ("[" . "(]") ("{" . "(}") - (")" . ")(") ("]" . ")[") ("}" . "){") - ("$%&*+-/<=>|'\"`" . ".") ("_" . "w"))) - (dolist (char (string-to-list (car entry))) - (modify-syntax-entry char (cdr entry) - doctest-results-mode-syntax-table)))) - -;; Define the mode -(defun doctest-results-mode () - "A major mode used to display the results of running doctest. -See `doctest-mode'. - -\\{doctest-results-mode-map}" - (interactive) - - ;; Declare local variables. - (kill-all-local-variables) - (make-local-variable 'font-lock-defaults) - (make-local-variable 'doctest-selected-failure) - (make-local-variable 'doctest-source-buffer) - (make-local-variable 'doctest-results-py-version) - - ;; Define local variables. - (setq major-mode 'doctest-results-mode - mode-name "Doctest-Results" - mode-line-process 'doctest-mode-line-process - font-lock-defaults '(doctest-results-font-lock-keywords - nil nil nil nil)) - ;; Define keymap. - (use-local-map doctest-results-mode-map) - - ;; Define the syntax table. - (set-syntax-table doctest-results-mode-syntax-table) - - ;; Enable font-lock mode. - (if (featurep 'font-lock) (font-lock-mode 1))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Doctest Mode -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Register the font-lock keywords (xemacs) -(put 'doctest-mode 'font-lock-defaults '(doctest-font-lock-keywords - nil nil nil nil)) - -;; Register the font-lock keywords (older versions of gnu emacs) -(when (boundp 'font-lock-defaults-alist) - (add-to-list 'font-lock-defaults-alist - '(doctest-mode doctest-font-lock-keywords - nil nil nil nil))) - -(defvar doctest-results-buffer nil - "The output buffer for doctest-mode. -This variable is buffer-local to doctest-mode buffers.") - -(defvar doctest-example-markers nil - "A list mapping markers to the line numbers at which they appeared -in the buffer at the time doctest was last run. This is used to find -'original' line numbers, which can be used to search the doctest -output buffer. It's encoded as a list of (MARKER . POS) tuples, in -reverse POS order. -This variable is buffer-local to doctest-mode buffers.") - -;; These are global, since we only one run process at a time: -(defvar doctest-async-process nil - "The process object created by the asynchronous doctest process") -(defvar doctest-async-process-tempfiles nil - "A list of tempfile names created by the asynchronous doctest process") -(defvar doctest-async-process-buffer nil - "The source buffer for the asynchronous doctest process") -(defvar doctest-mode-line-process "" - "A string displayed on the modeline, to indicate when doctest is -running asynchronously.") - -;; Keymap for doctest-mode. n.b.: we intentionally define [tab] -;; rather than overriding indent-line-function, since we don't want -;; doctest-indent-source-line to be called by do-auto-fill. -(defconst doctest-mode-map - (let ((map (make-keymap))) - (define-key map [backspace] 'doctest-electric-backspace) - (define-key map [return] 'doctest-newline-and-indent) - (define-key map [tab] 'doctest-indent-source-line) - (define-key map ":" 'doctest-electric-colon) - (define-key map "\C-c\C-v" 'doctest-version) - (define-key map "\C-c\C-c" 'doctest-execute) - (define-key map "\C-c\C-d" 'doctest-execute-with-diff) - (define-key map "\C-c\C-n" 'doctest-next-failure) - (define-key map "\C-c\C-p" 'doctest-prev-failure) - (define-key map "\C-c\C-a" 'doctest-first-failure) - (define-key map "\C-c\C-e" 'doctest-last-failure) - (define-key map "\C-c\C-z" 'doctest-last-failure) - (define-key map "\C-c\C-r" 'doctest-replace-output) - (define-key map "\C-c|" 'doctest-execute-region) - map) - "Keymap for doctest-mode.") - -;; Syntax table for doctest-mode. -(defvar doctest-mode-syntax-table nil - "Syntax table used in `doctest-mode' buffers.") -(when (not doctest-mode-syntax-table) - (setq doctest-mode-syntax-table (make-syntax-table)) - (dolist (entry '(("(" . "()") ("[" . "(]") ("{" . "(}") - (")" . ")(") ("]" . ")[") ("}" . "){") - ("$%&*+-/<=>|'\"`" . ".") ("_" . "w"))) - (dolist (char (string-to-list (car entry))) - (modify-syntax-entry char (cdr entry) doctest-mode-syntax-table)))) - -;; Use doctest mode for files ending in .doctest -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.doctest$" . doctest-mode)) - -;;;###autoload -(defun doctest-mode () - "A major mode for editing text files that contain Python -doctest examples. Doctest is a testing framework for Python that -emulates an interactive session, and checks the result of each -command. For more information, see the Python library reference: - - -`doctest-mode' defines three kinds of line, each of which is -treated differently: - - - 'Source lines' are lines consisting of a Python prompt - ('>>>' or '...'), followed by source code. Source lines are - colored (similarly to `python-mode') and auto-indented. - - - 'Output lines' are non-blank lines immediately following - source lines. They are colored using several doctest- - specific output faces. - - - 'Text lines' are any other lines. They are not processed in - any special way. - -\\{doctest-mode-map}" - (interactive) - - ;; Declare local variables. - (kill-all-local-variables) - (make-local-variable 'font-lock-defaults) - (make-local-variable 'doctest-results-buffer) - (make-local-variable 'doctest-example-markers) - - ;; Define local variables. - (setq major-mode 'doctest-mode - mode-name "Doctest" - mode-line-process 'doctest-mode-line-process - font-lock-defaults '(doctest-font-lock-keywords - nil nil nil nil)) - - ;; Define keymap. - (use-local-map doctest-mode-map) - - ;; Define the syntax table. - (set-syntax-table doctest-mode-syntax-table) - - ;; Enable auto-fill mode. - (auto-fill-mode 1) - (setq auto-fill-function 'doctest-do-auto-fill) - - ;; Enable font-lock mode. - (if (featurep 'font-lock) (font-lock-mode 1)) - - ;; Run the mode hook. - (run-hooks 'doctest-mode-hook)) - -(provide 'doctest-mode) -;;; doctest-mode.el ends here diff --git a/elpa/python-mode-6.1.3/test/doctest-mode.elc b/elpa/python-mode-6.1.3/test/doctest-mode.elc deleted file mode 100644 index e7ba38a105ac9d4176dc238722d7f56a7ae3f8e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56310 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, unless indicated otherwise - -;; Keywords: tools, lisp - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;; Prints commented output - -;; (global-set-key (kbd "") 'parse-partial-sexp-iac) -;; (global-set-key (kbd "") 'syntax-ppss-iac) - -(defun parse-partial-sexp-commentstop (&optional arg) - "Interactive form of parse-partial-sexp -output listed with documentation" - (interactive "P") - (save-excursion - (ppse-documented-base 'parse-partial-sexp (point) arg t))) - -(defun parse-partial-sexp-iac (&optional arg) - "Interactive form of parse-partial-sexp -output listed with documentation" - (interactive "P") - (save-excursion - (ppse-documented-base 'parse-partial-sexp (point) arg nil))) - -(defun syntax-ppss-iac (&optional arg) - "Syntax-ppss made interactive output listed with documentation" - (interactive "P") - (ppse-documented-base 'syntax-ppss (point) arg nil)) - -(defun ppse-documented-base (funktion end arg commentstop) - "Parse partial symbolic expression -list results below its documentation " - (let* ((start (point-min)) - (scan (condition-case nil - (scan-lists (point) 1 0) - (error nil))) - (rekord - (if - (or (eq this-command 'parse-partial-sexp-iac) - (eq this-command 'parse-partial-sexp-commentstop)) - (funcall funktion start end nil nil nil commentstop) - (funcall funktion end))) - (doku (documentation 'parse-partial-sexp)) - (doku-abr (list (substring doku (1+ (string-match ":" doku))))) - (count 0)) - (if arg - (what-cursor-position) - (message "%s LEND: %s" rekord scan)) - (with-output-to-temp-buffer (concat (format "%s" funktion) "-output") - (set-buffer standard-output) - (insert (car doku-abr)) - (goto-char (point-min)) - (re-search-forward "^ [0-9]+\." nil t 1) - (replace-match (concat (prin1-to-string count) "-")) - (replace-match "-") - (setq count (1+ count)) - (forward-line 1) - (split-line) - (dolist (elt rekord) - (insert (format "\t ====> %s <====" elt)) - (re-search-forward "^ [0-9]+\." nil t 1) - (replace-match (concat (prin1-to-string count) "-")) - (end-of-line) - (newline) - (setq count (1+ count))))) - (goto-char (point-min)) - (toggle-read-only -1) - (unless (featurep 'xemacs) - (set-window-text-height (selected-window) 4)) - (while (not (eobp)) - (if (looking-at "^[ \t]*$") - (delete-region (point) (progn (forward-line) (point))) - (forward-line)))) - -(defun scan-lists-iac () - " " - (interactive) - (message "%s" (scan-lists (defun-beginning-position) (point) 0))) - -(provide 'pars-part-output) -;;; pars-part-output.el ends here diff --git a/elpa/python-mode-6.1.3/test/pars-part-output.elc b/elpa/python-mode-6.1.3/test/pars-part-output.elc deleted file mode 100644 index 64fa1bb36e01925cef7650ac434299d91e99fcf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2998 zcmcguTW{Mo6n0;R#>M=w0onHAo+xP-x1+3^?cBPh$okNsSOc`c9^!PRCE5}qi<(Hq z^)O(6eIIG1PLK{oQEUQqBM;B@JD0;}FHXK`wOZ}N!$Ufe^D@gtLX#!UxlS{#eow@L z$Eg<8aZ$|%tS*YsHD7M6+*y?+Zc+0h7H%x(Bn$ctr(edJ`~i8RgTe4%;8EcDk>x+F zKs1E}>Zfup`nP2CT`}jea+AKuOWrS+I+X>R%S5oD>$_oJ3#I!duN1>WGg<4h)~?7c z`>dd6<~Uu7N@Y+ch}_T(?A{{NDe*ifS?X+_{mC^5l-stOuhUGe^s1Fmlq?HA&tghs ztaOzXGxY;@E2W7i3G90>$KQ8@{aZW|2_A*i6w5+$5Z8Lj_OMd0r>{<)Kc_h56_4Rk z^@A19i-eS`)v22iKr}iPQ04+$QcKIFb+K*ckuQup5ab!9C#y#&OktA34N~QiG)qK5+Bf# z^f?V^cYB9i8tmEvQS7iCx!o9#-TR05q)e^CI$KWf4LXZeRejVCR zil16@V*h5)&0u{jR@XSv4I_Ln8m_GX9#0MSOl&odF5 zR>-|vE-1s-6+A2)=_VdO1RtPqS{D}vh9r>824~k$3Z=xi0OAn$XdL<;AUgVPT;S7x z0&}CUTlOa~KjHn>y}RS7B@cWbr2dx=zraQ?c3Stw)2%MUxe#}>Wj4DmJ_opm9e3=! zHs@ZRbo*Esb-fPGd*MlI90neN8j`)>7xRns2!amV*fy)3pc__L0M{VGJ-9b^@EV?O z{b9CCe2?t$PPl1uYiI;-Mw<{D8e{xTm==27QFjk-eh9a;f#uoh zAID}#Ow1F6kQ;)ZaT0ij;c%zffX5=Q<89&PpIUC%HH*Ie>3FXNS*_WTM^4QVWnG<$(atGh%He1x{=U zHT;-K8$~{O=M?p5cUM%Eta`lINg6map;@Xfo3te8+$7c7Nr(Fv19z9i-o^kj>yNaO;?-f5PKY?cBhA{UrQl4g%0j3M#@ zqYpEVdUHk_=Z|(AsD2?~Pa-dB`(S)hq0-d_MkCZb)3#AcS&~)YCaWcF`%ktHWS*EM zYND{#r&%x)A;ZWet|)5gXF-O(lV%h60wZ8H&0<@S8}DCjt=Vk{5C)zA41f;DH?bv= zYhq~n2Dc0&SvVy0fSie#Wkq2e`yRH)qG6*;uot2co37St@0OLk%#et72D(1)_S*jddCr&h diff --git a/elpa/python-mode-6.1.3/test/py-bug-numbered-tests.el b/elpa/python-mode-6.1.3/test/py-bug-numbered-tests.el deleted file mode 100644 index 4e976ff99..000000000 --- a/elpa/python-mode-6.1.3/test/py-bug-numbered-tests.el +++ /dev/null @@ -1,6228 +0,0 @@ -;;; py-bug-numbered-tests.el --- run single tests according to bug number - -;; Author: Andreas Roehler -;; Keywords: languages -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . -;;; Commentary: -;; -;;; Code: - -(defvar py-test-shebang-list (list "#! /usr/bin/env python" "#! /usr/bin/env ipython" "#! /usr/bin/python" "#! /usr/bin/ipython") - "Values to test as `py-test-shebang', resp. `py-shell-name'. ") - -(setq py-test-shebang-list (list "#! /usr/bin/env python" "#! /usr/bin/ipython")) - -(defvar py-test-shebang "#! /usr/bin/env python" - "Default value used for tests. ") - -(defvar py-ipython-test-shebang "#! /usr/bin/env ipython" - "Default value used for testing IPython. ") - -(defvar bug-numbered-tests nil - "Tests following reports at https://bugs.launchpad.net/python-mode") - -(defun py-run-bug-numbered-tests (&optional arg) - "With ARG greater 1 keep test buffers open. " - (interactive "p") - (dolist (ele bug-numbered-tests) - (funcall ele arg))) - -(setq bug-numbered-tests - (list - 'py-execute-buffer-ipython-lp-1252643-test - 'py-empty-line-closes-p-lp-1235324-test - 'C-c-C-c-lp:1221310-and-store-result-test - 'Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test - 'Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171-test - 'python-mode-very-slow-lp-1107037-test - 'cascading-indent-lp-1101962-test - 'line-after-colon-with-inline-comment-lp-1109946-test - 'more-docstring-filling-woes-lp-1102296-pep-257-nn-test - 'more-docstring-filling-woes-lp-1102296-pep-257-test - 'more-docstring-filling-woes-lp-1102296-nil-test - 'more-docstring-filling-woes-lp-1102296-onetwo-test - 'more-docstring-filling-woes-lp-1102296-django-test - 'more-docstring-filling-woes-lp-1102296-symmetric-test - 'module-docstring-when-following-comment-lp-1102011-test - 'py-newline-and-indent-leaves-eol-whitespace-lp-1100892-test - 'py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-test - 'py-up-test-python-el-111-test - 'py-down-python-el-112-test - 'enter-key-does-not-indent-properly-after-return-statement-lp-1098793-test - 'filename-completion-fails-in-ipython-lp-1027265-n1-test - 'filename-completion-fails-in-ipython-lp-1027265-n2-test - 'comments-start-a-new-line-lp-1092847-n1-test - 'comments-start-a-new-line-lp-1092847-n2-test - 'temporary-files-remain-when-python-raises-exception-lp-1083973-n1-test - 'temporary-files-remain-when-python-raises-exception-lp-1083973-n2-test - 'temporary-files-remain-when-python-raises-exception-lp-1083973-n3-test - 'temporary-files-remain-when-python-raises-exception-lp-1083973-n4-test - 'wrong-indentation-after-return-or-pass-keyword-lp-1087499-test - 'wrong-indent-after-asignment-lp-1087404-test - 'py-execute-buffer-python3-looks-broken-lp-1085386-test - 'fill-paragraph-in-comments-results-in-mess-lp-1084769-test - 'imenu-add-menubar-index-fails-lp-1084503-test - 'spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-test - 'fill-paragraph-in-a-comment-does-not-stop-at-empty-comment-lines-lp-1077139-test - 'incorrect-indentation-of-comments-in-a-multiline-list-lp-1077063-test - 'fails-to-indent-abs-wrong-type-argument-lp-1075673-test - 'incorrect-indentation-of-one-line-functions-lp-1067633-test - 'several-new-bugs-with-paragraph-filling-lp-1066489-test - 'impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-test - 'exception-in-except-clause-highlighted-as-keyword-lp-909205-test - 'pyindex-mishandles-class-definitions-lp-1018164-test - 'stalls-emacs-probably-due-to-syntax-highlighting-lp-1058261-test - 'py-find-imports-lp-1023236-test - 'pycomplete-imports-not-found-error-when-no-symbol-lp:1019791-test - 'return-statement-indented-incorrectly-lp-1019601-test - 'converts-tabs-to-spaces-in-indent-tabs-mode-t-lp-1019128-test - 'empty-triple-quote-lp:1009318-test - 'spurious-trailing-whitespace-lp-1008679-test - 'completion-fails-in-python-script-r989-lp:1004613-test - 'no-completion-at-all-lp:1001328-test - 'py-narrow-to-defun-lp-1020531-test - 'not-that-useful-completion-lp:1003580-test - 'pycomplete-same-folder-class-lp:889052-test - 'pycomplete-same-folder-def-lp:889052-test - 'indent-region-lp:997958-test - 'py-describe-symbol-fails-on-modules-lp:919719-test - 'mark-block-region-lp:328806-test - 'mark-decorators-lp:328851-test - 'nested-dictionaries-indent-lp:328791-test - 'tqs-lp:302834-lp:1018994-test - 'fore-00007F-breaks-indentation-lp:328788-test - 'dq-in-tqs-string-lp:328813-test - 'flexible-indentation-lp:328842-test - 'py-current-defun-lp:328846-test - 'cls-pseudo-keyword-lp:328849-test - 'hungry-delete-backwards-lp:328853-test - 'hungry-delete-forward-lp:328853-test - 'beg-end-of-defun-lp:303622-test - 'bullet-lists-in-comments-lp:328782-test - 'imenu-newline-arglist-lp:328783-test - 'imenu-matches-in-docstring-lp:436285-test - 'exceptions-not-highlighted-lp:473525-test - 'fill-paragraph-problems-lp:710373-test - 'nested-indents-lp:328775-test - 'previous-statement-lp:637955-test - 'inbound-indentation-multiline-assignment-lp:629916-test - 'indentation-of-continuation-lines-lp:691185-test - ;; test passes only when run from edebug - ;; assistance appreciated - ;; 'syntaxerror-on-py-execute-region-lp:691542-test - 'goto-beginning-of-tqs-lp:735328-test - 'class-treated-as-keyword-lp:709478-test - 'py-decorators-face-lp:744335-test - 'indent-after-return-lp:745208-test - 'keep-assignments-column-lp:748198-test - 'indent-triplequoted-to-itself-lp:752252-test - 'multiline-listings-indent-lp:761946-test - 'new-page-char-causes-loop-lp:762498-test - 'nested-dicts-indent-lp:763756-test - 'bad-indent-after-except-lp:771289-test - 'indent-open-paren-not-last-lp:771291-test - 'wrong-indent-after-else-lp:772610-test - 'except-indents-wrong-lp:784432-test - 'indent-explicitly-set-in-multiline-tqs-lp:784225-test - 'unbalanced-parentheses-lp:784645-test - 'explicitly-indent-in-list-lp:785018-test - 'explicit-backslashed-continuation-line-indent-lp:785091-test - 'indentation-error-lp:795773-test - 'indent-function-arglist-lp:800088-test - 'python-mode-hangs-lp:801780-test - 'stops-backslashed-line-lp:802504-test - 'stops-backslashed-line-lp:802504-test2 - 'python-mode-slow-lp:803275-test - 'master-file-not-honored-lp:794850-test - 'py-variable-name-face-lp:798538-test - 'colon-causes-error-lp:818665-test - 'if-indentation-lp:818720-test - 'closing-parenthesis-indent-lp:821820-test - 'py-indent-line-lp:822532-test - 'indent-honor-arglist-whitespaces-lp:822540-test - 'comments-indent-honor-setting-lp:824427-test - 'infinite-loop-after-tqs-lp:826044-test - 'closing-list-lp:826144-test - 'py-electric-comment-add-space-lp:828398-test - 'py-electric-comment-add-space-t-lp:828398-test - 'execute-indented-code-lp:828314-test - 'py-hungry-delete-backwards-needs-cc-lp:850595-test - 'wrong-guess-for-py-indent-offset-lp:852052-test - 'indent-match-import-pkg-lp:852500-test - 'py-shift-line-when-no-region-lp:855565-test - 'indentation-of-from-import-continuation-lines-lp:858041-test - 'indentation-after-one-line-suites-lp:858044-test - 'py-compute-indentation-wrong-at-eol-lp:858043-test - 'comment-indentation-level-lp:869854-test - 'indentation-wrong-after-multi-line-parameter-list-lp:871698-test - 'no-indent-after-continue-lp:872676-test - 'indent-after-inline-comment-lp:873372-test - 'else-clause-indentation-lp:874470-test - 'py-complete-lp:858621-test - 'incorrect-use-of-region-in-py-shift-left-lp:875951-test - 'indent-after-multiple-except-statements-lp:883815-test - 'wrongly-highlighted-as-keywords-lp:885144-test - 'glitch-when-indenting-lists-lp:886473-test - 'indentation-keyword-lp:885143-test - 'indentation-bug-inside-docstrings-lp:899455-test - 'another-indentation-bug-inside-docstrings-lp:900684-test - 'py-shebang-consider-ipython-lp:849293-test - 'py-shebang-ipython-env-lp:849293-test - 'indent-offset-not-guessed-when-loading-lp:902890-test - 'from-__future__-import-absolute_import-mishighlighted-lp:907084-test - ;; 'automatic-indentation-is-broken-lp:889643-test - 'chars-uU-preceding-triple-quoted-get-string-face-lp:909517-test - 'problem-with-py-separator-char-under-windows-lp:975539-test - 'tuple-unpacking-highlighted-incorrectly-lp:961496-test - 'new-problem-with-py-temp-directory-lp:965762-test - - 'wrong-type-argument-lp:901541-test - 'py-pychecker-run-missing-lp:910783-test - 'py-forward-into-nomenclature-lp:916818-test - 'py-forward-into-nomenclature-jumps-over-CamelCased-words-lp:919540-test - 'py-backward-into-nomenclature-caps-names-lp:919541-test - 'execute-buffer-ipython-fails-lp:928087-test - 'py-indent-comments-nil-ignored-lp:958721-test - 'broken-font-locking-lp:961231-test - 'regression-in-py-execute-region-lp:962227-test - - 'py-shell-invoking-python-lp:835151-test - 'py-shell-invoking-ipython-lp:835151-test - 'py-shell-invoking-python3-lp:835151-test - 'py-shell-invoking-python2-lp:835151-test - 'py-shell-invoking-python2.7-lp:835151-test - 'py-shell-invoking-jython-lp:835151-test - - 'py-mark-block-clause-misbehave-lp:949310-test - 'py-mark-clause-misbehave-lp:949310-test - 'py-mark-block-misbehave-lp:949310-test - - 'script-buffer-appears-instead-of-python-shell-buffer-lp:957561-test - 'UnicodeEncodeError-lp:550661-test - 'py-shell-complete-lp:328836-test)) - -(defmacro py-bug-tests-intern (testname &optional dedicated teststring use-find-file) - "`use-find-file' is used to make sure that the new buffer is -created local to the project that autocomplete is being tested -on." - `(let ((debug-on-error t) - (enable-local-variables :all) - py-load-pymacs-p - py-split-windows-on-execute-p - py-shell-switch-buffers-on-execute-p - py-start-run-py-shell - proc - py-fontify-shell-buffer-p - ) - (if ,use-find-file - (find-file (concat (py-normalize-directory py-temp-directory) - (replace-regexp-in-string "\\\\" "" (replace-regexp-in-string "-base$" "-test" (prin1-to-string ,testname))))) - (set-buffer (get-buffer-create (replace-regexp-in-string "\\\\" "" (replace-regexp-in-string "-base$" "-test" (prin1-to-string ,testname)))))) - ;; (with-temp-buffer - (switch-to-buffer (current-buffer)) - (delete-other-windows) - (erase-buffer) - (fundamental-mode) - (insert ,teststring) - (local-unset-key (kbd "RET")) - (python-mode) - (when (and (boundp 'company-mode) company-mode) (company-abort)) - (funcall ,testname) - (message "%s" (replace-regexp-in-string "\\\\" "" (concat (replace-regexp-in-string "-base$" "-test" (prin1-to-string ,testname)) " passed"))) - (unless (< 1 arg) - (set-buffer-modified-p 'nil) - (and (get-buffer-process (current-buffer)) - (set-process-query-on-exit-flag (get-buffer-process (current-buffer)) nil) - (kill-process (get-buffer-process (current-buffer)))) - (kill-buffer (current-buffer))))) - -;; py-if-name-main-permission-p -(defun py-if-name-main-permission-lp-326620-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def py_if_name_main_permission_test(): - if __name__ == \"__main__\" : - print(\"__name__ == '__main__' run\") - return True - - else: - print(\"__name__ == '__main__' supressed\") - return False - -py_if_name_main_permission_test() -")) - (py-bug-tests-intern 'py-if-name-main-permission-lp-326620-base arg teststring))) - -(defun py-if-name-main-permission-lp-326620-base () - (save-excursion - (let ((py-if-name-main-permission-p t) - (py-shell-name (py-choose-shell))) - (py-execute-buffer) - (set-buffer "*Python*") - ;; (switch-to-buffer (current-buffer)) - (goto-char (point-max)) - (forward-line -1) - (end-of-line) - (sit-for 0.2) - (assert (looking-back "run") nil "py-if-name-main-permission-lp-326620-test #1 failed"))) - (switch-to-buffer (current-buffer)) - (let (py-if-name-main-permission-p) - (py-execute-buffer) - (set-buffer "*Python*") - ;; (switch-to-buffer (current-buffer)) - (goto-char (point-max)) - (forward-line -1) - (end-of-line) - (sit-for 0.2) - (assert (looking-back "supressed") nil "py-if-name-main-permission-lp-326620-test #2 failed"))) - -(defun sexp-commands-lp:328778-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked. - -Reported by Montanaro on 2003-08-05 -\[ ... ] - You can kill balanced expressions on a - particular line but it's not possible to remove the - whole of an 'if' or 'while' block." - (interactive "p") - (let ((teststring "# Examples from http://diveintopython.org/ - -def main(argv): - grammar = \"kant.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - sys.exit(2) - for opt, arg in opts: - if opt in (\"-h\", \"--help\"): - usage() - sys.exit() - elif opt == '-d': - global _debug - _debug = 1 - elif opt in (\"-g\", \"--grammar\"): - grammar = arg -")) - (py-bug-tests-intern 'sexp-commands-lp:328778 arg teststring))) - -(defun sexp-commands-lp:328778 () - (let ((size (buffer-size))) - (goto-char (point-min)) - (forward-line 15) - (py-kill-clause) - (assert (< (buffer-size) size) nil "sexp-commands-lp:328778-test failed") - (assert (eq (buffer-size) 526) nil "sexp-commands-lp:328778-test failed") - (kill-line 1) - (indent-according-to-mode) - (forward-line -4) - (py-kill-block) - (assert (eq (buffer-size) 324) nil "sexp-commands-lp:328778-test failed") - )) - -(defun nested-dictionaries-indent-lp:328791-test (&optional arg) - "With ARG greater 1 keep test buffer open. - -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked. " - (interactive "p") - (let ((teststring " - -# hanging -asdf = { - 'a':{ - 'b':3, - 'c':4 - } - } - -# closing -asdf = { - 'a':{ - 'b':3, - 'c':4 - } -} - -data = { - 'key': - { - 'objlist': [ - { - 'pk': 1, - 'name': 'first', - }, - { - 'pk': 2, - 'name': 'second', - } - ] - } -} - -")) - (py-bug-tests-intern 'nested-dictionaries-indent-lp:328791 arg teststring))) - -(defun nested-dictionaries-indent-lp:328791 () - (let ((py-indent-honors-multiline-listing t) - py-closing-list-dedents-bos) - (goto-char (point-min)) - (search-forward "'a':{") - (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #1 failed") - (search-forward "}") - (assert (eq 8 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed") - (search-forward "}") - (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #3 failed") - - ;; py-closing-list-dedents-bos - (setq py-closing-list-dedents-bos t) - (search-forward "'a':{") - (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #1 failed") - (search-forward "}") - (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #1 failed") - (search-forward "}") - (assert (eq 0 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed") - (search-forward "}" nil nil 2) - (assert (eq 12 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed") - (search-forward "]") - (assert (eq 8 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed") - (search-forward "}") - (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed") - (search-forward "}") - (assert (eq 0 (py-compute-indentation)) nil "nested-dictionaries-indent-lp:328791-test #2 failed"))) - -(defun mark-block-region-lp:328806-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "def f(): - \"\"\" - class blah blah - \"\"\" - if a: - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) -")) - (py-bug-tests-intern 'mark-block-region-lp:328806-base arg teststring))) - -(defun mark-block-region-lp:328806-base () - (forward-line -2) - (py-mark-block) - (assert (< (region-beginning) (region-end)) nil "mark-block-region-lp:328806-test failed!")) - -(defun flexible-indentation-lp:328842-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -\(long, sequence, of_items, - that, needs, to_be, wrapped) = input_list - -packed_entry = (long, sequence, of_items, -that, needs, to_be, wrapped) - -\( whitespaced, long, sequence, of_items, - that, needs, to_be, wrapped) = input_list -")) - (py-bug-tests-intern 'flexible-indentation-lp:328842-base arg teststring))) - -(defun flexible-indentation-lp:328842-base () - (let ((py-indent-honors-multiline-listing t)) - (goto-char 33) - (assert (eq 1 (py-compute-indentation)) nil "flexible-indentation-lp:328842-test failed") - (goto-char 115) - (assert (eq 16 (py-compute-indentation)) nil "flexible-indentation-lp:328842-test failed") - (goto-char 202) - (assert (eq 2 (py-compute-indentation)) nil "flexible-indentation-lp:328842-test failed"))) - -(defun py-current-defun-lp:328846-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-current-defun-lp:328846-base arg teststring))) - -(defun py-current-defun-lp:328846-base () - (goto-char 331) - (assert (string= "f" (py-current-defun)) nil "py-current-defun-lp:328846-test failed")) - -(defun cls-pseudo-keyword-lp:328849-test (&optional arg) - (interactive "p") - (let ((teststring "class Foo(object): - def summat(cls, x): - ..... - summat = classmethod(summat) -")) - (py-bug-tests-intern 'cls-pseudo-keyword-lp:328849-base arg teststring))) - -(defun cls-pseudo-keyword-lp:328849-base () - (let ((font-lock-verbose nil)) - (font-lock-mode 1) - (font-lock-fontify-buffer) - (goto-char 36) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-pseudo-keyword-face) nil "cls-pseudo-keyword-lp:328849-test failed "))) - -(defun mark-decorators-lp:328851-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "@foo.bar -def baz(): - pass -")) - (py-bug-tests-intern 'mark-decorators-lp:328851-base arg teststring))) - -(defun mark-decorators-lp:328851-base () - (goto-char 10) - (py-mark-def t) - (assert (eq 28 (- (region-end)(region-beginning))) nil "mark-decorators-lp:328851-test failed")) - -(defun beg-end-of-defun-lp:303622-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -class f(): - \"\"\" - class blah blah - \"\"\" - if a: - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) -")) - (py-bug-tests-intern 'beg-end-of-defun-lp:303622 arg teststring))) - -(defun beg-end-of-defun-lp:303622 () - (goto-char 13) - (py-end-of-def-or-class) - (sit-for 0.1) - (assert (eq 275 (point)) nil "beg-end-of-defun-lp:303622-test #1 failed!") - (beginning-of-defun) - (sit-for 0.1) - (assert (eq 2 (point)) nil "beg-end-of-defun-lp:303622-test #2 failed!")) - -(defun dq-in-tqs-string-lp:328813-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -# Bug #328813 (sf1775975) -print(\"\"\" \"Hi!\" I'm a doc string\"\"\") -print(''' 'Hi!' I'm a doc string''') -print(\"\"\" ''' \"Hi!\" I'm a doc string ''' \"\"\") -print(''' \"\"\" \"Hi!\" I'm a doc string \"\"\" ''') -")) - (py-bug-tests-intern 'dq-in-tqs-string-lp:328813 arg teststring))) - -(defun dq-in-tqs-string-lp:328813 () - (let ((font-lock-verbose nil)) - (font-lock-mode 1) - (font-lock-fontify-buffer) - (goto-char 78) - (let ((erg (get-char-property (point) 'face))) - (insert "\"") - (font-lock-fontify-buffer) - (assert (eq erg (get-char-property (point) 'face)) nil "dq-in-tqs-string-lp:328813-test failed ") - (goto-char 122)))) - -(defun imenu-matches-in-docstring-lp:436285-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -class foo(): - \"\"\" - class hello(object): - def __init__(self): - ... - \"\"\" - pass -")) - (py-bug-tests-intern 'imenu-matches-in-docstring-lp:436285-base arg teststring))) - -(defun imenu-matches-in-docstring-lp:436285-base () - (goto-char 40) - (assert (eq (py-beginning-of-def-or-class) 2) nil "imenu-matches-in-docstring-lp:436285-test failed")) - -(defun fill-paragraph-problems-lp:710373-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " - \"\"\" - triple-quoted string containing \"quotation\" marks. - triple-quoted string containing \"quotation\" marks. - triple-quoted string containing \"quotation\" marks. - triple-quoted string containing \"quotation\" marks. - triple-quoted string containing \"quotation\" marks. - \"\"\" -")) - (fill-paragraph-problems-lp:710373-test-intern arg teststring))) - -(defun fill-paragraph-problems-lp:710373-test-intern (arg teststring) - (let ((tmp-dir "/tmp/") - (fpp-exec-buffer "fill-paragraph-problems-lp:710373") - (diff-buffer "fpp-lp:710373-old")) - (set-buffer (get-buffer-create diff-buffer)) - (erase-buffer) - (fundamental-mode) - (insert teststring) - (write-file (concat tmp-dir diff-buffer)) - (if arg - (progn - (set-buffer (get-buffer-create fpp-exec-buffer)) - (switch-to-buffer (current-buffer)) - (erase-buffer) - (insert teststring) - (fundamental-mode) - (fill-paragraph-problems-lp:710373-test-base arg tmp-dir fpp-exec-buffer diff-buffer)) - (with-temp-buffer - (insert teststring) - (fill-paragraph-problems-lp:710373-test-base arg tmp-dir fpp-exec-buffer diff-buffer))))) - -(defun fill-paragraph-problems-lp:710373-test-base (arg tmp-dir fpp-exec-buffer diff-buffer) - (goto-char 48) - (py-fill-paragraph) - (write-file (concat tmp-dir fpp-exec-buffer)) - (diff (concat tmp-dir fpp-exec-buffer) (concat tmp-dir diff-buffer) "-u") - (if (featurep 'xemacs) - (progn - (set-buffer "*Diff Output*") - (switch-to-buffer (current-buffer))) - (set-buffer "*Diff*") - (sit-for 1) - (assert (numberp (progn (goto-char (point-min))(search-forward "no differences" nil t 1))) t) - (message "%s" "fill-paragraph-problems-lp:710373 passed")) - (set-buffer "fill-paragraph-problems-lp:710373") - (unless (< 1 arg) - (set-buffer-modified-p 'nil) - (kill-buffer (current-buffer)))) - -(defun tqs-lp:302834-lp:1018994-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - - \"\"\" - - '''I'asdfa''' -")) - - (py-bug-tests-intern 'triple-quoted-string-dq-lp:302834 arg teststring))) - -(defun triple-quoted-string-dq-lp:302834 () - (let ((font-lock-verbose nil)) - (font-lock-mode 1) - (font-lock-fontify-buffer) - (goto-char 78) - (let ((erg (get-char-property (point) 'face))) - (insert "\"") - (font-lock-fontify-buffer) - (sit-for 0.2) - (assert (eq erg (get-char-property (point) 'face)) "tqs-lp:302834-lp:1018994-test #1 failed.") - (goto-char 153) - (assert (eq erg (get-char-property (point) 'face)) "tqs-lp:302834-lp:1018994-test #2 failed.") - ))) - -(defun inbound-indentation-multiline-assignment-lp:629916-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "foo_long_long_long_long = ( - bar_long_long_long_long[ - (x_long_long_long_long == X) & - (y_long_long_long_long == Y)]) -")) - (py-bug-tests-intern 'inbound-indentation-multiline-assignment-lp:629916 arg teststring))) - -(defun inbound-indentation-multiline-assignment-lp:629916 () - (let ((py-indent-honors-multiline-listing t)) - (goto-char 33) - (assert (eq 4 (py-compute-indentation)) nil "inbound-indentation-multiline-assignment-lp:629916-test #1 failed") - (goto-char 62) - (assert (eq 8 (current-indentation)) nil "inbound-indentation-multiline-assignment-lp:629916-test #2 failed"))) - -(defun previous-statement-lp:637955-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\"")) - (py-bug-tests-intern 'previous-statement-lp:637955 arg teststring))) - -(defun previous-statement-lp:637955 () - (beginning-of-line) - (py-previous-statement) - (sit-for 0.1) - (assert (eq 31 (point)) nil "previous-statement-lp:637955-test failed.")) - -(defun nested-indents-lp:328775-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -if x > 0: - for i in range(100): - print(i) - else: - print(\"All done\") -elif x < 0: - print(\"x is negative\") -")) - (py-bug-tests-intern 'nested-indents-lp:328775 arg teststring))) - -(defun nested-indents-lp:328775 () - (assert (eq 4 (py-compute-indentation)) nil "nested-indents-lp:328775-test #1 failed!") - (goto-char 41) - (assert (eq 8 (py-compute-indentation)) nil "nested-indents-lp:328775-test #2 failed!") - (goto-char 54) - (assert (eq 4 (py-compute-indentation)) nil "nested-indents-lp:328775-test #3 failed!")) - -(defun bullet-lists-in-comments-lp:328782-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring)) - (bullet-lists-in-comments-lp:328782-test-intern arg teststring))) - -(defun bullet-lists-in-comments-lp:328782-test-intern (&optional arg teststring) - (let ((font-lock-verbose nil)) - (set-buffer (get-buffer-create "bullet-lists-in-comments-lp:328782-test")) - (erase-buffer) - (insert " -## * If the filename is a directory and not a Maildir nor -## an MH Mailbox, it will be processed as a Mailbox --this bug named here: bullet-lists-in-comments-lp:328782.htm-- -## directory consisting of just .txt and .lorien files. -") - (when arg (switch-to-buffer (current-buffer))) - (python-mode) - (font-lock-mode 1) - (font-lock-fontify-buffer) - (goto-char 100) - (py-fill-paragraph) - (set-buffer "bullet-lists-in-comments-lp:328782-test") - (unless (< 1 arg) - (set-buffer-modified-p 'nil) - (kill-buffer (current-buffer))))) - -(defun imenu-newline-arglist-lp:328783-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "def editor(db, db_name, table_name, - #api - dbapi,dbapi_exceptions): - pass")) - (py-bug-tests-intern 'imenu-newline-arglist-lp:328783-base arg teststring))) - -(defun imenu-newline-arglist-lp:328783-base () - (goto-char 60) - (py-beginning-of-def-or-class) - (assert (eq (point) 1) nil "imenu-newline-arglist-lp:328783-test failed")) - -(defun hungry-delete-backwards-lp:328853-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'hungry-delete-backwards-lp:328853 arg teststring))) - -(defun hungry-delete-backwards-lp:328853 () - (goto-char 421) - (py-hungry-delete-backwards) - (assert (eq 409 (point)) nil "hungry-delete-backwards-lp:328853-test failed")) - -(defun hungry-delete-forward-lp:328853-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'hungry-delete-forward-lp:328853 arg teststring))) - -(defun hungry-delete-forward-lp:328853 () - (goto-char 409) - (py-hungry-delete-forward) - (assert (looking-at "#") nil "hungry-delete-backwards test failed")) - -(defun UnicodeEncodeError-lp:550661-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- -print(u'\\xA9') -"))) - (py-bug-tests-intern 'UnicodeEncodeError-lp:550661-base 2 teststring))) - -(defun UnicodeEncodeError-lp:550661-base () - (goto-char 48) - (push-mark) - (end-of-line) - (py-execute-region-switch (line-beginning-position) (point)) - (sit-for 0.2) - (unless (looking-at "©") - (when (looking-back comint-prompt-regexp) - (goto-char (1- (match-beginning 0)))) - (sit-for 0.1)) - (assert (or (looking-back "©")(looking-at "©")) nil "UnicodeEncodeError-lp:550661-test failed")) - -(defun indentation-of-continuation-lines-lp:691185-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " def f(val): - # current behavior - indent to just after the first space - a_verry_loonng_variable_nammmee = \\ - val -")) - (py-bug-tests-intern 'indentation-of-continuation-lines-lp:691185 arg teststring))) - -(defun indentation-of-continuation-lines-lp:691185 () - (let ((py-continuation-offset 2)) - (goto-char 127) - (delete-horizontal-space) - (indent-to (py-compute-indentation)) - (assert (eq 10 (current-indentation)) nil "indentation-of-continuation-lines-lp:691185-test failed!"))) - -(defun goto-beginning-of-tqs-lp:735328-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "class Foo(object): -\"\"\" -This docstring isn't indented, test should pass anyway. -\"\"\" - -")) - (py-bug-tests-intern 'goto-beginning-of-tqs-lp:735328 arg teststring))) - -(defun goto-beginning-of-tqs-lp:735328 () - (goto-char 84) - (assert (eq 4 (py-compute-indentation)) nil "goto-beginning-of-tqs-lp:735328-test failed") - ) - -(defun class-treated-as-keyword-lp:709478-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "foo = [ - T.div( - T.tabl(*trows), - - CLASS='blok',) -] -")) - (py-bug-tests-intern 'class-treated-as-keyword-lp:709478 arg teststring))) - -(defun class-treated-as-keyword-lp:709478 () - (let ((font-lock-verbose nil)) - (font-lock-fontify-buffer) - (goto-char 63) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'font-lock-string-face) nil "class-treated-as-keyword-lp:709478d 1th test failed") - (goto-char 57) - ;; (assert (if (get-char-property (point) 'face)(eq (get-char-property (point) 'face) 'py-variable-name-face)t) nil "class-treated-as-keyword-lp:709478-test 2th failed"))) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "class-treated-as-keyword-lp:709478-test 2th failed"))) - -(defun fore-00007F-breaks-indentation-lp:328788-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "class a: - def __init__(self): - self.StyleSetSpec(self.STYLE_FIELD, \"fore:#00007F\" ) - self.StyleSetSpec(self.STYLE_FIELD, \"fore:#00007F\" ) -")) - (py-bug-tests-intern 'fore-00007F-breaks-indentation-lp:328788 arg teststring))) - -(defun fore-00007F-breaks-indentation-lp:328788 () - (switch-to-buffer (current-buffer)) - (goto-char 34) - (sit-for 0.1) - ;; (debug-on-entry 'py-compute-indentation) - (assert (eq 8 (py-compute-indentation)) nil "fore-00007F-breaks-indentation-lp:328788-test #1 failed") - (goto-char 121) - (assert (eq 8 (py-compute-indentation)) nil "fore-00007F-breaks-indentation-lp:328788-test #2 failed")) - -(defun exceptions-not-highlighted-lp:473525-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "excs = (SystemExit, Exception, KeyboardInterrupt)")) - (py-bug-tests-intern 'exceptions-not-highlighted-lp:473525 arg teststring))) - -(defun exceptions-not-highlighted-lp:473525 () - (let ((font-lock-verbose nil)) - (goto-char 39) - (font-lock-fontify-buffer) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-exception-name-face) nil "exceptions-not-highlighted-lp:473525-test failed"))) - -(defun syntaxerror-on-py-execute-region-lp:691542-test (&optional arg) - (interactive "p") - (let ((teststring "# -*- coding: utf-8 -*- -print(\"Poet Friedrich Hölderlin\"")) - (py-bug-tests-intern 'syntaxerror-on-py-execute-region-lp:691542-base arg teststring))) - -(defun syntaxerror-on-py-execute-region-lp:691542-base () - (let ((oldbuf (current-buffer)) - erg kill-buffer-query-functions py-switch-to-python) - (when (buffer-live-p (get-buffer (concat "*" py-which-bufname "*"))) - (when - (processp (get-process py-which-bufname)) - - (set-process-query-on-exit-flag (get-process py-which-bufname) nil)) - (kill-buffer (concat "*" py-which-bufname "*"))) - (py-execute-region (line-beginning-position) (line-end-position)) - (when (interactive-p) (switch-to-buffer (current-buffer))) - (set-buffer (get-buffer (concat "*" py-which-bufname "*"))) - (assert (or (search-forward "Hölderlin" nil t 1) - (search-backward "Hölderlin" nil t 1)) nil "syntaxerror-on-py-execute-region-lp:691542-test failed"))) - -(defun backslashed-continuation-line-indent-lp:742993-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring " -# py-continuation-offset: 2 -self.last_abc_attr = \\ -self.last_xyz_attr = \\ -self.last_abc_other = \\ -self.last_xyz_other = None - -# py-continuation-offset: 4 -self.last_abc_attr = \\ -self.last_xyz_attr = \\ -self.last_abc_other = \\ -self.last_xyz_other = None - -# py-continuation-offset: 6 -self.last_abc_attr = \\ -self.last_xyz_attr = \\ -self.last_abc_other = \\ -self.last_xyz_other = None -")) - (py-bug-tests-intern 'backslashed-continuation-line-indent-lp:742993 arg teststring))) - -(defun backslashed-continuation-line-indent-lp:742993 () - (let ((py-continuation-offset 2)) - (goto-char 54) - (assert (eq 2 (py-compute-indentation)) nil "backslashed-continuation-line-indent-lp:742993-test #1a failed") - (assert (eq (py-compute-indentation) py-continuation-offset) nil "backslashed-continuation-line-indent-lp:742993-test #1b failed") - - (setq py-continuation-offset 4) - (goto-char 180) - (assert (eq 4 (py-compute-indentation)) nil "backslashed-continuation-line-indent-lp:742993-test #2a failed") - (assert (eq (py-compute-indentation) py-continuation-offset) nil "backslashed-continuation-line-indent-lp:742993-test #2b failed") - - (setq py-continuation-offset 6) - (goto-char 306) - (assert (eq 6 (py-compute-indentation)) nil "backslashed-continuation-line-indent-lp:742993-test #3a failed") - (assert (eq (py-compute-indentation) py-continuation-offset) nil "backslashed-continuation-line-indent-lp:742993-test #3b failed") - )) - -(defun py-decorators-face-lp:744335-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "@foo.bar -def baz(): - pass -")) - (py-bug-tests-intern 'py-decorators-face-lp:744335 arg teststring))) - -(defun py-decorators-face-lp:744335 () - (let ((font-lock-verbose nil)) - (goto-char 7) - (font-lock-fontify-buffer) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-decorators-face) nil "py-decorators-face-lp:744335-test failed"))) - -(defun indent-after-return-lp:745208-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "class FOO\(): - if len(sys.argv)==1: - usage\() - sys.exit\() - - def build_extension\(self, ext): - - if ext.name == '_ctypes': - if not self.configure_ctypes\(ext): - return - - try: - build_ext.build_extension\(self, ext) - except \(CCompilerError, DistutilsError) as why: - self.announce\('WARNING: building of extension \"%s\" -failed: %s' % - \(ext.name, sys.exc_info()\[1])) - self.failed.append(ext.name) - return - # Workaround for Mac OS X: The Carbon-based modules cannot be - # reliably imported into a command-line Python - if 'Carbon' in ext.extra_link_args: - self.announce\( - 'WARNING: skipping import check for Carbon-based -\"%s\"' % - ext.name) - return -")) - (py-bug-tests-intern 'indent-after-return-lp:745208 arg teststring))) - -(defun indent-after-return-lp:745208 () - (assert (eq 8 (py-compute-indentation)) nil "indent-after-return-lp:745208-test failed")) - -(defun keep-assignments-column-lp:748198-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "bar = foo(a=1, - b=2, - c=3) -")) - (py-bug-tests-intern 'keep-assignments-column-lp:748198 arg teststring))) - -(defun keep-assignments-column-lp:748198 () - (goto-char 45) - (py-newline-and-indent) - (assert (eq 0 (current-column)) nil "py-vor test failed")) - -(defun indent-triplequoted-to-itself-lp:752252-test (&optional arg) - "With ARG greater 1 keep test buffer open. -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked." - (interactive "p") - (let ((teststring "def foo(): - \"\"\"The real foo thing.\n")) - (py-bug-tests-intern 'indent-triplequoted-to-itself-lp:752252-base arg teststring))) - -(defun indent-triplequoted-to-itself-lp:752252-base () - (sit-for 0.1) - ;; (message "(py-compute-indentation): %s" (py-compute-indentation)) - (assert (eq 4 (py-compute-indentation)) nil "indent-triplequoted-to-itself-lp:752252-test failed")) - -(defun multiline-listings-indent-lp:761946-test (&optional arg) - (interactive "p") - (let ((teststring "def foo(): - do_something_first( - a=1, - b=2, -")) - (py-bug-tests-intern 'multiline-listings-indent-lp:761946-base arg teststring))) - -(defun multiline-listings-indent-lp:761946-base () - (goto-char 49) - (assert (eq 8 (py-compute-indentation)) nil "multiline-listings-indent-lp:761946-test failed")) - -(defun new-page-char-causes-loop-lp:762498-test (&optional arg) - (interactive "p") - (let ((teststring "class Foo: - def baz(self): - - -")) - (py-bug-tests-intern 'new-page-char-causes-loop-lp:762498-base arg teststring))) - -(defun new-page-char-causes-loop-lp:762498-base () - (goto-char 31) - (assert (eq 8 (py-compute-indentation)) "new-page-char-causes-loop-lp:762498-test failed")) - -(defun nested-dicts-indent-lp:763756-test (&optional arg) - (interactive "p") - (let ((teststring "feature_operation_matrix = { - \"character\": { - \"kill\": \"{ctrl-k}\",{ - } - } - } -)) -")) - (py-bug-tests-intern 'nested-dicts-indent-lp:763756-base arg teststring))) - -(defun nested-dicts-indent-lp:763756-base () - (let ((py-indent-honors-multiline-listing nil)) - (goto-char 30) - (assert (eq 4 (py-compute-indentation)) nil "nested-dicts-indent-lp:763756-test failed") - (goto-char 49) - (assert (eq 8 (py-compute-indentation)) nil "nested-dicts-indent-lp:763756-test failed") - (forward-line 1) - (assert (eq 12 (py-compute-indentation)) nil "nested-dicts-indent-lp:763756-test failed"))) - -(defun bad-indent-after-except-lp:771289-test (&optional arg) - (interactive "p") - (let ((teststring "def foo(): - try: - baz() - except ValueError: -")) - (py-bug-tests-intern 'bad-indent-after-except-lp:771289-base arg teststring))) - -(defun bad-indent-after-except-lp:771289-base () - (assert (eq 8 (py-compute-indentation)) nil "bad-indent-after-except-lp:771289-test failed")) - -(defun indent-open-paren-not-last-lp:771291-test (&optional arg) - (interactive "p") - (let ((teststring " - -# Put point after the comma on the last line and hit return. You -# end up in column 8 (i.e. under the 'g' in 'thing') when you -# should end up in column 20 (under the 'w' in 'with_something'). -# Note that this is a different case than previously reported, -# where the open paren was the last thing on the line. When the -# open paren is *not* the last thing on the line, the next line's -# indentation should line up under the first non-whitespace -# character following the open paren. - -def foo(): - thing = call_it(with_something, -")) - (py-bug-tests-intern 'indent-open-paren-not-last-lp:771291-base arg teststring))) - -(defun indent-open-paren-not-last-lp:771291-base () - (assert (eq 20 (py-compute-indentation)) nil "indent-open-paren-not-last-lp:771291-test failed")) - -(defun wrong-indent-after-else-lp:772610-test (&optional arg) - (interactive "p") - (let ((teststring "if True: - pass -else: -")) - (py-bug-tests-intern 'wrong-indent-after-else-lp:772610-base arg teststring))) - -(defun wrong-indent-after-else-lp:772610-base () - (assert (eq 4 (py-compute-indentation)) nil "wrong-indent-after-else-lp:772610-test failed")) - -(defun except-indents-wrong-lp:784432-test (&optional arg) - (interactive "p") - (let ((teststring "try: - block1 -except: - block2")) - (py-bug-tests-intern 'except-indents-wrong-lp:784432-base arg teststring))) - -(defun except-indents-wrong-lp:784432-base () - (goto-char 17) - (assert (eq 0 (py-compute-indentation)) nil "except-indents-wrong-lp:784432-test #1 failed") - (goto-char 25) - (assert (eq 4 (py-compute-indentation)) nil "except-indents-wrong-lp:784432-test #2 failed")) - -(defun indent-explicitly-set-in-multiline-tqs-lp:784225-test (&optional arg) - (interactive "p") - (let ((teststring "def foo(): - with bar('x', \"\"\" - [hello] -" - )) - (py-bug-tests-intern 'indent-explicitly-set-in-multiline-tqs-lp:784225-base arg teststring))) - -(defun indent-explicitly-set-in-multiline-tqs-lp:784225-base () - (assert (eq 8 (py-compute-indentation)) nil "indent-explicitly-set-in-multiline-tqs-lp:784225-test failed")) - -(defun unbalanced-parentheses-lp:784645-test (&optional arg) - (interactive "p") - (let ((teststring "def foo(): - something() - - another( -")) - (py-bug-tests-intern 'unbalanced-parentheses-lp:784645-base arg teststring))) - -(defun unbalanced-parentheses-lp:784645-base () - (goto-char 28) - (assert (eq 4 (py-compute-indentation)) nil "unbalanced-parentheses-lp:784645-test failed")) - -(defun explicitly-indent-in-list-lp:785018-test (&optional arg) - (interactive "p") - (let ((teststring "def foo(): - with bar('x', - [hello] -" - )) - (py-bug-tests-intern 'explicitly-indent-in-list-lp:785018-base arg teststring))) - -(defun explicitly-indent-in-list-lp:785018-base () - (assert (eq 8 (py-compute-indentation)) nil "explicitly-dedented-in-list-lp:784225-test failed")) - -(defun explicit-backslashed-continuation-line-indent-lp:785091-test (&optional arg) - (interactive "p") - (let ((teststring " a_verry_loonng_variable_nammmee = \\ - val \\ -")) - (py-bug-tests-intern 'explicit-backslashed-continuation-line-indent-lp:785091-base arg teststring))) - -(defun explicit-backslashed-continuation-line-indent-lp:785091-base () - (assert (eq 40 (py-compute-indentation)) nil "explicit-backslashed-continuation-line-indent-lp:785091 test failed")) - -(defun indentation-error-lp:795773-test (&optional arg) - (interactive "p") - (let ((teststring "class MailTransportAgentAliases: - \"\"\"Utility for generating all the aliases of a mailing -list.\"\"\" - - implements(IMailTransportAgentAliases) - - def aliases(self, mlist): - \"\"\"See `IMailTransportAgentAliases`.\"\"\" - # Always return - yield mlist.posting_address - for destination in SUBDESTINATIONS: - yield '{0}-{1}@{2}'.format(mlist.list_name, - destination, - mlist.host_name) -")) - (py-bug-tests-intern 'indentation-error-lp:795773-base arg teststring))) - -(defun indentation-error-lp:795773-base () - (goto-char 385) - (assert (eq 39 (py-compute-indentation)) nil "indentation-error-lp:795773-test failed")) - -(defun class-highlighted-as-keywords-lp:798287-test (&optional arg) - (interactive "p") - (let ((teststring "class X: - pass - -# Everything is highlighted as a keyword. -")) - (py-bug-tests-intern 'class-highlighted-as-keywords-lp:798287-base arg teststring))) - -(defun class-highlighted-as-keywords-lp:798287-base () - (let ((font-lock-verbose nil)) - (goto-char 7) - (font-lock-fontify-buffer) - ;; (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-class-name-face) nil "class-highlighted-as-keywords-lp:798287-test failed"))) - -(defun indent-function-arglist-lp:800088-test (&optional arg) - (interactive "p") - (let ((teststring "def long_function_name( - var_one, var_two, var_three, - var_four): - print(var_one) -")) - (py-bug-tests-intern 'indent-function-arglist-lp:800088-base arg teststring))) - -(defun indent-function-arglist-lp:800088-base () - (goto-char 25) - (let ((py-indent-offset 4)) - (assert (eq 8 (py-compute-indentation)) nil "indent-function-arglist-lp:800088-test failed"))) - -(defun python-mode-hangs-lp:801780-test (&optional arg) - (interactive "p") - (let ((teststring "@jit.unroll_safe -def pushrevvalues(self, n, values_w): # n should be len(values_w) - make_sure_not_resized(values_w) - while True: - n -= 1 - if n < 0: - break - self.pushvalue(values_w[n]) -")) - (py-bug-tests-intern 'python-mode-hangs-lp:801780-base arg teststring))) - -(defun python-mode-hangs-lp:801780-base () - (assert (eq 18 (py-beginning-of-def-or-class)) nil "python-mode-hangs-lp:801780-test failed")) - -(defun stops-backslashed-line-lp:802504-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if bar == 1 or bar == 2 or bar == 3 or bar == 4 or bar == 5 or bar == 6 or bar == 7 \\ - or bar == 8 or bar == 9 or bar == 10 or bar == 11 or bar == 12 or bar == 13 \\ - or bar == 14 or bar == 15 or bar == 16 or bar == 17 or bar == 18: -"))) - (py-bug-tests-intern 'stops-backslashed-line-lp:802504-base arg teststring))) - -(defun stops-backslashed-line-lp:802504-base () - (goto-char 49) - (assert (eq 282 (py-end-of-statement)) nil "stops-backslashed-line-lp:802504-test failed")) - -(defun stops-backslashed-line-lp:802504-test2 (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if x>1 and x<100 and y>1 and y<200: - if bar == 1 or bar == 2 or bar == 3 or bar == 4 or bar == 5 or bar == 6 or bar == 7 \\ - or bar == 8 or bar == 9 or bar == 10 or bar == 11 or bar == 12 or bar == 13 or \\ -"))) - (py-bug-tests-intern 'stops-backslashed-line2-lp:802504-base arg teststring))) - -(defun stops-backslashed-line2-lp:802504-base () - (assert (eq 87 (py-beginning-of-statement)) nil "stops-backslashed-line-lp:802504-test failed")) - -(defun python-mode-slow-lp:803275-test (&optional arg) - (interactive "p") - (let ((teststring "# commands.py - command processing for mercurial -# -# Copyright 2005-2007 Matt Mackall -# -# This software may be used and distributed according to the terms of the -# GNU General Public License version 2 or any later version. - -from node import hex, bin, nullid, nullrev, short -from lock import release -from i18n import _, gettext -import os, re, difflib, time, tempfile, errno -import hg, scmutil, util, revlog, extensions, copies, error, bookmarks -import patch, help, url, encoding, templatekw, discovery -import archival, changegroup, cmdutil, hbisect -import sshserver, hgweb, hgweb.server, commandserver -import merge as mergemod -import minirst, revset, fileset -import dagparser, context, simplemerge -import random, setdiscovery, treediscovery, dagutil - -table = {} - -command = cmdutil.command(table) - -# common command options - -globalopts = [ - ('R', 'repository', '', - _('repository root directory or name of overlay bundle file'), - _('REPO')), - ('', 'cwd', '', - _('change working directory'), _('DIR')), - ('y', 'noninteractive', None, - _('do not prompt, assume \\'yes\\' for any required answers')), - ('q', 'quiet', None, _('suppress output')), - ('v', 'verbose', None, _('enable additional output')), - ('', 'config', [], - _('set/override config option (use \\'section.name=value\\')'), - _('CONFIG')), - ('', 'debug', None, _('enable debugging output')), - ('', 'debugger', None, _('start debugger')), - ('', 'encoding', encoding.encoding, _('set the charset encoding'), - _('ENCODE')), - ('', 'encodingmode', encoding.encodingmode, - _('set the charset encoding mode'), _('MODE')), - ('', 'traceback', None, _('always print a traceback on exception')), - ('', 'time', None, _('time how long the command takes')), - ('', 'profile', None, _('print command execution profile')), - ('', 'version', None, _('output version information and exit')), - ('h', 'help', None, _('display help and exit')), -] - -dryrunopts = [('n', 'dry-run', None, - _('do not perform actions, just print output'))] - -remoteopts = [ - ('e', 'ssh', '', - _('specify ssh command to use'), _('CMD')), - ('', 'remotecmd', '', - _('specify hg command to run on the remote side'), _('CMD')), - ('', 'insecure', None, - _('do not verify server certificate (ignoring web.cacerts config)')), -] - -walkopts = [ - ('I', 'include', [], - _('include names matching the given patterns'), _('PATTERN')), - ('X', 'exclude', [], - _('exclude names matching the given patterns'), _('PATTERN')), -] - -commitopts = [ - ('m', 'message', '', - _('use text as commit message'), _('TEXT')), - ('l', 'logfile', '', - _('read commit message from file'), _('FILE')), -] - -commitopts2 = [ - ('d', 'date', '', - _('record the specified date as commit date'), _('DATE')), - ('u', 'user', '', - _('record the specified user as committer'), _('USER')), -] - -templateopts = [ - ('', 'style', '', - _('display using template map file'), _('STYLE')), - ('', 'template', '', - _('display with template'), _('TEMPLATE')), -] - -logopts = [ - ('p', 'patch', None, _('show patch')), - ('g', 'git', None, _('use git extended diff format')), - ('l', 'limit', '', - _('limit number of changes displayed'), _('NUM')), - ('M', 'no-merges', None, _('do not show merges')), - ('', 'stat', None, _('output diffstat-style summary of changes')), -] + templateopts - -diffopts = [ - ('a', 'text', None, _('treat all files as text')), - ('g', 'git', None, _('use git extended diff format')), - ('', 'nodates', None, _('omit dates from diff headers')) -] - -diffopts2 = [ - ('p', 'show-function', None, _('show which function each change is in')), - ('', 'reverse', None, _('produce a diff that undoes the changes')), - ('w', 'ignore-all-space', None, - _('ignore white space when comparing lines')), - ('b', 'ignore-space-change', None, - _('ignore changes in the amount of white space')), - ('B', 'ignore-blank-lines', None, - _('ignore changes whose lines are all blank')), - ('U', 'unified', '', - _('number of lines of context to show'), _('NUM')), - ('', 'stat', None, _('output diffstat-style summary of changes')), -] - -similarityopts = [ - ('s', 'similarity', '', - _('guess renamed files by similarity (0<=s<=100)'), _('SIMILARITY')) -] - -subrepoopts = [ - ('S', 'subrepos', None, - _('recurse into subrepositories')) -] - -# Commands start here, listed alphabetically - -@command('^add', - walkopts + subrepoopts + dryrunopts, - _('[OPTION]... [FILE]...')) -def add(ui, repo, \*pats, \*\*opts): - \"\"\"add the specified files on the next commit - - Schedule files to be version controlled and added to the - repository. - - The files will be added to the repository at the next commit. To - undo an add before that, see :hg:`forget`. - - If no names are given, add all files to the repository. - - .. container:: verbose - - An example showing how new (unknown) files are added - automatically by :hg:`add`:: - - \$ ls - foo.c - \$ hg status - ? foo.c - \$ hg add - adding foo.c - \$ hg status - A foo.c - - Returns 0 if all files are successfully added. - \"\"\" - - m = scmutil.match(repo[None], pats, opts) - rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'), - opts.get('subrepos'), prefix=\"\") - return rejected and 1 or 0 -")) - (py-bug-tests-intern 'python-mode-slow-lp:803275-base arg teststring))) - -(defun python-mode-slow-lp:803275-base () - (goto-char 1) - (sit-for 0.1) - (assert (eq 5430 (py-end-of-def-or-class)) nil "python-mode-slow-lp:803275-test failed")) - -(defun master-file-not-honored-lp:794850-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -*- coding: utf-8 -*- - -# Local Variables: -# py-master-file: \"/usr/tmp/my-master.py\" -# End: - -print(\"master-file is executed\") -"))) - (py-bug-tests-intern 'master-file-not-honored-lp:794850-base arg teststring))) - -(defun master-file-not-honored-lp:794850-base () - (let ((oldbuf (current-buffer))) - (save-excursion - (set-buffer (get-buffer-create "test-master.py")) - (erase-buffer) - (insert "#! /usr/bin/env python - # -*- coding: utf-8 -*- - -print(\"Hello, I'm your master!\") -") - (write-file "/var/tmp/my-master.py")) - (set-buffer oldbuf) - (unwind-protect - (py-execute-buffer) - (when (file-readable-p "/var/tmp/my-master.py") (delete-file "/var/tmp/my-master.py"))))) - -(defun py-variable-name-face-lp:798538-test (&optional arg) - (interactive "p") - (let ((teststring "class Foo(object): - def summat(cls, x): - ..... - summat = classmethod(summat) -")) - (py-bug-tests-intern 'py-variable-name-face-lp:798538-base arg teststring))) - -(defun py-variable-name-face-lp:798538-base () - (let ((font-lock-verbose nil)) - (font-lock-mode 1) - (font-lock-fontify-buffer) - (goto-char 64) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "py-variable-name-face-lp:798538-test failed "))) - -(defun colon-causes-error-lp:818665-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -*- coding: utf-8 -*- - -print(\"Hello!\") -"))) - (py-bug-tests-intern 'colon-causes-error-lp:818665-base arg teststring))) - -(defun colon-causes-error-lp:818665-base () - (insert ":") - (forward-char -1) - (assert (looking-at ":") nil "colon-causes-error-lp:818665-test failed")) - -(defun if-indentation-lp:818720-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -*- coding: utf-8 -*- - -class X(): - def __init__( self ): - self.lookup = {} - - def y( self, p ): - p = p.foo() - if p in self.lookup: - return self.lookup[ foo ] - else: - return None -"))) - (py-bug-tests-intern 'if-indentation-lp:818720-base arg teststring))) - -(defun if-indentation-lp:818720-base () - (goto-char 196) - (assert (eq 12 (py-compute-indentation)) nil "if-indentation-lp:818720-test failed")) - -(defun closing-parenthesis-indent-lp:821820-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - bar.append( - ht( - T.a('Sorted Foo', href='#Blub', ), - ' -- foo bar baz--', - self.Tasdf( afsd ), - self.Tasdf( asdf ), - ) - ) -"))) - (py-bug-tests-intern 'closing-parenthesis-indent-lp:821820-base arg teststring))) - -(defun closing-parenthesis-indent-lp:821820-base () - (let ((py-closing-list-dedents-bos t)) - (forward-line -1) - (assert (eq 4 (py-compute-indentation)) nil "closing-parenthesis-indent-lp:821820-test failed"))) - -(defun py-indent-line-lp:822532-test (&optional arg) - (interactive "p") - (let ((teststring " -if x > 0: - for i in range(100): - print(i) - else: - print(\"All done\") -elif x < 0: - print(\"x is negative\") -")) - (py-bug-tests-intern 'py-indent-line-lp:822532-base arg teststring))) - -(defun py-indent-line-lp:822532-base () - (goto-char 54) - (assert (eq 4 (py-compute-indentation)) nil "py-indent-line-lp:822532-test failed")) - -(defun indent-honor-arglist-whitespaces-lp:822540-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -abc( ghi, - jkl -"))) - (py-bug-tests-intern 'indent-honor-arglist-whitespaces-lp:822540-base arg teststring))) - -(defun indent-honor-arglist-whitespaces-lp:822540-base () - (forward-line -1) - (assert (eq 5 (py-compute-indentation)) nil "indent-honor-arglist-whitespaces-lp:822540-test failed")) - -(defun comments-indent-honor-setting-lp:824427-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- - -if __name__ == '__main__': - from foo import \* - foo([\"baz\"]) # list of foo's development directories - -# limitations: -# -# Some comments on limitations: -# asdf -"))) - (py-bug-tests-intern 'comments-indent-honor-setting-lp:824427-base arg teststring))) - -(defun comments-indent-honor-setting-lp:824427-base () - (goto-char 206) - (assert (eq 0 (py-compute-indentation)) nil "comments-indent-honor-setting-lp:824427-test failed")) - -(defun infinite-loop-after-tqs-lp:826044-test (&optional arg) - (interactive "p") - (let ((teststring "\"\"\" -hey -\"\"\" -")) - (py-bug-tests-intern 'infinite-loop-after-tqs-lp:826044-base arg teststring))) - -(defun infinite-loop-after-tqs-lp:826044-base () - (assert (eq 0 (py-newline-and-indent)) nil "infinite-loop-after-tqs-lp:826044-test failed")) - -(defun closing-list-lp:826144-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - bar.append( - ht( - T.a('Sorted Foo', href='#Blub', ), - ' -- foo bar baz--', - self.Tasdf( afsd ), - self.Tasdf( asdf ), - ) - ) -"))) - (py-bug-tests-intern 'closing-list-lp:826144-base arg teststring))) - -(defun closing-list-lp:826144-base () - (let (py-closing-list-dedents-bos) - (goto-char (point-min)) - (re-search-forward ") *$" nil t 1) - (assert (eq 12 (py-compute-indentation)) nil "closing-list-lp:826144-test #1 failed") - (re-search-forward ") *$" nil t 1) - (assert (eq 8 (py-compute-indentation)) nil "closing-list-lp:826144-test #2 failed") - (setq py-closing-list-dedents-bos t) - (goto-char (point-min)) - (re-search-forward ") *$" nil t 1) - (assert (eq 8 (py-compute-indentation)) nil "closing-list-lp:826144-test #1 failed") - (re-search-forward ") *$" nil t 1) - (assert (eq 4 (py-compute-indentation)) nil "closing-list-lp:826144-test #2 failed"))) - -(defun py-electric-comment-add-space-lp:828398-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'py-electric-comment-add-space-lp:828398-base arg teststring))) - -(defun py-electric-comment-add-space-lp:828398-base () - (let ((py-electric-comment-add-space-p nil)) - (py-electric-comment 1) - (assert (looking-back "#") nil "py-electric-comment-add-space-lp:828398-test failed"))) - -(defun py-electric-comment-add-space-t-lp:828398-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'py-electric-comment-add-space-t-lp:828398-base arg teststring))) - -(defun py-electric-comment-add-space-t-lp:828398-base () - (let ((py-electric-comment-add-space-p t)) - (py-electric-comment 1) - (assert (looking-back " ") nil "py-electric-comment-add-space-lp:828398-test failed"))) - -(defun execute-indented-code-lp:828314-test (&optional arg) - (interactive "p") - (let ((teststring "if __name__ == \"__main__\": - print(\"hello, I'm the execute-indented-code-lp:828314-test\") -")) - (py-bug-tests-intern 'execute-indented-code-lp:828314-base 2 teststring))) - -(defun execute-indented-code-lp:828314-base () - (let ((debug-on-error t)) - (goto-char 28) - (assert (py-execute-line) nil "execute-indented-code-lp:828314-test failed"))) - -(defun wrong-indentation-of-function-arguments-lp:840891-test (&optional arg) - (interactive "p") - (let ((teststring "abdc = foo(a=1, - b=2, - c=3) -")) - (py-bug-tests-intern 'wrong-indentation-of-function-arguments-lp:840891-base arg teststring))) - -(defun wrong-indentation-of-function-arguments-lp:840891-base () - (goto-char 38) - (assert (eq 11 (py-compute-indentation)) nil "wrong-indentation-of-function-arguments-lp:840891-test failed")) - -(defun py-hungry-delete-backwards-needs-cc-lp:850595-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'py-hungry-delete-backwards-needs-cc-lp:850595-base arg teststring))) - -(defun py-hungry-delete-backwards-needs-cc-lp:850595-base () - (assert (functionp 'c-hungry-delete-backwards) nil "py-hungry-delete-backwards-needs-cc-lp:850595-test failed")) - -(defun wrong-guess-for-py-indent-offset-lp:852052-test (&optional arg) - (interactive "p") - (let ((teststring "# The indent offset shouldn't be guessed from backslash -# continuations. I have - -from long.pkg.name import long, list, of, \\ - class_and_function, and, function, names - -# (note there are five spaces before \"class\", to match with the -# start of the pkg name.) - -# Since the indent of backlash-continued lines has no meaning for -# code, it should not be considered. -")) - (py-bug-tests-intern 'wrong-guess-for-py-indent-offset-lp:852052-base arg teststring))) - -(defun wrong-guess-for-py-indent-offset-lp:852052-base () - (goto-char 126) - (assert (eq 4 (py-guess-indent-offset)) nil "wrong-guess-for-py-indent-offset-lp:852052-test failed")) - -(defun indent-match-import-pkg-lp:852500-test (&optional arg) - (interactive "p") - (let (py-smart-indentation - (teststring "from long.pkg.name import long, list, of, \\ - class_and_function, names - -# (note there are five spaces before \"class\", to match with the -# start of the pkg name.) -")) - (py-bug-tests-intern 'indent-match-import-pkg-lp:852500-base arg teststring))) - -(defun indent-match-import-pkg-lp:852500-base () - (goto-char 45) - (assert (eq 5 (py-compute-indentation)) nil "indent-match-import-pkg-lp:852500-test failed")) - -(defun py-shift-line-when-no-region-lp:855565-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - print"))) - (py-bug-tests-intern 'py-shift-line-when-no-region-lp:855565-base arg teststring))) - -(defun py-shift-line-when-no-region-lp:855565-base () - (goto-char 58) - (assert (eq 8 (py-shift-right 1)) nil "py-shift-line-when-no-region-lp:855565-test failed")) - -(defun highlighting-in-multiline-function-call-arguments-lp:856833-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- - -newObj = SomeClassWithManyManyArgs (param0 = val0, - param1 = val1, - param2 = val2, param3 = val3) -"))) - (py-bug-tests-intern 'highlighting-in-multiline-function-call-arguments-lp:856833-base arg teststring))) - -(defun highlighting-in-multiline-function-call-arguments-lp:856833-base () - (font-lock-fontify-buffer) - (goto-char 80) - ;; (goto-char 106) - (assert (eq (get-char-property (point) 'face) nil) nil "highlighting-in-multiline-function-call-arguments-lp:856833 test failed ")) - -(defun py-shift-preserve-active-region-lp:857837-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- - -print('hello') -print('world') -"))) - (py-bug-tests-intern 'py-shift-preserve-active-region-lp:857837-base arg teststring))) - -(defun py-shift-preserve-active-region-lp:857837-base () - (goto-char 49) - (assert nil "py-shift-preserve-active-region-lp:857837-test failed")) - -(defun variable-highlighted-on-LHS-of-eq-lp:858304-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if someVar == 5: - doSomething() -"))) - (py-bug-tests-intern 'variable-highlighted-on-LHS-of-eq-lp:858304-base arg teststring))) - -(defun variable-highlighted-on-LHS-of-eq-lp:858304-base () - (goto-char 55) - (assert (eq (get-char-property (point) 'face) nil) nil "variable-highlighted-on-LHS-of-eq-lp:858304-test failed")) - -(defun indent-guessing-lp:858040-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -some_longer_call(arguments, - arguments) -"))) - (py-bug-tests-intern 'indent-guessing-lp:858040-base arg teststring))) - -(defun indent-guessing-lp:858040-base () - (goto-char 40) - (assert (eq 4 py-indent-offset) nil "indent-guessing-lp:858040-test failed")) - -(defun indentation-of-from-import-continuation-lines-lp:858041-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -from nicos import session -from nicos import status, loggers -from nicos.utils import DeviceMeta, Param, Override, Value, getVersions, \\ -usermethod, tupleof, floatrange, any, none_or - -"))) - (py-bug-tests-intern 'indentation-of-from-import-continuation-lines-lp:858041-base arg teststring))) - -(defun indentation-of-from-import-continuation-lines-lp:858041-base () - (goto-char 184) - (assert (eq 5 (py-compute-indentation)) nil "indentation-of-from-import-continuation-lines-lp:858041-test failed")) - -(defun indentation-after-one-line-suites-lp:858044-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: return - -"))) - (py-bug-tests-intern 'indentation-after-one-line-suites-lp:858044-base arg teststring))) - -(defun indentation-after-one-line-suites-lp:858044-base () - (goto-char 64) - (assert (eq 0 (py-compute-indentation)) nil "indentation-after-one-line-suites-lp:858044-test failed")) - -(defun py-compute-indentation-wrong-at-eol-lp:858043-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if maxdepth == 0 or depth < maxdepth: - item += build_toc(sectionnode, depth+1) -"))) - (py-bug-tests-intern 'py-compute-indentation-wrong-at-eol-lp:858043-base arg teststring))) - -(defun py-compute-indentation-wrong-at-eol-lp:858043-base () - (setq py-smart-indentation nil) - (setq py-indent-offset 4) - (goto-char 132) - (assert (eq 4 (py-compute-indentation)) nil "py-compute-indentation-wrong-at-eol-lp:858043-test failed")) - -(defun comment-indentation-level-lp:869854-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - def bar(): - x = 1 -# asdf - -"))) - (py-bug-tests-intern 'comment-indentation-level-lp:869854-base arg teststring))) - -(defun comment-indentation-level-lp:869854-base () - (goto-char 104) - (assert (eq 0 (py-compute-indentation)) nil "comment-indentation-level-lp:869854-test failed")) - -(defun indentation-wrong-after-multi-line-parameter-list-lp:871698-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(bar, baz): - # indenation as it should be - -def foo(bar, - baz): -# this is the next indentation line (none) - -class Foo: - def bar(biz, - baz): - # indentation here after newline - -"))) - (py-bug-tests-intern 'indentation-wrong-after-multi-line-parameter-list-lp:871698-base arg teststring))) - -(defun indentation-wrong-after-multi-line-parameter-list-lp:871698-base () - (goto-char 68) - (assert (eq 4 (py-compute-indentation)) nil "indentation-wrong-after-multi-line-parameter-list-lp:871698-test #1 failed") - (goto-char 115) - (assert (eq 8 (py-compute-indentation)) nil "indentation-wrong-after-multi-line-parameter-list-lp:871698-test #2 failed") - (goto-char 201) - (assert (eq 12 (py-compute-indentation)) nil "indentation-wrong-after-multi-line-parameter-list-lp:871698-test #3 failed") - (goto-char 223) - (assert (eq 8 (py-compute-indentation)) nil "indentation-wrong-after-multi-line-parameter-list-lp:871698-test #4 failed") - ) - -(defun no-indent-after-continue-lp:872676-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - for i in range(10): - if i == 7: - continue - if i == 9 - -"))) - (py-bug-tests-intern 'no-indent-after-continue-lp:872676-base arg teststring))) - -(defun no-indent-after-continue-lp:872676-base () - (goto-char 141) - (assert (eq 8 (py-compute-indentation)) nil "no-indent-after-continue-lp:872676-test failed")) - -(defun indent-after-inline-comment-lp:873372-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -foo = True # the next line is indented incorrectly - # to here -"))) - (py-bug-tests-intern 'indent-after-inline-comment-lp:873372.txt-base arg teststring))) - -(defun indent-after-inline-comment-lp:873372.txt-base () - (let ((py-indent-honors-inline-comment t)) - (goto-char 111) - (assert (eq 11 (py-compute-indentation)) nil "indent-after-inline-comment-lp:873372-test #1 failed")) - (let (py-indent-honors-inline-comment) - (goto-char 111) - (assert (eq 0 (py-compute-indentation)) nil "indent-after-inline-comment-lp:873372-test #2 failed"))) - -(defun else-clause-indentation-lp:874470-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - for i in range(10): - if i == 7: - continue - do_something(i) - else -"))) - (py-bug-tests-intern 'else-clause-indentation-lp:874470-base arg teststring))) - -(defun else-clause-indentation-lp:874470-base () - (goto-char 156) - (assert (eq 4 (py-compute-indentation)) nil "else-clause-indentation-lp:874470-test failed")) - -(defun incorrect-use-of-region-in-py-shift-left-lp:875951-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - for i in range(10): - for j in range(10): - print(i, j) - print('next') - -"))) - (py-bug-tests-intern 'incorrect-use-of-region-in-py-shift-left-lp:875951-base arg teststring))) - -(defun incorrect-use-of-region-in-py-shift-left-lp:875951-base () - (push-mark 84) - (goto-char 135) - (py-shift-left 1 84 135) - (assert (eq 8 (current-indentation)) nil "incorrect-use-of-region-in-py-shift-left-lp:875951-test failed")) - -(defun py-complete-lp:858621-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -pri -"))) - (py-bug-tests-intern 'py-complete-lp:858621-base 2 teststring))) - -(defun py-complete-lp:858621-base () - (goto-char 52) - (ignore-errors (py-shell-complete)) - (sit-for 0.1) - (assert (eq 54 (point)) nil "py-complete-lp:858621-test failed")) - -(defun indentation-after-line-with-keyword-lp:883073-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -with_foo = False - # indents here -"))) - (py-bug-tests-intern 'indentation-after-line-with-keyword-lp:883073-base arg teststring))) - -(defun indentation-after-line-with-keyword-lp:883073-base () - (goto-char 66) - (assert (eq 0 (py-compute-indentation)) nil "indentation-after-line-with-keyword-lp:883073-test failed")) - -(defun indent-after-multiple-except-statements-lp:883815-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - try: - x = 1 - except SystemError: - f = 1 -except KeyError: - p = 1 -"))) - (py-bug-tests-intern 'indent-after-multiple-except-statements-lp:883815-base arg teststring))) - -(defun indent-after-multiple-except-statements-lp:883815-base () - (goto-char 121) - (assert (eq 4 (py-compute-indentation)) nil "indent-after-multiple-except-statements-lp:883815-test failed")) - -(defun wrongly-highlighted-as-keywords-lp:885144-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -date_range = 4 -date_range_max = 3 -latest_sum = 5 -"))) - (py-bug-tests-intern 'wrongly-highlighted-as-keywords-lp:885144-base arg teststring))) - -(defun wrongly-highlighted-as-keywords-lp:885144-base () - (font-lock-fontify-buffer) - (goto-char 55) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "wrongly-highlighted-as-keywords-lp:885144-test failed")) - -(defun glitch-when-indenting-lists-lp:886473-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def foo(bar, - baz): - pass -"))) - (py-bug-tests-intern 'glitch-when-indenting-lists-lp:886473-base arg teststring))) - -(defun glitch-when-indenting-lists-lp:886473-base () - (goto-char 61) - (assert (eq 8 (py-compute-indentation)) nil "glitch-when-indenting-lists-lp:886473-test failed")) - -(defun keywords-in-identifiers-highlighted-incorrectly-lp:888338-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def possibly_break(): - pass -"))) - (py-bug-tests-intern 'keywords-in-identifiers-highlighted-incorrectly-lp:888338-base arg teststring))) - -(defun keywords-in-identifiers-highlighted-incorrectly-lp:888338-base () - (font-lock-fontify-buffer) - (sit-for 0.1) - (goto-char 55) - (assert (eq (get-char-property (point) 'face) 'font-lock-function-name-face) nil "keywords-in-identifiers-highlighted-incorrectly-lp:888338-test failed")) - -(defun indentation-keyword-lp:885143-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -import sys -"))) - (py-bug-tests-intern 'indentation-keyword-lp:885143-base arg teststring))) - -(defun indentation-keyword-lp:885143-base () - (goto-char 48) - (assert (eq 0 (py-compute-indentation)) nil "indentation-keyword-lp:885143-test failed")) - -(defun py-shell-complete-lp:328836-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -"))) - (py-bug-tests-intern 'py-shell-complete-lp:328836-base 2 teststring))) - -(defun py-shell-complete-lp:328836-base () - (python-dedicated) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (assert (looking-back "print") nil "py-shell-complete-lp:328836-test failed")) - -(defun indentation-bug-inside-docstrings-lp:899455-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def foo(): - \"\"\"This is my docstring. - - There are many others like it, but this one is mine. My docstring is my - best friend. It is my life. I must master it as I must master my life. - Without me, my docstring is useless. Without my docstring, I am useless. - I must write my docstring true. I must write clearer than my enemy, who - is trying to confuse me. I must enlighten him before he enlightens me. I - will. Before Guido I swear this creed: my docstring and myself are - defenders of my codebase, we are the masters of our enemy, we are the - saviors of my life. So be it, until there is no enemy, but peace. Amen. - - foo: str or None - If None then baz. - - \"\"\" - -"))) - (py-bug-tests-intern 'indentation-bug-inside-docstrings-lp:899455-base arg teststring))) - -(defun indentation-bug-inside-docstrings-lp:899455-base () - (goto-char 742) - (sit-for 0.2) - (assert (eq 8 (py-compute-indentation)) nil "indentation-bug-inside-docstrings-lp:899455-test failed")) - -(defun another-indentation-bug-inside-docstrings-lp:900684-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def is_x_day(date): - \"\"\"Return True if given date is the X-day. - - \"\"\" -"))) - (py-bug-tests-intern 'another-indentation-bug-inside-docstrings-lp:900684-base arg teststring))) - -(defun another-indentation-bug-inside-docstrings-lp:900684-base () - (goto-char 116) - (sit-for 0.1) - (assert (eq 4 (py-compute-indentation)) nil "another-indentation-bug-inside-docstrings-lp:900684-test failed")) - -(defun indent-offset-not-guessed-when-loading-lp:902890-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -#! /usr/bin/python -# -*- coding: utf-8 -*- -def main(): - if len(sys.argv)==1: - usage() - sys.exit() -"))) - (py-bug-tests-intern 'indent-offset-not-guessed-when-loading-lp:902890-base arg teststring))) - -(defun indent-offset-not-guessed-when-loading-lp:902890-base () - "This doesn't check precisely the feature requested. " - (assert (eq 2 (py-guess-indent-offset)) nil "indent-offset-not-guessed-when-loading-lp:902890-test failed")) - -(defun from-__future__-import-absolute_import-mishighlighted-lp:907084-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -from __future__ import absolute_import -"))) - (py-bug-tests-intern 'from-__future__-import-absolute_import-mishighlighted-lp:907084-base arg teststring))) - -(defun from-__future__-import-absolute_import-mishighlighted-lp:907084-base () - (font-lock-fontify-buffer) - (goto-char 82) - (assert (not (eq (get-char-property (point) 'face) 'font-lock-keyword-face)) nil "from-__future__-import-absolute_import-mishighlighted-lp:907084-test failed")) - -(defun automatic-indentation-is-broken-lp:889643-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -"))) - (py-bug-tests-intern 'automatic-indentation-is-broken-lp:889643-base arg teststring))) - -(defun automatic-indentation-is-broken-lp:889643-base () - ;; (if (string-match "components" (find-lisp-object-file-name 'python-mode 'python-mode)) - ;; (assert (eq (key-binding (kbd "RET")) 'py-newline-and-indent) nil "automatic-indentation-is-broken-lp:889643-test failed") - (assert (eq (key-binding (kbd "RET")) 'py-newline-and-indent) nil "automatic-indentation-is-broken-lp:889643-test failed") - ) - -(defun chars-uU-preceding-triple-quoted-get-string-face-lp:909517-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -u\"hi\" and u\"\"\"d\"\"\" -"))) - (py-bug-tests-intern 'chars-uU-preceding-triple-quoted-get-string-face-lp:909517-base arg teststring))) - -(defun chars-uU-preceding-triple-quoted-get-string-face-lp:909517-base () - (goto-char 58) - (assert (eq nil (get-char-property (point) 'face)) nil "chars-uU-preceding-triple-quoted-get-string-face-lp:909517-test failed")) - -(defun wrong-type-argument-lp:901541-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -# source: argparse.py -# Author: Steven J. Bethard . - -\"\"\"Command-line parsing library - -This module is an optparse-inspired command-line parsing library that: - - - handles both optional and positional arguments - - produces highly informative usage messages - - supports parsers that dispatch to sub-parsers -\"\"\" -"))) - (py-bug-tests-intern 'wrong-type-argument-lp:901541-base arg teststring))) - -(defun wrong-type-argument-lp:901541-base () - (goto-char 385) - (sit-for 0.1) - ;; (message "%s" "wrong-type-argument-lp:901541-test") - ;; (message "(py-compute-indentation): should 4: %s" (py-compute-indentation)) - (assert (eq 4 (py-compute-indentation)) nil "wrong-type-argument-lp:901541-test failed")) - -(defun py-pychecker-run-missing-lp:910783-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -"))) - (py-bug-tests-intern 'py-pychecker-run-missing-lp:910783-base arg teststring))) - -(defun py-pychecker-run-missing-lp:910783-base () - (assert (commandp 'py-pychecker-run) nil "py-pychecker-run-missing-lp:910783-test failed")) - -(defun py-forward-into-nomenclature-lp:916818-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def doSomething(blah) -print(\"\"\"Es müsste \"müßte\" heißen.\"\"\") -"))) - (py-bug-tests-intern 'py-forward-into-nomenclature-lp:916818-base arg teststring))) - -(defun py-forward-into-nomenclature-lp:916818-base () - (goto-char 48) - (assert (eq 51 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-lp:916818-test #1 failed") - (assert (eq 54 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-lp:916818-test #2 failed") - (assert (eq 63 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-lp:916818-test #3 failed") - (assert (eq 68 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-lp:916818-test #4 failed") - (goto-char 88) - (assert (eq 95 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-lp:916818-test #5 failed")) - -(defun tab-completion-in-Ipython-buffers-lp:916869-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -"))) - (py-bug-tests-intern 'tab-completion-in-Ipython-buffers-lp:916869-base arg teststring))) - -(defun tab-completion-in-Ipython-buffers-lp:916869-base () - (ipython-dedicated) - (switch-to-buffer (current-buffer)) - (goto-char (point-max)) - (sit-for 0.1) - (insert "pri") - (ipython-complete) - (sit-for 0.1) - (assert (looking-back "print") nil "tab-completion-in-Ipython-buffers-lp:916869-test failed")) - -(defun py-forward-into-nomenclature-jumps-over-CamelCased-words-lp:919540-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def SomeFunction(arg): - pass -"))) - (py-bug-tests-intern 'py-forward-into-nomenclature-jumps-over-CamelCased-words-lp:919540-base arg teststring))) - -(defun py-forward-into-nomenclature-jumps-over-CamelCased-words-lp:919540-base () - (goto-char 52) - (assert (eq 56 (py-forward-into-nomenclature)) nil "py-forward-into-nomenclature-jumps-over-CamelCased-words-lp:919540-test failed")) - -(defun py-backward-into-nomenclature-caps-names-lp:919541-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -return SOME_Constant + blah -"))) - (py-bug-tests-intern 'py-backward-into-nomenclature-caps-names-lp:919541-base arg teststring))) - -(defun py-backward-into-nomenclature-caps-names-lp:919541-base () - (goto-char 64) - (assert (eq 60 (py-backward-into-nomenclature)) nil "py-backward-into-nomenclature-caps-names-lp:919541-test failed")) - -(defun py-ipython-complete-lp:927136-test (&optional arg) - (interactive "p") - ;; (py-shell nil nil "ipython" 'noswitch) - (let ((teststring (concat py-ipython-test-shebang " -# -*- coding: utf-8 -*- -ex -"))) - (py-bug-tests-intern 'py-ipython-complete-lp:927136-base arg teststring))) - -(defun py-ipython-complete-lp:927136-base () - (goto-char (point-min)) - (search-forward "ex") - (ipython-complete) - (sit-for 0.1) - (assert (buffer-live-p (get-buffer "*IPython Completions*")) nil "py-ipython-complete-lp:927136-test #2 lp:1026705 failed") - ) - -(defun execute-buffer-ipython-fails-lp:928087-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-ipython-test-shebang " -# -*- coding: utf-8 -*- -print(4 + 5) -print(u'\\xA9') -"))) - (py-bug-tests-intern 'execute-buffer-ipython-fails-lp:928087-base arg teststring))) - -(defun execute-buffer-ipython-fails-lp:928087-base () - (let (py-split-windows-on-execute-p - py-shell-switch-buffers-on-execute-p) - (assert (py-execute-buffer) nil "execute-buffer-ipython-fails-lp:928087-test failed"))) - -(defun fourth-level-blocks-indent-incorrectly-lp:939577-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -for x in y: - for z in l: - for r in t: - pass # <--- indents here. Pressing dedents eight spaces (i.e. you can go to column 0 in two presess) -"))) - (py-bug-tests-intern 'fourth-level-blocks-indent-incorrectly-lp:939577-base arg teststring))) - -(defun fourth-level-blocks-indent-incorrectly-lp:939577-base () - (goto-char 88) - (assert (eq 4 (py-guess-indent-offset)) nil "fourth-level-blocks-indent-incorrectly-lp:939577-test failed") - (goto-char 225) - (assert (eq 4 (py-guess-indent-offset)) nil "fourth-level-blocks-indent-incorrectly-lp:939577-test failed") - ) - -(defun py-mark-expression-marks-too-much-lp:941140-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -\*- - somevar = \"some string\" - # some code - -# when point is on the first quote, calling py-mark-expression marks the next several lines, no matter what they are. - -# This only seems to happen when point is in the first quote of a string literal which is the last thing on a line. - - somevar = some_string.some_property() - # point at first quote works - - somevar = \"a\" + \"b\" - # works at quote before a, fails at quote before b - -I am using version 6.0.4 - -"))) - (py-bug-tests-intern 'py-mark-expression-marks-too-much-lp:941140-base arg teststring))) - -(defun py-mark-expression-marks-too-much-lp:941140-base () - (goto-char 60) - - (assert (string-match "some" (py-expression)) nil "py-mark-expression-marks-too-much-lp:941140-test failed") - (goto-char 417) - (assert (string-match "a" (py-expression)) nil "py-mark-expression-marks-too-much-lp:941140-test failed")) - -;;; Py-shell tests -(defun py-shell-invoking-python-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: python\")")) - (py-bug-tests-intern 'py-shell-invoking-python-lp:835151-base arg teststring))) - -(defun py-shell-invoking-python-lp:835151-base () - (setq py-shell-name "python") - (assert (stringp (py-execute-buffer)) nil "py-shell-invoking-python-lp:835151-test failed")) - -(defun py-shell-invoking-ipython-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: ipython\")")) - (py-bug-tests-intern 'py-shell-invoking-ipython-lp:835151-base arg teststring))) - -(defun py-shell-invoking-ipython-lp:835151-base () - (setq py-shell-name "ipython") - (assert (stringp (py-execute-buffer "ipython")) nil "py-shell-invoking-ipython-lp:835151-test failed")) - -(defun py-shell-invoking-python3-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: python3\")")) - (py-bug-tests-intern 'py-shell-invoking-python3-lp:835151-base arg teststring))) - -(defun py-shell-invoking-python3-lp:835151-base () - (setq py-shell-name "python3") - (assert (py-execute-buffer) nil "py-shell-invoking-python3-lp:835151-test failed")) - -(defun py-shell-invoking-python2-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: python2\")")) - (py-bug-tests-intern 'py-shell-invoking-python2-lp:835151-base arg teststring))) - -(defun py-shell-invoking-python2-lp:835151-base () - (setq py-shell-name "python2") - (assert (py-execute-buffer) nil "py-shell-invoking-python2-lp:835151-test failed")) - -(defun py-shell-invoking-python2.7-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: python2.7\")")) - (py-bug-tests-intern 'py-shell-invoking-python2.7-lp:835151-base arg teststring))) - -(defun py-shell-invoking-python2.7-lp:835151-base () - (setq py-shell-name "python2.7") - (assert (py-execute-buffer) nil "py-shell-invoking-python2.7-lp:835151-test failed")) - -(defun py-shell-invoking-jython-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: jython\")")) - (py-bug-tests-intern 'py-shell-invoking-jython-lp:835151-base arg teststring))) - -(defun py-shell-invoking-jython-lp:835151-base () - (let ((py-shell-name "jython") - (sit-for 0.1)) - (assert (py-execute-buffer) nil "py-shell-invoking-jython-lp:835151-test failed"))) - -(defun py-shell-invoking-python3.2-lp:835151-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"py-shell-name: python3.2\")")) - (py-bug-tests-intern 'py-shell-invoking-python3.2-lp:835151-base arg teststring))) - -(defun py-shell-invoking-python3.2-lp:835151-base () - (setq py-shell-name "python3.2") - (assert (py-execute-buffer) nil "py-shell-invoking-python3.2-lp:835151-test failed")) - -(defun py-mark-block-clause-misbehave-lp:949310-test (&optional arg) - (interactive "p") - (let ((teststring " if foo: - try: - pass -")) - (py-bug-tests-intern 'py-mark-block-clause-misbehave-lp:949310-base arg teststring))) - -(defun py-mark-block-clause-misbehave-lp:949310-base () - (goto-char 15) - (assert (eq 14 (car (py-mark-block-or-clause))) nil "py-mark-block-clause-misbehave-lp:949310-test failed")) - -(defun py-mark-clause-misbehave-lp:949310-test (&optional arg) - (interactive "p") - (let ((teststring " if foo: - try: - pass -")) - (py-bug-tests-intern 'py-mark-clause-misbehave-lp:949310-base arg teststring))) - -(defun py-mark-clause-misbehave-lp:949310-base () - (goto-char 15) - (assert (eq 14 (car (py-mark-block-or-clause))) nil "py-mark-clause-misbehave-lp:949310-test failed")) - -(defun py-mark-block-misbehave-lp:949310-test (&optional arg) - (interactive "p") - (let ((teststring " if foo: - try: - pass -")) - (py-bug-tests-intern 'py-mark-block-misbehave-lp:949310-base arg teststring))) - -(defun py-mark-block-misbehave-lp:949310-base () - (goto-char 15) - (assert (eq 14 (car (py-mark-block-or-clause))) nil "py-mark-block-misbehave-lp:949310-test failed")) - -(defun py-indent-comments-nil-ignored-lp:958721-test (&optional arg) - (interactive "p") - (let (py-indent-comments - (teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -if x > 0: - for i in range(100): - # print(i) -"))) - (py-bug-tests-intern 'py-indent-comments-nil-ignored-lp:958721-base arg teststring))) - -(defun py-indent-comments-nil-ignored-lp:958721-base () - (goto-char 83) - (assert (eq 0 (py-compute-indentation)) nil "py-indent-comments-nil-ignored-lp:958721-test failed")) - -(defun broken-font-locking-lp:961231-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def baz(): - foo = None - bar = False - baz = True - foo, bar, baz = baz() - return foo, bar, baz - -# None, False, and True get colored with font-lock-constant-face instead of py-pseudo-keyword-face - -# On the second to last line, \"foo\" \"bar\" and \"baz\" all get colored with font-lock-variable-name-face whereas -# I think they should get default face, just as they would if no comma or equal sign appeared on the line. - -def baz(mydict): - mydict['hello'] = 'baz' - - # 'mydict' gets colored with font-lock-variable-name-face but it should be default face. - -def baz(self): - self.baz = 'hello' - - # 'self' gets colored with font-lock-keyword-face instead of py-pseudo-keyword-face - -def baz(self): - return set(range(100)) - -# 'set' and 'range' get rendered in font-lock-builtin-face when they should get rendered in py-builtins-face - -print myobj.range() - -# the latter range should get default face - -"))) - (py-bug-tests-intern 'broken-font-locking-lp:961231-base arg teststring))) - -(defun broken-font-locking-lp:961231-base () - (font-lock-fontify-buffer) - (sit-for 0.1) - (goto-char 87) - (assert (eq (get-char-property (point) 'face) 'py-pseudo-keyword-face) nil "broken-font-locking-lp:961231-test #1 failed") - (goto-char 488) - (assert (eq (get-char-property (point) 'face) 'nil) nil "broken-font-locking-lp:961231-test #2 failed") - (goto-char 637) - (assert (eq (get-char-property (point) 'face) 'py-pseudo-keyword-face) nil "broken-font-locking-lp:961231-test #3 failed") - (goto-char 775) - (assert (eq (get-char-property (point) 'face) 'nil) nil "broken-font-locking-lp:961231-test #4 failed") - ;; (goto-char 911) - ;; (assert (eq (get-char-property (point) 'face) 'default) nil "broken-font-locking-lp:961231-test #4 failed") - - ) - -(defun regression-in-py-execute-region-lp:962227-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -def foo(): - def bar(): - return True - return bar - -# In the past it was possible to highlight the middle two lines and run py-execute-region. This would have -# the effect of defining bar() at global scope, but that's okay since it was explicitly asked for. Now -# however you get this error in the Python buffer: - -# >>> Traceback (most recent call last): -# File \"\", line 1, in -# File \"/tmp/Python4249aED.py\", line 8 -# return True -# ^ -# IndentationError: expected an indented block - -# which perhaps makes sense, but isn't helpful. What python-mode used to do was, if the block to be executed -# was indented, it would still a \"if True:\" line indented to column zero in front of the region to be -# executed. This is essentially a no-op that just makes the indented region valid syntactically. - -"))) - (py-bug-tests-intern 'regression-in-py-execute-region-lp:962227-base arg teststring))) - -(defun regression-in-py-execute-region-lp:962227-base () - (goto-char 59) - (push-mark) - (goto-char 93) - (assert (py-execute-region 59 93) nil "regression-in-py-execute-region-lp:962227-test failed")) - -(defun auto-indent-behaves-strangely-with-slices-lp:961684.txt-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -# In the final line of the following, I want the line not to be indented at -# all (the loop in the preceding lines is complete). But if you type a : -# after the 1 to form potential.difference(set(S[1]:)), this activates the -# automatic indentation and incorrectly indents the line under the -# preceding line in the for loop. -potential = set([]) -for j in X: - potential = potential.union(visible[j]) -potential = potential.difference(set(S[1])) - -# py-electric-colon-active-p is t. - -"))) - (py-bug-tests-intern 'auto-indent-behaves-strangely-with-slices-lp:961684.txt-base arg teststring))) - -(defun auto-indent-behaves-strangely-with-slices-lp:961684.txt-base () - (goto-char 40) - (assert (eq 0 (py-compute-indentation)) nil "auto-indent-behaves-strangely-with-slices-lp:961684.txt-test failed")) - -(defun tuple-unpacking-highlighted-incorrectly-lp:961496-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -foo, bar = toothpick -"))) - (py-bug-tests-intern 'tuple-unpacking-highlighted-incorrectly-lp:961496-base arg teststring))) - -(defun tuple-unpacking-highlighted-incorrectly-lp:961496-base () - (font-lock-fontify-buffer) - (sit-for 0.1) - (goto-char 50) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "tuple-unpacking-highlighted-incorrectly-lp:961496-test failed")) - -(defun script-buffer-appears-instead-of-python-shell-buffer-lp:957561-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -print(\"I'm the script-buffer-appears-instead-of-python-shell-buffer-lp:957561-test\") -"))) - (py-bug-tests-intern 'script-buffer-appears-instead-of-python-shell-buffer-lp:957561-base arg teststring))) - -(defun script-buffer-appears-instead-of-python-shell-buffer-lp:957561-base () - (let (py-shell-switch-buffers-on-execute-p - (py-split-windows-on-execute-p t)) - (delete-other-windows) - (ipython) - (sit-for 0.1) - (assert (and (py-execute-buffer-ipython) (set-buffer "script-buffer-appears-instead-of-python-shell-buffer-lp:957561-test") (not (window-full-height-p))) nil "script-buffer-appears-instead-of-python-shell-buffer-lp:957561-test failed"))) - -(defun new-problem-with-py-temp-directory-lp:965762-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -"))) - (py-bug-tests-intern 'new-problem-with-py-temp-directory-lp:965762-base arg teststring))) - -(defun new-problem-with-py-temp-directory-lp:965762-base () - (assert (stringp py-temp-directory) nil "new-problem-with-py-temp-directory-lp:965762-test failed")) - -(defun problem-with-py-separator-char-under-windows-lp:975539-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'problem-with-py-separator-char-under-windows-lp:975539-base arg teststring))) - -(defun problem-with-py-separator-char-under-windows-lp:975539-base () - (assert (string= (char-to-string py-separator-char) (py-separator-char)) nil "problem-with-py-separator-char-under-windows-lp:975539-test failed")) - -(defun another-broken-font-locking-lp:961231-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -# So while in this case, range() refers to the built-in function: - -print(range(10)) - -# in this case, it's just a method on some object: - -print(myobj.range(10)) - -# The two 'range's have no relationship at all. -# That's why I suggest that the former be colored with py-builtins-face but the latter by default face. - -"))) - (py-bug-tests-intern 'another-broken-font-locking-lp:961231-base arg teststring))) - -(defun another-broken-font-locking-lp:961231-base () - (font-lock-fontify-buffer) - (goto-char 124) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-builtins-face) nil "another-broken-font-locking-lp:961231-test failed") - (goto-char 197) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) nil) nil "another-broken-font-locking-lp:961231-test failed")) - -(defun temp-file-stored-in-python-script-directory-lp:958987-test (&optional arg) - (interactive "p") - (let ((teststring " -# -*- coding: utf-8 -*- -Richard Stanton (a-stanton) wrote on 2012-03-20: #5 - -> > 1) The directory is not being applied correctly. -> > -> -> need a recipe for it, a new report would help, as it's related only - -Actually, I think this is the original problem I was reporting. Any python script will do in my experience, -but the problem only occurs if the script file does \*not\* contain a shebang line. For example, the -following file works fine: - --------- - -#!/usr/bin/python -print \"Hi, Richard\" - ---------- - -In this case, the temp file is created in the appropriate temp directory. - -However, if I use the same file without the shebang line, - --------- - -print \"Hi, Richard\" - ---------- - -now the problem occurs. - -print \"Hi, Richard\" - -Richard Stanton (a-stanton) wrote 1 hour ago: #10 - -The problem is still there in certain situations, I'm afraid, with r918 on my Mac. Here are three -experiments. In numbers 1 and 2, things work as they're supposed to. In number 3, they don't: - -1) Script file = - -#!/usr/bin/ipython -print \"Hi, Richard\" - -In this case, the temp file is correctly stored in the temp directory as (for example) -/var/folders/zf/bgjm4tvs3wv_6q7_6z3b2nx00000gn/T/ipython61090CmR.py. The ipython buffer is called -\*IPython\*. - -2) Script file = - -print \"Hi, Richard\" - -py-shell-name = \"ipython\" - -In this case, the temp file is again correctly stored in the temp directory as (for example) -/var/folders/zf/bgjm4tvs3wv_6q7_6z3b2nx00000gn/T/ipython61090CmR.py. The ipython buffer is again named -\*IPython\* - -3) Script file = - -print \"Hi, Richard\" - -py-shell-name = \"/Library/Frameworks/EPD64.framework/Versions/7.2/bin/ipython\" - -In this case, the temp file is saved in the \*wrong\* location as -/Library/Frameworks/EPD64.framework/Versions/7.2/bin/ipython61090PwX.py. - -In this case, the ipython buffer is called \*ND 0.12\* - -")) - (py-bug-tests-intern 'temp-file-stored-in-python-script-directory-lp:958987-base arg teststring))) - -(defun temp-file-stored-in-python-script-directory-lp:958987-base () - (goto-char 40) - (assert nil "temp-file-stored-in-python-script-directory-lp:958987-test failed")) - -(defun temp-buffer-affected-by-py-shell-name-lp:958987-test (&optional arg) - (interactive "p") - (let* ((py-shell-name (concat (expand-file-name py-shell-name-testpath) "/ipython")) - (teststring (concat "#! " py-shell-name " -# -*- coding: utf-8 -*- -print(\"I'm the temp-buffer-affected-by-py-shell-name-lp:958987-test\") -"))) - (py-bug-tests-intern 'temp-buffer-affected-by-py-shell-name-lp:958987-base arg teststring))) - -(defun temp-buffer-affected-by-py-shell-name-lp:958987-base () - (message "%s" py-shell-name) - (assert (py-execute-buffer) nil "temp-buffer-affected-by-py-shell-name-lp:958987-test failed")) - -(defun toggle-force-local-shell-lp:988091-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-epd-shebang " -# -\*- coding: utf-8 -\*- -pri -impo -\"\"\" Am 25.04.2012 01:32, schrieb Yaroslav Halchenko: - -\[ ... ] - -another convenience might be to have an option 'follow' the desired shell -- i.e. if someone explicitly -asks for a buffer to execute it in ipython, that sets py-shell-name to ipython. -\"\"\" - -"))) - (if (and (boundp 'py-epd-shebang) - (stringp py-epd-shebang)) - (py-bug-tests-intern 'toggle-force-local-shell-lp:988091-base arg teststring) - (error "Please edit `py-epd-shebang' with your local EPD before running this test.")))) - -(defun toggle-force-local-shell-lp:988091-base () - (let ((old py-shell-name)) - (py-force-local-shell-on) - (goto-char 92) - (save-excursion (py-shell-complete)) - (message "%s" completion-at-point-functions) - (assert (looking-at "print") nil "toggle-force-local-shell-lp:988091-test #1 failed") - (force-py-shell-name-p-off) - (goto-char 99) - (save-excursion (py-shell-complete)) - (message "%s" completion-at-point-functions) - (assert (looking-at "import") nil "toggle-force-local-shell-lp:988091-test #1 failed") - )) - -(defun py-describe-symbol-fails-on-modules-lp:919719-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import os -os.chmod -")) - (py-bug-tests-intern 'py-describe-symbol-fails-on-modules-lp:919719-base arg teststring))) - -(defun py-describe-symbol-fails-on-modules-lp:919719-base () - (goto-char 61) - (py-help-at-point) - (sit-for 0.1) - (set-buffer "*Python-Help*") - (goto-char (point-min)) - (assert (looking-at "Help on built-in function chmod in os:") nil "py-describe-symbol-fails-on-modules-lp:919719-test failed")) - -(defun indent-region-lp:997958-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -with file(\"foo\" + zeit + \".ending\", 'w') as datei: -for i in range(anzahl): -bar.dosomething() -datei.write(str(baz[i]) + \"\\n\") -")) - (py-bug-tests-intern 'indent-region-lp:997958-base arg teststring))) - -(defun indent-region-lp:997958-base () - (py-indent-region 48 172) - (goto-char 99) - (back-to-indentation) - (assert (eq 4 (current-column)) nil "indent-region-lp:997958-test #1 failed") - (goto-char 127) - (back-to-indentation) - (assert (eq 8 (current-column)) nil "indent-region-lp:997958-test #2 failed")) - -(defun pycomplete-same-folder-def-lp:889052-test (&optional arg) - (interactive "p") - (save-excursion - (set-buffer (get-buffer-create "somedef.py")) - (switch-to-buffer (current-buffer)) - (erase-buffer) - (insert "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -def someDef(): - print(\"I'm someDef\") -") - (write-file (concat (py-normalize-directory py-temp-directory) "somedef.py"))) - - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -from somedef import * -someDe -")) - (py-bug-tests-intern 'pycomplete-same-folder-def-lp:889052-base arg teststring t))) - -(defun pycomplete-same-folder-def-lp:889052-base () - (write-file (concat (py-normalize-directory py-temp-directory) "samefolder.py")) - (goto-char 76) - (py-complete) - (beginning-of-line) - (assert (looking-at "someDef") nil "pycomplete-same-folder-def-lp:889052-test failed")) - -(defun pycomplete-same-folder-class-lp:889052-test (&optional arg) - (interactive "p") - (save-excursion - (set-buffer (get-buffer-create "somedef.py")) - (switch-to-buffer (current-buffer)) - (erase-buffer) - (insert "#! /usr/bin/env python -# -*- coding: utf-8 -*- -class Blah(): - def someDef(): - print(\"I'm someDef\") -") - ;; (write-file (concat (py-normalize-directory py-temp-directory) "classblah.py"))) - ;; as completion is already in $PYTHONPATH - (write-file (concat (expand-file-name (py-normalize-directory py-install-directory)) "completion" "/" "classblah.py")) - (set-buffer-modified-p 'nil) - (kill-buffer (current-buffer))) - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -from classblah import * -CLASS_INS = Blah() -CLASS_INS.someDe -")) - (py-bug-tests-intern 'pycomplete-same-folder-class-lp:889052-base arg teststring))) - -(defun pycomplete-same-folder-class-lp:889052-base () - (let ( -(testfile1 (concat (expand-file-name (py-normalize-directory py-install-directory)) "completion" "/" "classblah.py")) - (testfile2 (concat (expand-file-name (py-normalize-directory py-install-directory)) "completion" "/" "somedef.py")) - py-no-completion-calls-dabbrev-expand-p - py-indent-no-completion-p) - (write-file testfile2) - (goto-char 107) - (unwind-protect - (py-shell-complete) - (beginning-of-line)) - (when (file-readable-p testfile1) (delete-file testfile1)) - (when (file-readable-p testfile2) (delete-file testfile2))) - (assert (looking-at "CLASS_INS.someDef") "pycomplete-same-folder-class-lp:889052-test failed")) - -(defun shebang-interpreter-not-detected-lp:1001327-test (&optional arg) - (interactive "p") - (let ((teststring "#!/usr/bin/python -")) - (py-bug-tests-intern 'shebang-interpreter-not-detected-lp:1001327-base arg teststring))) - -(defun shebang-interpreter-not-detected-lp:1001327-base () - (assert (string= "/usr/bin/python" (py-choose-shell)) nil "shebang-interpreter-not-detected-lp:1001327-test failed")) - -(defun no-completion-at-all-lp:1001328-test (&optional arg) - (interactive "p") - (let ((teststring "#!/usr/bin/python -basdklfjasdf = 3 -basd -")) - (py-bug-tests-intern 'no-completion-at-all-lp:1001328-base arg teststring))) - -(defun no-completion-at-all-lp:1001328-base () - (goto-char 40) - (py-shell-complete) - (beginning-of-line) - (sit-for 0.1) - (unless (looking-at "basdklfjasdf") - - (py-shell-complete)) - (sit-for 0.1) - (assert (looking-at "basdklfjasdf") nil "no-completion-at-all-lp:1001328-test failed")) - -(defun not-that-useful-completion-lp:1003580-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import numpy -def test_bu(): - numpy. -")) - (py-bug-tests-intern 'not-that-useful-completion-lp:1003580-base arg teststring))) - -(defun not-that-useful-completion-lp:1003580-base () - (goto-char 86) - (py-shell-complete nil t) - (assert (string-match "^numpy." (car py-shell-complete-debug)) nil "not-that-useful-completion-lp:1003580-test failed")) - -(defun completion-fails-in-python-script-r989-lp:1004613-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env ipython -# -*- coding: utf-8 -*- -ex -")) - (py-bug-tests-intern 'completion-fails-in-python-script-r989-lp:1004613-base arg teststring))) - -(defun completion-fails-in-python-script-r989-lp:1004613-base () - (when (buffer-live-p (get-buffer py-python-completions)) - (kill-buffer py-python-completions)) - (goto-char 51) - (ipython-complete nil nil nil nil nil nil t) - (set-buffer "*IPython Completions*") - (assert (search-forward "except") nil "completion-fails-in-python-script-r989-lp:1004613-test failed")) - -(defun spurious-trailing-whitespace-lp-1008679-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): X -")) - (py-bug-tests-intern 'spurious-trailing-whitespace-lp-1008679-base arg teststring))) - -(defun spurious-trailing-whitespace-lp-1008679-base () - (let ((py-trailing-whitespace-smart-delete-p t)) - (goto-char 66) - (py-newline-and-indent) - (forward-line -1) - (end-of-line) - (assert (eq (point) 58) nil "spurious-trailing-whitespace-lp-1008679-test failed"))) - -(defun empty-triple-quote-lp:1009318-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -\"\"\"\"\"\" -'''''' -")) - (py-bug-tests-intern 'empty-triple-quote-lp:1009318-base arg teststring))) - -(defun empty-triple-quote-lp:1009318-base () - (goto-char 54) - (assert (not (nth 4 (syntax-ppss))) nil "empty-triple-quote-lp:1009318-test #1 failed") - (goto-char 61) - (assert (not (nth 4 (syntax-ppss))) nil "empty-triple-quote-lp:1009318-test #2 failed")) - -(defun completion-at-gentoo-lp-1008842-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import re -re.s -")) - (py-bug-tests-intern 'completion-at-gentoo-lp-1008842-base arg teststring))) - -(defun completion-at-gentoo-lp-1008842-base () - (goto-char 62) - (py-shell-complete) - (sit-for 0.1) - (assert (buffer-live-p (get-buffer py-python-completions)) nil "completion-at-gentoo-lp-1008842-test failed")) - -(defun converts-tabs-to-spaces-in-indent-tabs-mode-t-lp-1019128-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -setup( - name = \"fail2ban\", -")) - (py-bug-tests-intern 'converts-tabs-to-spaces-in-indent-tabs-mode-t-lp-1019128-base arg teststring))) - -(defun converts-tabs-to-spaces-in-indent-tabs-mode-t-lp-1019128-base () - (let ((indent-tabs-mode t)) - (goto-char 74) - (py-newline-and-indent) - (beginning-of-line)) - (assert (looking-at "\t") nil "converts-tabs-to-spaces-in-indent-tabs-mode-t-lp-1019128-test failed")) - -(defun return-statement-indented-incorrectly-lp-1019601-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - while True: - bar() - baz() - return 1 -")) - (py-bug-tests-intern 'return-statement-indented-incorrectly-lp-1019601-base arg teststring))) - -(defun return-statement-indented-incorrectly-lp-1019601-base () - (goto-char 99) - (assert (eq 4 (py-compute-indentation)) nil "return-statement-indented-incorrectly-lp-1019601-test failed")) - -(defun pycomplete-imports-not-found-error-when-no-symbol-lp:1019791-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -from PyQt4.QtGui import QMainWindow -")) - (py-bug-tests-intern 'pycomplete-imports-not-found-error-when-no-symbol-lp:1019791-base arg teststring))) - -(defun pycomplete-imports-not-found-error-when-no-symbol-lp:1019791-base () - (assert (py-find-imports) nil "pycomplete-imports-not-found-error-when-no-symbol-lp:1019791-test failed")) - -(defun py-narrow-to-defun-lp-1020531-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def usage(): - print \"\"\"Fehler: %s -Es muß die aufzurufende Ziehungszahl als Argument angegeben werden: -'python roulette.py 1, 'python roulette.py 2', ... 'python roulette.py n'. -\"\"\" % ( - os.path.basename(sys.argv[0])) - -def main(): - if len(sys.argv) == 1: - usage() - sys.exit() - - class asdf(object): - zeit = time.strftime('%Y%m%d--%H-%M-%S') - - def utf8_exists(filename): - return os.path.exists(filename.encode('utf-8')) - -if __name__ == \"__main__\": - main() - -")) - (py-bug-tests-intern 'py-narrow-to-defun-lp-1020531-base arg teststring))) - -(defun py-narrow-to-defun-lp-1020531-base () - (goto-char 334) - (py-narrow-to-defun) - (assert (eq 521 (point-max)) nil "py-narrow-to-defun-lp-1020531-test failed")) - -(defun py-find-imports-lp-1023236-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -############################################################################# -# -# Import test -# -############################################################################# - -import urllib -import os, sys -from hashlib import md5 - -from construct import Container -from twisted.internet import reactor, defer -from twisted.internet.protocol import ClientFactory -from twisted.python import log, failure, filepath - -from mock import mock1, mock2, \\ - mock3, mock4 -print \"ignored\" - -print \"ignored\" - -def something(): - pass - -")) - (py-bug-tests-intern 'py-find-imports-lp-1023236-base arg teststring))) - -(defun py-find-imports-lp-1023236-base () - (goto-char 334) - (assert (equal (py-find-imports) "import urllib;import os, sys;from hashlib import md5;from construct import Container;from twisted.internet import reactor, defer;from twisted.internet.protocol import ClientFactory;from twisted.python import log, failure, filepath;from mock import mock1, mock2, mock3, mock4;") nil "py-find-imports-lp-1023236-test failed")) - -(defun py-guess-indent-offset-dont-detect-indent-of-2-lp-1027389-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -for something: - for other: - if hello: - while x: - statement1 -")) - (py-bug-tests-intern 'py-guess-indent-offset-dont-detect-indent-of-2-lp-1027389-base arg teststring))) - -(defun py-guess-indent-offset-dont-detect-indent-of-2-lp-1027389-base () - (goto-char 109) - (assert (eq 2 (py-guess-indent-offset)) nil "py-guess-indent-offset-dont-detect-indent-of-2-lp-1027389-test failed")) - -(defun complaint-about-non-ASCII-character-lp-1042949-test (&optional arg) - (interactive "p") - (let ((teststring "# -*- coding: utf-8 -*- - -# 11–14 -")) - (py-bug-tests-intern 'complaint-about-non-ASCII-character-lp-1042949-base arg teststring))) - -(defun complaint-about-non-ASCII-character-lp-1042949-base () - (sit-for 0.1) - (assert (py-execute-buffer) nil "complaint-about-non-ASCII-character-lp-1042949-test failed")) - -(defun dont-indent-code-unnecessarily-lp-1048778-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(a): - if a == 1: - return 1 - elif a == 2: - if a < 7: - return 3 - elif a == 3 -")) - (py-bug-tests-intern 'dont-indent-code-unnecessarily-lp-1048778-base arg teststring))) - -(defun dont-indent-code-unnecessarily-lp-1048778-base () - (goto-char 163) - (py-electric-colon 1) - (assert (eq 4 (current-indentation)) nil "dont-indent-code-unnecessarily-lp-1048778-test failed")) - -(defun IndentationError-expected-an-indented-block-when-execute-lp-1055569-test (&optional arg) - (interactive "p") - (let ((teststring "if __name__ == '__main__': - print('IndentationError-expected-an-indented-block-when-execute-lp-1055569-test') -")) - (py-bug-tests-intern 'IndentationError-expected-an-indented-block-when-execute-lp-1055569-base 1 teststring))) - -(defun IndentationError-expected-an-indented-block-when-execute-lp-1055569-base () - (assert - (string= "IndentationError-expected-an-indented-block-when-execute-lp-1055569-test" (py-execute-buffer)) - ;; (progn (py-execute-buffer) t) - nil "IndentationError-expected-an-indented-block-when-execute-lp-1055569-test failed")) - -(defun stalls-emacs-probably-due-to-syntax-highlighting-lp-1058261-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -class Parallel(Logger): - ''' Helper class for readable parallel mapping. - - Parameters - ----------- - n_jobs: int - The number of jobs to use for the computation. If -1 all CPUs - are used. If 1 is given, no parallel computing code is used - at all, which is useful for debuging. For n_jobs below -1, - (n_cpus + 1 - n_jobs) are used. Thus for n_jobs = -2, all - CPUs but one are used. - verbose: int, optional - The verbosity level: if non zero, progress messages are - printed. Above 50, the output is sent to stdout. - The frequency of the messages increases with the verbosity level. - If it more than 10, all iterations are reported. - pre_dispatch: {'all', integer, or expression, as in '3\*n_jobs'} - The amount of jobs to be pre-dispatched. Default is 'all', - but it may be memory consuming, for instance if each job - involves a lot of a data. - - Notes - ----- - - This object uses the multiprocessing module to compute in - parallel the application of a function to many different - arguments. The main functionality it brings in addition to - using the raw multiprocessing API are (see examples for details): - - \* More readable code, in particular since it avoids - constructing list of arguments. - - \* Easier debuging: - - informative tracebacks even when the error happens on - the client side - - using 'n_jobs=1' enables to turn off parallel computing - for debuging without changing the codepath - - early capture of pickling errors - - \* An optional progress meter. - - \* Interruption of multiprocesses jobs with 'Ctrl-C' - - Examples - -------- - - A simple example: - - >>> from math import sqrt - >>> from joblib import Parallel, delayed - >>> Parallel(n_jobs=1)(delayed(sqrt)(i\*\*2) for i in range(10)) - [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] - - Reshaping the output when the function has several return - values: - - >>> from math import modf - >>> from joblib import Parallel, delayed - >>> r = Parallel(n_jobs=1)(delayed(modf)(i/2.) for i in range(10)) - >>> res, i = zip(\*r) - >>> res - (0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5) - >>> i - (0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0) - - The progress meter: the higher the value of `verbose`, the more - messages:: - - >>> from time import sleep - >>> from joblib import Parallel, delayed - >>> r = Parallel(n_jobs=2, verbose=5)(delayed(sleep)(.1) for _ in range(10)) #doctest: +SKIP - [Parallel(n_jobs=2)]: Done 1 out of 10 | elapsed: 0.1s remaining: 0.9s - [Parallel(n_jobs=2)]: Done 3 out of 10 | elapsed: 0.2s remaining: 0.5s - [Parallel(n_jobs=2)]: Done 6 out of 10 | elapsed: 0.3s remaining: 0.2s - [Parallel(n_jobs=2)]: Done 9 out of 10 | elapsed: 0.5s remaining: 0.1s - [Parallel(n_jobs=2)]: Done 10 out of 10 | elapsed: 0.5s finished - - Traceback example, note how the line of the error is indicated - as well as the values of the parameter passed to the function that - triggered the exception, even though the traceback happens in the - child process:: - - >>> from string import atoi - >>> from joblib import Parallel, delayed - >>> Parallel(n_jobs=2)(delayed(atoi)(n) for n in ('1', '300', 30)) #doctest: +SKIP - #... - --------------------------------------------------------------------------- - Sub-process traceback: - --------------------------------------------------------------------------- - TypeError Fri Jul 2 20:32:05 2010 - PID: 4151 Python 2.6.5: /usr/bin/python - ........................................................................... - /usr/lib/python2.6/string.pyc in atoi(s=30, base=10) - 398 is chosen from the leading characters of s, 0 for octal, 0x or - 399 0X for hexadecimal. If base is 16, a preceding 0x or 0X is - 400 accepted. - 401 - 402 \"\"\" - --> 403 return _int(s, base) - 404 - 405 - 406 # Convert string to long integer - 407 def atol(s, base=10): - - TypeError: int() can't convert non-string with explicit base - ___________________________________________________________________________ - - Using pre_dispatch in a producer/consumer situation, where the - data is generated on the fly. Note how the producer is first - called a 3 times before the parallel loop is initiated, and then - called to generate new data on the fly. In this case the total - number of iterations cannot be reported in the progress messages:: - - >>> from math import sqrt - >>> from joblib import Parallel, delayed - - >>> def producer(): - ... for i in range(6): - ... print 'Produced %s' % i - ... yield i - - >>> out = Parallel(n_jobs=2, verbose=100, pre_dispatch='1.5\*n_jobs')( - ... delayed(sqrt)(i) for i in producer()) #doctest: +SKIP - Produced 0 - Produced 1 - Produced 2 - [Parallel(n_jobs=2)]: Done 1 jobs | elapsed: 0.0s - Produced 3 - [Parallel(n_jobs=2)]: Done 2 jobs | elapsed: 0.0s - Produced 4 - [Parallel(n_jobs=2)]: Done 3 jobs | elapsed: 0.0s - Produced 5 - [Parallel(n_jobs=2)]: Done 4 jobs | elapsed: 0.0s - [Parallel(n_jobs=2)]: Done 5 out of 6 | elapsed: 0.0s remaining: 0.0s - [Parallel(n_jobs=2)]: Done 6 out of 6 | elapsed: 0.0s finished - ''' - def __init__(self, n_jobs=1, verbose=0, pre_dispatch='all'): - self.verbose = verbose - self.n_jobs = n_jobs - self.pre_dispatch = pre_dispatch - self._pool = None - # Not starting the pool in the __init__ is a design decision, to be - # able to close it ASAP, and not burden the user with closing it. - self._output = None - self._jobs = list() - - def dispatch(self, func, args, kwargs): - \"\"\" Queue the function for computing, with or without multiprocessing - \"\"\" - if self._pool is None: - job = ImmediateApply(func, args, kwargs) - index = len(self._jobs) - if not _verbosity_filter(index, self.verbose): - self._print('Done %3i jobs | elapsed: %s', - (index + 1, - short_format_time(time.time() - self._start_time) - )) - self._jobs.append(job) - self.n_dispatched += 1 - else: - self._lock.acquire() - # If job.get() catches an exception, it closes the queue: - try: - job = self._pool.apply_async(SafeFunction(func), args, - kwargs, callback=CallBack(self.n_dispatched, self)) - self._jobs.append(job) - self.n_dispatched += 1 - except AssertionError: - print '[Parallel] Pool seems closed' - finally: - self._lock.release() - - def dispatch_next(self): - \"\"\" Dispatch more data for parallel processing - \"\"\" - self._dispatch_amount += 1 - while self._dispatch_amount: - try: - # XXX: possible race condition shuffling the order of - # dispatchs in the next two lines. - func, args, kwargs = self._iterable.next() - self.dispatch(func, args, kwargs) - self._dispatch_amount -= 1 - except ValueError: - \"\"\" Race condition in accessing a generator, we skip, - the dispatch will be done later. - \"\"\" - except StopIteration: - self._iterable = None - return - - def _print(self, msg, msg_args): - \"\"\" Display the message on stout or stderr depending on verbosity - \"\"\" - # XXX: Not using the logger framework: need to - # learn to use logger better. - if not self.verbose: - return - if self.verbose < 50: - writer = sys.stderr.write - else: - writer = sys.stdout.write - msg = msg % msg_args - writer('[%s]: %s\\n' % (self, msg)) - - def print_progress(self, index): - \"\"\"Display the process of the parallel execution only a fraction - of time, controled by self.verbose. - \"\"\" - if not self.verbose: - return - elapsed_time = time.time() - self._start_time - - # This is heuristic code to print only 'verbose' times a messages - # The challenge is that we may not know the queue length - if self._iterable: - if _verbosity_filter(index, self.verbose): - return - self._print('Done %3i jobs | elapsed: %s', - (index + 1, - short_format_time(elapsed_time), - )) - else: - # We are finished dispatching - queue_length = self.n_dispatched - # We always display the first loop - if not index == 0: - # Display depending on the number of remaining items - # A message as soon as we finish dispatching, cursor is 0 - cursor = (queue_length - index + 1 - - self._pre_dispatch_amount) - frequency = (queue_length // self.verbose) + 1 - is_last_item = (index + 1 == queue_length) - if (is_last_item or cursor % frequency): - return - remaining_time = (elapsed_time / (index + 1) \* - (self.n_dispatched - index - 1.)) - self._print('Done %3i out of %3i | elapsed: %s remaining: %s', - (index + 1, - queue_length, - short_format_time(elapsed_time), - short_format_time(remaining_time), - )) - - def retrieve(self): - self._output = list() - while self._jobs: - # We need to be careful: the job queue can be filling up as - # we empty it - if hasattr(self, '_lock'): - self._lock.acquire() - job = self._jobs.pop(0) - if hasattr(self, '_lock'): - self._lock.release() - try: - self._output.append(job.get()) - except tuple(self.exceptions), exception: - if isinstance(exception, - (KeyboardInterrupt, WorkerInterrupt)): - # We have captured a user interruption, clean up - # everything - if hasattr(self, '_pool'): - self._pool.close() - self._pool.terminate() - raise exception - elif isinstance(exception, TransportableException): - # Capture exception to add information on the local stack - # in addition to the distant stack - this_report = format_outer_frames(context=10, - stack_start=1) - report = \"\"\"Multiprocessing exception: -%s ---------------------------------------------------------------------------- -Sub-process traceback: ---------------------------------------------------------------------------- -%s\"\"\" % ( - this_report, - exception.message, - ) - # Convert this to a JoblibException - exception_type = _mk_exception(exception.etype)[0] - raise exception_type(report) - raise exception - - def __call__(self, iterable): - if self._jobs: - raise ValueError('This Parallel instance is already running') - n_jobs = self.n_jobs - if n_jobs < 0 and multiprocessing is not None: - n_jobs = max(multiprocessing.cpu_count() + 1 + n_jobs, 1) - - # The list of exceptions that we will capture - self.exceptions = [TransportableException] - if n_jobs is None or multiprocessing is None or n_jobs == 1: - n_jobs = 1 - self._pool = None - else: - if multiprocessing.current_process()._daemonic: - # Daemonic processes cannot have children - n_jobs = 1 - self._pool = None - warnings.warn( - 'Parallel loops cannot be nested, setting n_jobs=1', - stacklevel=2) - else: - self._pool = multiprocessing.Pool(n_jobs) - self._lock = threading.Lock() - # We are using multiprocessing, we also want to capture - # KeyboardInterrupts - self.exceptions.extend([KeyboardInterrupt, WorkerInterrupt]) - - if self.pre_dispatch == 'all' or n_jobs == 1: - self._iterable = None - self._pre_dispatch_amount = 0 - else: - self._iterable = iterable - self._dispatch_amount = 0 - pre_dispatch = self.pre_dispatch - if hasattr(pre_dispatch, 'endswith'): - pre_dispatch = eval(pre_dispatch) - self._pre_dispatch_amount = pre_dispatch = int(pre_dispatch) - iterable = itertools.islice(iterable, pre_dispatch) - - self._start_time = time.time() - self.n_dispatched = 0 - try: - for function, args, kwargs in iterable: - self.dispatch(function, args, kwargs) - - self.retrieve() - # Make sure that we get a last message telling us we are done - elapsed_time = time.time() - self._start_time - self._print('Done %3i out of %3i | elapsed: %s finished', - (len(self._output), - len(self._output), - short_format_time(elapsed_time) - )) - - finally: - if n_jobs > 1: - self._pool.close() - self._pool.join() - self._jobs = list() - output = self._output - self._output = None - return output - - def __repr__(self): - return '%s(n_jobs=%s)' % (self.__class__.__name__, self.n_jobs) - -")) - (py-bug-tests-intern 'stalls-emacs-probably-due-to-syntax-highlighting-lp-1058261-base arg teststring))) - -(defun stalls-emacs-probably-due-to-syntax-highlighting-lp-1058261-base () - (switch-to-buffer (current-buffer)) - (goto-char 6184) - (while (not (bobp)) - (forward-line -1) - (end-of-line) - ;; (when (interactive-p) (sit-for 0.1)) - (beginning-of-line)) - (assert (bobp) nil "stalls-emacs-probably-due-to-syntax-highlighting-lp-1058261-test failed")) - -(defun pyindex-mishandles-class-definitions-lp-1018164-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import sys -import io -import subprocess -import re -import copy -import pickle -import textwrap -import datetime -import util -import cldef -import datatypes -from themes.thutil import lisp, fontNames, Color, emacsPosition - -############################################################################### -version = 3 - -############################################################################### -# used to raise a type error if a call is made with incorrect arguments -def _emptyParametersCheck(): pass - -############################################################################### -class Font(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.slots(\"__fontStr\") - __cldef.fields(\"weight slant width height pointSize size face\") - __cldef.field(\"mapKey\", initfunc=lambda f:(f.size,f.weight,f.slant)) - __cldef.field(\"sortKey\", initfunc=lambda f:(f.width,f.height)) - - ########################################################################### - __parseFontStrRE = __cldef.constant(re.compile( - r'-outline-Courier New-(?Pbold|normal)'\\ - r'-(?Pi|r)-normal-normal' \\ - r'-(?P\\d+)-(?P\\d+)-\\d+-\\d+-c-(?P\\d+)-iso10646-1')) - - ########################################################################### - def __init__(self, fontStr): - self.__fontStr = fontStr - match = self.__parseFontStrRE.match(fontStr) - self.weight = match.group('weight') - self.slant = 'italic' if match.group('slant') == 'i' else 'regular' - self.width = int(match.group('width'))//10 - self.height = int(match.group('height')) - self.pointSize = (int(match.group('size')) + 5)//10 - self.size = \"%sx%s\" % (self.__width, self.__height) - self.face = \"Courier New\" - - ########################################################################### - def __str__(self): return self.__fontStr - - ########################################################################### - def qt(self): - if 'QtGui' not in globals(): - global QtGui - from PyQt4 import QtGui - font = QtGui.QFont(self.face, self.pointSize) - font.setItalic(self.slant == 'italic') - font.setBold(self.weight == 'bold') - return font - -############################################################################### -class FontAttrs(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - mapKey = property(lambda self: (self.size, self.weight, self.slant)) - - ########################################################################### - class FontAttrs(__cldef.FieldClass): - access, fields = 'rw', \"fontSize fontWeight fontSlant\" - def sethook(obj, fieldName, value): - value = str(value) - if value in obj.fontOptions(fieldName): - return value - raise ValueError(\"%s invalid value for %s\"%(value, fieldName)) - - ########################################################################### - attrNames = __cldef.constant(frozenset(FontAttrs.fields.split())) - - ########################################################################### - class FontAttrAbbrevs(__cldef.FieldClass): - access, fields = 'rw', tuple(\"size weight slant\".split()) - def fget(obj): pass - def gethook(obj,name,\*p): - return getattr(obj, 'font'+name.capitalize()) - def fset(obj,val): pass - def sethook(obj,name,val,\*p): - setattr(obj, 'font'+name.capitalize(), val) - - ########################################################################### - def __init__(self, size='8x13', weight='bold', slant='regular'): - self.__initAttrs(\*\*locals()) - - ########################################################################### - def font(): - # font options contain the valid values for each font attr - _fontOptions = {'weight':('normal','bold'), - 'slant':('regular','italic')} - - # Get the list of font names from thutil and create the font lookup - # dict. It is assumed that the weight and slant are not specified, - # so will fill in the \"typical\" options here. - _fontMap = dict() - for fontStr in fontNames(): - for weight in ('normal', 'bold'): - for slant in ('r', 'i'): - font = Font(fontStr.replace(\"\*-\*\", weight+'-'+slant)) - _fontMap[font.mapKey] = font - - # getFont: use the fontAttrSize, fontWeight and fontSize attrs - # to lookup the font in _fontMap - def getFont(self): return _fontMap[self.mapKey] - - # scan all the values of _fontMap an garther all fontSize options - _fontSizes = set(f.size for f in _fontMap.values()) - def fontSizeSortKey(size): - return tuple(int(i) for i in size.split('x')) - _fontOptions['size'] = tuple(sorted(_fontSizes, key=fontSizeSortKey)) - - #provide a function to query the fontoptions - def fontOptions(attrName): - attrName = attrName.lower() - if attrName.startswith('font'): - attrName = attrName[len('font'):] - return _fontOptions[attrName] - - return property(fget=getFont), staticmethod(fontOptions) - font, fontOptions = font() - -############################################################################### -class ColorAttrs(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - attrNames = \"foregroundColor backgroundColor cursorColor\".split() - attrNames = __cldef.constant(tuple(attrNames)) - __cldef.fields(attrNames.val, 'rw', sethook=Color) - - ########################################################################### - def __init__(self, backgroundColor=\"grey13\", foregroundColor='navajowhite', - cursorColor=None): - self.backgroundColor = backgroundColor - self.foregroundColor = foregroundColor - self.cursorColor = self.getColor_i(cursorColor,\"light green\", \"black\") - - ########################################################################### - def getColor_i(self, val, forDark, forLight): - if val is None: - val = forDark if self.backgroundColor.isDark() else forLight - return Color(val) - -############################################################################### -class Face(object, metaclass=cldef.metaClass): - ########################################################################### - __cldef = cldef.metaClass.wrapclass(privAttrAccess=True) - unspecified = __cldef.constant(None) - __cldef.fields('name theme') - __cldef.fields('inherit', access='rw', - sethook=lambda obj,val: obj.setInheritHook_i(val)) - - ########################################################################### - class FontAttrs(__cldef.FieldClass): - access, fields = 'rw', (\"bold\",\"italic\",\"underline\",\"raised\") - sethook = lambda val: val if val is None else bool(val) - gethook = lambda obj,attr,val: obj.getAttrHook_i(attr, val) - - ########################################################################### - class ColorAttrs(__cldef.FieldClass): - access, fields = 'rw', (\"foreground\", \"background\") - sethook = lambda val: val if val is None else Color(val) - gethook = lambda obj,attr,val: obj.getAttrHook_i(attr, val) - - ########################################################################### - fontAttrs, colorAttrs, faceAttrs = __cldef.constants( - frozenset(FontAttrs.fields), - frozenset(ColorAttrs.fields), - frozenset(FontAttrs.fields + ColorAttrs.fields + ('inherit',))) - - ########################################################################### - def __init__(self, name, theme, \*\*opts): - self.name, self.theme = name, theme - for attr in self.faceAttrs: - self.__setPrivAttr(attr,None) - for attr,val in opts.items(): - setattr(self, attr, val) - - ########################################################################### - def __str__(self): - return self.setFaceSexpr() - - ########################################################################### - def copy(self): - copy = self.__class__(self.name, self.theme) - for attr in self.faceAttrs: - copy.__setPrivAttr(attr, self.__getPrivAttr(attr)) - return copy - - ########################################################################### - def __eq__(self, peer): - if not isinstance(peer, Face): - return NotImplemented - getSelf, getPeer = self.__getPrivAttr, peer.__getPrivAttr - return (self.name == peer.name and - self.faceAttrs == peer.faceAttrs and - all(getSelf(a) == getPeer(a) for a in self.faceAttrs)) - - ########################################################################### - def __neq__(self, peer): - return not(self == peer) - - ########################################################################### - def reset(self, peer): - for attr in self.faceAttrs: - self.__setPrivAttr(attr, peer.__getPrivAttr(attr)) - - ########################################################################### - def isSet(self, attr): - return self.__getPrivAttr(attr) is not None - - ########################################################################### - def getPeer(self, peerName): - if peerName in (None, 'default'): - return self.theme.defaultFace - return self.theme.facesAttrs[peerName] - - ########################################################################### - def inheritOrder(self): - return (self.name, ) + self.getPeer(self.inherit).inheritOrder() - - ########################################################################### - def derivesFrom(self, peer): - return self.theme == peer.theme and peer.name in self.inheritOrder() - - ########################################################################### - def getSource(self, attr): - return self if self.isSet(attr) else \\ - self.getPeer(self.inherit).getSource(attr) - - ########################################################################### - def getAttrHook_i(self, attr, val): - return val if val is not None \\ - else getattr(self.getPeer(self.inherit), attr) - - ########################################################################### - def setInheritHook_i(self, val): - if val in (None, 'default'): - return None - if isinstance(val, str): - theme = self.theme - if not(hasattr(theme, 'faceAttrs')) or val in theme.faceAttrs: - return val - raise ValueError(\"Invalid inherit value=%s\" % val) - - ########################################################################### - def getLispValue(self, attr, mapBool=('nil','t')): - val = self.__getPrivAttr(attr) - if val is None: - return \"'unspecified\" - if isinstance(val, bool): - return mapBool[int(val)] - if isinstance(val, str): - return \"'%s\" % val - if isinstance(val, Color): - return '\"%s\"' % (val,) - raise ValueError(\"getLispValue(%s): Invalid attr val=%s\" % (attr,val)) - - ########################################################################### - def setFaceSexpr(self, parms=\"\"): - isSet, lispVal = self.isSet, self.getLispValue - # add inhert attr - if isSet('inherit'): - parms += ' :inherit %s' % lispVal('inherit') - - # add foreground, background color attrs if attr is set - for attr in filter(isSet, self.colorAttrs): - parms += ' :%s %s' % (attr, lispVal(attr)) - - # add bold attr - if isSet('bold'): - parms += ' :weight %s' % lispVal('bold', (\"'normal\", \"'bold\")) - - # add italic attr - if isSet('italic'): - parms += ' :slant %s' % lispVal('italic', (\"'normal\", \"'italic\")) - - # add underline attr - if isSet('underline'): - parms += ' :underline %s' % lispVal('underline') - - # add raised attr - if isSet('raised'): - val = lispVal('raised') - if val == 't': - val = '(:line-width 2 :color \"%s\" :style released-button)' % \\ - self.foreground.blend(self.background) - parms += ' :box %s' % val - - # make func call to set face in emacs - return \"(themes-set-face '%s %s)\" % (self.name, parms) - -############################################################################### -class DefaultFace(Face, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - inherit, underline, raised = __cldef.constants(None, False, False) - ########################################################################### - def __init__(self, theme): - self.__super.__init__(\"default\", theme) - - ########################################################################### - bold = property(lambda self: self.theme.font.weight == 'bold') - italic = property(lambda self: self.theme.font.slant == 'italic') - foreground = property(lambda self: self.theme.foregroundColor) - background = property(lambda self: self.theme.backgroundColor) - - ########################################################################### - def setFaceSexpr(self): - return '(themes-set-defaults \"%s\" \"%s\" \"%s\")' % \\ - (self.foreground, self.background, self.theme.font) - - ########################################################################### - def isSet(self, attr): - return True - - ########################################################################### - def inheritOrder(self): - return (self.name,) - -############################################################################### -class FacesAttrs(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.slots(\"__faceMap __faces\") - __cldef.field(\"theme\") - - ########################################################################### - def __init__(self, theme, facesAttrs=None): - self.theme, self.__faceMap, self.__faces = theme, {}, [] - if facesAttrs is None: - facesAttrs = self.loadFacesFromEmacs_i() - for faceAttrs in facesAttrs: - face = Face(theme=theme, \*\*faceAttrs) - if self.__faceMap.setdefault(face.name, face) is not face: - raise KeyError(\"Face name %r is not unique\" % face.name) - self.__faces.append(face) - for face in self.__faces: - if face.inherit is not None: - assert face.inherit in self.__faceMap - - ########################################################################### - def copy(self): - copy = self.__class__.__new__(self.__class__) - copy.theme = self.theme - copy.__faces = [f.copy() for f in self.__faces] - copy.__faceMap = dict((f.name,f) for f in copy.__faces) - return copy - - ########################################################################### - def reset(self, peer): - self.__faces = [f.copy() for f in peer.__faces] - self.__faceMap = dict((f.name,f) for f in self.__faces) - - ########################################################################### - def __len__(self): - return len(self.__faceMap) - - ########################################################################### - def __iter__(self): - return iter(self.__faces) - - ########################################################################### - def __eq__(self, peer): - if not isinstance(peer, FacesAttrs): - return NotImplemented - return self.__faceMap == peer.__faceMap - - ########################################################################### - def __neq__(self, peer): - return not(self == peer) - - ########################################################################### - def get(self, name, default=None): - return self.__faceMap.get(name,default) - - ########################################################################### - def __getitem__(self, name): - return self.__faceMap[name] - - ########################################################################### - def __contains__(self, name): - return name in self.__faceMap - - ########################################################################### - def loadFacesFromEmacs_i(self): - facesSexpr = textwrap.dedent(\"\"\"\\ - (progn (add-to-list 'load-path \"%(elDir)s\") - (add-to-list 'load-path \"%(elDir)s/python\") - (add-to-list 'load-path \"%(elDir)s/imported\") - (require 'themes) - (write-region (themes-python-faces-attrs %(thColors)s) - nil \"%(outFile)s\") - (kill-emacs))\"\"\") - facesSexpr = ' '.join(facesSexpr.split()) - thColors = self.theme.foregroundColor, self.theme.backgroundColor - outFile = (util.dirPath('\$TEMP')/'themeFaces.py').uniquify() - facesSexpr %= {'elDir': util.Path('~/emacs').emacsName, - 'thColors': '\"%s\" \"%s\"' % thColors, - 'outFile': outFile.emacsName} - try: - subprocess.check_call(['emacs.exe', '--no-init-file', - '--iconic', '--eval', facesSexpr], - shell=True) - return eval(outFile.text().replace('\\r\\n', '\\n')) - finally: - if outFile.isfile(): - outFile.remove() - -############################################################################### -class ThemeChoice(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.slots(\"__args\") - - ########################################################################## - def __namedTests(): - _darkThreshold = 3 \* 255 \* 0.6 - def isThemeBackgroundDark(theme): - return sum(theme.colorAttrs.backgroundColor) < _darkThreshold - def isThemeBold(theme): - return theme.fontAttrs.weight == 'bold' - return dict(isThemeBackgroundDark = isThemeBackgroundDark, - isThemeFontBold = isThemeBold) - __namedTests = __cldef.constant(__namedTests()) - - ########################################################################### - def __init__(self, theme, themeTest, onTrueValue, onFalseValue): - self.__args= (theme, themeTest, onTrueValue, onFalseValue) - - ########################################################################### - def __call__(self): - theme, themeTest, onTrueValue, onFalseValue = self.__args - if isinstance(themeTest, str): - themeTest = self.__namedTests[themeTest] - if themeTest(theme): - return onTrueValue - return onFalseValue - -############################################################################### -class ThemeAccessor(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.slots(\"__args\") - - ########################################################################### - def __init__(self, theme, path): - self.__args = (theme, path.split(\".\")) - - ########################################################################### - def __call__(self): - obj, path = self.__args - for attr in path: - obj = getattr(obj, attr) - return obj - -############################################################################### -class EmacsFrameTheme(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.fields(\"name colorAttrs fontAttrs defaultFace facesAttrs \" - \"canDelete\") - foregroundColor = property(lambda self: self.colorAttrs.foregroundColor) - backgroundColor = property(lambda self: self.colorAttrs.backgroundColor) - font = property(lambda self: self.fontAttrs.font) - - ########################################################################### - def __str__(self): - return util.nomen(self, \"%s:%s\" % (self.name, hex(id(self)))) - - ########################################################################### - def __init__(self, name, \*\*themeOpts): - self.name = name - self.colorAttrs = ColorAttrs() - self.fontAttrs = FontAttrs() - self.defaultFace = DefaultFace(self) - facesAttrs = themeOpts.pop('facesAttrs', None) - self.facesAttrs = FacesAttrs(self, facesAttrs=facesAttrs) - self.canDelete = themeOpts.pop('canDelete', True) - self.update(themeOpts) - - ########################################################################### - def update(self, \*args, \*\*opts): - if len(args) > 1: - raise TypeError(\"Can be at most one positional argument\") - opts = dict((args[0] if args else ()), \*\*opts) - for attrs in (self.colorAttrs, self.fontAttrs): - for attrName in attrs.attrNames: - val = opts.pop(attrName, None) - if val is not None: - setattr(attrs, attrName, val) - _emptyParametersCheck(\*\*opts) - - ########################################################################### - @classmethod - def loadTheme(cls, themeFile, canDelete=True): - themeFile = util.Path(themeFile, lambda f: f.isfile() and f.ext=='.el') - themeSexpr = textwrap.dedent(\"\"\"\\ - (progn (add-to-list 'load-path \"%(elDir)s\") - (add-to-list 'load-path \"%(elDir)s/python\") - (add-to-list 'load-path \"%(elDir)s/imported\") - (require 'themes) - (load \"%(themeFile)s\") - (write-region (themes-python-theme-attrs) nil \"%(outFile)s\") - (kill-emacs))\"\"\") - themeSexpr = ' '.join(themeSexpr.split()) - outFile = (util.dirPath('\$TEMP')/'themeAttrs.py').uniquify() - themeSexpr %= {'elDir': util.Path('~/emacs').emacsName, - 'themeFile': themeFile.stripext().emacsName, - 'outFile': outFile.emacsName} - try: - subprocess.check_call(['emacs.exe', '--no-init-file', - '--iconic', '--eval', themeSexpr], - shell=True) - themeOpts, facesAttrs = eval(outFile.text().replace('\\r\\n','\\n')) - # convert the font string spec returned by emacs to fontAttrs - # argumets expected by __init__ - font = Font(themeOpts.pop('font')) - themeOpts.update(fontSize=font.size, fontWeight=font.weight, - fontSlant=font.slant, canDelete=canDelete) - themeName = themeFile.namebase - return cls(themeName, facesAttrs=facesAttrs, \*\*themeOpts) - finally: - if outFile.isfile(): - outFile.remove() - - ########################################################################### - def copy(self, newThemeName, \*\*newThemeOpts): - newTheme = copy.deepcopy(self) - newTheme.__name = newThemeName - newTheme.update(newThemeOpts) - return newTheme - - ########################################################################### - def __eq__(self, peer): - if not isinstance(peer, EmacsFrameTheme): - return NotImplemented - return (self.name == peer.name and - self.foregroundColor == peer.foregroundColor and - self.backgroundColor == peer.backgroundColor and - self.font == peer.font and - self.facesAttrs == peer.facesAttrs) - - ########################################################################### - def __neq__(self, peer): - return not(self == peer) - - ########################################################################### - @property - def sexpr(self): - cursor = Face('cursor', self, background=self.colorAttrs.cursorColor) - faces = [self.defaultFace, cursor] + list(self.facesAttrs) - return \"(progn\\n %s)\" % \"\\n \".join(f.setFaceSexpr() for f in faces) - - ########################################################################### - __applyFormat = \"%(sexpr)s\\n(themes-save-cache-file (quote %(sexpr)s))\" - - ########################################################################### - def applyTheme(self): - lisp(self.__applyFormat % dict(sexpr=self.sexpr)) - - ########################################################################### - def accessor(self, \*p, \*\*kw): - return ThemeAccessor(self, \*p, \*\*kw) - - ########################################################################### - def choice(self, \*p, \*\*kw): - return ThemeChoice(self, \*p, \*\*kw) - -############################################################################### -def cacheFilePath(path): - return util.Path(path, lambda f: not(f.isdir())) - -############################################################################### -class EmacsFrameThemes(object, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.slots(\"__themes\") - __cldef.field('cacheFile', 'ri', sethook=cacheFilePath) - __cldef.field(\"saveEnabled\", 'rw', initval=True, sethook=bool) - __cldef.field(\"current\", 'rw', - fset=lambda obj,theme: obj.setCurrentTheme(theme)) - - ########################################################################### - def __new__(cls, themeMgr=None): - if themeMgr is None: - # pickle internals called __new__ SURPRISE! - return object.__new__(cls) - if themeMgr.cacheFile.isfile(): - # load themes from cache file - return cls.loadCache_i(themeMgr.cacheFile) - themes = object.__new__(cls) - elispFiles = themeMgr.archive.files('\*.el') - if elispFiles: - # load themes from a collection (archive) of elisp files created - # this module and emacs can use to initialize themes - themes.loadArchive_i(elispFiles, themeMgr.cacheFile) - else: - # create themes using a few 'canned' themes - themes.bootstrap_i(themeMgr.cacheFile) - return themes - - ########################################################################### - @classmethod - def loadCache_i(cls, cacheFile): - try: - with cacheFile.open('rb') as cacheFP: - themes = pickle.load(cacheFP) - except: - # If file has windows newlines '\\r\\n', read it as text which - # converting newlines, encode to bytes and retry loading - themes = pickle.loads(cacheFile.text().encode()) - assert isinstance(themes, cls) - themes.__cacheFile = cacheFilePath(cacheFile) - return themes - - ########################################################################### - def loadArchive_i(self, elispFiles, cacheFile): - self.__themes = [] - self.cacheFile, self.saveEnabled = cacheFile, False - elispFiles = dict((f.namebase, f) for f in elispFiles) - # load archive files in (standard themes) order. if no arcive file - # is named after a standard theme, create it using provided args - for thName,thOpts in ((d['name'],d) for d in self.standardThemes()): - elispFile = elispFiles.pop(thName, None) - if elispFile is not None: - self.addTheme(EmacsFrameTheme.loadTheme( - elispFile, thOpts['canDelete'])) - else: - self.addTheme(EmacsFrameTheme(\*\*thOpts)) - # load any remaining archive files - for elispFile in sorted(elispFiles.values()): - self.addTheme(EmacsFrameTheme.loadTheme(elispFile)) - self.current = self.__themes[0] - self.saveEnabled = True - self.save() - - ########################################################################### - @staticmethod - def standardThemes(): - return [dict(name='dark_frames', canDelete=False), - dict(name='red_frames', canDelete=False, - backgroundColor=\"RGB:55/0/0\"), - dict(name=\"green_frames\", canDelete=False, - backgroundColor=\"RGB:16/25/25\"), - dict(name=\"blue_frames\", canDelete=False, - backgroundColor=\"RGB:0B/0B/2D\"), - dict(name=\"light_frames\", canDelete=False, - foregroundColor='black', - backgroundColor='white')] - - ########################################################################### - def bootstrap_i(self, cacheFile): - self.__themes = [] - self.cacheFile, self.saveEnabled = cacheFile, False - # create dark theme as current theme - self.current = EmacsFrameTheme(\"dark_frames\", canDelete=False) - # create red theme - self.addTheme(EmacsFrameTheme(\"red_frames\", canDelete=False, - backgroundColor=\"RGB:55/0/0\")) - # create green theme - self.addTheme(EmacsFrameTheme(\"green_frames\", canDelete=False, - backgroundColor=\"RGB:16/25/25\")) - # create blue theme - self.addTheme(EmacsFrameTheme(\"blue_frames\", canDelete=False, - backgroundColor=\"RGB:0B/0B/2D\")) - # create light theme from default - self.addTheme(EmacsFrameTheme(\"light_frames\", canDelete=False, - foregroundColor='black', - backgroundColor='white')) - self.saveEnabled = True - self.save() - - ########################################################################### - def reset(self, prototype, copy=True): - assert type(self) is type(prototype) - if copy: - prototype = copy.deepcopy(prototype) - for attr in self.__slots__: - setattr(self, attr, getattr(prototype, attr)) - self.save() - - ########################################################################### - def save(self): - if self.saveEnabled: - with self.cacheFile.open('wb') as cacheFile: - pickle.dump(self, cacheFile) - - ########################################################################### - def addTheme(self, theme): - if theme.name in self: - raise KeyError(\"theme.name(%s) is not unique\" % theme.name) - self.__themes.append(theme) - self.save() - - ########################################################################### - def getTheme(self, name, exact=True, default=None): - if exact: - for theme in self.__themes: - if theme.name == name: - return theme - else: - name = name.strip().lower() - for theme in self.__themes: - if name in theme.name.lower(): - return theme - return default - - ########################################################################### - def setCurrentTheme(self, theme): - if isinstance(theme,str): - theme = self.getTheme(theme) - if isinstance(theme, EmacsFrameTheme): - self.__current = theme - if theme not in self: - self.addTheme(theme) - else: - raise ValueError(\"%s invalid theme\" % theme) - - ########################################################################### - def removeTheme(self, theme, force=False): - # arg can be either a theme instance or a str naming the theme - if isinstance(theme,str): - theme = self.getTheme(theme) - if not force: - if len(self.__themes) == 1: - raise ValueError(\"Can't remove last theme\") - if not theme.canDelete: - raise ValueError(\"Theme %s can't be removed\" % theme.name) - # remove the theme from both the themes list - self.__themes.remove(theme) - # adjust current attr if theme deleted was current one - if theme == self.__current: - try: - self.__current = self.__themes[0] - except IndexError: - del self.__current - self.save() - - ########################################################################### - def swapThemes(self, theme1, theme2): - if isinstance(theme1, str): - theme1 = self.getTheme(theme1) - if isinstance(theme2, str): - theme2 = self.getTheme(theme2) - index1 = self.__themes.index(theme1) - index2 = self.__themes.index(theme2) - self.__themes[index2] = theme1 - self.__themes[index1] = theme2 - - ########################################################################### - def __iter__(self): - return iter(self.__themes) - - ########################################################################### - def __len__(self): - return len(self.__themes) - - ########################################################################### - def __contains__(self, item): - if isinstance(item, str): - return item in (theme.name for theme in self.__themes) - return item in self.__themes - -############################################################################### -class EmacsFrameThemeManager(datatypes.Singleton, metaclass=cldef.metaClass): - __cldef = cldef.metaClass.wrapclass() - __cldef.fields('themesDir cacheFile archive') - __cldef.field('themes', 'r', initfunc=lambda obj: EmacsFrameThemes(obj)) - currentTheme = property(lambda self: self.themes.current) - - ########################################################################### - def newSingleton_i(self, themesDir=None): - self.__super.newSingleton_i() - if themesDir is None: - themesDir = '\$APPDATA/_emacsthemes_v%d' % version - self.themesDir = util.dirPath(themesDir) - archive = self.themesDir/'archive' - if not archive.exists(): - archive.mkdir() - self.archive = util.dirPath(archive) - self.cacheFile = self.themesDir/'cache.pkl' - - ########################################################################### - def applyNamedTheme(self, themeName, exact=True): - themeName = themeName.replace(\"-\",\"_\") - self.__themes.current = self.__themes.getTheme(themeName, exact) - self.currentTheme.applyTheme() - - ########################################################################### - def setFrameTheme(self, themeName, \*\*themeOpts): - self.__themes.current = themeName - self.currentTheme.update(themeOpts) - self.currentTheme.applyTheme() - - ########################################################################### - def gui(self): - global EmacsFrameThemesApp - try: - guiRun = EmacsFrameThemesApp.run - except NameError: - from themes.thgui import EmacsFrameThemesApp - guiRun = EmacsFrameThemesApp.run - guiRun(self, tuple(i+50 for i in emacsPosition())) - - ########################################################################### - def archiveThemes(self): - textFormat = textwrap.dedent(\"\"\"\\ - ;;; %s :: %s -\*-Emacs-Lisp-\*- - ;;; -- Used by themes.el for persistance of current frame theme - ;;; settings across emacs invocations - %s - \"\"\") - for theme in self.themes: - archiveFile = self.archive/(theme.name + '.el') - timeStr = datetime.datetime.now().strftime(\"%a %b %d %H:%M:%S %Y\") - archiveFile.write_text( - textFormat % (archiveFile.name, timeStr, theme.sexpr)) -")) - (py-bug-tests-intern 'pyindex-mishandles-class-definitions-lp-1018164-base arg teststring))) - -(defun pyindex-mishandles-class-definitions-lp-1018164-base () - (goto-char 25548) - (assert (eq 26242 (py-end-of-def-or-class)) nil "pyindex-mishandles-class-definitions-lp-1018164-test failed")) - -(defun exception-in-except-clause-highlighted-as-keyword-lp-909205-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -try: - blah -except ormexc.NoResultFound: - pass -")) - (py-bug-tests-intern 'exception-in-except-clause-highlighted-as-keyword-lp-909205-base arg teststring))) - -(defun exception-in-except-clause-highlighted-as-keyword-lp-909205-base () - (font-lock-fontify-buffer) - (goto-char 65) - ;; (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'font-lock-keyword-face) nil "exception-in-except-clause-highlighted-as-keyword-lp-909205-test #1 failed") - (goto-char 77) - (assert (eq (get-char-property (point) 'face) 'py-exception-name-face) nil "exception-in-except-clause-highlighted-as-keyword-lp-909205-test #2 failed") - ) - -(defun inconvenient-window-splitting-behavior-python-lp-1018996-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import re -import sys -import os -re. -os. -")) - (py-bug-tests-intern 'inconvenient-window-splitting-behavior-python-lp-1018996-base arg teststring))) - -(defun inconvenient-window-splitting-behavior-python-lp-1018996-base () - (goto-char 82) - (py-shell-complete nil t) - (assert (string-match "^re." (car py-shell-complete-debug)) nil "inconvenient-window-splitting-behavior-python-lp-1018996-test #1 failed") - (goto-char 86) - (py-shell-complete nil t) - (assert (string-match "^os." (car py-shell-complete-debug)) nil "inconvenient-window-splitting-behavior-python-lp-1018996-test #2 failed")) - -(defun inconvenient-window-splitting-behavior-ipython-lp-1018996-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env ipython -# -*- coding: utf-8 -*- -import re -import sys -import os -re. -os. -")) - (py-bug-tests-intern 'inconvenient-window-splitting-behavior-ipython-lp-1018996-base arg teststring))) - -(defun inconvenient-window-splitting-behavior-ipython-lp-1018996-base () - (goto-char 83) - (py-shell-complete nil t) - (assert (string-match "^re." (car py-shell-complete-debug)) nil "inconvenient-window-splitting-behavior-ipython-lp-1018996-test #1 failed") - (goto-char 87) - (py-shell-complete nil t) - (assert (string-match "^os." (car py-shell-complete-debug)) nil "inconvenient-window-splitting-behavior-ipython-lp-1018996-test #2 failed")) - -(defun impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -from __future__ import with_statement -print(\"I'm the \\\"impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-test\\\"\") -")) - (py-bug-tests-intern 'impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-base arg teststring))) - -(defun impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-base () - (sit-for 0.1) - (assert (py-execute-buffer) nil "impossible-to-execute-a-buffer-with-from-future-imports-lp-1063884-test failed")) - -(defun several-new-bugs-with-paragraph-filling-lp-1066489-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -class IBanManager(Interface): - \"\"\"The global manager of email address bans.\"\"\" - - def ban(email): - \"\"\"Ban an email address from subscribing to a mailing list. - - The `IBanManager` is created by adapting an `IMailingList` or ``None``. - For global bans, use ``None``. - - When an email address is banned, it will not be allowed to subscribe - to a the named mailing list. This does not affect any email address - already subscribed to the mailing list. - - It is also possible to add a 'ban pattern' whereby all email addresses - matching a Python regular expression can be banned. This is - accomplished by using a `^` as the first character in `email`. - - When an email address is already banned for the given mailing list (or - globally), then this method does nothing. However, it is possible to - extend a ban for a specific mailing list into a global ban; both bans - would be in place and they can be removed individually. - - :param email: The text email address being banned or, if the string - starts with a caret (^), the email address pattern to ban. - :type email: str - :param mailing_list: The fqdn name of the mailing list to which the - ban applies. If None, then the ban is global. - :type mailing_list: string - \"\"\" -")) - (py-bug-tests-intern 'several-new-bugs-with-paragraph-filling-lp-1066489-base arg teststring))) - -(defun several-new-bugs-with-paragraph-filling-lp-1066489-base () - (let (py-paragraph-fill-docstring-p) - (goto-char 932) - (py-fill-paragraph) - (assert (re-search-forward "^ +:type email") nil "several-new-bugs-with-paragraph-filling-lp-1066489-test failed"))) - -(defun incorrect-indentation-of-one-line-functions-lp-1067633-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - pass -")) - (py-bug-tests-intern 'incorrect-indentation-of-one-line-functions-lp-1067633-base arg teststring))) - -(defun incorrect-indentation-of-one-line-functions-lp-1067633-base () - (goto-char 67) - (assert (eq 4 (py-compute-indentation)) nil "incorrect-indentation-of-one-line-functions-lp-1067633-test failed")) - -(defun does-not-dedent-regions-lp-1072869-test (&optional arg) - (interactive "p") - (let ((teststring " print(\"HELLO\")")) - (py-bug-tests-intern 'does-not-dedent-regions-lp-1072869-base arg teststring))) - -(defun does-not-dedent-regions-lp-1072869-base () - (assert (py-execute-buffer-ipython) nil "does-not-dedent-regions-lp-1072869-test #1 failed") - (assert (py-execute-buffer-python) nil "does-not-dedent-regions-lp-1072869-test #2 failed") - ) - -(defun inconvenient-py-switch-buffers-on-execute-lp-1073-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -print \"HELLO!\" -")) - (py-bug-tests-intern 'inconvenient-py-switch-buffers-on-execute-lp-1073-base arg teststring))) - -;; doesn't word, patches welcome -(defun inconvenient-py-switch-buffers-on-execute-lp-1073-base () - (let ((py-switch-buffers-on-execute-p t) - erg) - (py-execute-buffer-python) - (message "current: %s" (buffer-name (current-buffer))) - (setq erg (string-match "Python" (buffer-name (current-buffer)))) - ;; (assert erg nil "inconvenient-py-switch-buffers-on-execute-lp-1073-test failed") - (switch-to-buffer (current-buffer)) - )) - -(defun fails-to-indent-abs-wrong-type-argument-lp-1075673-test (&optional arg) - (interactive "p") - (let ((teststring "#!/usr/bin/env python -# emacs: -\*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -\*- -# vi: set ft=python sts=4 ts=4 sw=4 et: -### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## -# -# See COPYING file distributed along with the PyMVPA package for the -# copyright and license terms. -# -### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## -\"\"\"Python distutils setup for PyMVPA\"\"\" - -from numpy.distutils.core import setup, Extension -import os -import sys -from glob import glob - -if sys.version_info[:2] < (2, 5): -")) - (py-bug-tests-intern 'fails-to-indent-abs-wrong-type-argument-lp-1075673-base arg teststring))) - -(defun fails-to-indent-abs-wrong-type-argument-lp-1075673-base () - (assert (eq 4 (py-compute-indentation)) nil "fails-to-indent-abs-wrong-type-argument-lp-1075673-test failed")) - -(defun incorrect-indentation-of-comments-in-a-multiline-list-lp-1077063-test (&optional arg) - (interactive "p") - (let ((teststring "#!/usr/bin/python -#emacs: -\*- mode: python; py-indent-offset: 4; tab-width: 4; indent-tabs-mode: nil -\*- -#ex: set sts=4 ts=4 sw=4 noet: - -class X: - XX = [ - \"asdfasdF\", - \"asdfasdf\", - # lakjsdflkjasdf - \"lkajsdlkfj\" - ] - -# There is no way to indent #comment line with TAB, nor subsequent list entry to the level of previous -# entries - -")) - (py-bug-tests-intern 'incorrect-indentation-of-comments-in-a-multiline-list-lp-1077063-base arg teststring))) - -(defun incorrect-indentation-of-comments-in-a-multiline-list-lp-1077063-base () - (goto-char 202) - (assert (eq 8 (py-compute-indentation)) nil "incorrect-indentation-of-comments-in-a-multiline-list-lp-1077063-test failed")) - -(defun fill-paragraph-in-a-comment-does-not-stop-at-empty-comment-lines-lp-1077139-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# in older version of python-mode (5.1.0) fill-paragraph (Alt-q) e.g. on first line of - -# line1: alskdjfl aksdjlfkas dklfj aslkdjf aklsdj flkasjd fklasjd lfkasj dlkfj asdklfj aslkdfj -# -# line2 - -# would fill only portion of line1: - -# line1: alskdjfl aksdjlfkas dklfj aslkdjf aklsdj flkasjd fklasjd -# lfkasj dlkfj asdklfj aslkdfj -# -# line2 - -# while current version disregards such stop paragraph separation... unless it is at the beginning of the -# buffer!! ;), so adding an empty line before the first comment line of this test example, results in: - -# line1: alskdjfl aksdjlfkas dklfj aslkdjf aklsdj flkasjd fklasjd -# lfkasj dlkfj asdklfj aslkdfj line2 - -")) - (py-bug-tests-intern 'fill-paragraph-in-a-comment-does-not-stop-at-empty-comment-lines-lp-1077139-base arg teststring))) - -(defun fill-paragraph-in-a-comment-does-not-stop-at-empty-comment-lines-lp-1077139-base () - (let ((empty-comment-line-separates-paragraph-p t)) - (goto-char 152) - (fill-paragraph) - (goto-char 233) - (beginning-of-line) - (assert (looking-at paragraph-separate) nil "fill-paragraph-in-a-comment-does-not-stop-at-empty-comment-lines-lp-1077139-test failed"))) - -(defun spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -# originally it actually added indentation level in my case so code became - -# @sweepargs(clf=[kNN(5)]) #clfswh['multiclass']) -# def test_auc(self, clf): -# pass - -# but on example to reproduce -class A(object): - def prev(): - pass - - @decorator(1) lkajsd - def buga(): - pass - -# attempt to insert # before lkajsd actually dedented it and made it - -class A(object): - def prev(): - pass - -@decorator(1) #lkajsd - def buga(): - pass - -# imho making inline comment should not alter whole line indentation - -")) - (py-bug-tests-intern 'spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-base arg teststring))) - -(defun spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-base () - (goto-char 312) - (assert (eq 4 (py-compute-indentation)) nil "spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-test #1 failed") - (goto-char 349) - (assert (eq 4 (py-compute-indentation)) nil "spuriously-indents-whole-line-while-making-some-portion-inline-comment-lp-1080973-test #2 failed") - ) - -(defun imenu-add-menubar-index-fails-lp-1084503-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -")) - (py-bug-tests-intern 'imenu-add-menubar-index-fails-lp-1084503-base arg teststring))) - -(defun imenu-add-menubar-index-fails-lp-1084503-base () - (assert (imenu-add-menubar-index) nil "imenu-add-menubar-index-fails-lp-1084503-test failed")) - -(defun fill-paragraph-in-comments-results-in-mess-lp-1084769-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def update(): - # We need to get a reliable checksum for the dictionary in - # newpkg_list. Dictionary order is unpredictable, so to get a - # reproducible checksum, we get the items of the dict, sort on the - # keys, then get the json representation of this sorted list, encode - # this to bytes assuming utf-8, and hash - # the resulting bytes. -")) - (py-bug-tests-intern 'fill-paragraph-in-comments-results-in-mess-lp-1084769-base arg teststring))) - -(defun fill-paragraph-in-comments-results-in-mess-lp-1084769-base () - (goto-char 266) - (fill-paragraph) - (beginning-of-line) - (assert (looking-at " ") nil "fill-paragraph-in-comments-results-in-mess-lp-1084769-test failed")) - -(defun py-execute-buffer-python3-looks-broken-lp-1085386-test (&optional arg) - (interactive "p") - (let ((teststring "i = 0 -i+=1 -print(i) -")) - (py-bug-tests-intern 'py-execute-buffer-python3-looks-broken-lp-1085386-base arg teststring))) - -(defun py-execute-buffer-python3-looks-broken-lp-1085386-base () - (let ((py-use-current-dir-when-execute-p t)) - (assert (py-execute-buffer-python3) nil "py-execute-buffer-python3-looks-broken-lp-1085386-test failed"))) - -(defun wrong-indent-after-asignment-lp-1087404-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -a = 1 -# After pressing enter column 1 as expected -b = [1] - -# Now after pressing enter indents to column 4 - -")) - (py-bug-tests-intern 'wrong-indent-after-asignment-lp-1087404-base arg teststring))) - -(defun wrong-indent-after-asignment-lp-1087404-base () - (goto-char 106) - (assert (eq 0 (py-compute-indentation)) nil "wrong-indent-after-asignment-lp-1087404-test failed")) - -(defun wrong-indentation-after-return-or-pass-keyword-lp-1087499-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -class Foo(self): - def bar(self): - return self.baz - -class Baz(self): - def bar(self): - pass - -")) - (py-bug-tests-intern 'wrong-indentation-after-return-or-pass-keyword-lp-1087499-base arg teststring))) - -(defun wrong-indentation-after-return-or-pass-keyword-lp-1087499-base () - (goto-char 108) - (assert (eq 4 (py-compute-indentation)) nil "wrong-indentation-after-return-or-pass-keyword-lp-1087499-test failed") - (goto-char 158) - (assert (py-compute-indentation) nil "wrong-indentation-after-return-or-pass-keyword-lp-1087499-test failed")) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n1-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import os -import urllib -os.chdir(\"NOT-EXISTING\") -f = urllib.urlopen(\"NOT-EXISTING.html\") -for lines in f: - print(lines) -")) - (py-bug-tests-intern 'temporary-files-remain-when-python-raises-exception-lp-1083973-n1-base arg teststring))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n1-base () - (let ((python-mode-v5-behavior-p t)) - (py-execute-buffer) - (assert (eobp) nil "temporary-files-remain-when-python-raises-exception-lp-1083973-n1-test failed"))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n2-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import os -import urllib -f = urllib.urlopen(\"NOT-EXISTING.html\") -for lines in f: - print(lines) -")) - (py-bug-tests-intern 'temporary-files-remain-when-python-raises-exception-lp-1083973-n2-base arg teststring))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n2-base () - (let ((python-mode-v5-behavior-p t)) - (py-execute-buffer) - (assert (eq 72 (point)) nil "temporary-files-remain-when-python-raises-exception-lp-1083973-n2-test failed"))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n3-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import os -import urllib -f = urllib.urlopen(\"NOT-EXISTING.html\") -for lines in f: - print(lines) -")) - (py-bug-tests-intern 'temporary-files-remain-when-python-raises-exception-lp-1083973-n3-base arg teststring))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n3-base () - (py-execute-buffer) - (assert (eq 163 (point)) nil "temporary-files-remain-when-python-raises-exception-lp-1083973-n3-test failed")) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n4-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -import os -import urllib -f = urllib.urlopen(\"NOT-EXISTING.html\") -for lines in f: - print(lines) -")) - (py-bug-tests-intern 'temporary-files-remain-when-python-raises-exception-lp-1083973-n4-base arg teststring))) - -(defun temporary-files-remain-when-python-raises-exception-lp-1083973-n4-base () - (py-execute-buffer) - (switch-to-buffer (current-buffer)) - (sit-for 0.1) - (message "Bin hier %s" (buffer-name (current-buffer))) - (assert (eq 163 (point)) nil "temporary-files-remain-when-python-raises-exception-lp-1083973-n4-test failed")) - -(defun comments-start-a-new-line-lp-1092847-n1-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# I am using python-mode.el in Emacs to edit some Python code and it has the most annoying feature where it -# auto-indents a comment and then starts a new line. For example, if I have this: - -def x(): - y = 1 - - -And then add in one # at the root indentation level: - -def x(): - y = 1 - - # - - -# It automatically indents, inserts the #, and inserts a carriage return after the #. It's driving me crazy. -# I want my comments to stay exactly where I put them! Any suggestions? - -# I've looked through the elisp code for the mode and can't find anything yet nor can I find anything -# elsewhere online. All I can find is that comments won't be used for future indentation (py-honor-comment- -# indentation) but nothing related to the comment itself. Nor the strange carriage return. - -")) - (py-bug-tests-intern 'comments-start-a-new-line-lp-1092847-n1-base arg teststring))) - -(defun comments-start-a-new-line-lp-1092847-n1-base () - (let ((py-electric-comment-p t)) - (goto-char 258) - (py-electric-comment 1) - (back-to-indentation) - (assert (eq 4 (current-column)) nil "comments-start-a-new-line-lp-1092847-n1-test failed"))) - -(defun comments-start-a-new-line-lp-1092847-n2-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# I am using python-mode.el in Emacs to edit some Python code and it has the most annoying feature where it -# auto-indents a comment and then starts a new line. For example, if I have this: - -def x(): - y = 1 - - -And then add in one # at the root indentation level: - -def x(): - y = 1 - - # - - -# It automatically indents, inserts the #, and inserts a carriage return after the #. It's driving me crazy. -# I want my comments to stay exactly where I put them! Any suggestions? - -# I've looked through the elisp code for the mode and can't find anything yet nor can I find anything -# elsewhere online. All I can find is that comments won't be used for future indentation (py-honor-comment- -# indentation) but nothing related to the comment itself. Nor the strange carriage return. - -")) - (py-bug-tests-intern 'comments-start-a-new-line-lp-1092847-n2-base arg teststring))) - -(defun comments-start-a-new-line-lp-1092847-n2-base () - (let ((py-electric-comment-p nil)) - (goto-char 258) - (py-electric-comment 1) - (back-to-indentation) - (assert (eq 0 (current-column)) nil "comments-start-a-new-line-lp-1092847-n2-test failed"))) - -(defun filename-completion-fails-in-ipython-lp-1027265-n1-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -a = open('/ho') -")) - (py-bug-tests-intern 'filename-completion-fails-in-ipython-lp-1027265-n1-base arg teststring))) - -(defun filename-completion-fails-in-ipython-lp-1027265-n1-base () - (goto-char 61) - (completion-at-point) - (assert (eq 63 (point)) nil "filename-completion-fails-in-ipython-lp-1027265-n1-test failed")) - -(defun filename-completion-fails-in-ipython-lp-1027265-n2-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env ipython -# -*- coding: utf-8 -*- -a = open('/ho') -")) - (py-bug-tests-intern 'filename-completion-fails-in-ipython-lp-1027265-n2-base arg teststring))) - -(defun filename-completion-fails-in-ipython-lp-1027265-n2-base () - (goto-char 62) - (completion-at-point) - (assert (eq 65 (point)) nil "filename-completion-fails-in-ipython-lp-1027265-n2-test failed")) - -(defun enter-key-does-not-indent-properly-after-return-statement-lp-1098793-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - while something(): - bar() - baz() - return 1 - -# Once the cursor is placed after \"return 1\" and I hit enter, on the next line, the cursor is placed under -# the \"r\" in return statement, instead of moving indentation to the outer block. -# -# \"ENTER\" key is bound to (py-newline-and-indent) -# -# Some version information: -# -# emacs-version -# \"GNU Emacs 24.2.1 (i686-pc-cygwin) of 2012-08-27 on fiona\" -# py-version -# \"6.1.0\" - -")) - (py-bug-tests-intern 'enter-key-does-not-indent-properly-after-return-statement-lp-1098793-base arg teststring))) - -(defun enter-key-does-not-indent-properly-after-return-statement-lp-1098793-base () - (goto-char 119) - (assert (eq 0 (py-compute-indentation)) nil "enter-key-does-not-indent-properly-after-return-statement-lp-1098793-test failed")) - -(defun py-up-test-python-el-111-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- -# up-list: Scan error: \"Unbalanced parentheses\" -# Hi, when I press C-M-u in python buffer I get: -# -# up-list: Scan error: \"Unbalanced parentheses\" - -# My expected behavior is something like this: -# -# Scenario: Going higher level by C-M-u -# When I insert: - -# def f(): -# if True: -# [i for i in range(3)] - -# And I am looking at \"3)]\" -# And I press C-M-u -# Then I should looking at \"(3)]\" -# And I press C-M-u -# Then I should looking at \"[i for i\" -# And I press C-M-u -# Then I should looking at \"if True\" -# And I press C-M-u -# Then I should looking at \"def f\" -# -# related: #106 - -def f(): - if True: - print(\"[i for i in range(3)]: %s \" % ([i for i in range(3)])) - -")) - (py-bug-tests-intern 'py-up-test-python-el-111-base arg teststring))) - -(defun py-up-test-python-el-111-base () - (goto-char 757) - (assert (eq 756 (py-up)) nil "py-up-test-python-el-111-test #1 failed") - (assert (eq 739 (py-up)) nil "py-up-test-python-el-111-test #2 failed") - (assert (eq 738 (py-up)) nil "py-up-test-python-el-111-test #3 failed") - (assert (eq 706 (py-up)) nil "py-up-test-python-el-111-test #4 failed") - (assert (eq 701 (py-up)) nil "py-up-test-python-el-111-test #5 failed") - (assert (eq 684 (py-up)) nil "py-up-test-python-el-111-test #6 failed") - (assert (eq 671 (py-up)) nil "py-up-test-python-el-111-test #7 failed") - (goto-char 726) - (assert (eq 707 (py-up)) nil "py-up-test-python-el-111-test #8 failed") - (assert (eq 706 (py-up)) nil "py-up-test-python-el-111-test #9 failed") - ) - -(defun py-down-python-el-112-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# Scenario: Going lover level by C-M-d -# When I insert: - -class C(object): - def m(self): - if True: - return [i for i in range(3)] - else: - return [] - - # And I am looking at \"class C\" - # And I press C-M-d - # Then I should looking at \"def m\" - # And I press C-M-d - # Then I should looking at \"if True\" - # And I press C-M-d - # Then I should looking at \"i for i\" - # And I press C-M-d - # Then I should looking at \"3\" - -# Current version of C-M-d jumps to inside of (object) -# because it is just a plain down-list. I think it's -# better to have python-specific one for symmetry. - -")) - (py-bug-tests-intern 'py-down-python-el-112-base arg teststring))) - -(defun py-down-python-el-112-base () - (goto-char 109) - (assert (eq 130 (py-down)) nil "py-down-test-python-el-112-test #1 failed") - (assert (eq 151 (py-down)) nil "py-down-test-python-el-112-test #2 failed") - (assert (eq 172 (py-down)) nil "py-down-test-python-el-112-test #3 failed") - (assert (eq 179 (py-down)) nil "py-down-test-python-el-112-test #4 failed") - (assert (eq 196 (py-down)) nil "py-down-test-python-el-112-test #5 failed") -) - -(defun py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -_ -")) - (py-bug-tests-intern 'py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-base arg teststring))) - -(defun py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-base () - (goto-char 48) - (py-underscore-word-syntax-p-on) - (assert (eq 119 (char-syntax (char-after))) nil "py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-test #1 failed") - (py-underscore-word-syntax-p-off) - (assert (eq 95 (char-syntax (char-after))) nil "py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-test #2 failed") - (py-underscore-word-syntax-p-on) - (assert (eq 119 (char-syntax (char-after))) nil "py-underscore-word-syntax-p-customization-has-no-effect-lp-1100947-test #3 failed") -) - -(defun py-newline-and-indent-leaves-eol-whitespace-lp-1100892-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- -# py-newline-and-indent leaves extra whitespace at eol if used inside an existing construct. It should -# instead clean up all trailing whitespace. I believe this is a regression. - -def foo(): - x = some_long_call(supercalifragilistic=6, expialidocious=7) - -# Now, put point on the 'e' of expialidocious and hit RET - -# You will see that there's an extra space left after the \"6, \". All trailing whitespace should instead be -# removed. - -")) - (py-bug-tests-intern 'py-newline-and-indent-leaves-eol-whitespace-lp-1100892-base arg teststring))) - -(defun py-newline-and-indent-leaves-eol-whitespace-lp-1100892-base () - (let ((py-newline-delete-trailing-whitespace-p t)) - (goto-char 286) - (py-newline-and-indent) - (sit-for 0.1) - (skip-chars-backward " \t\r\n\f") - (assert (eq (char-after) 10) nil "py-newline-and-indent-leaves-eol-whitespace-lp-1100892-test failed"))) - -(defun module-docstring-when-following-comment-lp-1102011-test (&optional arg) - (interactive "p") - (let ((teststring "# -*- coding: utf-8 -*- -# ***************************************************************************** -# -# Copyright (c) 2009-2012 by the contributors (see AUTHORS) -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Module authors: -# Georg Brandl -# -# ***************************************************************************** -\"\"\"Some docstring.\"\"\" - -__version__ = \"\$Revision\$\" - -")) - (py-bug-tests-intern 'module-docstring-when-following-comment-lp-1102011-base arg teststring))) - -(defun module-docstring-when-following-comment-lp-1102011-base () - (let ((py-use-font-lock-doc-face-p t)) - (goto-char 1024) - (python-mode) - (font-lock-fontify-buffer) - (sit-for 1) - (assert (eq (face-at-point) 'font-lock-doc-face) nil "module-docstring-when-following-comment-lp-1102011-test failed"))) - -(defun ipython-complete-lp-1102226-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env ipython -# -*- coding: utf-8 -*- -import re -re. -")) - (py-bug-tests-intern 'ipython-complete-lp-1102226-base arg teststring))) - -(defun ipython-complete-lp-1102226-base () - (and (featurep 'company)(company-mode -1)) - (goto-char 62) - (ipython-complete) - ;; (set-buffer "*IPython Completions*") - ;; (switch-to-buffer (current-buffer)) - (assert (bufferp (get-buffer "*IPython Completions*")) nil "ipython-complete-lp-1102226-test failed")) - -(defun more-docstring-filling-woes-lp-1102296-pep-257-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-pep-257-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-pep-257-base () - (let ((py-docstring-style 'pep-257)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-pep-257-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-pep-257-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-test #2 done") - (goto-char 357) - (fill-paragraph) - (goto-char 436) - (sit-for 0.1) - (assert (empty-line-p) nil "more-docstring-filling-woes-lp-1102296-pep-257-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-test #3a done") - (forward-line 2) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-pep-257-test #3c failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-test #3c done"))) - -(defun more-docstring-filling-woes-lp-1102296-onetwo-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-onetwo-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-onetwo-base () - (let ((py-docstring-style 'onetwo)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-onetwo-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-onetwo-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-onetwo-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-onetwo-test #2 done") - (goto-char 357) - (fill-paragraph) - (beginning-of-line) - (sit-for 1) - ;; (message "%d" (skip-chars-forward " ")) - (assert (eq (skip-chars-forward " ") 8) nil "more-docstring-filling-woes-lp-1102296-onetwo-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-onetwo-test #3a done") - (save-excursion - (goto-char 357) - (forward-line 2) - (assert (empty-line-p) nil "more-docstring-filling-woes-lp-1102296-onetwo-test #3b failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-onetwo-test #3b done")) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-onetwo-test #3c failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-onetwo-test #3c done"))) - -(defun more-docstring-filling-woes-lp-1102296-django-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-django-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-django-base () - (let ((py-docstring-style 'django)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-django-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-django-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-django-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-django-test #2 done") - (goto-char 380) - (fill-paragraph) - (beginning-of-line) - (sit-for 0.1) - (assert (looking-at " \"\"\"") nil "more-docstring-filling-woes-lp-1102296-django-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-django-test #3a done") - (save-excursion - (goto-char 357) - (forward-line 1) - (assert (empty-line-p) nil "more-docstring-filling-woes-lp-1102296-django-test #3b failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-django-test #3b done")) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-django-test #3c failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-django-test #3c done"))) - -(defun more-docstring-filling-woes-lp-1102296-symmetric-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-symmetric-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-symmetric-base () - (let ((py-docstring-style 'symmetric)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-symmetric-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-symmetric-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-symmetric-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-symmetric-test #2 done") - (goto-char 380) - (fill-paragraph) - (beginning-of-line) - (sit-for 0.1) - (assert (looking-at " \"\"\"") nil "more-docstring-filling-woes-lp-1102296-symmetric-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-symmetric-test #3a done") - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-symmetric-test #3c failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-symmetric-test #3c done"))) - -(defun line-after-colon-with-inline-comment-lp-1109946-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def f(): - if a: - b - if c: # inline comment - - # |<---- cursor will not indent properly with > -")) - (py-bug-tests-intern 'line-after-colon-with-inline-comment-lp-1109946-base arg teststring))) - -(defun line-after-colon-with-inline-comment-lp-1109946-base () - (let ((py-indent-honors-inline-comment t)) - (goto-char 104) - (assert (eq 10 (py-compute-indentation)) nil "line-after-colon-with-inline-comment-lp-1109946-test failed"))) - -(defun cascading-indent-lp-1101962-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - pgdt = [] - pdwd = [] - cItemLik = [ ht(\"Item\", T.hr(), T.span(\"Like\", style= - \"background-color: rgb( 229, 200, 136 )\")), - lambda item: ht( item['!'], T.br(), like( item )) - ] -")) - (py-bug-tests-intern 'cascading-indent-lp-1101962-base arg teststring))) - -(defun cascading-indent-lp-1101962-base () - (goto-char 87) - (assert (eq 4 (py-compute-indentation)) nil "cascading-indent-lp-1101962-test failed")) - -(defun python-mode-very-slow-lp-1107037-test (&optional arg) - (interactive "p") - (let ((teststring "# Since the last few commits, python-mode is unbearably slow on nontrivial files. Even -# just moving around in the file makes Emacs use 100% CPU for a few seconds. -# -# If this is due to the fix for lp:1102011, I would rather live with the highlight bug :) -# Georg Brandl (gbrandl) wrote 11 hours ago: #2 -# -# Try the file below. I have narrowed the problem to the fix for lp:1102011 -- the regex -# \*must\* have pathological behavior (which wouldn't surprise me, such backtracking -# problems are very hard to fix). In general, for that many lines between module start -# and docstring, I think it is quite fine for python-mode not to color the docstring as -# such. I think the number of permitted comment lines should be restricted to 2, in order -# to accomodate a shebang line and a coding declaration. -# -\*- coding: utf-8 -\*- -# \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* -# -# Copyright (c) 2009-2012 by the contributors (see AUTHORS) -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Module authors: -# Georg Brandl -# -# \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* - -\"\"\"Some docstring.\"\"\" - -__version__ = \"$Revision: 1.76 $\" - -")) - (py-bug-tests-intern 'python-mode-very-slow-lp-1107037-base arg teststring))) - -(defun python-mode-very-slow-lp-1107037-base () - (let ((py-use-font-lock-doc-face-p t)) - (goto-char 1825) - (python-mode) - (font-lock-fontify-buffer) - (sit-for 1) - (assert (eq (face-at-point) 'font-lock-doc-face) nil "python-mode-very-slow-lp-1107037-test failed"))) - -(defun add-custom-switch-for-ffap-hooks-lp-1117119-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -/usr/lib/pyt -")) - (py-bug-tests-intern 'add-custom-switch-for-ffap-hooks-lp-1117119-base arg teststring))) - -(defun add-custom-switch-for-ffap-hooks-lp-1117119-base () - (let ((py-ffap-p t) - (python-ffap t)) - (goto-char 60) - (assert (member 'py-set-ffap-form python-mode-hook) nil "add-custom-switch-for-ffap-hooks-lp-1117119-test #1 failed") - )) - -(defun more-docstring-filling-woes-lp-1102296-nil-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-nil-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-nil-base () - (let ((py-docstring-style nil)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-nil-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-nil-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (sit-for 0.2) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-nil-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-nil-test #2 done") - (goto-char 380) - (fill-paragraph) - (back-to-indentation) - (sit-for 0.1) - (assert (eq (char-after) 34) nil "more-docstring-filling-woes-lp-1102296-nil-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-nil-test #3a done") - (search-forward "pass" nil t 1) - (beginning-of-line) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-nil-test #3c failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-nil-test #3c done"))) - -(defun more-docstring-filling-woes-lp-1102296-pep-257-nn-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# (I selected \"PEP-257-NN\" as the docstring fill style.) -# Given the following code: - -class Test(object): - \"\"\" - Builds target formats from the reST sources. - \"\"\" - - def method1(self): - \"\"\"Return the template bridge configured.\"\"\" - pass - - def method2(self): - \"\"\"Load necessary templates and perform initialization. The default implementation does nothing. - \"\"\" - pass - -# There are three misbehaviors here: -# \* should have removed the whitespace at the beginning and end of the class docstring -# \* in method1, the \"pass\" should remain on its own line -# \* in method2, the closing triple-quote should get its own line, and the \"pass\" too - -")) - (py-bug-tests-intern 'more-docstring-filling-woes-lp-1102296-pep-257-nn-base arg teststring))) - -(defun more-docstring-filling-woes-lp-1102296-pep-257-nn-base () - (let ((py-docstring-style 'pep-257-nn)) - (goto-char 178) - (assert (fill-paragraph) nil "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #1 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #1 done") - (goto-char 259) - (fill-paragraph) - (forward-line 1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #2 failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #2 done") - (goto-char 357) - (fill-paragraph) - (beginning-of-line) - (sit-for 0.1) - (assert (eq (current-indentation) 8) nil "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #3a failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #3a done") - (search-forward "pass") - (beginning-of-line) - (sit-for 0.1) - (assert (looking-at " pass") nil "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #3b failed") - (message "%s" "more-docstring-filling-woes-lp-1102296-pep-257-nn-test #3b done"))) - -(defun infinite-loop-on-lp-1156426-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -while mvi.t2 <= T: - -# calculate a spline for the kinematic inputs -#fname = 'data/monte_1000hz.mat' -")) - (py-bug-tests-intern 'infinite-loop-on-lp-1156426-base arg teststring))) - -(defun infinite-loop-on-lp-1156426-base () - (let ((py-indent-comments t)) - (goto-char 68) - (assert (eq 4 (py-compute-indentation)) nil "infinite-loop-on-lp-1156426-test #1 failed")) - (goto-char (point-max)) - (assert (eq 0 (py-compute-indentation)) nil "infinite-loop-on-lp-1156426-test #2 failed")) - -(defun fill-paragraph-in-docstring-lp-1161232-test (&optional arg) - (interactive "p") - (let ((teststring "def foo (): - \"\"\"Returns a rewritten path. - -Assuming that ``cr`` is a :class:`ContextRewriter` instance, that the rewriter maps the path ``views/`` to asdf asdf asdf asdf asdf asdf asdf asdf asdfasdf asdfasdf asdf asdf \"\"\" - pass -")) - (py-bug-tests-intern 'fill-paragraph-in-docstring-lp-1161232-base arg teststring))) - -(defun fill-paragraph-in-docstring-lp-1161232-base () - (goto-char 94) - (fill-paragraph t) - (sit-for 0.1) - (assert (eq (point) 51) nil "fill-paragraph-in-docstring-lp-1161232-test #1 failed") - (goto-char 249) - (sit-for 1) - (message "%s" (buffer-substring-no-properties (line-beginning-position) (line-end-position) )) - (assert (looking-at " pass") nil "fill-paragraph-in-docstring-lp-1161232-test #2 failed") - ) - -(defun wfmc-lp-1160022-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# which-func-misses-class-lp-1160022 -class kugel(object): - zeit = time.strftime('%Y%m%d--%H-%M-%S') - # zeit = time.strftime('%Y-%m-%d--%H-%M-%S') - spiel = [] - - def pylauf(self): - \"\"\"Eine Doku fuer pylauf\"\"\" - pass - -a = \"asdf\" -")) - (py-bug-tests-intern 'wfmc-lp-1160022-base arg teststring))) - -(defun wfmc-lp-1160022-base () - (imenu-add-menubar-index) - (goto-char 251) - (which-func-mode) - (company-mode -1) - (yas/minor-mode -1) - (hs-minor-mode -1) - (undo-tree-mode -1) - (abbrev-mode -1) - ;; (car (nth 2 (car '((#1="class kugel" (#1# . 85) ("kugel.pylauf" . 224)))))) - (assert (string= "kugel.pylauf" (car (nth 2 (eval '(car imenu--index-alist))))) nil "wfmc-lp-1160022-test failed")) - -(defun tab-results-in-never-ending-process-lp-1163423-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- - class asdf(object): - zeit = time.strftime('%Y%m%d--%H-%M-%S') - - def utf8_exists(filename): - return os.path.exists(filename.encode('utf-8')) -")) - (py-bug-tests-intern 'tab-results-in-never-ending-process-lp-1163423-base arg teststring))) - -(defun tab-results-in-never-ending-process-lp-1163423-base () - (let ((py-tab-indents-region-p t) - (py-tab-indent t)) - (goto-char 216) - (push-mark) - (goto-char 122) - (call-interactively 'py-indent-line) - (sit-for 0.1) - ;; (message "point: %s" (point)) - (assert (bolp) nil "tab-results-in-never-ending-process-lp-1163423-test failed"))) - -(defun loops-on-if-else-lp-328777-test (&optional arg) - (interactive "p") - (let ((teststring "x = (if 1: 2 - else: 3) -")) - (py-bug-tests-intern 'loops-on-if-else-lp-328777-base arg teststring))) - -(defun loops-on-if-else-lp-328777-base () - (goto-char 14) - (assert (eq 5 (py-compute-indentation)) nil "loops-on-if-else-lp-328777-test failed")) - -(defun nested-dictionaries-indent-again-lp:1174174-test (&optional arg) - "With ARG greater 1 keep test buffer open. - -If no `load-branch-function' is specified, make sure the appropriate branch is loaded. Otherwise default python-mode will be checked. " - (interactive "p") - (let ((teststring " -d = {'a':{'b':3, - 'c':4 - } - } - -d = {'a':{ - 'b':3, - 'c':4 - } - } -")) - 1174174 - (py-bug-tests-intern 'nested-dictionaries-indent-again-lp:1174174 arg teststring))) - -(defun nested-dictionaries-indent-again-lp:1174174 () - (let ((py-indent-honors-multiline-listing t)) - (goto-char 19) - (assert (eq 10 (py-compute-indentation)) nil "nested-dictionaries-indent-again-lp:1174174-test #1 failed") - (goto-char 35) - (assert (eq 10 (py-compute-indentation)) nil "nested-dictionaries-indent-again-lp:1174174-test #2 failed") - (goto-char 47) - (assert (eq 5 (py-compute-indentation)) nil "nested-dictionaries-indent-again-lp:1174174-test #3 failed") - ;; (goto-char 57) - ;; (assert (eq 4 (py-compute-indentation)) nil "nested-dictionaries-indent-again-lp:1174174-test #4 failed") - ;; (goto-char 63) - ;; (assert (eq 0 (py-compute-indentation)) nil "nested-dictionaries-indent-again-lp:1174174-test #5 failed") - - )) - -(defun TAB-leaves-point-in-the-wrong-lp-1178453-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# r1225 - -import tarfile - -src = tarfile.open('src.tgz', 'r:gz') -dst = tarfile.open('dst.tgz', 'w:gz') - -for name in src.getnames(): - print('name:', name) - info = src.getmember(name) - fp = src.extractfile(name) - dst.addfile(info, fp) - -src.close() -dst.close() - -# Put point at the end of the `dst.addfile` line and hit return. Point is -# properly left on the next line right under the first 'd'. Now hit TAB. Point is -# correctly left at the beginning of the line. Hit TAB one more time. -# -# Now, while 4 spaces have been added to the beginning of the line, point is left -# at the beginning of the line instead of at the end of the just inserted -# whitespace. Point should be at column 4. -")) - (py-bug-tests-intern 'TAB-leaves-point-in-the-wrong-lp-1178453-base arg teststring))) - -(defun TAB-leaves-point-in-the-wrong-lp-1178453-base () - (goto-char 292) - (py-indent-line) - (assert (eq 4 (current-column)) nil "TAB-leaves-point-in-the-wrong-lp-1178453-test failed")) - -(defun Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# r1225 - -def foo(): - \"\"\"Line one of a comment. - - A paragraph of comments. These should get wrapped correctly. These should get wrapped correctly. - These should get wrapped correctly. - They do, but whooboy! - - Last line of comment. - \"\"\" - -# Put point somewhere in the middle paragraph and hit M-q (fill-paragraph). -# -# The paragraph gets properly wrapped, but the blank line before it and after it -# get additional 4 bogus spaces at the beginning of their lines. -")) - (py-bug-tests-intern 'Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-base arg teststring))) - -(defun Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-base () - (goto-char 97) - (message "paragraph-start: %s" paragraph-start) - (message "Fehler? %s" (buffer-substring-no-properties (line-beginning-position) (line-end-position))) - (fill-paragraph t) - (sit-for 0.1) - (message "Fehler? %s" (buffer-substring-no-properties (line-beginning-position) (line-end-position))) - (forward-line 1) - (sit-for 1) - (assert (and (bolp) (eolp)) nil "Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test #1 failed") - (goto-char 140) - (fill-paragraph) - (end-of-line) - (assert (eq 70 (current-column)) nil "Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test #2 failed") - (forward-line 3) - (assert (and (bolp) (eolp)) nil "Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test #3 failed") - (goto-char 273) - (fill-paragraph) - (end-of-line) - (assert (eq 25 (current-column)) nil "Bogus-whitespace-left-in-docstring-after-wrapping-lp-1178455-test #4 failed")) - -(defun trouble-with-py-fill-paragraph-lp-1180653-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- -# I'm trying to refill the following docstring: - -class BlockCache(object): - - def remove(self, inode, start_no, end_no=None): - \"\"\"Remove blocks for `inode` - - If `end_no` is not specified, remove just the `start_no` - block. - Otherwise removes all blocks from `start_no` to, but not - including, `end_no`. - - Note: if `get` and `remove` are called concurrently, then -it is - possible that a block that has been requested with `get` -and - passed to `remove` for deletion will not be deleted. - \"\"\" - - log.debug('remove(inode=%d, start=%d, end=%s): start', -inode, start_no, end_no) - - if end_no is None: - end_no = start_no + 1 - -# When I place the cursor on e.g. the first line (\"If `end_no`...) -# and execute M-x py-fill-paragraph, the buffer is scrolled such that -# this becomes the first visible line, and the indentation is -# removed. No filling occurs at all. -# -# Am I doing something wrong? py-docstring-style is set to -# pep-256-nn. -")) - (py-bug-tests-intern 'trouble-with-py-fill-paragraph-lp-1180653-base arg teststring))) - -(defun trouble-with-py-fill-paragraph-lp-1180653-base () - (goto-char 214) - (assert nil "trouble-with-py-fill-paragraph-lp-1180653-test failed")) - -(defun py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-base arg teststring))) - -(defun py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-base () - (let (py-split-windows-on-execute-p) - (shell) - (delete-other-windows) - ;; (set-buffer (py-shell)) - (py-shell) - ;; (assert (string= "*shell*" (buffer-name)) nil "py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-test #1 failed") - (assert (string= "*shell*" (buffer-name)) nil "py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-test #1 failed") - (let ((py-switch-buffers-on-execute-p t)) - (py-shell)) - (sit-for 0.1) - (assert (string= "*Python*" (buffer-name)) nil "py-shell-in-a-shell-buffer-doesnt-work-lp:1182696-test #2 failed"))) - -(defun from-within-py-shell-call-another-instance-lp-1169687-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'from-within-py-shell-call-another-instance-lp-1169687-base arg teststring))) - -(defun from-within-py-shell-call-another-instance-lp-1169687-base () - (let ((py-split-windows-on-execute-p t) - (py-switch-buffers-on-execute-p t)) - (py-shell) - (sit-for 0.1) - (py-shell nil nil nil t nil nil nil t) - (assert (string-match "\\*Python\\*\<[0-9]+\>" (buffer-name)) nil "from-within-py-shell-call-another-instance-lp-1169687-test failed"))) - -(defun multibuffer-mayhem-lp-1162q272-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def do_something(): -wrong_indent -")) - (py-bug-tests-intern 'multibuffer-mayhem-lp-1162272-base arg teststring))) - -(defun multibuffer-mayhem-lp-1162272-base () - (assert (py-execute-buffer) nil "multibuffer-mayhem-lp-1162272-test failed")) - -(defun incorrect-indentation-with-tertiary-lp-1189604-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -# Put point right after the 'c' on the last line and hit return. You -# will be indented to column 8 when you should be indented to column -# 13. - -def foo(c): - a = 1 - other = ('yes' - if a == c -")) - (py-bug-tests-intern 'incorrect-indentation-with-tertiary-lp-1189604-base arg teststring))) - -(defun incorrect-indentation-with-tertiary-lp-1189604-base () - (assert (eq 13 (py-compute-indentation)) nil "incorrect-indentation-with-tertiary-lp-1189604-test failed")) - -(defun indentation-doesnt-honor-comment-on-preceding-lp-1190288-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# Put point at the end of the comment line and hit return. The next -# line indents to column 8 when it should indent to column 4. - -def foo(): - with bar() as baz: - baz.frobnicate() - # This is a comment -")) - (py-bug-tests-intern 'indentation-doesnt-honor-comment-on-preceding-lp-1190288-base arg teststring))) - -(defun indentation-doesnt-honor-comment-on-preceding-lp-1190288-base () - (assert (eq 4 (py-compute-indentation)) nil "indentation-doesnt-honor-comment-on-preceding-lp-1190288-test failed")) - -(defun fill-paragraph-corrupts-the-lp-1162912-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -# Put point on the whitespace at the beginning of the line that -# starts with 'The' inside the docstring and hit M-q. You end up with -# the following: -# -# -----snip snip----- -# def foo(): -# \"\"\"This is a function. -# The function does some stuff that is very interesting. It's hard to -# describe, but you will certainly love it when you try it. It's -# one -# of the best functions ever written, not just by me, but by all -# of -# mankind. Well, that may be overstating it, but it is a wondeful -# function. \"\"\" - -def foo(): - \"\"\"This is a function. - - The function does some stuff that is very interesting. It's -hard to - describe, but you will certainly love it when you try it. It's -one of the - best functions ever written, not just by me, but by all of -mankind. - Well, that may be overstating it, but it is a wondeful -function. - \"\"\" - -")) - (py-bug-tests-intern 'fill-paragraph-corrupts-the-lp-1162912-base arg teststring))) - -(defun fill-paragraph-corrupts-the-lp-1162912-base () - (goto-char 616) - (fill-paragraph) - (forward-line 1) - (assert (eq 4 (current-indentation)) nil "fill-paragraph-corrupts-the-lp-1162912-test failed")) - -(defun return-key-is-broken-lp-1191158-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# A recent change broke the return key. -# -# Put point at the end of the last line and hit return. You correctly end -# up on a new line at column 8. But hit return again and point doesn't -# move! It should insert a blank line and leave you at column 8 on a new -# line. - -def foo(): - with open('foo') as fp: - do_something()")) - (py-bug-tests-intern 'return-key-is-broken-lp-1191158-base arg teststring))) - -(defun return-key-is-broken-lp-1191158-base () - (goto-char 378) - (py-newline-and-indent) - (py-newline-and-indent) - (message "%s" (point) ) - ;; (sit-for 0.1) - (assert (and (eq 14 (count-lines (point-min) (point))) (eq 8 (current-column))) nil "return-key-is-broken-lp-1191158-test failed")) - -(defun indent-refused-lp-1191133-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def(foo): -")) - (py-bug-tests-intern 'indent-refused-lp-1191133-base arg teststring))) - -(defun indent-refused-lp-1191133-base () - (message "%s" (current-buffer)) - ;; (switch-to-buffer (current-buffer)) - (assert (eq 4 (py-compute-indentation)) nil "indent-refused-lp-1191133-test failed")) - -(defun Parens-span-multiple-lines-lp-1191225-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# On Jun 14, 2013, at 05:04 PM, Felipe Reyes wrote: -def foo(): - if (foo && - baz): - bar() -# >> This example raises a pep8 warning[0], -# >> I've been dealing with it and manually -# >> adding another indentation level to not leave 'baz' aligned with 'baz -# ()' -# >> -def foo(): - if (foo && - baz): - bar() -")) - (py-bug-tests-intern 'Parens-span-multiple-lines-lp-1191225-base arg teststring))) - -(defun Parens-span-multiple-lines-lp-1191225-base () - (let (py-indent-paren-spanned-multilines-p) - (goto-char 126) - (assert (eq 8 (py-compute-indentation)) nil "Parens-span-multiple-lines-lp-1191225-test #1 failed") - (goto-char 354) - (setq py-indent-paren-spanned-multilines-p t) - (assert (eq 12 (py-compute-indentation)) nil "Parens-span-multiple-lines-lp-1191225-test #2 failed"))) - -(defun Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171-test (&optional arg) - (interactive "p") - (let - ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - bar('thing', - {'another' - -# Put point at the end of the last line and hit colon, as you would to -# separate the key from the value. The last line will incorrectly dedent -# to column 4. Indentation should not change. - -")) - (py-bug-tests-intern 'Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171-base arg teststring))) - -(defun Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171-base () - (goto-char 94) - (assert (eq 8 (py-compute-indentation)) nil "Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171-test failed")) - -(defun Non-indenting-colon-lp-1207405-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- -def foo(bar): - for i in range(10) - print(i) - tied = bar[ - -# Put point on the last line, after the open bracket. Hit colon (as if you -# were going to type bar[:]). The line gets incorrectly indented to under -# the `print`. -# -# There may be other situations where colons should not re-indent the -# line. - -")) - (py-bug-tests-intern 'Non-indenting-colon-lp-1207405-base arg teststring))) - -(defun Non-indenting-colon-lp-1207405-base () - (goto-char 81) - (py-electric-colon t) - (message "(current-indentation): %s" (current-indentation)) - (assert (eq 4 (current-indentation)) nil "Non-indenting-colon-lp-1207405-test #1 failed") - (goto-char 118) - (ignore-errors (py-electric-colon 1)) - (assert (eq 4 (current-indentation)) nil "Non-indenting-colon-lp-1207405-test #2 failed")) - -;; (defun missing-py-variable-name-face-lp-1215791-test (&optional arg) -;; (interactive "p") -;; (let ((teststring "a = b = c = 5 -;; a, b, c = (1, 2, 3) -;; # http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-08/msg00740. -;; # html -;; # -;; # The symptom is that in the code: -;; -;; # no s'ha trobat cap oferta, l'alumne queda sense assignar -;; # (alumne.assignacio == None) -;; self._logger.info( -;; u\"no assigna '%s'\", -;; alumne.id -;; ) -;; alumne.assignacio = None -;; -;; # 'alumne.assignacio' isn't properly colorized after visiting the -;; # file. -;; # -;; # In order to reproduce this behaviour: -;; # -;; # emacs -Q /tmp/bugtest.py -;; # -;; # type: -;; -;; # a = -;; variable = \"value\" -;; a = b = c = 5 -;; a, b, c = (1, 2, 3) -;; ")) -;; (py-bug-tests-intern 'missing-py-variable-name-face-lp-1215791-base arg teststring))) - -(defun missing-py-variable-name-face-lp-1215791-test (&optional arg) - (interactive "p") - (let ((teststring "# a == -variable = \"value\" -a = b = c = 5 -a, b, c = (1, 2, 3) -# http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-08/msg00740. -# html -# -# The symptom is that in the code: - - # no s'ha trobat cap oferta, l'alumne queda sense assignar - # (alumne.assignacio == None) - self._logger.info( - u\"no assigna '%s'\", - alumne.id - ) - alumne.assignacio = None - -# 'alumne.assignacio' isn't properly colorized after visiting the -# file. -# -# In order to reproduce this behaviour: - -")) - (py-bug-tests-intern 'missing-py-variable-name-face-lp-1215791-base arg teststring))) - -(defun missing-py-variable-name-face-lp-1215791-base () - ;; (goto-char 6) - (goto-char 27) - (sit-for 0.1) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "missing-py-variable-name-face-lp-1215791-test #1 failed") - (goto-char 44) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "missing-py-variable-name-face-lp-1215791-test #2 failed") - (goto-char 360) - (assert (eq (get-char-property (point) 'face) 'py-variable-name-face) nil "missing-py-variable-name-face-lp-1215791-test #3 failed") - - ) - -(defun C-c-C-c-lp:1221310-and-store-result-test (&optional arg) - (interactive "p") - (let ((teststring "print(\"C-c-C-c-lp:1221310-and-store-result-test\") -")) - (py-bug-tests-intern 'C-c-C-c-lp:1221310-and-store-result-base arg teststring))) - -(defun C-c-C-c-lp:1221310-and-store-result-base () - (write-file (concat py-temp-directory "/lp-1221310.py")) - (assert (let ((py-store-result-p t)) - (sit-for 0.1) - (string= "C-c-C-c-lp:1221310-and-store-result-test" (py-execute-base))) nil "C-c-C-c-lp:1221310-and-store-result-test failed")) - -(defun py-empty-line-closes-p-lp-1235324-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -if True: - if True: - print(\"This line is part of the inner statement\") - - print(\"This line is NOT part of the inner statement\") -\") -")) - (py-bug-tests-intern 'py-empty-line-closes-p-lp-1235324-base arg teststring))) - -(defun py-empty-line-closes-p-lp-1235324-base () - (goto-char (point-min)) - (let (py-empty-line-closes-p) - (search-forward "print" nil t 2) - (assert (eq 8 (py-compute-indentation)) nil "py-empty-line-closes-p-lp-1235324-test #1 failed")) - (let ((py-empty-line-closes-p t)) - (assert (eq 4 (py-compute-indentation)) nil "py-empty-line-closes-p-lp-1235324-test #2 failed"))) - -(defun py-docstring-style-pep-257-nn-closing-quotes-lp-1241147-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -class Class(object): - \"\"\"A long long long long long long long long long long long -long long long long long long long line.\"\"\" -")) - (py-bug-tests-intern 'py-docstring-style-pep-257-nn-closing-quotes-lp-1241147-base arg teststring))) - -(defun py-docstring-style-pep-257-nn-closing-quotes-lp-1241147-base () - (let ((py-docstring-style 'pep-257-nn)) - (forward-line -1) - (fill-paragraph) - (sit-for 0.1) - (assert (search-forward " \"\"\"") nil "py-docstring-style-pep-257-nn-closing-quotes-lp-1241147-test failed"))) - -(defun indentation-after-parentized-assignment-lp-1243012-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -def main(): - (a, b) = (1, 2) -")) - (py-bug-tests-intern 'indentation-after-parentized-assignment-lp-1243012-base arg teststring))) - -(defun indentation-after-parentized-assignment-lp-1243012-base () - (goto-char 40) - (assert nil "indentation-after-parentized-assignment-lp-1243012-test failed")) - -(defun py-execute-buffer-ipython-lp-1252643-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -print(1234) -")) - (py-bug-tests-intern 'py-execute-buffer-ipython-lp-1252643-base arg teststring))) - -(defun py-execute-buffer-ipython-lp-1252643-base () - (let ((py-switch-buffers-on-execute-p t)) - (py-execute-buffer-ipython) - (sit-for 1) - (assert (string= "*Ipython*" (buffer-name (current-buffer))) nil "py-execute-buffer-ipython-lp-1252643-test failed"))) - - -(defun Execute-region_statement-runs-full-file-lp-1269855-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def s (n): - sum=0 - for i in range(1,n+1): - sum += i - #print i - return sum - -print s(10) -print s(100) -print s(500) -")) - (py-bug-tests-intern 'Execute-region_statement-runs-full-file-lp-1269855-base arg teststring))) - -(defun Execute-region_statement-runs-full-file-lp-1269855-base () - (py-execute-buffer) - (goto-char 149) - (py-execute-statement) - (assert nil "Execute-region_statement-runs-full-file-lp-1269855-test failed")) - - -(defun abbrevs-changed-t-when-starting-lp-1270631-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -")) - (py-bug-tests-intern 'abbrevs-changed-t-when-starting-lp-1270631-base arg teststring))) - -(defun abbrevs-changed-t-when-starting-lp-1270631-base () - (assert (eq nil abbrevs-changed) nil "abbrevs-changed-t-when-starting-lp-1270631-test failed")) - - -(provide 'py-bug-numbered-tests) -;;; py-bug-numbered-tests.el ends here diff --git a/elpa/python-mode-6.1.3/test/py-bug-numbered-tests.elc b/elpa/python-mode-6.1.3/test/py-bug-numbered-tests.elc deleted file mode 100644 index ea31a951b764403db4977a49a00cc80ba737d3b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421346 zcmeFaYn$7~l`iU!w)2c9d-f%ECh?TncF2|+6ad~eR>q1fCz|m^W65!{-P&!C1eS-MG ztKrNGdw#VSjYSlSZ}9Y&y{T{-!fxGZH19NQ;o44}^B=@WG(ZXB_Anazw-?H|UG>La zFRAu#`=g0>dvZA)Mxiy1`o7hyI@Q|ksh>=7+3Lz4Kr?6y9hgqRBKE2S0jKBuJ`n^35m1Ad!{pMd8#7!bHrb1FJ1U zRN>y^`wt(A-q4G^9@-)~;zzu&FOo>~yfBQWqU(!MxV z%?dqI=|;1#KM`eqSxZ&)@J&JgRX!3GFZKr_cT-dxOH@XFc#1d3-8now6#sHhKb%bC zAUw53ev(Y`=|st`m2@&cj!~=9cON8WaqcAoohLhffXlM^+!|GUH}=a_ z@lS77`u^aV7mK+^tWkixD*RbGcu(A(CGqWU5Z?B~XGlwwOb|e?b2#4)MIUlA`C`Pg?otBtGVJ6 zf8fnVQ}K*iQOptyCh8J7!dJJ?;=AiI&C@0 zbt9@abZooBr8ZmQ2~APF%4igwQ!%kWiDF#wreZjqPLeyfZ(~X))sZ&~d&7wbSn+A1 zr}IA>8jDk(noyVNxGnjn4e<@l_IqFbUYy204P)VmGvA-caoL>>2AIb{0zcF*>x}?- zqKra+@8G_R`!4RgxbNb=i~BC_ySVS-ehv3)xL?El z8t&I{zlQrY+^^w&9rx?FU&sAA?$>d@j{9}ouj76L_Zzt1!2Jg9H*mj!`wiT0;C>VL zo4DV^{U+`=aleWCP26wdehc?oxZlG47VfujzlHlP+;6qeq|V2$(dRw>{2hPZ=g&|0 z^8tT;%AddI&p+_zL;n0%{`@!o{ER<8=g%+r^Gp7G#Gn7ppI`CkWBz=?pI`ImANlhe z{`?bv{+U1jCx3p+pU21i=P7^wFaA8?&+quto1P};_5Fo{iUwIH1wCI{?bxk9G#D&^Ko=Oj?Tx?`8YZsN9W_{d|aK6tMhSn zKCaHk)%mzOA6Mt&>U?TCpPJ66rt_)kd}=zMn$D-D^Qq~4>N=mg&Zn;PsZ&0f2$gcK{8MzL>Up~i9~6aFqboh8=!Fu-aw@p?X_jKS0jLLgR8 z$sOJRIBT89-ekgJ2x{cC+Vw`m%mEUTA5M{xA6nB(PS}e^5V9z%pvUkUQ>~GgH{$v_ zotD#b^lPPy0*OwSR)RG}rm|ahttC_Syrk##sS-iR#nEd!w$o|4G66S=tgkGcghM2j zjTMc@R7d$xr&DjrhsM+<+3P}-MeO53j{8291|VUX%?%h&yV?rnRZMhAyYd|Mm|jtYXI>eL58{6Z@VqG*|0)Yxt*U=HCNq{ zP?h4T%w5rL)jJ(I$IQpo zlU@>>hS`WhVq2B9xQNKsuUVrgI!ml>9GwB3Wf_fHTfraU9cmGKr$BfDOFeU`CuyPJ z5jn=@Q$1R5HC6Qj)MI9O{k}zCx?aqa;X;jLSx~)Ut0qk*vp9%m3Fe5L^tA3ofDpz4 zEJ64>_Ra`<6DSfa+Dy=_SOVX6+oqwzn7UYhPrpGnNdXNL%bTjTGleFsq3W$#EvKg6 zDg?U31RJuNvfrYC&XwE4v&LwefUC};J-={ew|=d=>U1zQUmO!s9{vio2_O|x3G`36RRstZQ6NRy!>T-OHHMhaJ$*8xAhxi z0w+n(MF*h5S`zWJEW){vn#UT=LW+r4ud%vVKg=S?mRv2nQ*%@jJtM6t0GdaJDG1WCV7HqsHAqw&*cIw<17#KCx7}Vm^ zA)d!*8q7v!rn1OdqixGKH~K4~6&5lHWCk^okhtCM*bTK@tVoMGP$kWjvde&pr_=Io`aU&7*Vkh}F6Kyz{(+!Gv*k{QWM0*tV=q3lx}&IfX5@($Y1>*Zr38H+ zVB|q;=jZ8mLpKP7Pz<0{xDHT+sv}B5%5?Nie~=H`Zo5{eYG7=(A^$4;BvH!7f2~ik zMED+73Ym?>J(X8my=eaj+_fl2t(D}m+Pb?3BmaVdWHFC+J#BLcYd~1Y;<~S?zHKd# z_b{6$i9hQ{22RKns_lle@D%b!AIcTlGI_nTb1&{^O{B(NJ{fdwl!_XF+fgOz`lptU zi41_xYGXrbp=#TmjZg}p7s@VrceQxv!dh*WPA-P2Xd9oZWr4e*tqPNgpd#-Lxx0*g z2dY&^sci*?DV9npGX*eoIi+kt>!MQ5Er5i8BY({GYdP3E>4_-Ei|m)Q_AQOPvHy$~ z=bXfPr&+@gS1E#!HQc$uk*$FM=}a!U({wu>M-5|hAn+m@P6He-@X}7pCs(BjWu|`f z(+D7dUJ1gG&>GLE0gQJ>$H`GEmxU=S0q0hfJ1r9Q&54;#p#kr3CwE%)Iy7A}Ct1I| zT!t2I)f=v@G9e8kRxSO8Sd^mCY|J3gs<)kvN~Us>kjsdRV+;rY)5IS!oU|G)_VTjW ztm$Z+;6?ScqwZ}ropgIji}}Pm#YO=K6;_W{Q#4rwd4?0ZbzMA~QUgLhFDTViUv#~6 z!zH&VYLTX#T39)>JRnyWQlpY&h)+UaEX1_Ra7w+fEfG-t5te&Sh6Pq3vMNT8J^2)+ zX`>_b{E>zF7n4!Y3#M2P6HGfyxU8l0H~^C9!9NST-iXes`m&}|%quyhkax4L`q;=+ zbrSN`^Rv}%01sua=!A?Z3Ep^!jOpkoH)Pcu;J3uXx-n$da%4-ffL^iFXz3}a%GLrL z34yv2Z2+*wShcG1x(+c2BLn%gZ75w-bCNU*c^FgB-xni#zR>s|q1~7hwVqO6uys9O-S>Y3r1zj%w|+X)tEy#u~p$ z+6$TNBO4s)>$+U2%Sa284`O`M#O2;`>vdNt7lM#wRZIe!q;j6AkqepAuB&xdze_p- zFkSRL)E-M)kCiQIz2R+^QqiGNu$1e0zdkWfSu?p7?`8Aw@Wx3jH8k>cROOIoe(}uK z*wFW}()L)lh~95>RL{vteTs9!1QHiEwrLMUg8@xtDgv0Q0Z?@huZ2qVwkBt?HLCo?;p)={=8qLNlA7$m(Exn&WI=!tS zehL<7D3vfrSxv)fn^-?(Mc1bNel~_k5kcQz-3P3U?t7pqu!dc>lha8TL*%1Z0}R&r zLVF(aApszJPR(My@XVcX$$c`_)ot5t-H++wp&%1^;!p%z3@v+L>)q10qBNTW$Z1$~ zW$$sDJFZqA0BNAjB<>LEOlYHPldU8;MRN5Tjs%j#5`@np9u3BX!lAcDrp0u6UZMQ< z+JrL08c)7061rO_Jg&Ajr~O{CFcxcRs3jEEW9W7LA&zHw9M_>f%8;H@Z<|gkJ62|= zv`A`r;It70E0VY%eq!5#)k1ZF>=>1dy19Yov{5`W7AWHMao6A=oUYF{MKh6>V3;lmd|0wJq~ zgm3ob-W2q)9*8AGok9|9&c6pJ$Y;FSG}5)8th+v7m6B3AcqwYN86_DcM2-GH!Sm+MTJCU(ja3~w}Z~%o0(_=tV*#l=a?uVa>$cW-oO=2M=|r{8qMd6r1jtZ z?$ZbO+xVUNpE_vIy(u>Vw~x^l5K=@1^fYQ&AOr76#1won9L>>2hWjqv*CgT&l$VEe z22X1s#v^eOtqEO7uxrKfw^~^!FLj>4B1CjGG@JZ|FscvdJ$?heX&K(Jl=bh>b4+ zqZ%WnWBdp59sUojPyF}k3$cNu|<*q=3Hq-b;0t~2_CSQ|gpch`MO!L1g`lr{$fd{gqtvhi|={O8J8BzKmDTxYN z1==CMUqT6$Sx7`pqI^1%PFBg9hzbb?0ajKJMX{hEJ=eu(IqGtLezBn_A9WiFePT)Q z5W=_{jJ#7(*(w)V>KPyU>7urIklK=;TGf$-c#3skZwz*uGuP)B+}ukU3>W2Tf`g0 zUm#POo1+tg}DZPpR|+^~rnHH*k{(uLdBl#F`X}Bz+){QW}^x0o-bgTtTlr4iAKN%L25~ zR^X1}ZsW=^Hedrl+DR}tp#gP51L`CjP$%?GmBTy7ATvQAnSc<1BNq0Etz%R@c!B%b-lp}b66wU@fnc39E^=d(*V2yZF2}}0wY=~FCDCqCFZ0K=z<}7+T4YT z2)rY5a_b*_3xJ1E=Mwta^sgq~eg}UvnAr_Ryna{Wiru_aUt0fLevzzVg%c7(30vw1 zz!oV0^1TlUOf_cOt=)^z2uek`HWvXBFBjoTTsvgAPf7WiRRPH|t41TJ;B>n;j6jW) zn>hNd#WA&dm2N%a;dHAcEQi}Xp=A`Te7ovm_{lvVZF5Bl^S*@f%ElFI3Z7rW96>u< z2nCBXg32hRvmdh64%xaoTdcNVi^IU6;cUZ-m!$YN9}ZypBEI7h+Kq8=G6bnZ@=17m zlT7>`ODIRV9gZ)s9|OY;3jV1t&1Z zK5TQoVp9QZOkkAsIa%i5_&*|3Bk+xD7S7%5#+%=YYPBk!zA643&Bz=_&@2=BxJN)@ zRXchR{zKut2_X!Gq26o+Qxj4aV=p!p!L*#n-S~vmi4x=d+B$u3d;k0@&9zkwn!DSj> z8sY@3RFWgwQzS@?6$`(s@(*WtgbaqKcOXq1iEr^0)^_yuxTH$BdkpguC8sbEQ|Iw} z&Wg1qMrkwJ;8YBGC%J?@-bFC2xauOoCF;Oc!fuSdCq@R4x^RVVK&G;WvM!b->!shG z1S$G&p)|UfmT1(%AE|sH$d#>r*(i`6IURxjH4?CJ#GXEr)##SIhNg3}>uGMPmZ!Rw zs?8vo%@>e%7dm1uqSp$@SzJ~ML2IefW`&?7jp)EZ>$FnSt4!ir)#zHjf;oqH+t)&r ztA!}N+r!=0zagpV7Z7QrZcRy4xPvRryL9uov~U+@Q4R@1QVLUBMn~uG82OW^#JSwb zX9B4SMqpBEN}vK#DoKmK!-5yG28*jwYpVsD74Iug4zwTxI}~1o`2Z5Kv^psAdN|gT zXEhP4QG``bi{Uj?z%WHxyh)kGX?1pxS$-Nqi!#(yx(tJCgEIvXA8_8Gnga@F5(+dc zq!0>jnovMX{ed9n4wM$hp_lXrSatp)SDms~zN5a=1A&4C60R~nj70iUd2)ty zj`=F;R+-c(xK|zoF*2J=@z=TEE3oDI)(LpBVSgd-tkzG{cI5ZpgUVzZh$t5E z7t@xgMZ5vR(2_-bs~*T!bk>%<{Z6{7Ls4rt^s?QgWxK@-?*G7oo70le0`ItHN~gvt zKhP=b`sPAPl_xAsWu9q)F4>H(ssc=(H&sDp{A6=VM@l2GOqO}(D~npdGXfvRwcb~{ zB5DlR=2x68drB#A@F=BJjX@I6vc&n8Q`J6p$(nareRNB5&PtAQ$>!Efd`s3^`*X-~ z?WCzH_>)mWQi@u&nbMaSWK#k@K97~^Asj}Nu0(RkMTudYl#-+jnCF0rx)!Up8G%y9 zI>_`zrN5R$TawNcjUi)r z&@sQZt|-K^nj||6{2JTOpj-c1PZjKjcL-0aOm2p$G8d6K^`1o=El1 z2_eNv91S5)Rp#U*mQj={G*eiTm?8@~U=fLGhCJb$DLmzj&tniyIbR$k8+;BZUxRst zgjob@KyetJFN(`BKHv<6t?g6hW# z(#F=$gdo^3zDLg&Gxiu(1uyZ=XS=9+vhjBvN zVd5Shfp`d$j3bhZ#`KSH47j?ASWDLBHdo6%EIAt{TCwU}*{aiN*~_-&+jKy-@HoW!a>hv6)Y$ZEXg>@bA&%qOfcu~{gm}bEMaJJ zQhFVIC%PT-kWTST)*ticNS6bbo>I3lPyc&Ev;L5Wt4EsK(quk7S|hfKUHjM9-h#_O z`io0xZYezw{5$fmx2bAK)i79pO@sAEDh_hXm!1#RZQ|e9HMnY%e){M)X+cWqRlGc< zQWK8fXQ+OMG9?Sby<7hwIdvoh5sYH5ia%u+?l^ z12rF+y2maYRzipP7GX7;ENI-<$DNpp48tbGh|<7hZ><^?IrvQx*B~!%c1p1Xya>7q z(()@yT9$gFPot=UgEE-)Xw?kqbCMZYJ<|$?&5^j!H>45VIS^$iSQx%z1}V zzalU0NB^>RSQk+F;-WCqaiwG5j9s$1)#v43f;A%Lj=5H?u2 z{WSnnibI@)Xtl7K;Iom`WRkpY;y?sOY@iQkSD9IjlL>8EnOY(#9&N2DGUBX5gfeMp zOI%SH=UhUf?ZN5|)~tDdK73hmYS%V~fy+3a5Vcq5aALJ*r(z+wXJAn?KW)+XuOy5aNK$Zl3=LSr@VS_*kc0dUU*}BjeRmvtZL*#bGg=+}D<= z?bo#XvK2~cNTm%TZ#=LsQL6j@MhjG4b#EkB3Qi<<9A3|eMn}n0rdX<+2O%EoS?0de zB2Pa&P0eiyeA(%hZ1qdb(Xep1jI@~#N=&d>2MLzePfRM9q5UCv4}Tw)$HEhEgC^vGgQQudsmtZE zC?jQgAtCOhspLa~60gcv-K3Q1V>12P>L5S9FH76QY4qwjRjg)LvYNFT_4blI*P3?E zRx_8B_xYm+y-qc??yW`Z6wcgmPU$%6u+VOBvN!OwzRe5S`&h_QlX|9**Sk7)Sf*ps zsyJVU2{W{Bo78cw_9_(|Ms<1&vij9cb1zW>CD?r`>aT>#ZF|St#Ugg|7BRK6!$FQd zsgcWo+-1qT)Kl!Y^5Yy z3|k)h@-rp(!9P;?`XhM|JHRlhbx7cI-bkNo5Mzr4Kbb@Npv(t}o5zFW@Qv4DX=l3# zSgJW|zmES-d#c0PtBo=MNf51a$-JAn+CrRM{gDaCe% zyF)USGblp4)Krf+)gkj8Wptt(igmr+kUI++oUgy3MjAF5`2PBF_z1(rK2QV9QRBtf zZ)nTb%#W)aUrr6f4H11ouA%{(#SLEbz$cix++IdxVSS~ki?01l`Yc4WU5+^HXaZ$T zQWx3#;N~XaL0WHN;Hs)3W7ALIQ#6iF;nju%)sV+>T#4ZB2Tr;} za+A4G*n!F%@wyM^Jk#ahhunM4!Jc+4y4742TyDX&D@)f*b z;$ecnqV7ZG7VXOzu@C(ICx|!fR46c--im24gSKQ(hVWa5U<8PfMc#yIhO_%Opn(ok z%pv6yfv9-!{|DD_Anc*EVmfN6E1pCTXH7rCIn6dhX0M zapjdFbHY*dhTyiv+IG{{wx7_Bk=8%CU)%%VWZhgS*0U>F&zgwiy<|_gw&k;xOIwVS zqhP6!#`aDbe|?8<()q!E!{%&`L8*3Pxl=&)gHPsH3kaAhM~Tu1yICFJU?Cx?49qy- z()UjFm0BQ_t3A1hW^Vme9MNKNxM_>SaR`rZ7vi_VR$kx8)qOyUKZMMHSA55|wQ7;T zTM``uY*Xl$5d=sxAnze?MIYgWnTyCi=P$%ZY34fB1x3^deYk)__yA72hxK69&@a}4 zD_IK=*L@k6er2oY)&ZPFvL^0l1oqh~K#PDr4x~Mcvif>Qr_zUPcIpp@Q^~x_Dpl%5 zgd(V=ep0vaWx5I^wf|C3-s_IxzjRf4z0*MYMm_agx+=ByRr+cX>btWMVjpqeN_~XECmu zOsk+Ubu~6=Y^Cf8EhMp9Vr>Yi$QY#XR?`D+l#~or*GJOs8}dlHiFrUifl@O{2f1r% z&mtF>s!q*G7VddwLutzvA^L3=(URyw2M6Mofa_d3Ucxyr;)H=^fF%I*_%v!Kg@>f@ zMV|N^(WG!4ziTL9G!x& zPi6H5f;RbgwiqJS;dE>v=pGlFRgS}rOE1YdCHsB`4_4Lb1uBb5S4R6#A;d+ z2Fvh3v;)T(Ywr>wz!oRpI`qWfwwp-F-~+#fM0*RvlDyCIu^wVh=&<1PvrckIiUV*U z$t!vQPAp_Zdq%kVO22y~`dyA;37?P@5=VZQ(&>RW3FNna7hjL~^Tg+XP&f)ta&j#= zFnbU|Hx226p?p;g<+|Nks+!oU2Mp0vOP^9j@g1$AEU2!avx?zGktff+I1Mq_Zq$_ae@>nPvKJl_bzJ1aL*n*v+c%E4LIHrV)~h2{ zL#g`WJ`(GQa?d(WDWYz7v^sc25+!e@sH6kLVTbgpxT?*+xr+NT z|K3aF>;jDoG*+&3OV5kO3!|;T;yqw-t=U+1Y_|ajpy49D5Sa^^HhcM#JG;)3aXy-t zl8gy$v6w6^CXGbyO-1P-HQ>&tO=U$k>q&ixr&w%QsC*p;J@|Wm5b`I5G$%xBG;HYl zR?C;9iF-tDxY_wMab%!WTlmLrxIcLJH}96;tso6^Qb`quf5bh-t{`*44Qmj`bi?gx z#ooO4Z6uT`ywnXhRCcZo9beOGz#5!>*GLU$*FJmgtzXK&xTLMBu--{MAi3bK>FTVh z8d5b4H{7ka4yD!*IoF{$tiw*okwNOo^)}U>f~46F-NT#nC2A*F#AG+n1aw2$8P)4K zXWY_?2{G=wIAJmkw8-cMCWFBMQ-Excwfb>_V<&jgz->5Vil-LB)LZm}((qMItjwvT z$}+K{knO={Fq)aL3Q}0NESMxx^wv9KHXT@Px}tq|%*w~d7xy~kcw-NGfVHEuPy$FL zz{?X!8OG*4)o$*S4FA%=3fejnuIaV<9q7>z-)YMEymLZ1ne2Lnl=5teXV=(Q1}2qT zf2`FFnEQ?nPRIbmp7-l*dP>hoTmEFayP9b{1Ig43q58;73-e|?!G!To;ZseJUD+%d zvQtD>@naJC7k-cCh;oT2Cy`){Yeuh_L|~+o^@vGKA4Sm_=8{E#{r~;nr4+ykq!DJ1 z$QFuev9@JREyt_k^;RD3F-6ge1~}^isD(56o0^tSy_y}zX&1Z;WrKOsco#&UAWin5 z^2{5VnrK8mmQMZQlx^sN%oz&{bc{X@OA+=+9zA)3DIiiFrXkL-;NV0V!`wT8U!9m} z=1~Yr`!mGs*1GZW*!Mwdhq%rJ4ywhb|4_fZtcg2Jnqrf1B`TR_qfuXS?!8M#7)#=O z@FKY{sEhB_!U*XW(lsm3e}QF8irBnv5$7C2c1F!G;4&HvaNx;7TU(eg;1KxM5a+Ew zl5dF-)K<#t`m)%x%NXOJzN=Mfhu4%FhF38Z9~*XO3q2MqWp50}n6UU;xl^L9EW&-f zvS+N4GM*3jA$i-!AzKy0tD#c;1W8z)ss)My?Q4FkJaL9S#4X}e8($qKTm@v~LKR3z!6)z!|Q+I8CQFN6Bj)@Vb~CX&BWyl$Sc z)-?9v6Q&Q39u_S2&tb_=TCbMfskaI&zo9z~n6^UVSB9!js{P=ZGHE5j|4Ef-GnHG@ zI66-b(_r0n>;7l=9zVWY?vA3f@)6WxPxpe`o5yhh-B$wLomPDr>2-_t&(K?%o@(N0 zO)IbR%Kz_J)~6UvGE6Cvw;}FB`=yjtPWoUoODk=E4t3gw-YBF#s}_l?q}9u=YE828 zjn%9f%Bz*(o3h8HbYtbCH-RL!7GnFtnGW-36O9%vS$Yd@5gAoxTH4&wa&N#h!Rd34y7W4=N6)P7E9I*U9xy;2v1ogt#vy~ZfL8Ir|q zf3y?B_NxwEnp+(7+|acQVv66>_(tJKMZlC6VE2o z!#%7j+l<#@MY)m{rRH>&ow01y1KDb_;NwRfuF&eBkN%C#)6$I=PFXf=o@$-d`={*W zf92+h*#td*!k%QajgC5Q+2)ON+Bvz|F(_ThB{m2boE@=yxVRj7f!sHAoJM`EDQR(R z0kPo~H4Qsh&+$4gJ&JIa_$jP4`!RVn{lkC$KO^`$1to)G#!ST>4}>yOBP`m!#{Oi4 zqeexgAq(c+sjoW>;DQ78;)Y;LSzf#Lfx_SkA+6?u!bko;N?}~_LmsCC;cM&%~KBYQqgaKd!DZp9^xo(;`<%4D>FsKc$O(mnoRMv5*{9 z^{_JfcCpDIH|69o$AuowZIFBY`ZuV7OMKE5w~$rM=7r=)zNkKn&-ND5gxPcrZ~ZXy zVaJ7Ff$U8 z#?G8MY-HiBN@H4QFtr9F@6@aem6+$Utt7EAxs3uTrnELtigPja zQ$FzVEWSjN_&i8_A}e{b(G=}G9ikIBK9@Ga?+yLl8Iu2#86$w2BSC=5A$CCv3^=9l z3ExU1X z`Q!2%^h8ACcj+Vg&KKmY2%Ln~)j*_^thDQ^Mst7F*n=#z8#)x5(JR@EHXHTY61v8Y zeX(X+s@*s(+5pwW>rDOoM^aE|T=XpJZASU?Trq#vrJsm9aRnUF^t%EUNA zq)fCg9Hhgq8fQYT-8pHxPu7|IyS^i9LL@|r3q$Pr<$wedBHTCez43%N^TwH#Uh{Wr zO07}#^Z_5@EkDny>2%W!>cVN;&zX(;qV;gIdNc*P_&MuQd(nE-vU))7d{yjpG4lF; zFGAF(C{FkgS&C0}*mYVEC>b%Ie)(mJ?{M1-KZ=#)GO5Bf-m}BIcOAu-Axg_E@!-7I;JHvbABT^0 zO*uuQ1!D$Ji*SiH^}_`Aoy?s%68KFPX_<)_%EGlOEAkM}q6ON+y-IqB5m)=6`a4n}to|%ej2hT2|9<3-!$^D-W7P<^FxxzQWgJ{D7?g zkHjbN9ypr@qlAASlE29F;e1hCcP|VhC^h{``I~!Reev*%-;?7=a!Cnub$EYFn+y8c z4-)8TLrKrOBR)vV;)ARv=6lNT)C$~;M?!W;58<>2h{gS_^YqZ@ElSN*kvUhPq=UjT zeR?jXZbMz(f%qnh&%78f(FZEW@QT?JUp^Lpx`U8#zPRtjU1;#=h@mf_$D57(MD*yT zr?5H9s(&D2IB*6%_>zLiMHKW6b{?=n^k7Cm9>et|RJoxq9rU`^)wH{a-4M*4lSZb;68$%MK=R!Feokzdh#DU2rWn5CVedtgNy?m_jj z7T^ns=_(|qrd_XfmS{TGH+?2D;k-qwGM0FxHnjwcnt+s7wYIRF=t5_XugWf!&L=3M zETYR&)X4;@-O+5UM3}bIDMXkXD#Bow3Pn8js}=9A14|Q)?m~3$y1C!IyEUNm9*}tB zSS`@_O3>JCwwCQ*H#fh5$XY=x{Tl_q=S_}S>kU%Yrv9TLu1G|Na}vc#!tG}ekId88 zR|$&M0wg1}{xFM(k2;O4U`hfP?%`A`k>1 zY*+V!#oG?nf*JMV%&5x2`=TnE@WlvWN&&@d?Yg%e9?P-ZV3CeNVhNZ6MBxN5ytVBa17Z_&-DYu^;=;!m`7K;<4p>Q@ z1F{1^Buh_cwR6D#Kz}cK2IQ-2+yYX+DMlrRf;Qf~VmE-ud5u%K(mWvcqmv{W`wW67 zg8-hE49n?xAvP0d@l8s!dyrta8O;S^zBpno<&tjQ_y$NCVyu>6SNprDv%l13xR@## zwyDELOoWVVO`tHgIEZ}Dn+bYRdh|s!17;M9=^)$rRq&FfB zqaU-Skvt+175@i>;;Srw^zcyb>+4`v8?vB^P1p~5&{HZ2llK2h|Fvq9v8EwJ*P#)zh=r$^%Z~U_-_vaqlEoE`_YyhIxzQ%7ZWirMsTi+$vIxJmF{AwB@+%PO)FVnX>8pem&0|VKSsdT15%@ zqc@uQ%>IBdy9cb@Ja7xVeMxw`Wz!qtsvvQcQTF*y{5O}HgS_XoN z(?(@v^+G#IQa>>!^bwtWtGj5S(dYzZ&V1vdY4)(HZG}+9!uFCDw(VR0YSuPPYDJdV zs^pF9+j$%zW{k>9a@_q<;>*R&Z8~-#%->959<1Rf@yu6hW@)`dBV#|J`sQI-Algep zv@M(dYTzu@Ol&T7Ba|sMgv7GMk~xz4xLvQ;3Rcw(RUcBPy1UX~*R0s+gkofql2W&TNr!W&OaE@^Oe*+6Tc>#;OQm1l0q70 z{)3W3@j!@{O0mJFu9OigM|m9=uc zHl{o^+ecayPyvs9UwpSZ!|&2s==I}3+#4b4dZMUbncRFC_z29-#Z(dhfDE8dyna7M zgoP{-`3&pBAU6mly$MXQ$6x>MlLwEVJpAI`lZRh^@mMvUE>7lJ{)_!r>o3ki=x*$A^&kXM=$#EHGhq2?E0uId5D+flJ{d@u?~ldHSQ&?aT^=mSjTo! zhSb{ZLuQ!;E`nv{h*4{no^|^J2B}=cz$|tbeAn;a#qaRp65pV-L&1s#F`FC;E7qFLh% z+InKdM_1sw?Yo&O=Y`0DO2@1tRax*ss+G-c1cfdFjo(yt3kl#O5Ry;y&|pc?@bdD^ zi%$?B=t$6)>3O8S3}fGvWa;K0n#HN$j(A$(w4xr~r{I|e{aP}{3;caa_`4Zi=9DRp z7D8RJ*5Z&iOAUMpYK@pQsvH>}OE4*G#Zg`A9%ggZOyFFq!8QWES+L20zbr_lZQE(J z3$FeR)vSE{eK4)g!WgDYCy6(JMH2z(WR?IIpFJZh+eGOzLIOQjL7mSb)?Ap|I`>kZrXpfqc=6kAyv^ zsOZAA;aQf7J&#kpxgKdj--b{31KR86Rsq*939dIbdL|-o>j%8+p9WzFU78gQ5Tt2f zMX@EfZcYlt>x$h7!pSt6Bss0QbYVzH>^AKBO8vm=B*s5_M@#VJuMfT;7XJP6AAj}h zcRzUdH}96;tso7e$a271im^uVXu&gf5IzUTs}}Y4Ddf zdg?lbpw)b3xQ~!mYYyBDy2!(>efHX0zm$J*Da}o~{KXYir>3j3rfNvld~|>v3|FSs zdh0OtT3E+kroPN;AxdSBhIn&!WJv9V48X8fH`e$r#3D=`Xu(@y7YigGR=jjyh6p>c zGTilX2>4@v+rUHtWv=?}8sBTi_qy@DVSH~I-w}=Yn1D0Ot!;eo7~dV+{9%^wm=$o) zzjHY{W|A%00 zh|nhbAYQ~l7vZY$yNBq(9K{Yn+=$i!2bSZ6NGZb4O=xjs(;z)D@=zzl6XcYA2U#N%> z{cZ?04g%-VBV;D6A3?-9ALJZ$Cve)KzH@RUaCkI@4<77pI2@gbk|Xe2j_{6y!6@j$ zOHTlT3EpZv89+sZK!$M~MrrclDa!4QDF)z?ke{f_D8gmrDkBOa$6hoEeEenE6ZMax zv#}SSfgYoZop{sU@JPVuaDsedWafvxh}u<_O)YbFPSr|!5uMYfPkM207(ms8LP(S9 zpCUvb^5~8GvO2?Vkodjq1(Re5FSp17rJbJpctieE)fe?Z<1}e07+I&FEG0C=PJIOU z%kBgrd9kNfdj`YXBSFoCFKL3lcM793WKYci%JT)%B#P67ywY^wQ}v@U?)lU7E%EX= z6)}DyGkPr|J55QhCkLuMIo#Aj-Y-{(M=ocLk2%&uF@*MIkSNs(kYBD>DqCq|mgC{U2s{ zGn)L#Ip(Zc&<|8k-1etBf2vI~o50Oh0vwo45!T*(;2AxDCZUsE^AWji6X1;n)G6@D zy!b3VDuaOH+qX}RSHYmUO${9ffC`xeey=Da_zwfr;B{yg;5UcLyvw>-Ts+Km#r-e8 z`1IlL&Dv6lymMSqRlW`#9RheRyk+{_sUMq-h#6(-;{GojyN7@hOss;rxu^HXT}bAu9(l`*P$s;N;= z^_Au8$?sqIJzxo{pp(w^28I(YPi7rtN9z>|?%E_Fkusr$k%HlxuQ8;G5T=`X0L>SlzOW*(|5E^qEoqMCR`4)OeZxe*Q(TrzO4u{lb27fG;w5n4fBp96ngUPKRTT4Oex>t$%8*VF<)RrIY0zb(=RuQa8%Zx%SEujrj|vTrk_6iOrh6Yja_qT<}uYr zU(VMTOE4r-ZgM$h1FT$>(0BoUPA#1Gp5(A{M)~2L3AX2|z9e5tnB|L}RsH();|FRz z=64|Rkwm!pcBe9u=_MqBxxzF^%viS9k7Gbhv;aXZ_4vu3byE=zNZCOrUX>*qKcWev$P?&%ILuP+7gVFSyIIpmL;eX5WCN5SoenJAULJ8r+`BvC5h9bsKwEtC3AF^!{(x>lfs5`FkendUL+(rKB+Gv)KIFZF?tBJ#JUZXB9@UU$ znOPKMUwAX6eHzUUa4_MEl#&=Ve353RBC)l?u*@|{L`}?B<;OesU=>u@9EpuIN~ni?g155JUXOHNxCqyX$HP;LtGav4W_aS;4GIeysX zD`e{kEkro0#)R2Q=k%(K_`ZeaM8GZpzOGufYRD9D1PiaKg40MJwLm@WUB|X;ms+OEW9Bg z*TYBXEehy>u9^(Ju0MsOG8$o{e;j^H>n`nO%l`}eBi&1>Z1SNli7We|$RtQ5&;zBv z{qhkR**vXQtKwT)Vd)#!hz*AN{mLw$J^Tc8#9Kgf2#&XIQGS|#NG3zaB@{omvdR{Q z08GP~-5E>Rgw~|c|;N8hu#|UGjhi_Btc&C>1^*^)fqlP zIkM1m#6_Xp%*Xf@D%y9)kUY4Ks$7oKY;#Vb_cdGKiLSH!6`nj&`T{<6%a|ckWON&<J_DrfsSk4qVp+Q3+~`VWMH-F3c>V&_>4F?;*Xk>gO%xk%yf*QL_yAO&yx7|bUe8| z*0*rz1^7hb2VtL=GieKPTr!@dfDclohh>qFb`PijM)51=Kmn){Q1?vW+OlI5>Q3GU z%7Ub6gER`rRUA~Zp-|RqifU@0?&0e?6>KS(#%haOir*ED`rX-pP8KcvMf?$~M;m!x zl$g;e>xLm+0u19^QY8|lgZBgveVlII_QPkG8B>5NM20nUN>7A8khjt!@vuCmh$=V< zW^{f}O@wpoqkM*HQMwIE+`{ZCiAtq=i8PqFs3)3%79EPb4zg-U3l2ArUX8R@UyHP7Vx!q7Age1U!itsg2 zm!xOCJEcu5>)@u9-Uy=pg}x!hbnJDjYTF=Fk=#$lp%jTd>R05&{VW=rMs~4eyfhhn zJ*05MXM(siWd`)sH0)^$1iPVSbl4skzS6&gH3KpHVe7y~&c6n5N|Oi9VY88QX8KI0 ztk@G~7w8+#vh-rntmkBXT5F*Bi!B^w=1rg%K{ONo*Eff;0}!PJ^Jhf)0+(8ab?5B_ zv(%h+v$>k3R&a}7U2gH#Qi>Kzrs581dWe9(C@MjDGlGuZiv3e~ea`%F20G0QR*2 z_WJ%Xz*>vMTbaN)ohJL|!NEFM)r^2U4VZY>>@~187!o_PP+i^ zoZ-($;b?DH@0i@!Ql>4;_gI;A9Ed7@hhRVtyII zu{=Ww6nYvmus&S52Q@{X1YkN=^hca|<_1Wox}X!t&_Bfn@tI7zhZD$^L%%@Ym#0Nu z4mRB48J^lZ3B-;1Myy=f)f>fORbOUkq(1zZZ_1Qa>3j{5G3$jk<0fh|)(FL3w^tFT z!$9#!zdsx8M+pGmZ{gJ1X22FWcP$d;4v;dBi(16oN>Q*{hHRv2g6#*(Mx-R_GDcpi zEs!G+mX;LLKnj-iy1UwQdU3$@>K<^dfk{Y&C+y|-_GSr1N0VG8vp0HXa4hj<`A+7{lIR_p*MYy< zcjODWvV478SC$WzE6axt=?z>X zZKuPWt)F3PG1)a^eJNrA_TR9@Vhtk(MZbk+b@A#C1M zVe@bOpo)&Vl)6=Y-2))6m|X=5UylT;j_BvGj(Z~mX6J2Rt5J#jMT9T1(SV(8TUZPBwbJo|)T6X(ohz~8c%NL%qstAM z+$LF^+{=?}p33F#9c1q1oz%U&tG&u=Yads#yi=JRdALnAoLo38m;T=|$ZFC&1~U0O zWG2Hhd74}5haS}+7xUWl{i>=VRl{&E-+Zf_x|b&x@-^C==+RZTsrGj5KX9Xt>A=5J z-|~DFjX_scwd=LXd(}6T7(-IXOLruX{$FG91@i8Tk$*Qaf43ce1@^xr34EsxFyS6h z&XBF~n~|PIyJY-k_7-z+xdv?}Ofg?lBVeUw36sM*7~qjbUW~J17)I}aUkWgnnXs*? z*0g}ZMT9P3&@dO>Xan(LFlY|I0tl}K2p78Gd7%)pu8b|Q9=Il0cbBAC07CIXK)BR? zLYw=_gG2auTvBIenqCEWsoKJwJWXvgp7!MiVpClT zbbU$ax>du^W2#mt(1y>hzlBYd)F-gWNn&MFVd-4NAd1k#=*fPAfnDI5YI$)}MK-E_ z&tpW4RXSy9VTRa1+DjsFw&0nYcnP#!uiNbo>>RO=TNb~EUZ6P6a^b5(1z9uoK^%rn zZ=GqAOp1W~))^aix~jL%^`F?*+3WUuu>T_JfOpqXyev|p;=k@)S6%4ct?kDOVE1ub zfZzihQ@BG{PGxB8PAX8uc}Jv(#On1J zBpY_4v)U2C4j@_R7YqF&$)KiZf!zjSfp{+o@t&g_4739Vum-=LIk?IWfRqTRC9sL; zt%4nmb-Pt&BhE?aWM{^7$YUXU#krNC+9k+A%yA1z(1nQSI`17odzg>W`$`j=4g`5Z zmV*MM(E-JSfm`m`s2`T6E%^YpQqt9WqTMhb{uId&8bZb_kO9S{$84}C$`%hx%~oJoY^bvkjR#mW_izI08QKWn*%P zB(x?Trf4Jxg9JxnFM5Erh4-2r0H9c4UeW@yYabY^i`Fu1W#!3#X>ln2DAyqR#u~fpvbJ1A7Ag6pdewAF<7|r2t?Fz-u@k z7=%~uRDH{id0temH)zHz({Rk&o^1kBO{oHRYZ*%*83qF!1(NTA^PwNYl{ERiL-aNY z$c;wfQnBz>llP^LbF+*D%tvG?2);arioB3)9;yWzUJDxT(mTr_5rQ1TO@L&}RNBAK zpNmN;&u*2(w+&YOO3aeMr5$iZGvd_NXtoX&hlpA|qR7=`cMI>IS76PX}%8w8TMFrTw_nQ} zMy25xQaA+_7LR=PhsPEeU;Ynr%iji?7jovK?Xhw&*l27aKkiZ|Ltb2rJfpO} zd|0Nvay8m^;k>ZWk>+)zgqA17Tkzu(QWjNGWsymnO)u^TJy(z30xPctD>rmVhKzE{ zO-e)=-RtjYqfH(O>e^UUhoFJXsd81coVuNz$-{cbE z0^}@*th!|6gS{vawi(I==3WctZrwE*((b4jur~|1+f-tsU~A%}l4d#P0TX4VGJx5M zJ_SNZo$R(8AZbA?D2N5qfz=k)EsInD8b^VhM--M;r3>^B9h;`8PPt*9j8p^xDkLFn&`M6oApWG@6 zX;Msc0Hv{;{%cTg>^c*RW#C$tffoT!?y{Yi2Q8$tIdGGO^k3=o!8P?Mbnd|4~xqdL?lkK3w5oz}WyrXHk%~rEmiHntZ*-ETe;Dxxw z`UY)npvwhZ9{zPgb zxJ4bd-2EtA4MH{y)Y~d@k=a7Tgw>9b3f{}jvO=Uwq6p7{v1neIw>Cqg?F4kHWS zK=2?G#W8gEBLs|-kjkHUCgNSjUX(~V$zjz9Kdw$MrtAe?D3>17NO|?Zfx`%Ue=8zi zOV&BEi_R0+a(RibQ^1n8?~&5g8(CuyT?V`yc}@TDx=}oZE2SjyPJL1OAc2b`*hj)90-uNC`eu%a09#gC{+dXnd+*(NM*t~ssk3@b7a3jOQaN11CuZ9nY zU8QKoCPGq_AZH~`CuSJ~RvSTvj z&uMrRkDNWwFXfRtjgrQ=R`hvC?d%kZj}p0 zd2tfE_9S*K>e9{cA!Q4ucvl=-W3`sGr5Sf{B)(TbOE;8lHytF9Y4=`mH{A(rKQRg* zz7`;U-kvg$8Pc>4uxQBUB%0G5{BsYK^*0l3qz?aW62d7qqph{`j+Vh^a5xLMjb{Q> zai_+v)0;Ib^4R_Kq zfE6TdvXXbTZlJkRHL%8zX5El6F?5afxq?up8A6tXYQ6{i2=X=#`-e0{UAxwHR!3hd zbhCwS7AQK6FAeH~Vrmn-$}uG#UnUq+4=5tHk!~Ov-73w$`IqwvCNjYuJR#){NVb|0 z1ukDBF7E-D;q8V~FAQl4AvY)F z_OW)Kur?OZiEwDy?-Q6g;#%!E93f3IJxOL`{BG<;N3i{PE@1UqV0Fh1GDO`)H^vZo zv*>%IL};+me!AwEG9gglHk)J)+1qkvZbq~#Yp?fI&*O~t7G?Rg>axxy8Vg5qos=eUw zc7wOT;A_F)9XiLr-&B{om8xN-G@G7RZC8s$n4GhiQ0iDBtXc3IhG>l-3dTuJqD_y+ zAnDRERvRHd3X{e{qBSI1g3d_qL~+hm0JZ_x z+70RDegxX}BeTHYYr)?wI>o@)odnqWN*m~vyTrgYmLK~m!u1r#%GGkEwiU4JOtH%B#UO8jkj0USl-XY2?*~0- z?)#zyW*=Ge$xz@a;|ex^(HZF?yI${%6NS@~R)8*~o=3HHkZ9t0cSb=x6Kv_Ne$Cg))u^;+lc+)>0Mlv(h02B;Nell!^*N6e?gLK(2ye(oT}QJ}YMI+PEOV>kcQV!QXF)&03nb^Lf^7L-?EC#Y z`AU0X9~aOH1A&^#e9-x5cWC`YG@#TySSHh=g^K%>iY>Qg^K+7D7N>8PCXiVr-m@S| zGm`!HIKrFon3zGmIHKH;Cz>LRbT%|tCO!^=s^T6fP3ah;fZGD#MQ&ifz(A6P(CB+O z;0u&lNFJ)vN94%eo4HEnIC&G|7Gl7)hylASirhtpSda#p8Ri+)=Zng`4N+Ayz@&HK#L2`0&()TVaL`}(y1z-8o zSsY5Y9&mJY8ax9AQ!)Z|0J8X#g$EZ9c@Ol!=Nb70E?)~SKX+GM2|hbc)4=DIr>!Y> z@Of&x5vL_S!~A4W#g?O77v?grs) zse2%&+i);T@;k=Ooq1}@*b72+Dht#e`C%owOsWXR`0ViRT}Sb~XXH$X!rGFMP4~$W z(4NBF?mQm~=-wZ6AAAgxKvoF!BR>htQ_&mxP+(2qw=2MY@{(8nf$u>!@Dc3@o}{o} z$8P?g-mE~L@J0c)?d9j|VgvF?_?B*3fA$(l<@lG87*kE01X5+_tpHZITFJI^C6*w$ zs2sd6s={eB8cq8!Z}v^``mB?a!Hk;XqTn+m7sa4Uc?~Ckk8z~rS^>2c2@;7&mPgI#3p0>MPF_a+UGbm-fS9;VFcV$tBJG+ z4ic*yM`wO0`8Azp!LKP`+l1}C0P^-@vw+@ff!-ZE$N*UYD10Mnqx9neA*w!wc5H@M zdF%{Ow6F!F9iQ?ZYpGxy7S4JUXlcoJ`}!>6;+&G1OnVY*_BC9?`aPU^<3M{F2V|fA z!z_Z}Z;}0vJa=Xj9|Fpb4NrEh!Uccff4UK&x;WCN ztPtJT8}VWRbE822RFeT*c2ZkgP)ec(aA*%24HRsbaD56U4ejEd`JnfZyL{y~KYb#Z zO(t-spYS^o6^7~|`av@BU`9-Ion+Rv_(ftow8s@{{iH7zp=()$w&;{)>kKV3sdQDR7W6kuxUWQeuY@aAVv0*OV;Znf<-(-5Q+dceGu(wm2vD= zyRafERvBZJ*^8EAi$PhS;I*LOwmoA&Aux}8KEuUxNGgq`=XXjzm=Je92S*y^=C7}U zsSQvEncy6P50Dfwd_n}92od*$&g>-IHQP>Mqn2%uq54)Hw0BeI?9(K z;R7(V|MUM%AWDnl62ATC|C##GZVdh4KmQLAn_0nuXZE1lz%1EjgcsO(UD&yG?-=-* zsw_x)T;;KpL*6!+qWlh_EGdqgTJGeVEx!4_x|#aYN8DEmZ^bun>zi6)&4t1NxGp+kx7NA{5XR!)h z%PO>U7a2>DHjZ^B4E?G3Y+k0D=_y3?o^Wbb0sD8-z!V29_&jUD<*RBkVi?h`Nj14f3rTydMFF${9az6?Y zh$Ebe4+Uw1_99nfj_f*q3*5af+nOtt%r{;L8}VIeW`7LGB&woI`x{**BE?Kt?dd>EF9Zyw(L2T@0>k~o>r`-pQsk?u zwFmjDmY#)6!BGjaPsN;J%K*Gt#Hk&D3kw-&6!p$1I0E_k!k=D*5aPY54200BbsDV# zYOfh;e_9X=X+m6pZ!C16MY`}KT^N}W6>$-+3`0RwXQC|Y|45gMShpWpmWA6i=w!g# zs(2K`Zy}MbKcej&XvsbQw*t;aIf+kR0|j49L?x)gkKSc86FtzcPb2ATa5Ni-!sas1 zBl6miAiw>9{?0S1fd6ZO|L5zcY$33oHunvFZeG?8RqTXlSk^M6aOVi8YNPYdpiofjH51$0?5Lu3NM5 z(^>)GHVFrHh;fIgjmIVWP998w+~EEJ>ks%g`&cC_mjgJ5g&EEy0tuDe=V1>?9`pu5 z441cTNqYnsAHm$_lqSO5kc3lQ3`u?>^e?aiKxm0!A4AqT$q_kNh0zOn%{?b;7G!)$ z{#@Cd=Ri91i9(piB)&gJE)lG4CKJ>qUnN?m@>L=~v7UM>l!XFN=J_yyp^WkXID)fY zJVmv}8+lwIF4k-vYMT?;HdX!(MbpHOr_^a+M!Yr zZe4$oyrkC^P02+bZc7OvHCrXBftFMw8mwJ=_}W{)lz(w4%?$z%XIn#cYPvdWs)kg} zM+elUR2hV(uYB__$d!)E9rSSB)K}J-UuD<+gKprp`8P48Xh6uTXb8Hhs$H*7-mAWW zo2`=gmb&kyEBLAFSMS(~j}=ZU$3&ZzBZN-Z?_fD2mFaQma1VN?wCL4?vj9{HsN{AO zW;bK6mq5$yhh7&xJ)j2hMrq*Q1RGCscTS3#IL2NUY^0~cu?ZKzZ!YEC;ceUY8B#hw z2N<~GpD~8(Yh0hC8Pj+oUNwy;1$px9N$KY^Zpl^%rMCunn+5GqT4p+sw34ZSxf;0t zIRq|X4lt+2$93V{;_xhhZf`)hqVeaE4ru4R$7sj8^SR?pxsa#8Bf(DPyc60j)+Q(1 zZ3lM}WoxAUD5Saq?p8>3@CJFEVx2iW3%J`G+$~}QH~u`_VY6h{*?sdiNT)L03F#Iq z^4v)07Dxw_D+Ie$`&YOPyH2Dthi8Fwdq%p2#=i=rbDsn0%!)ie(j8Y@1=tl}w??V4at zfhS8Sv0H*2fN!B<&n@oNj;jk|V}X3{9TbNa>Dg?pdd<7rxiMM*;NAdGY0&Z*!R?=c zpgN{~9&KLrd3L!Nj`O10262z+a?Ihk;Mx(v*2z<3*B^SY;9~k_2ex4=J!2I@-z!Z^ z5r~3G0p=wGe;RAXK5_B)=~HF9L0Vwn%fr4MdLTnTgYEt?kV4Yknaa2HRKsbc{9Or1 zQLHdYIH~(?2!h+yWgDrFb1GmD3O#hlI-=mslK6g7u(xJ-7J&DX0dG^=?+5DE)M9Ip zlYm-?b_L^DIUM;(VchD`SwP%NhPVw)zaNBKU5RY~PMMxlOawCZwZPJ|g3~ZUASK?y zHrg$By=BGgq>Oy@&MzSZv0VXeYhie>U|^A&SG-$!_YjG%*u>(EZA~n`R3;W*!ri zd93KjF-!WW0`4z{uwaZZ2;=;U+?J@$>2t0FY zWA$R+gWKHLpNwE@ZpHp742j6axH2ax9pk@}DB=I`IF|VD(-&$19ONNmjLAqR#mmmU z|B7K;0HOp$IV7InNd_AHWteg7(1}Z-HQgq^g;};doNc>CQ-geT&BwShJ=bklk&W=G zLU^YU#$or#nA&vQ+GnqA4Th zGJ`eXA{(tOZie7cqcxd?voif zTW^yM`4P-cQ7ync46D5ue<@5aegBcZ!vWx$y1)cJVB;~eSdbNhVL4V6SZ^PQhio2x zCXLdQVKf`{IWsi0Hygp^8;j17_neTCZARnN4snH>4WaF?q3r17O3e=0zod7!@F#6ei4uexYkfg(s zg%dHpjJn@fWmQx)$QJ>^bdgsBzOLJuMxxo!ROvlfmabnz3V}umG^@>n(fL;{t8CFJ zhJd1sw{2K?8{s*-(m30$e}~Hr>;tgsb6})jkno}dSI8~ZVp>O@2b6W%nljFI>WgVr zzO*gje6vtWi)mH9zt?HCt$OO!GMj^Xl~hKsnulUn9no$PrdbrH+R{!p7;#su6Pk#( zzFk?~G6FQ!;k<{pEZaP024{kkfo&eif-<#Qh^w^CBWWkA;P!lba|PLPARALb<5M>2H!G)S{Zng6aZERJ^i2l=2D=omp@= zhromA)=2=%d-lphL9E%s8?AlgppS^yVhS&A?B<78WW?&Fshc0ORq5hKicQ3MpjDi* z@CO4pF(k1N)eS;&cZ0fA4#_Fb=_u-wK-GgQ9>}T?WhfGM8J>yGJa`I%3q%C=o(ifX z^Z}!w7r+}LM6@%A08ltoA+w%SIm76joDs1fI$E0H3r2M|S9RrlP(T)!c{NOnDK(|Q7C~mo-RENf zS(A)r6R8}lhlSz0;Z&owrF076l-@TgL@|}XZQyeg0MJ76RuA$G#8N(4gV5!IxoQZN z1sQaE_#rsO0qNS1jZw6dlVUwUb%U@G2(#VUiv#Aoh0*P=A;%2CrqtIxB6oDw9-poz8p@+_qKCK8L5TQA zMup3Q=w|J@!6|~4h5iX5Gn;oB6;Wn6qJ)A&U>nIv*r`!fg5-dGAR;$72!uGM*KZ(r z;QQ}b_#2~J2}`-}g;5uDLhfx_NVnJDv8H>8=G^y5^IkRb4U%ykP#A-D9pbzWSPxkT zrX0YU4DSn7-WV_~G3Q?dbKY*hCL>a7)i_;UQ!SG1n5nM0!N5F%n`PfU90By?M_q)% zKBMO5)Urv?j0f<*XmqMOn@gMtsZ|-IP`Nb0&E zB}n~?fYcjqQ~*nFFIhIM$y`$1jp7Wc?gTxR35$6BXhnd?%-^}qx)VU{Vj*O1p9vxuzwf3 z=5avMQ=IBTBzQBbMMTv?nmYY~=(&LPm4AkGs#HSYYV)-$Pap89c(F+7bV{X}%GImw zUZ|s^?wpK#9+VLB(wo#vHh5_w4PKyUFh+|euq0xR-yZH~VA8_0PkD&PJNZ+|Y{NLj zqB*#W4kZ46vymAK?b~f$P#FrP%ee~PFwtT2yq|Bhne(YPfTEg8z>TfV@{*NUvJ%5q zemlxP%HNaj;#$XZi8}rwsN?#3WDvzqCHn8rsG3Mxp&0sq3=~;_cC>Go9ayEOQV zoBi6L2GFObA|gn&xIuv7*2YFn|#CRA_%C?Bl&ybh8X zfhe_1G$~(PN(N2v;PN`4jq;{JwdE~Sx`L_|=7p8K4!_X9c;s4h2_S%bncKm7l1>{M zN^Jyr9X3D6Ix|_C!d7TCWb@Egi_A)4GB{w<<##f#11)D!$_%?&`H|&yxUF^Fm2Lwm zWIX3-T*5wueRpnEcSGnP`{4=V(oY`%F7RgI`q|J)LM5AX4&|)#s7Y>lBnE5Vuf!0A zHyqcM(69#e7>VI|49mtt#w``G@1Y`gC3*$Bom1K-iPDrRQus!#85gWo*uX&F2{j(F zazZ64R?m=&MXga6%FbR_%%D`_p+?W8qSXr~+iTM#OReLh^CpC8V)ZWB=3p@mb|q*j zG@|zH9iV?2kr`udEb(c(Pm3_g^FFk9hfI2ToXXJBuu-FMVT|YKb(W@bBir{jUtKmS&*VX7^023ejVZjHmoG(`L<>D?} zjyEVP`2;S?rB$F4I7V5?8ckbhjC9`wpf%KF##0XCaeWBSvCbu}qL`_au4otqZEP^I z-k^OVmQ;qg6w@g-!uB!7LiD(MX$*H^EKPM61edUyg554K_4%dP2@l#dZCX3*svUI` z)<+^=ltDzjdVK_1z*zX2MtCvN2#lT{VL={Y4PYmW7LjlD6jss3_^J>+qwm|h8qKe0 zE(O~rXXk}2kK)1lal5;&ia3}l(H9)%!k@R-BD1kD zmkjEOm}{Sg>W-%2IuV#?e|#)1_Yo4{o%DFVfiW<) z1I*p_f>lvlY%It?h{8HD+;T&K5JpO8;RHgrRcj4u?Z%pVbPje(+q^zFM_<h=~JPX9aJg65{ z%ll(jteg6D?Qb+7kivnaBPgkf5y4F>ZtSv6sj}%upl98h?hJk9D0s7+?;f% z?be~lUdK^~NngDFLu>u`o za{dxl|1@F8R_M_OK}r)u-g}y&H(^!(X#a(%ryt4TC{I|4sRst+uIgJPOBWMB+m({b zbj707PIxdJ)cX-FjgE|y3fG5+qH??CS^uJaJg5yW*Pjj0xWKISr!PL+tQK$`^uhWc zH5GHbzEvm-(7Mi=#^7okM0y0g)IE6wQ_s4w9fdFQZH6GH>cz!3JXKtc@eQ7K%%Vrn zKO>1&e#CmW6{XD)gyUvp-;xDdkTC5Q+u>ztJ_aSoaN&2J(8)m<7t58vM3dg}Fbc1C z@-_JEfPR7LjapVt%;YRXGpgO1xQfA|@)!XGLf|Ii|EpO85%wYa5Ll|>&nW%=1LF{p z!xD8i#yS=}gK>xuf#}0WAAa=V8VV-F|M(46KpFD#G8!qPk#aRu32eAj&zn{y;HCZg zq-z2Zxvb7yE*EG>Q#gxc{@^Dc{4*u=2Nd1A=4|F@3iBmVvr|n>9vedjd7VJD{6XI8 z1WFP*!>jdC5~-WnBbNo8Rxx#X#PF4LUU4tbCtnyQwYmk(0KkYBn=+wJyEo;+rlM{DeMm*OY+Y(|L zp^==yA6E>c8||eBx1yT;sfVzDC&j85$4~SpOWwG1_)FGKkf-`#JR{Z3bw`+x`b?De z^iEE2M?pj*h?l1ERtlB2EZf_~ojJ`di$w#O%GIBUwi>VqUjg#~JpsfC)F%LQiGq|> zc#bj(^gT?cPSshG5T=K)9QsbhWe}g4FV=Lbtl-$iltUX84p2b3a{=U23i67TuT2!B zuL;VXj@asX73O0o9F9dd6NW}K;6XXm8y`7PzD01&m9T6mgq#gMU@WoeW+VDrJM2ky;&gG`3V0&WY&-4UI2Pp^RFhu!vhzX$Y_;s2t?=TUj1 zP^=ax`iY9A-3r*zxPA&*$Z_@Yn}ROvwOzy>xbRfQK3+X-temtc2e%~ zw%HZ=30&S!PAMCr+C;PzaJ|+9O;J{*9$8`S8_gI3CHNK-^hEi5)Gjm&l&?@Pf>2GA z$rz7ybQGV(B0Z{E77(o)e@{A6gA+5fJDFo>Ip7Qizx2U$9n?qrmx<9`r*R=ka^~`%x3Nc%WgM@7lwBt5Z9P&LDcT@AZda>x~Hg zMF(N0u>TEg?6=s%;0|R~;&Mqbj=;wV{3i|@ASS%vM_mbzAW|=0wt~R!c&5eWoh#nw z-DPV`#MpEe$Q4b%nKFrPV|t3{p0r?r7K4XYfTlum!piDD5vU7=ZUAb@g5T1H>Q?4y zi^ev^>SnSnh84AWk&-tF0v$Osut6nvQp0ZdAd!R>s47O~=8YpUh{$%z{!&_Z)Z~GK zW2ZQX;SOhn^2}K4sW}!_5Nr_CM#qpCe7+BthE}w*6J-bq2Z(?<2@|6Z02G93$I!f7 zo*(x*!i2><$r`UB7N!cio6?=wR4w%_e|`EEuue`k-|W7{(WYW<1}mi}F6u#$)r$-D zQ=FuG5hq>mG~XK%GKklrpC1)2!jj!NYPi8Rcz(u(^nINL&M$(9NyX5+1S1d+twu2S6!RS za+Rnw25L*zK`Sc3P=6aVwS-_}0D5u;6kCOm*~g8XOmkb7AWy>rh{32h1|8mFL)+Us z#f|B{T)=+hnRJ;17lM5et9|8`4ALx>jY2`CTSns{>q>rSgSrp2VdPxXWMrc4_%II{ z7-eZyw&FD$<~uNO87-An+O@Ls!fl?FlvS+kt7N|zX9g=Nt3U!*shWBfD^9DR)e1ck zi#o($~l&gk@QWY;Lt5!cKSV>uhEFl#eWh<|%ZgTY0ZB#0J zhuO&^hN=K}>RxO>yv7%1@Eh>{C?w*Ahpu|JR&ap4P&w%=$ygw$FhZRS0XB{o6vCOv zRK-1T(g;W)><_9*u1D)@By0BYS+nIrOoqx7^Uh!b!4#sSAytN)A?FCa_e0Y=G>WR` zdSgJ4z;ltOVUm$yKA^(Zj#HcmjE_`BM7yaw$RaVvT^1ZP(UldFga$wWtf@LGqEcb_ z2$30w42m9Qeoonr*g*>0@FQm>?pX%aznpjVJwg&>B=E3eL6sFpSy2?>t7SfL@k;~> z#p*u-4yaDST=o#>h>FCSlEKsv{YG;dzCHT znXcibrmw-ux#OcK`dpN!-f15p$`Q2{}Pji?k1-o8Gn7BuO)3J~R!FCM>ob+rHd72;0m zavXNuv%(k}T_EC21DhWQ>I}~1O>{pb+wNC6GbbpQ)%B=RglPhdRggw}_Y&Z9!t*ko z6aSS;zkoI!->ZLXK#A4I5TKWp#}Hgfz+F6S30z!Pu*DzbTFOOME>?Eru{H!FE2Zc8 zruvL;0J0S7JA1Ma1CN6&EW2UT5C_^{Iq34_UWSioWgF)kwd3PK^DR_(Vn+m3DU@rp zCMvscC8}$aMn*Th`-WEeDVJl zus@{(0!rA*M6Ur1>!&@qjwnn7DV6jfa{SSC#&V@nCW%a76hJ~5?2&@HrE-R7esVO| z_YKqmwlvNCiLS09f%~0{zzxUo7)(( zT{Z7Hz$)@bz@#w`r%Qy{vx7706#&=D#&&T@N4~GX^_p4*^1cbCy4O;3n z31-0(FCYW-r{v^muvH!wPN zKZV#h+(6m-mSR*d@=qvTHcIv?SOOK{$s|;D#zts}o@o9lP_8koNn@n{uAkD^?Sg@6 zGR=4OW*^r0hHmyFFoyT@L1d%HeG_e`WU~FypxqnAd8BJ=LvMVNN8mT01mvTEr(Hh} zI(mC^YiY^<-U=zMNk@}%)>N|8g7Wjty@2_6&U3s3?h69$*V=#pr2hk9x)o}8f3Hge z);InazkExWE{2@{K&bD@XDA6F#c=fVBp?=_*9O!vNn!wcGj0k!jX+y8lgU#zr&_-# zUlP!~v29`PymLyD&?%dI#FiQ&20wypLEZNK2qDD`xx7;;Erq{JxVk=d~63Rws)}|Aij6;9r!&pG}KMTcK8pjLAxe#YJ|K4#2y?p3vf2Q z2U+e_XLkuf7X(4)T6hmbz5Lc%a*ylNRP<04jhd%HaSZ`jtO$34pkQ;7bAK30*@V;> zmn4ky{L|szEK6;PLoyhG%dZ{dpB~H$!QYEC*I2yC3wjLXhYDFsJEiiHJYABf^O2`; zKNm8Q^j9WK^77afOM6oxVU??xpC@U#~7q+pZ0W!-D;a^Q}FC(EC%LxwgY-wk+ zI6e9qh~Fgz4CG81kp!cJ!qq3QlGIx!c@+r%_rSs5i)RnJ6wYdvmxIBG@zwc&A2{vP zQD49QV88OGp3A6oFA)9OmtYCW7X-;~wi6zLd-+5JfK(Pi?gaUSA)?`VPeWZO#YT{o zD&S5z-(Pz`S3=yt0YiY41t#yG8~GrW)}}_*ekK%MVPA@u_u?%cPW1elZ}W! z-HXdV46B7d41YIjTaUUwe2I|xU*n|rF75@g-s-R~q3nX7?Cp0YfVd!zi`AK_SS7B3 zfpu26d#fSL0b>zm8!50aD1iVaGGZVUkgy=nDoYY}DQcKc)Ibt;#30npGFN=95ul3y zd)7SdGzYuULr8a@#?krc|NVcEpb2SbMy(%4gHa1HteVmP*>0YWkXeRNs*o8ljvfzA zM&z@Qc;=*e(mZZV@~{by>!^efSQ8$XvuhFqc+$IW)eSwgb@{?SA85e4Ulee#nZ!~ct=X?$v;iimmz@28-6_M%ci z!kY#1y|76}nk6-_Pt}>7t|mE6w#ay0c1RNRYcCoiJ5K>drY(NSWgq_O;rYWxKL7CZ z{KGHv4_{?nW2`3|Gi+@ip&!KM&(Wil(+S&UIm1NQS*J=P${5mgp)*O+mDTxUx<^NB z>*$CxJ(aXF5T4l`!Zx;h%Sc;NwyL7vV4WJ?6OFa&w!vIiK@X*)$u)NqW)-&vJs z;47ojd&HCyiBJ+pMH^)}aRY4)5O{ay#?ONQL#%7C9}<9UF3qNwX47-ofvnu+2N8K0 zly_g^J&VJOKDpaIG_*bfsE-DnPW#yX?8OMFe+fJ-Y|&{gKE+$h5}h|B&7wvifnn@$ zFsdV*y^i#WrW0%qOx@uH5KgmEkiY`nrYnai2X!Q7TO(?kTDX7+9m5{-{kqnXwy`^W zCRO1JBtx)07^H8;(dnJ6Nua;c0Qn1v?}*2Vgrw4WuYP75<#$jG{DVvahX`~@R4BiZ zw~mjiJ`WvYEHI}j=ovI+shh+@;#!7TF;O)Q5@bmF`$K`#K-m)iEe`+9T=U7ukG}Bb z3f(z1%S%eFoj`qI^EM8=xwaphGjDF~$5Sq?K8L<}%8k|c_BzeJu#?NqzOTtT^ITW0 zG5xOcjlH5DJKYZ`fpD?LPF8hB#ZQd649m@t7TY5ahroJ*ICpr~(`nUAmdMMi7zF z1idrAo#yd=R6RGp5ldvVIAn7}ASGKe6&GEh{6T_S@?aCXj>-WSHsSr;@N*Vu7Napp z77(NbkyD3I_jL1*Up?91N8p&+03;zoR*B5ATHdKH;qm(_vz(Sqp4?Qa^#A=||2K?u z@6EV${^Pm?mJ0%w*904B2nq7dMunAdF2(B4rwXY;yHNm2lk3ff;|>i*=RX%$3a*4S zHPkAlvw36`Ych>lZP4x@Aq=%R)$OgVrNQX?3K6dx1)c&7`ia)8b^ruvEv>~cngY6(0o2r#`RXn%{qyPEu%Mv6n2qa%~3ntO4R2kS%0C4a@ zNEabq|DLc}V!GIu)@Q1;St0QXSJOKDJ?pSx>L3+VDXNbK18>EdvSpfopjU$FeMvGR z?LVc$f`Mr@vTCjCO-PTCGvG|EnJo4Y0KT!YvAHB^-%|h%FdAxDvsS^HHE>nqnP>0n zgi&*R4{-P{hP#B&3xd#hwmAXpCX|LVR;5UB_sl@B7WCQR_;)cH0%#{8zN-dZCMih` zl@cXO)`d9VJg?PbrVc(vP;X>t9l?!@hN|Mddy2%<9VVYT>93uz zNezWwK>XF|G&{L3kgdBpuw**|5k$;+2^gW}C}_6P<&h&>E5UfF-^cNz36!%jVvEpV zHV4pIl4R#6??3)w_vpLcalDJ%nM41Or4LRKOlfp}jLv(lh=rKU9PvOUB|4itoSw1}lB zZ^|O)q8sMHDPD51O*4B@9*Sjjoot3PMWm`Ba+1Ob&ery2;4^oOfY`FQYbGCkE!75> zSbj`aVAHy=_JtMJA+g zMi8>X%%AH7+qWUNFCI4V5GTd11pjgftw9q>)4TOcZZ_+>&e~ljE{mJ7W)Ob_P z;UplbqYd|2L|ojB{xyqQF#4k& z6PE%DIAFd9E(J~;+Kid-HCuV4o0R=`-;kYE?Hn!!*dBj=kDFL5<~P$`xMrUrhr*~M z%cMOf+u{ClKDA4nCM*jkc8Md}jYsD=ZLmzhuq53@w~kZWieMIT%IlJBrQLno>%7Gx z){xOwMpR>h&l+a$3qD8un&9flbq(JioMJ20o{*OV7m^!=vA0bk6y6^A8N-&6n{B*2 zFgo9b0~)LfxY23Xm1V*j)gqfqowd(v-Ah<^wqV?W!{b|kQdG=2gg}$NjZw^zatMRk#n=oUzu1@Cl#829?0D@Q!F}{PBAEpPWfDI6 z#<A;mIL*8Mf=AP7OLcoMh|}K*-x(yAiB28;E2}#Sn%=>%iuP$Hq@~ zyvL`txDDWF;Z90M!Y1<=0geYEhyvV2h@Vt%GVLY8eE|9ah~Xcufyxz6u^Y`U_BS;( zHWW#@y4cQO9*xxXXMsFU1V^6L+pt&4MlcXX77_v5^mxR4S`)x+av|ANlz^vl?Ey59 zV;Kg#cHg+bYLBBe{J(kJfI$aWq}E5T07B@rT|Z;^JDn+3KH2A^=rIP@=P7~GJpgwA z7=`h|`^<1M7)g1y9$o;0tua7gFm$UxkrOwNzGe7*qp3!v9Pg*nCn=@E5D^0YmYaDR%Flo#`)dz zTZnx`Q@-{AfJgGW>T1{M>{FxF|+Z?tj5dZ zjc;71@y%I{SH>GJU#Ib%S&eUuH(t6%<5=h!YmUZY0MW%C2#^tgl5aroQv4}qvAfFi*Z>3NG0_Q!Fk43e2 z@Hc4n)##Yg87`Wqu|jI>4!W~V1l=B7_M4&zu(P}R@3TQW`tM*@VQo_`?pDgX#SMHx zj5EJPFZMs%jjAO?HlFA6LXr^!({C0wc741qwag4!#Wvj4Cumg?Jb}Df*Zweybv>Q% z;;Qqg@bKi~y$Y}!1-*M9Rf6iAU}a}p=81cXL80ADG_HIBsUaDx+oM7 zV0{gQRPi0y!m&noq|xFxQt}imM59@6BeiuQqMSm6&gikU2_};4V7)0lNm~(WwNrpB zsuqjVVy(__(FvYao>w6k^?S%iRoEKvV**S1m-+lBcv+E`Mvr;~4mXF1aa`#Isv^~a zugqFisK?SzHlq~;x|V<`CT#(s7W88$*aqRA$Es|JOBr^kW4q?|B=NsH;v&Jwt%9cS zX2A%Uo@l>iz>(0~V9vo#lKaC%f)0=F?h|5zuY}(TWd?HQ2tXU7dULR@Ogac5n01VV z%cbN9usR8L$%a!#g3yN)PymvXTP4KrToxkof72VA4udtwj}a?1Nkg z38l3w&vYTwO`mmv+lFm+g#*|X%n@KY(-Jn&jwnJrU6B?fMz+sUqOm$wTgE%=;Y#>* z_rkkC@`4=%%A_R2%3ru>oGs>-6f;f3K-1ZtYv3P0OsPbR1-rP;4^!?4;FkOqF$>44 zT+gPJktPc9hq`oRU+5`lz*#j5pU@CX+9p~0vfTvE#oN??NSur_7Xe+0*zFX}d4bhl zwp7@#vZ&S22Q}=EeTJVDgBLI=emQ1gSU1fC60vg+p^__E4yHPjaxEz@t;0=|#l;Xt zy0$Cxwq3q{+aVyFIqu5!+YUkM%(km@w>`6&4M+V(n`0bDah$YHtoF>7Jx4IPWlvXg zU!h^p9peQ&0wQV;kB%UB>$E^x8!3e6#l}uN1+?KsWW|Ev+;Dx&H-9GNy|#i6JRwg(8^4Y17$AvTa8<$gea0@+y3Ksh@{LSaZ?n@qWjKlQfClmT>) z6OB=VMqFC&fI6Y@@bRn1FBEDE939b-U3!5)cAz41mSx}VP|z+@KQbbf^q}=6g+7=M zWslyIoEu}M)n;SJiC_qW6VME2$YXIL0#OT9l;Vi~FlvqzEjY%7Ak=ADfC}3XU*Qq| z65NGyGz{ObcAAEPkXr{V8-Ru64uk|ZhJv|ZD*NZ>AgzGt9z)W6nVT?h-wVeNUak3# zOF;K~o+UYgDVhk~bLo%tbV1;J1m{4A1andwZjZqs3=gMWATxGIsE4_%NB|yI+EcDI zkVi^&WLx21?U7of8HHFdK832|NJYU%;_ffb|MG1WqFWu399nsunlYQOpHSGxXMULq zB0z5Bu=J_=Ql{%vDGRQ{)Lmc~qlTK)S`dw_@#$r5mF6}3tM$ytOn zgwh7$S15b}CKwk+ZjLhA&@d%pp|PXk;4;-UpX%{3JB91Zxpgj&YS6mZbFXTx<}=&@ z3XJ7Ut(x1A93a~XKYCTxKreMV6vOX5!Iw|*MUPszK6;4KOU=gSS#DP@Y%;avETiib zJ%*G4z^d03ZgRq67>dS${WsAILNsVc&O!YVFf|MmXRG`G$YXAk7FNeE`#OLr9Z1K? zpysICdHJyo2;}}jsmN<2*SY3+QmAM*dx+?C1+tth`ZaK@DBlkxN z>8Bkxv&k=$iv|2i?pJmdnA5N(^#8tSM)6s@KLrGGwd`DgY9Mt3?*X$+F!;a=)bDUy z;U|r5_|A;`)v(v!M=fFIQb&Nrk_(I#Ptpb~!jIKiXx~Ems0kkH!(lvzS{MHuO+l?Z z{!q&Z);E%KGG_5mB${A1hd4=83__nLf(5*E$jZ+*Jx_C5NxpdfD7@eyU4&Ew)*KhT z!Pzd39%YSzGIfQb5~%k;rGN$j*Dp1W8BQl$UV}Dei40+uT0y%kx=3RE9hQb6_(m~R zfLzkGux{yESbnt1e;>N7@NH@Xx$NtQF{JniM}$a1C}`*- z)Y8Z{oQQIk!1YIfO2XipQbH|^1GjK<4IB$4!vf#bybTZ=+YU`9^yYvpgy4RJ=$Z0l zC{2KH;CnpiQ95vZsYleTe{lHIhvE9WWwaJTKVa!*6Br@Cy8=BvWfC!*R*|nPhQ1s_ zh6xT1l%gJ)W!4NjYvda>XCmTf&87fhPl*Pgn`E1mmJ>wKeu8A%S=R{bg%}{EcfzO+ z=`(j^p=9d7VO?%a_@&P``;-HYqj6uv;5a21?%V1VAj*-3)X0Q8wGw@;Hb|Dib5J*d zhS`#={E@CauP*83kW}%z!P44r=c0BQOOqDziTn%DrkBzLnv-it`MoF&GPF&5%@ROT zFsm~;b6PhrQlNB_qtaF$+cQX2PTa$V6xEJV9)&A_TR0lTG}VctP*lQp@G&p~Rt*lGfZn~SRl2+N^#piWo!oCbKI+tvKAEe6?ek0sJ$%C9 zPv{$)lS|YmOQ;L;5Kzq6fQ3-e&(h<~b!!dfiwqDQ-9bbeq!J3$Mhw2!{YdQ&JI7QY)ZmszFH1m#c@&xEaGpalg9!Y`*~8MYk%24yj9*m#0X znN}WYT|sfXl}#RAHYRSB6E`7(F+(?|2`oj7Pwk#gU)?9hp3e0~`V7{UKv61KQhHRl z65IlqW?|#&XX9hyxK=0+4NNno7T7c#6%n3Jt4D>?k!p?rF^oV95TrRc5*8)Sk=O-u z3}xbsbH*V||H!zH@b3W4q^^Ul<;I|d^Oq?jShq;H7K~PE_4jx1_pm$7;NT7#w@t{X zCFUyGn#p@;mm=7cE0)}?O2M$LGs;g{cdut=w{ird|1L(3?g&pFt?T<}2*U{+o}=?K z1T!_D%tNO_lkZm%opo|MsVgU~<@7X67;>t#WqVZHK|!F?c36HRynq0p3Jr)YQUF$4 z_JWjL_J9jwO=)nyc$sK$44G($hRK)F0G|DTYxK{vo9C1v(otF?f&rKUzk%5URmCYG zJzFPNH9-RJT0XD6%cZIn;Qeq^r)@kWw{(K|$n*mIE4ehqevvnfTF#z9J zlgR|7_oCO6!CkP)ey*4k=R@5@YTTTzeP!pDjLpk+wQtfyyNB#Jeo4vD1cnOZN%dYZ zuEvxkP!g6~EgUs!a0uwO>#5VhVXQ=-nU_`|3h}tnzbl@ky%&t@{kpLlKhtKwcQay#B&xG_+<+8$hwnC7S0U}q#6X8Vwr%jX`({Y!N8z=3bYV#EsiUD<=|vkU)Ii`J)oP2l@mgn2)=;=4kz0g!d4fT9LxkcMf%xMf8dvZ{e*lq zRv=g^C!O(YnXGEJocrnZ!Ba&ER=ze39C9={ufSIJdM2xXt-@&i3K?Q@b{vlVc)0+d zOjZ(lH2g^-=)G;jtkz6cDk$?^kAd}*L(C0_}v~I;hRRtH|7Njf915_L!QYF0 zK`$dV6{D%1H7}#g&ohX}0@IPMzDG#EZlf;-Ch#28XS6oq55)UJh-#}V%RG!T5h{y$ zeFoGgn>1-!(N(+EMlQZSRE+MaRm8BM`JRV(X>gfG@65cAZ*^)X(HVqH_Pzcv(?#5v zPOpYWFV&adxW?fj=kykVw$xKjeEFnJ2}uwA-y6DwAUFWR(`VkS{tfKnTX1rOlsS9r zO$j0^^lh*kO_bYXfQA3cNI2!o!!mPV7c2kEe5q;%-Ey(~pME0c{@Yl@oC>OMWun(( zyS`c4uF^}J^BK>>2pJ7fL*_Q~3WMmpiBjPd`j;Y1&!5Au1FQ@@6Z3Mrn5{+(Vjsap{;J!W`$h*Vm z0JX5@dxDr&u&9uTBQIb?s5)f?zP#JdAw30X@CXcAA)dV3<|Xd|B){T1rE-#5BvKy* zF(5H&V1!``0(Sl!z8PwY2>0wBLU|z*0pPB>m>)v>28FLE2gt8#M2jb%oM>@gwv z?|k?gZQ~g>#-#6oJqTRS5Zl3C+J}9i=tM(6|qxnw@ zW;>IcK`V$90#+1RqrtqihvWkGI<@oT1}qqMbFBg!SZfuuFMN^StmZ8-B(w!(>Tp(L zGDtL{!}O%*9d4GAg-1s)Jd2y$EiB>7r`Q2IR(gO?qzwUKfwTycNCe`LK{gLkkrrI} zCp}m`z>wv6^CF-7mlwa$CHUmH*J=D4(nY{^Xf^BdN`O>FRTh&4`lS7DgH;4GW-0S0 z>yuFU!nzQj93D14TGiTEZu655^YTw!`{xduckQ@WDsEOc^Cgq8iKOzKucBPEqye}& zlp(#W&USQeR*F!Ho zsbj9+gi88GHj7)ukJRutRkZfQT%s#pKGcCIc4Ja^a=DqE>tXy38jTF~0@CWyk=``z zuR>cq$%7j&B79Oif~V{~Un>CTOgb0Guxe%yc+ha@Z6L9-$@ zhrr{cgScKD$Z}H>4}Bg5IR3Xj{Yb{R;e|SbLB0I%BF#MxC3IS`( zY6WmO`*NVQiaF)}m`^DGDS(ugwigJ+3Aw^MV;Eibu@HpsG3H}v>*Ix>O~qbVSrBxH zi8Z{;8RW&)-8I)iaG0JlT@JJ2vXTqLLg@vtDCik6c!E&i8B$YPrZpmd$CR>z3%FAs zX1GDG1drp(*NWlg84*7(ENk;ac#Xqy+UuQhu}xE?BjK+@^WOAZj_@HaKC>*ARc%%Ji`*maW3dS6=3(vERPEuS@IY?K0Y2a-^MvR#%moW zH5mb+#^Yo_gWQ6{jGKtxFP^6sT{*D#j0Yq*nN1`rF#^dFa#94x^KB57=X@xA-Ko-nF(M9 z2*MuhWw+mzD!Apk7kdh$@s3w}&ygnKq8bEGVqMN*?$IL=Spi)wcKF=11WH^HO3y@T zg0>Lv8TgA9o55|?C|wc(jV&Mm0C*Y)vV?3jAO#oiUoC03o69QooLw_`Yl^0kM=>kQ zl|>y(%dJ@wa1{~Yd~Yk!@1RQH0Im93hQzajVKRP`VaBOeXNWuad9$>Xf==`-G*O}p zNPUR-g%TzXTp##T`fbCunRU$VVoNeSQBqJZA0tGx$TNc(t-w-MJt1fm2XH7&9A>~F zBTz{Pq@BjXqCGbF7C$3dzb|WjtQ|*Vxk;{yD0Q&nV1U>l=kS~pP3)m9Xhw^2e&H>} zkfMTY6`hsT7~lkhpbn2IOWBVs-yUKx;sEhGMpS_Cy#v|@Oyi^cBXXZQf{(KK>_^ga z2n}pQ{A*|Ynk|8OAouzP)926RUIXT^%UyASu-nKxLu9Hlmai3?a+73W1dBYNfgX2- z1}(bx{w!eDb{u{$3`As~a>W6&4D_>QU(4k+V@?h>rcos29~>yI4+3V%UTFK1Vo}-dQs*MJH5} zwF578RxsEk`!2!qNZ01Jzs|B;mRn~G8PQ*}k@Mq+Cu{R^&(72g#{)SYh82)~ZxQ>B z{uajjkJ}}B0JmFXOC-nzvos^gamRTz(zCSBF+}^dfY_mMD-AFehe7F;X#*ZF*e20E z=M>MSTV(}XI%xSdRerWcU<1SA;W4tyXPZD#zxk%1BZi5+_sl(jWhll5PY#HwPJ0cx ziKa0#9WJ%r3-cVq<1Cb9|Gx_ob z1-jwNDFbFr+){`bhe%h2^$CL}tuxF^_!>5SBJIMeN+*8t49Jj$BEPlByN(>c&G~Qn zoo|A!(iTgnYB*sJY8fE;=)Y2TS^kGq37i9p@w z5avxT(e47Vw}&93R0;snAH2WcBq9OxvGBskIShZaEBra$?Q2V)gIL9}=YB2@rX(5D z8?vOJ04bQlJv_{)+*ZBJ}!k>2W*8|3Cwkul#`KK*h{15{+Jeo zdb;gG;yRLf^$l<-3Bt*5>UyFG&w^P@dB+|Wy`pj#+40Sn)I(1L;2fg6#Uh3<;>Wy- zq*-M7=w}Pt9+eseW6ctJn3{{PiV5`OZn|GGNH-Ep4m~EQjqG8)x@)0)&YY> z3YAC$r|1EKDTxHjKaU>u`a`G4)C)(SP$?sbMgSU?GN=};A-IhiPB0k`DeV?Ng~a6L z(GhO*3j=wDOj--TDLcn`miBlz*(L{904;Jp&d#DK_H3jq{CY34olvpi*TG;{nI#5B z1o(;p>y@PD%BwjE0|VR?H6rsv6lq{MtY0*8AR$+uFTl-+FJ~JIDk`eZ1d30 zQW1$2S?m-D5n%xYhE-4AjQinuZ@o`aQrV8sK1f0ItPS#AN)uMFw~(`izIc=kYvZS= zv{FE%nT-;}gnF)%V0nKv`dOGpr1um%mu*VUsE+NiBCkZ&apWugeo@C*I z8CoIB+@M2Yo|!H;KOh;sr{LK4 zpp0rG-%}P)Jlrv^f+J*kxQ=>^3Mza_+xn z@Q(6O*dw9L8RxgylYyH{bgaCR-db36p2rYULx2(Nq=4Kt>T`LF?5QwM<+6p7^Xs`{ z;v_)smextjc9Af0oOswFw_Jw8=#ANE*WMhBDQ(6PRJ9j~^|Vt^i$)2-`0iE#p`r=_ zim-=Kg%VFLR>F@uBs6V=Q_^q%IUr17&uXO|vqlVi8y&1}rd_)f!Rg0K@tlmykHasK z8kGeb!g}HQ7|n8Od8FDJ!Wd+Xo?pdOqU*;7yTj#2p|ZiL^?+l-Ut?eB294jQzUn0a9t`)UNgQSiiWmxE`(tTgo@iwZ_Iu zIUMbwO-0P-_M?qtbGu?9tv0gdXjcv%^e6(kcH`kCBWr3b(FWYOhQnT0T<9jyL#Aap zzy4+v5C8>U((=^bkpPOZTDZB#y?15}F~sDOoztO|>S1*-fPNTvN{r&kE{J1=Ujzq* zbAn^zJj&*YXd^fTqKDPM%vL2|G78zHJ0#TD)L~Zz?4KzkLwK0uKX>bRVBptUrBR0&{GnmI>9P-C(${kK#cY{oKN`Kb)g&}xwW8ZQcRItgQ31KQ?oMd275u|Q83%-OWQWIl{;T$o&{XQBuNk+1aob(;jJ}?AhvMHfG7Pk4IC-R z@k?nitDmWP;CIyl=!MLB4iOD?lnXoGTzLZ`=9NP%5*G3Vs0?O)J@PziUjxJ}ybHXr z(BYS`uY*4pyLQ?$TT*nqAY80SDoDkDaPU21aH+o@{v`Lt8V_VVwtNWX`df z7jC;L_OJiG7QId~FTR5*tW;3Iuw`_ue#Ql(2eQmm@5m8Wmr z5X7cRvQawJgTqPINVJdjSt#_FUl+xQ3e5|vlj04-=#P$ql@uM5>_3i#tdaciYiN{E zoGvZCUXv$+DophlV*VJeY;eqjioEW|oEFBDLgclA27;2H2A!@dMoWtcr~hW(;W?N%%GWFfNU_k1Zd^wI>x1Q-Ff@)Og&h}-y(SVe zya(a%1l@?N5>VI1h=5uVd7y?M8RUP+N5G554?=|XkYXx_V5^M31Ch)y%4#qgrVj^$ zf`HkdwFj%7+|-I%`|4`zCfjFdFK1eqqtkVbZ2^0RN%a{J9I1aGACmAD0S2@^NG66n zxJyQpund_A3nVL*r&Jlj6uc9@FvM4$tqoh*AW zyu>DDqijLqQ2D159N_Huu&V<4WXkY@OmNN#hS2kgGBdyDX5eTk$8aBoMtkrAo1M%4 z>fq^@FS4uax}MKSxFA<*cC{cxWxEC9#kb-|8$G1AlpK>RJY3kMw)a2RWdYED{C!Tq znvm?g-$i2?W zm=PlpM&?mAkI)Hu%5?IObx$@sPt6BEQL7Dj0{4Gufx-Ro%`e=W>9YwNL!RkQCp7=H zFAbEGpn-PIyz+?rX?>ay7Gl8kBNzbxP=IV}PYtkUn`+0L>zI!g>)Rp-`rbq6cC@-M zr;G#M?I))_1}21AECR6HtEEEIu8bD-aCSGldkKSVbb8 z0#A$HioUjZNpHI0yrYwzIKh;IFweibbfN%rQ zygdX~xD1zOB6zz&a=y8a3z4f$7NyAg@qnx$jSuB&f23-fKSb0mzrv+A1ThaU0K3#S zVwtNNSu{lja5{lkxyA^wLBZ_&!2xd(@D;&=O;BmOx4tpI!>`@jfDuLO?(xi%9&C>v zn>p0sZY>%}s-FlXLx1I9651x-HHDK#kHYJ)Ls&vAg!{vy>sE;6Mj}zUW&_ zx?#dWr!NQegP^9T9AgUG#JB;%HkM0?&QKpU!7;H6_tu#!ah3S7XYKgA1s<`dl$<_e zkh23~c58sI}QN)A@G(-s{&Ni53`mX1|sYj;=>x-B*)=3CeV-!Q5N$7^!LOylOYu%q%@ z(cx&s0Z(C2)};uo-ocRNpi`^^e?5yal=TjQZROBgE+R*b{L={{ zJ0m2)A(<&>do1^Ls+`Stac6QikZ(NVkd#T|{Ek>5gLYqKNAn2l%-nwT!ZyEpw-vTY zOGIWyf+yRCy`4+?HYR-IL0@5%5(@(*gkZjKKt@fc`{_A z^B7kOwv?{9>F3j1NO6>|{$3dL2ul9i5 zn`iECt@uEv%!3z;e?9j#JU$u#2p5QaSuU$T!Aa@8_1m;32f{M~Oz?)V=E8vn7gIPm zw5Ac=0`?MsR4TlIFD4bcdKf1%d}gr@GpY|31+g_She(Apf(%Wyl(b;u$kibxutt)W z7q{g{N40*xbNP&s%qbipK_?3g>hQ3uupKt?Nb#Dl*PzK0O&v34_YgYK6%}plB2T3Z zQXsFacewF%c+gEq&gG$Uj4~PBbe-4Y){=))!}~y7tmp0#%rGB4I=cu5Y>tJ@#z~h` z#TR#Fxlbs1o zoUa{2^A3T4Z1bHDQ5`l?SZpzY?X339t5AiA@+Kp;fLbVL-O5odJ!lK)lK@D2?hV(} zz_?^(1PsOvf7)e6Bt~j7q3bB@gOEX3bwW~YPJAR49H(0WXhd#H#H=rcxBcL+Cuu$e!2ol^} z7G6O#Q}FtFS~Tjd)L}mMsZ>1TUe+2<*fi|8r7EWC`wGTl+J&fV)`*b=JMMFo6y3S@ zYJ>VI;szi<5?RB4{}x#_E)l+osQC*&gexuyB6#M(8zd5hvu?1mo%g z5;I)!2x;6;827Y!5#e%oyUj*+)<|$Ihv0N;{i`<695_2Eoz@*fN^NkuV9=g2xpD3^ zTQJWPJZ?_JRG-)!d-9PA0I^gD$4K>ov~2qPMe4vvLt?^)6R3Anb}MI!2S-}7x2Ec^ zMEfwr$3bNZQp9f7e0jLa^o&FfPu)7R z>_Gx?e2Fw_at^UOgG;%=D4T3WcPu#@Bwu%{Vyu+3)kN4|<0O#Q>qF|2gfr$)1FYLd z(VP1&DB1lA*6)5!6v-<>DSzFRCAUEC#^pmM`>vk$0|^(Fz2}Fr2^fhxD7` zdqy$UPpCfu{Y)1!j-Ei`P#pgA2lgBc-@2Vy-9i`Q6tQBH|E7T;ii!hs&0pwET zncRAP<0r`u?8gm>K${bOO?az{?d%)UAGRd_P5|9}JaY($;jb-+joIDrB1t?%k-#^E z_lisOEclMOCvKRs?ix(nJ(G~bh$%k4_%jCR9w3nr=;8BYv88K*RcM$f} z7kYy1HK;piHl|jcP?L)gM2HX>1Oi~Z{N1O!8yoAz^&<436RPI;;-9;KBgUgIsf55UN$)K0!|vML>9m9Xr69s}bDg)F}&#J3`a6`47hpfyLPHuL(WI>ZgyF1t-C* z9d0xd7~H7)N1g;i3E$H}Z`fl7S3n~8ypGvx7@mS9R3=LrO@4u{)SAH*LCmq00QGXA zTuID0sV8%9f;LD5(fY;Fod^uVY^p~`sb;OkjKWb?S#zeIu3=;F8MN=VVSyxy&?Atw zjft_bK(2pt3{tZa9$3ma%urB9_#(jwgJn(Cl%;Oh&tQ?z7@e!MJj5>xMQjd!>u$)E z4lx=gF3&Uuu3;%s6Bu*S_ce0Rs95eGaMSk%(i?2aSL>v&14_XaQnCv^1+YCnAW}7& z0urB)2)wJ+heqCNAl@Wdq!df75pRdgCAc2)dy=tQa?#;F!tPTIT1Xah_kNisut97C z7ny(5@&zta6VvHjcc{`ZPKHcJ&WUaJT0=GyahOCWvk+6FEuN56Pqb6jN zB5#p8xP26dz<{3Eind3*5M=G~TIb@IchZ*KX8#!!K!zNQ)ofu9PC>>AsEKP|N)=?` z3H$P-*3AwnrGQ@|>@Z=tD{UmqbWJ}Tg1m(Cz{pVM>*Ii{j{t03R&<7i)&8K5vWGyf zesJPf?2yo*cB-`EaSzgB_be7Yy5=4FsEd^*M1Qhp_xt~I_JVWReGDB)pn6&xix zO`3yUQ2cBz4{VuzC+^Z>2&m+|K|LGIcXF3fov;js zY+ErS_M?^7?*Zq<7q$KY_c=CLPnNx8lqKa5I!(A5C^zkLlc&``F&@L55{w+aH+sh$7Ox2*zWzCk9`-BI{Z6ChJ?r*h#CH7jPkgF<&xl0I{Zh zeSU_1$r17)Ke9r;zr@hY<8*1qwp-j1j8EPb`ez-CaDm4_?C73@K{Kkd;2iL2$bg2R zN(RaT7`glI!eJa{@{qqCW{wi{pgBT1M|;Ta%q_}djHCnJ6a{O+7{(S)Z;2Ep>)yH4 zdMLNR^#UIkc;}9-R%qBBkX+NIE^EO#rjAhvGOUHSluem;OS_4}_qGrxBLy1asW|EM zj^V+U68^`J`-nHFmt>MD2U>bL>f#_ws8<+_g8Of%S}xcmq816-n9rNkByx(N*+}CW zO={Q=hy$B{2wKvD%Mmg`<=P)@6v<>o=+8u#eqlTqt=S>_SO^q1fJIKelF;FP(Ej6@ zHRR=w3s?gcrbemy_~VbsZtd>!-~6Mz>_`3!*lpp5UoaNS=cBI}F#7n?E;yJ8t^vX_ z$AFv4??S|DSRv6zYSCmvSQuQXAy7Z8UFw5g4A&ZB0xad*ULDDcd)>ei0p8B;AdQE6 z8k2YFSqSbS_rWX~P0=jyF^|?mQtBhbi%Pl=vhuKf-h2fP9@ZUjz2&ch`_k=QK)wZr zq{ZjZMm?-W509gVjp*U$yAQwIefTPR_@@L!Obw?Xo_0rKwd3c>Li_}qi4+gPEQIs} z?$)6hBo6a&B%LD(l8J`VE@CE#dmf-GqO-SJ%|YH6f0z(PjNXMB2)>lZ3@Dv|J^CRy z?F{~(r}@gS_ytBu!wg86cDKYpW~ONWQW%Z=c{@IZoeE6(@NESJb_|P&2(Tgs9U8%x9`i$B2t-e9WTFyJ zrClj>)duz0$oHur!*Z#JFQo|ol=lwH#p(w?!Pg4@t3EIfr0O=7JCC^i z`Cf~go$ujXF@|eY-Yi$kQB#JTx$dxd%HWuf8;Y&K;NC>#JRoi!cjRz zMrG0TVZUlIPsIgnrFi;wiaX`vh8*E&<#q1Yy*{CfI+?G^{5Ssr^V~YDa1BZ&On2%)~VZLwTFPbQ$iE`<|%F2W9b=k`0zFEL>B{Gky z_REHR`DxueM;qlWQ@T<#g({`PN~Mga#mfFqKKP~n#Us}mHcfV~g5gx`aAph*r8Zxz z0E}v_tq*cv{|j2>_Li{eRapcxifW0YFIN61Utrqun`?yH<|!6}Pi=*2|3Tqrc*&E( z{dAxrProNbxywtyHFulH7u9*1fIJ4nJn%klhL(}1jLw!fFhg%ptQW0W9}SzhJ}lku z;My6`k$jt3c@V9S;=%fHySv`(zD03@2{0P`4Dua)2Clf$l;!@)WP=9`B2 z06N9D!t>tCX3WSagfIrf5O~}RyuHowCn#US-UYzkTW?ALhs{kcmMlOne=AU!K)Nbm z`F|%^#w9OqnhRIl8ZTQaO4$`twp21@0l4&H@+uPHoViPBkkjUdpt|~LZ9wD(s&05G zp;AEP*(w&a(jm=4`r9mmK>d}H1N>WCywkqLE>OQFX36-6H--OY*NxzpN)o@cVTTQ$ z@opQmhJhyvTu7+qkDI5pw{4(0LuwexW@l$}iCiq+TOya4$i*;d*6f)t&FLB6U z7KcpRk{>w|sVoqQOjwdJEV6Z7EHbsx8EE7ju@K`n{&>| z21o=^Qu&htT_YGX8jU+T@<}07O34v7VE_YF5Ugzg@K0h0q5$rZe7JT3H7)>uyMxFB zC#qQ6+^lZzEP?$J*v|#*RY$k~X{~F`@b(#`hLT)sKR{S~n1NwIWUM;Q)nHGeslYiM zv6&kUxQE5?SMEYgCB?1j4OD@AoP#RA-LWlFiLJ%ZFG5>T(H}G;2nbn%;`*QsB@N8u z5!fJN5&mFgHORueTAU;MHkiS;G&eJ$U1*k2Yt*3MLrrw_?f#eA3~U*O-_j2M+iz)^ z_U*T5lEdN$h7xwFoDtGvLs1fx^CiDNZB7_Jx<@?(Wr2wxVt(Lqia8m~)}egwUC@~o zdC1ND0)ro!CUoB7CeuhxI67cZnnn+5U@=XD;=ax>ftSg(^Fyn37<}Z?_anWs^{ETF z&$NLUW87olZ6P*g=^F?GfvnY7KE%~x1fwhhnKTDYt}W)4*gT}kb?Ydy8(H}1h3ME| zlYcVm)DW)#76~{oP`X-A30<&)PO}{}f~aYf8Nr@FjZAFpn{WU8t%Oyely-u3RYsEN*Og0oa2?<>4FO7>CP^pb=dgMq~{5Lpb5K zx+$-*nYs^SBTNoMRo=dN3nTA=zP$nMu%u@fM9UXWd2SoW$0fVe9 zR{x&VEUZR~YBjQoZ!ldE+Y1QclO$ul(SxBiO}t<D+q z7Ysd=`E&G9a1otg{s!|CVTv*E88hyoP#y;G^&yOVm`_uT0BK-^n~2nz_=o2AVi{;? z->uC`Wl8%kY2UeMU(%+nUe6_5yf>?z8=mVWTwV}dzRiAk*nB;k$xX3oA#F>ewE(_F z)lkoQQ}8#-W|CY4(yI=kge6op>3WTLe_-SMmEE_Kt^X%{7mjV}* zM@B5rM7WxnK&=nAF-ixf!dd4zWqkbTHJFJMJmzVuZKQ$Lm`{blnK9pkH&Hcdd`%)Y zroDrb$NAbZR9}N04CJm9`A~05B&sp zaf<2f^D$4eIaR$D^G@tW)sHC)Cqp#kLDS+q_~Hb#61{Ej(ibpl4fhOz0bi!QY9#-} z7x;!&B=-qDeDCN#v`5RoD0D1bDO9jd0r!i` zFaP-BF|;-HGkP>qn;_C{w!>J819-+sjwvY9>P`4eLb5+Nr-eB?yR)%#4WNJ#eW2cX z88qV|h_mFVFGJJOT9No+SJZ!91S7mGaE?;E06`#h8L$U{rzSRGgycC-sWH*85atD~ zHvn%-OuQgW zeAB(~s2JXvV1~ra>Tk&x32L@{QPs=fXNr7oFpN-wK9zl$C`Q6aXv!4>5aw(7bNDb) z!%oS1Y;o#VadXMdytmwp!>NkzfE%udPJu^Zs?->sUWr_r?-aMDF>1FbIQ6irb}HW( z|JrZ9LEMGcp+2=1H(L1b8KccO1BAnjdE9c3ky)X3_8kg$&c5SIEqs{ioYnBObJqHf zTo`3w64QN!dT(MLnq45IAA(#k{ST>xXvN$gAW@_$7p?Ze<4@O6a3EF}O~e2|G2SM4 z^fPq}>JmM7U<}ZqG8#q@@E#liQ>{n|Xqt(g?g8~om3Yq!6PAc*L5S#Xb|yeeR#`k> zB!{ACfG6RoZ7ZU?^$4%TSV;x6q9=1Op|dv1i+I@UBj0$wdEOsh(y@%VOtivQld)B* zEHxSLE%Lf%kOw45>PEc|aw*wpa{{4*5Hh)qLa9(hf}^B)MDB5CnE!q?Y8GJW1%o!V zMiZRS19~BB=a14ZE$hx2-?d;bc@{Um>$J`gsHJh%X?+JnwhrImMF(#pAg5aVT_b9p zA%Y72O408kK~E?f)B(Cu29aGzP|uY}O}{uw45xDmbF%?WBsd)%$ej#I=EW(@Kdw^- zTC#DV4DUsb5LSV(DgjG4f~zO5H8@ve+6-Qg-#Pw5p%9I_h=YTOP->{CdEAeiC+)5z zNK*4I4oqcF4<1Ax!@3OSj4)6YJ49NV0$M1>K5l|Bmf*nFf>2?IzLmy+_61lWs5<>t z*I*07P#=s*1xn-&w)U!3l(ERZ-UCsPJlMAbyG#0DLG;0$Z;~e!$}}#kSbD(=lfUu(!M2jMZarx_b|4b7=z#xg?Y=Bf62h z=`;Zo0Nd&H&S<`d{M5!BBU$ZsXZT7wCGL*~q~AMMmI(3mX%8-X92~v^-a+OqBaC|p zSz;hDMkNIt%|h|@c5!DZzJ7nj*Vm+0h&Or=MdV??t!RmHe@x|%u ztO$vO7f1F(4uUpxyeCJsQQgGCL|F<@DQt!%iA2KUFG#9M9vM_hUKjxf2gtHp#|V_Y zf1K0A!PZZNjgv=q7J6Ze{QlcU6N2H|5J}ZbtC8~X%Ds!<$>^juu_|&jz>fixfO7LO zVj3YevY`jG6~CTpB*i6Fk@1LEw<@fsD9&sJJ917DP-eXsbL)F{e$Wr7!{+#XnJoPPa@S*38Jz zL1j>Thr>VJbn@;eCd5DxldMwRi871o<_dcxNIFJ&!1+AC93wCrFZnw}M5DS~l;PXe zjp9;pzm$E<7vS<9kOD#y&v#~*uzo?X{(3tQfbeOio(3FGY1cAjQ(jL2Rs>3DO_T3gUgkX?1{9 z=nTdUZ{ueDEFPU(;~K~@#SyIrHD4QaHo21(RKDn+oro`LA^OahKpbk^a!40P2&2+u zRW>T3O52rf!ZJw={o{IFi!R`wj1f_t$n-z4^=)NaYzG_-m@TpT(V-wlD?HippzA7r z7o!Ni8%N1wJ6f-=+&b#$yGq_TSIL)lKf>5Hpvp9b|=$$pY2BmFOwwIxW-&3-_4V#xD zY!^S;LzX}F&}!dTRu30(&RBJ;LD2Lgx&)&O0;AW57P1u{glYrCvK3_u|pc#u8;Q-@+n|EUFLL$+BwfLi~nOfz3=LDq@X9_^E^+J1;0 zWvg0T#yWgYLFBa^uxfy*fTkta8x{g5auYTyYCShe&$NWO1=ca{M99su<9z*&lzo)ct;Qj22s zmsYdsq9bfNm@ZlLW@l4=|)v|nN}NT%#tX4QMJ^1gZCUeknW+-Gw%Kp12AXCfm@{ggSi4>Qkye~^Fr z&Hk$cxV=h5@D_+~Emy!Fq$BI5N)=9r=N&ByKOCCL&{{WY8P6e=o5z4+GOX<#h(w!x&hdfjnCA)JVvp*1M!VPODjCT3gLK zCf>L3;T^fiurNc1v5rIl5(9KGb2sUxYP7-^ML<%Si!*@p62?D1qKuMVKnIV5QD@grBNU2PpF7~jCn}^aM0tlk*fxt0H`CD z@DuAz@7q|>A9jO5bYXJDfkf+JK2{eNUm7&7LBJQh$ zx`|vGQF(Yc!ypS@7PVV6E}58h=v1oP$7DZ$T<5_ zTnf{h;S~GhCUntbC&--!6G#N%LDQNGH?iS40DlCMh3Si_muF|ekysUvclcz>AmKOy z*Akb5&mPwHP;3~GTTDWL!&I z45W**E!YqqwoTGTsG0vlQ6+F%spx{X1PQ{L9T+(d+I4rRY3N&qtpG`#)H~Qk9wWlA zkI$_hL@s^JymPryPB~vgOU=`gPMME|UD7E_I%P?xSeMWLxOB==t%@wsi&3l2i;^cQ zPpvtmcRd10ay6Y2CNfRaA|`?9^(Yl*CqM6OLP}*USt;!$ne0RY({!5TbWD%~*iV`) zSL(%C-YRcyECnk|!Ag71*aY-a5>v)(=htp?$@ML{KH>TdhNTb= z`I;y`gluqEqmpO_r@sm)x};ebMzh`kwxr0{n?TX>WGK2}jYDoQsw<(WcrVi%(`QRi z!E_!0SNqKY;uR>nHElQKdE3)CfAV0ejV05kXo@m1Y4G%S6tlvWp zzCm={>DAAmsF8eqhnc6(51zh6v$%!S93J=3B`Z*G1cjui*`e~3(4E~O7Dej4qE^(V zMqpaH0rh%4W*dX9UW3UnaGFmMjxko~{COLZ9vQL`))Wj)6Ftd)nI92V=^-?UZtxnxAT5r# zc0a@eU($XwRoYKj#@Bu+GoyEMsXEV$JUVlVmJC7Bm*bF!Y43GG1&%= zFLkVJo1d?B7HWSY_AZ(`pe6Kylz~0Y!C=(nG^7gtdEFNCi?$$V8b;(Qt0wRci_p|Y zOpZ(*5L($BW>`dUn=cY9o^Aa=2V_F$CmN7WZqgO;oUi%pc3hWWEC zb!~-8333o@Rgi<=iqbxnz*c4Z%F>m{8Vn=z@0F#iLFv+!r8ivZ&F$)yr4gys!~);k zy1MNxR~ovtXsft&W&7K%##Jl0<4R6)n8)%rdKcXURk##NFR8+Lslrz&Dyq{1Kb|C_ z5OZ)E5v5_Xo=nJ_be@QVMN~eH-1*eVJSO6AmDI2ljc7rb@vHsVib9X^A%ZAQq{qw{ zNrQyNJWYoA>5CaO8R?Ys+cgo8Q#T)nAxLjGk_xMHQ=g2Gm>o(rEAfG(h7^7y`fhaI z7h8D{%x%~{7$?(S9Fb4G66^Y#xK@eY1A`ED=Ygu1P+dY@9U zxC4hTB{E;^D}2YQJ~ z7Kcf03v6U>CZiqWq}%#|21+6t_YJSZLMr9 zpQ_^SGIeTDpaJwo)J>SA!(_p4c}UZ&{j4T?tyZ+Np&ag=bn9`P@WOY}ro)3{hO(I2 zxB@iaX~Gi|QAK+lCQin3^r7<=dj#O6?VTk{y=1B9WvM3~FtF4-V9;{F#S%&td&H#0&O7 zX~n3PfOSQ)agQA5O(4*ckXRfcapV2)#6!vn)=>K?f`JUoJLLn4TP^S+MIkNz5ySwv z8Kf2#Vt@hswhT28K$8aCPKM3AJ=P(j5v+vM z(V`KRkD*%l&5t@waIAFzFaRZu@=(CmFUr3 zehBS<^BitcL_%?|HN1e$10q>K7TW7y4q!qsjB@o=7_1d{^0Zn*%1AM?0}{p&K1QUA zK^#H0-HaZ8b@2J`U%s-Ya|cXI3H#QQ0b-EgYiocqwug_SOCU7bT`=7yF9TW<`6+Dh z)*VJd(-h>cF)mu8&YA?P_mdl`7Z?-{8NJN;v42*N1(Rhs%mQ0b&LuBrb(Z{3;5y1mSI0Mj& z*4{I*vB9pcMf=@)VU4Y9>_i91q=1yIFKD~E7QGs=fl8&g7JZ7yHofjz^yTBI2oYK- z5Ao$z^wq1!sK~ls3eaXyms6Z|F^BnGvo|=2KE+ZuI?-gPqPdHz}Hf-fVH&_ml|5%HMNs@i*L2P{TtZ1ZM zE-w?pzOOXfgJjB;t6kts9A+ZYK@%AC9>DahbGwAc3xda2F1iQ2MF3Vxz~Kbkr9?a# z-q>2YsRE8L82@SXDAuV;Y)sEL0~TB8Ya;eBklT5mgsb_hz&2lsHp@|Zn8uvBPitli zeKU{t|Nr)`wYhQQ%I2fvtxaXCHoHl7Rr zNP-kIBtZk@XyokUukSgxyYV0?iljt3n}Ph0Kmv_M1Gvv~&wU1>H$<<}hmoQlPqOs&7zf4hQ68=_^f*vm92GtMze@ff*7+7y9k;}UzPD5VL;j(1dKMhh{! zY6QCS6me71rNIw5FFpI@nLIzAe-5m)p|?zoYH3Ih-oNWXP^BxY{s8YqJ6TDb2JcRX z@T>EY#!@{8xWU4K3@Xc-=0rAqJnauUKo22r4{AhRLq>l%9Eyt>1z$dgV?2%80lg?5 zVUN~Zg0%wbKkT@3ATqt@7XjEf^(4tWPM=h@qJD?Wh2f~%?}4im(OmH%^q4%0ZMw+6 z({p$?oa56Fb$26pb8(DzbjqHG0ccc81QD+bA^84;v2P7(sH*31_4s~I2S7&A|6*0E z=B4Z4t)??aI!1HZoXAa++~Zha97T8nt43FT*pF>xgk}O2*X+@Z_bGvFS?7F?flg>E z==Dbt^h87E=Lr*8-5!kQwvupqW%L2Pm#Qlnx% z6klsdm0v!4Z*2*@gOZ4N=fjnEg z@4;H}Y=wY8jcSdL%!r=F=UX!eIDIoU?|6P9U)sYg7Req~M+NPE>V+onHE2~K<{`Yq zo=|QRAavLqXr7FOUgVE2QwMSb!z4wvB}C)o7cZ@OD=iYC1LEQmxIa(9^J&VX;QOi) zg(iO}j5ZxT131`db{=4^oLwE|6OHPG?+cT+Bwb?Og{l;3T9T4l@5 z1I)=wVrzvcgptUF#rwlryxH6E_igZ+)Cmn<18bq>i~s6Z_+LYCFTb-U?9q%Z?O9ve zb8(1k?P;%R%wU1t*BW1&wfL#+~Dh*%`=CmR&yekov##lkDv=DCw>U^~wqZ%yZoEcyIk zt+mbQ+2i$OHd~7Ijrjc8?`Xq!{tC*B!iF!x)J!je6 z(R`m7>weAm+~Dh*?=y!R^ZlfjW)kPj_Zk>LlNh~Ldyro%TJpK`ZD7gI9&aX$DE&sZ ze15p~ZTZ>b*R$pGN3UZW4Y>Ql zq|A=LzI{GFg0XnFXQI!Zasw-U!4T_N#&ZL#ZyYZeVzGTJKpx$#q#dGC&tWYhf;93u zFy%?x5)gu&Hi}x9BHF!Lw3`5AO+HRA8|plLgQVtWOM{m2X&Y48K;rUgV+8}BHX>oU z6My#9e|_NK$95Qzs#<`IaY%>6j<(;9l$WXxP#gOp3O09uqh0s4DGZn`8892&h$Z$5 zps$j-|0&gdS`|6NSYg^dp=<^v#52-TiXU0~D4j}C25)-MXqdd45K^o=^IJ<8+kV{k z*_O?m(A3y~_po4hD#Z30Vms4qYTWBgP=WppScoZ)$DONAW|JSapQ3c+)Ba0-tS%>& z^AbNeFCD1o)l0Oa;%`tHjqnBb3iyS&HZp2N)koR?aD`(-a8rvqN3K^UE>sMo3} z&pSOJeZ>K2NsrY&Z0~(g0?ZyR+XH{t>i8(W2!>~zn*8-m`9b*wC)JY4vF(QbLb08~ z!f|l%J5VXhUf)7}Y)O6Gy6CB@uoVu{6XDj@N+;5IfJK?J8lYjT5SE?$R$*`0rCD0f z4rA9&49+1V@td`JQBC=#N__QY-*)&L_#iIt23KNPqXZ3fbyDi9YlOkWG99%7)W)<1 z*NTr1Yu!e|1M~_-f2^HB1*7@|^^&Z56B=~WrOy|+%n~}*v2jN=^k1R?@Dn!BBhw!U zAZicQlV^XC4nrvTz%=3j)r*~kTIMM!c`yt7+nFZpFWvrYIb<+CGn`rAeNk88bkI?e zkJEv@A0?dH;^*1f7il2GMy+X2o#`UaETK!K*AixzebCIXF3)vA)iVXnk>5jer9BT9 z$Lo8}DoA@Z;1dk5NGvF%H|WC@g;yvx<@fM8S}1(9Y&G-qRq$81qW~VHUT_F%=tqVX z9+v=Z*6V|45NSr!395o(#`dMY%2634h|>t2fv}20aNERFd_`>tVzl;4*moS$%mNpI z0!j)13?E4cL`-NOGasSKTey@CWI2Una3~B%@U_q|5%nhl3Sl*u22`>i!SmXa%E_dl ziYw28PIBDyHhm{7J6$?!qzuYFO?1k@d@q_>u09zACAl1!SHT6<<8ggP(_ssD6E&JB zHy!ptp5L)Ppp;t1wt^BgN}%Eanp+BfaTZiv;?V>9wrMgMD!&a;8-o1_6{R>VXaSlh zgUAK>7?*}IYFAMTil+!nI;c^-v6bvs*XLJ#?j%R-#WzOxsy=M zIuCInh_@t&*S-m;C)~6vLLt;s|Lc4{d9J+Wi-X{w29DMSG7>VpmJpCPaO zHWmz92+$M^TiYvDqBt&0gDsf`Yp6uI2dQN+@2%Y%vliVxY12mlVXg7V;0fJXb}Q&8 zONuqe*X4PJbs#BH5@*syrwzk6@COT1ypeGLz5M{~7hY2Q7WRU7H3?Wf8J+F>^fWKb zc=a`z1n_*{9q^diEU5{!5&2ejpe)GIa!=Q)-aU|TrDs_m>X=6lM6e!u#=0D{yux*6eayBTlf!9(r?MZA(abr`G+-^XK%$$tmax{Lq6IJJy%lN zPd-{}C_h=%P&Uk6o^6Cp!mosni*~q6c7R&rg|(E|EZR?(_3j39I@bM^2rU>dYd+r} zZ*5|9t#3Kc%`wYfdovFg&FJcRJtIrEv^&`5r0My8SrrE*M?5LK!gEmOQ>0Q#QukmRT*$F|8R)x zcknIHh_%b_tJt%=lMLaqx1q3Owq(cLy68(RmYeE+IyON_)1lUs+Mr)k(=$Y7X?@Tk zE$NA7N`p)>8`^}ZW9fIl6bim<=Ce7#nkwDCd#XkeAerl1n`gy``pfX+ir7AOy?RkJ z^oELUDcuZ1RoOQso0{fGv-<&X3@|SHbxwdD9s|t`Anp0+qd1-piLe!%@x?_uy13AN z*w3W-%Gt#e%Hh|OFXY%D!nbJe?gOgM4l26;xfvMJVd#(X=0Lpj1nT1ARX@0j4?iH# zoWlJ>3=SBuA9qk!y4wGe-I71_k^0(9brV9FJJAj+zJGJ&zy%}mQBIwp1Ns&=i$& zPrEntd;5e{JHHEGPE~g*VwL-5wI54gr2`t&xsS2WOH`HEV;9A*voC6)`nII{7A|x~ z$CLnw~>aDt3NpTEq*nCw z03!q?(KOl(Z_Q}x5HQIp>c_LruAh4Qwf|LL_KAHpI9xSTbz>N3WA zoNS?}9K`MDI;g+&TdgQ~rT_L+@Cv1Qm9`(D#UanHPwJozVm#SbC3)Yg`dv%DUv_J83m}}bD$lm51~ximeI(Xdc&(18R;T|wo*o#LR@#dr0|~6 zO8oLBO*5~VQZfYUmg%H>@@?=MuRvUZfhKO4^$$5Neog_7tZWm4Myy|XOsJoswKEP2C!eZj#OGeWk1O~T+k`nTLP}X*7y~53_I;; z7#lJD&_A_iNqqyHJ||}xrLtQwN$cUepwr<*dGOB0)A-UE`q4|}0*Z&Q^Z>_A0@P(s zP?L@_dJJX)fD)z7x?%?Yzve>BD-th{ZeqG6X1=B0b%H^R{L9#>dne6iK>_iGdONRS zyjQ@j=AJ2V8;E4)gK?(nyAiodp2$MHZb`h}w&tlQO(IdQf~D?Byh?fp&)D}`IJ!3y znH|}{(vnjz7G8V5b(^Q^EAULJkG}YW>PefB2vMe&K>$GurU#`%Oe!1)qw3plgD7Ma zs*3?SmOG^KFpfE+N@WI_<8jdLcl$x-Kv+n~p24Q#pn@1PE*154|8yS6-8l~0r>j3> zm*|Qt8!&LBrFo{j75pLt5_G8cWzc@f-GBXdh5HTqXfa;~g$C#or~iWs1FlWjF73Cl~}ki-dd$K{^YE{3?b>K_4Ky2ZC=MBzr~^f1q9S zK?sY>nT}Xi`7*dxrGG}Z&kUnci)3-*d?dhz1^iYRP4aPU9E^ld&?!Oma7Yu^Mz}zP z35>oB^3nL@vZM9Sze6DHnx+>#9faHmeh+X2_8Zs!yWTLD3&T+4*Z7(YNf;X*6ljF- zA+PBbBnUUbgcN|qNX7)^Py}|L-V0DEsmk8Fs;cTINI@SV1~D$>jlgy8M5+qrid_)7 zSwwybJz*PE)+7zC_j(65^-LPvn&RBc)w+ez9ob7;-fUQzvAm73Y=|_62#53~f52Fa zq!X2UN~3yF_B^H1T;uZRaB=k`Ra*b}H0{u6s*OgdC#@3~W$3|V>kI<_71YW&go^>? z;^0kjz+i;{k>u!`Cyk>bF!YAn_#0$2BDk!qav$}FW6DA>eld{4PvWQzRb@V?((0;| z@mY1!`@Vdj%F!8q!*}SwGMn8EpV{56%x>o+W*-HF1(q(313AjgI6)M^CL2vEWqx>u zGw`>`g#g+T;w0v%VL*zoO6L3S*nA5t0o`t1LiT&k2LWUGm}7zcY>c7h8msL=7zY)7 zCFut9K+mQilje(N8*3vJOJ*`!kr$aUFH%ymOQd*o#H*^F$)SBAI-|)MM2H0pg6@Qr zdK_bf>FPrxp{j$Tf+xUly8Q^tTJDsq>T^)=aa6qg`61gOaH{Qz9n+vCk{qj@C?#iA z{ZWsAGXqK&(h_DC3Kz-i#3>FKItR?I0lV2poLTeIwMYhsg(JybC=**aJSYUsrOM@T z$Yrw;kVoLlQkwlT3oDF*fPn-NY-tXa7988_kHORj;y>8oI2`11)8R-pa4|cuZdMk- zg;TpFr*^$NklHm_7Z*^9e&Xi}srN!Z*E{uQV|NKp>&nwu?Cxf~#*f3^G7Ddrki2&*6IFFi3Ff_fPN!0rgU9^Ox3RD zNAQXwzlR6#k~^5M!2|pJGC-)r2xMqasWQn{0K*8UhLM4@$eWH0&XCIq zu=!=5*%U; zX|q~GJMlFD6osXb#lae-NLC9AOUz{0u-o$E8rNn3X5}<`gqgZ}{YL{P?3xH0%z#2n zZ~<<=KGLiGFaLmg_go2E{K*`XsrQqU$hd#e<9==Tv49otXvw(8GVZ`0W2riziA?U$ z$_5a{fIwNDHq#JOA|dp5XX;^$PO-laE(byM8`&@cr@I3w^KuHg%52^-L4e-rSrOZ2 zFQwsd8#RT%g=(T4;T{G~<0S-Aq^U<|LK|@3u_)O`DK{x<8JwH#}2C0+NxSx*^ zQGWTvN7^cb{?RrO&A})Dg?}IzQIekg8+Vf^&_&(Rg&j6KROV253Zadx54g$)>N z#CeFFJ2C~sgKHM8uq^^?IYxarPyPVf9`_*#@GXosU(Zr+Tq12KL6#^$-hkOd-NHc5 z3B>IP5fD9yhT-Z!OfnCK)Ffp>D1Fif4RH~jN9kl1EH!=Yc<47!mBd1&tgovgH}3I6 zWK87_$X~c^j~~YSXZoWu(p5J+9}-WqV`JI${bp*F4^F1f8}~6^BBW=YGWEW4x%zwR zD=Z;80*nU;L&=kk<&ANjxWb^?tI9_@JSOHdTMMO6SG8KjJaof?;C0YOn-v)Cuj$3- zrLWv7n^9)AxEPtQBb_K(Xi$MLW#+`M`ucuy0tfPB@Uhid3r)wQgMNBh zktO~-l!6Stonf2T!@w1uAKV}D9X=Z3iaUs*^%R{Ec0=f~FU6?$8%{lWqhT~$<2mAd z;Tuds&QTX*A3Gy9FW7;}zq(c{?E5X*_iNsQ)R<3WV8#-!Kd~k|klfmO^<2b&`@Io7 z&i24zE;J&V!O>O@&AYiOe>|e-t|72D$2Wf(Gqw{3F%nf*Vf0d?A5OgE(|c(c`tCaq z-+2%2fZ+G&E#Q&>_7m<6VXDL5x>#y&@4`ka2|D^oY zZ!jt;hg}YgD@YuvMvb$t)&B=yG{83^+xVJCn@_PA{M1}zqdtC6{V~2IqLH?`F3l2Y zh{DT$*WNdCvp`ymBsISlvFt=sfE>*}@~PZpleE{z2*}V#TI8>}H%jqw!*%Xn=fOn| zeXa|+=^6Ic|XTnV_(ip zX9V*mnxKO%7x_1OXyiT9T90=$nVpum?=VGHk=E;V`I9;;t>?2Raeapjjj z&%8$6u3+KIKu=g6M`Mo7z*_7I87stLK2wz*$q|o|8WOwL>gzb`l;<7)(xYbrj=>p9 zn~t6M=05VD4manv-+PN10f*4C5{1F65Ms-F)B<8m%2+4{ zfjOCKfhBUDg6?Lc2M`i`Ps=G6fEDF{?sZ7#f`14Y5KP2EajAg zDHhpmA+vet7wR+*6%>q}u>yzw^<^+L^4a^&YZevq1)glR_#|VAo$%Wvh9S@{iDP`L zqa!mTY0k^0Q=xoDNmY z6viRyt6_66L_0*0OKd|jG^p5{^nGBr1zvM7*~6F^-M8@~>x7I1?||NMR&#jPV43~a7} z`m}A{h7=x%voi!Q?ie;JQ=t5IfoSlek$foFk0$LSUkcqB1S03z)=T6vLT}XwC0_h z6v)Z~S-BFqMpp0}OdhhE7JYA?G7a^c75UGh8(0HCi7h%o3v;9zrDr-}?MCJ!qiisi zdY8-|1iq(|-U@nJG-wYWRrbMXh(Es1Bw(>sg%8;pq22sMDjz8K(d+&aiADUIz(02+ z{5O0-3pKDcHE@?Zaz6?o!P)EQU7P9a%kLc7(u^yR2LwPLMA38%;w4yYHu!Ps7O{`Q z1=z#|Fcn^DRmbv*C<{1|ylbp6KxL>0Fd2;EKA6hrMkFv0ft(mTdR4)3Af84|$8sE% z3HR<=Ko}&yfJ_|z#H0RL@qe<#eXWl`&9NsA0OFzeC)EbzJEWToMMEWlq0I-F5pXe# z_5jB-?XoZq8W0);v}Med})YdQ&BPz;*Gt3B;c@Rec==3Lg2!VS+YhHzPxTZ1~ zug@-1HB)zxU2X2OWUaMJc8B#oA0-RUQ{8pBO>qdGEj_ahml~GQ`N*!Y9%<8MP8L`X zqt}ww&|Pr`L>SP#SOPUzQF|0d%9f0jb=E&)k{DQj4LmnG4dj`MgDi)^ztVjrnWe@5 zAX%itlEw@8wp;GHXSLiO6u_^kWd-gf9crP36>ej|z9SFjH1D zQ})zHfP1$Q`2dNLKkA_tjn9&p42G%^&lpubwP705oOf-PhB8qiXsgphWAFy?(RJ{Yn=DpZU&eB> zHW-g44tI$az`Q3mw0hgM%*Rsed6a*S!Wyv#=5<<=$C*lx<@(_=bJQ6+*DJ{03E{ns;H5>t|YEdRBF}!b{ z$*pqk8S1-6F+g4Z$Pv83n4D~sr&i{HG^t1s6$zph6GVR=sXt9e(8UJ|WgT^tj7?PS z=nSCtXP+IY-v@*KI8a{%$iuVf3uTA%CMgo~6rAe4_jIg-0UhLVY`RBpBHKf|_QMZ# zDkpgD5Ao!x$OoM%(>f>>Lq5rmP{P;yruG80e6sV?GQw<9h1dzeWXjSrW{+Tv(~d@{ zW{L>ewb_}36xhSSxpPHt14P?Uj2cRuO`G3k%(09B8|sN{X(K=4Se1Q%4tW06F81aN z-hm=nO&}CXWlKtBjpa`j%mzG`ZtbVkLQqAn#xW=p2y%5}FII-kH+2N1141!W7I?6`cVU{4z8z4>l}Y`@rGt>0NER15sbMzlWXCd zg7-`+c{GHy%*Fu8p{s8Ml2VPBXu3_*VKMf;_f6%!a4h`C0}_>jmlUgZ%wnDdaV^+v zi_tc}fAP!z_|IRlr0<=w#bM(&E9h9v$Lbvx_hAUDb<(0fFDdG?m~d0ehn;l+P*T)~ zF+9uHQMZ&Kb@uM&9hRcLU+UlZC>hQAa4hJn+vzNs8umKQ6!kTKQppwdHL`U|4Jk>? zl<#pnU(|<-=U&DdYBc`Niu%^(qMFTt5T;O;nrD`mQ_%AV9Lc(52x@|gV!cq5JhD)< zvCbPM#5mi>16{Qex{&GWX2_pZAnTh0VN?RrQZ+EC`D;BkdjK_ zq&70ebd!#;Nt9^^dg`ukaG}Arq`~gx#-zF}t>dQKbQ@hi+Cko?fbKfKd6#MiYyl1k z6RU#t2*-^Ig{lK-l}4@br4p@HsE(z*;H~O_$`IFw1SowtA@FgK%BZl^H&Gy(PPlJA zK^Iao@8iI4X7!1|Y9ulrYNHF|MsxzR0LYN|==K2I0a--H|hkj15F8-)g(GXp&{Nv{VPfZ+UG*1egUl^Nf;<33~vDlP+Jiz z$)uFZ9fo^vo*jzDSKwi`Zxz%uUVg zM{tTxRS)^VRGsjCJqmV`rMH$vzH@nu_g}CS@jc_3JR?s+9-%@YwZBf zCJFad7G&7LNF=$ADbkE^SM<9iuLOuPO`+s1t1;_Ox$cR0Y?b-RxcjP7kx}>I(5y6W z#?P8bqp)=>wIEJoTRcedKPXn(8hYrtN6pj1p?XubB0_bKAD@rx!vVE*UJ~a7FQjzg zZQ&!5^MkqH2L|mxHYzT{iwDxrYfoKHCgZciLw3xFtG&^*8b-ZCKWbm1Bi-TUWH>lv zM-hDC1Z+KW$hf3aJ2@Q2y&6q2>K+U-B$$nV(kY6shvNx+B>?<1&`-1FvVS8YmRj-d zu_;qrzVyLT7q*yr_mTJS64G~|24#3yL#RSEfAfMB_#KE9j{TA$Hy&$TR&A*cBd^J5UVFKn@Rep%drc%bKL@1IIsP;3wYRZhe z;Jk8LZ7!IpXQst2Q=>Awt5y9N)U|6KozluKB1e1Tv>pD(-fy1gf^(aX4Pic`7`LB*zK~=$;5*xg z%hjL{2T&R4Zp;qIuOze!lVCVTqKB=8LX=xTM(0EoicC;W5s*$5Y-NWM!xO1i9bfa& z%!+;bQJRERvu>>XpeO8St1QNR>~Y55;xu5nGG_(UoV0sF12r9ftRL0Ag682(b+jI+ z!)Y8Hw)%PgZ3On7M^npLoZn(<%F1mik>W!|mk3!UH1^WX!TLxABS?ojp@22!BDb}Z zvhdK)|NQ*+!*?Y6Z+}?|$-gDZzv9vxxgS`wTmv1b0q`HmbOby1t_i^D-W&p~`*(`{ zH1|w2LxXvFVZ+o(q=$Bwq%UU{@UTFNO28}*7+G)-j0d==171ls@}n}4_F0QidI|F3 z_G_Lq?}fK=!Bpl2dScekwPwI+lWIy$s_keV?Iw7%MMW?`_uUj=ERFf|8m`;87pBSr z;vkTRe{6_@?z->LY z8%a00A*oxT6-%Z*(p0WMW!MxBBSkd=s%niH24-lNB)>ENfS9fYl(x!2|Daq;wVV$z zt6S1{C~*?zhhIaOFRQuCB$Z4HMi_ap=NRK9Gd@tQLLnqhPy@=hV2da`iCiHJ@d`tb z86-W9E6msIBXuL$n%#tRHh7E+(Yz(myy?A2rE-e>g6I{FwfP<%Xv4OC3y&mJ111j= zwU31-UR%{i-f^R-@+*W}PPpke)YxAMPf+0IU4oSqo-Q7<+^Mv9%4@XEwdLt zF~ROA=z%Wj+a&(SMmn(rW}tzD&Gnearzb}R@U;-BIgz@joJS5IrmV3$Q`1S;IpHU| zL@rj9kuCU(r^ClJ9a5gfz#fd=ckOQUmeA5}sNR39`Wcwap2%+dks;l{e#E-yuVM|R zO*aUwwOdCuZtWlwxxpJ%D1a>~fKBg3st#9B>`5=cHahunYr{{U3Btp@-A diff --git a/elpa/python-mode-6.1.3/test/py-shell-completion-tests.el b/elpa/python-mode-6.1.3/test/py-shell-completion-tests.el deleted file mode 100644 index f49edca11..000000000 --- a/elpa/python-mode-6.1.3/test/py-shell-completion-tests.el +++ /dev/null @@ -1,173 +0,0 @@ -;;; py-shell-completion-tests.el --- Test completion for available Python shell - -;; Author: Andreas Roehler -;; Keywords: languages, convenience - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: Edit `py-test-pyshellname-list' before -;; running this test-builder or give a list of shells as -;; arguments - -;;; Code: - -(setq python-mode-shell-complete-tests - (list - - 'python-shell-complete-test - 'usr-bin-python-shell-complete-test - 'usr-bin-python2.7-shell-complete-test - ;; 'arbeit-python-epdfree-epd_free-7.2-2-rh5-x86-bin-python2.7-shell-complete-test - 'usr-bin-python3-shell-complete-test - ;; 'usr-bin-python3.2-shell-complete-test - ;; 'ipython-shell-complete-test - ;; 'usr-bin-ipython-shell-complete-test - ;; 'arbeit-python-epd_free-7.1-2-rh5-x86-bin-ipython-shell-complete-test - ) -) - -(defun py-run-shell-complete-tests () - (interactive) - (dolist (ele python-mode-shell-complete-tests) - (funcall ele) - ;; (sit-for 1) -)) - -(defun python-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - ;; (set-buffer (py-shell nil t "python" nil "/")) - (set-buffer (py-shell nil t "python")) - (when (interactive-p) (switch-to-buffer (current-buffer))) - (sit-for 0.2 t) - (goto-char (point-max)) - (save-excursion - (insert "pri") - (py-shell-complete)) - (sit-for 0.5) - (assert (looking-at "print") nil "python-shell-complete-test failed") - (message "%s" "python-shell-complete-test passed"))) - - -(defun usr-bin-python-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "/usr/bin/python" nil "/")) - (switch-to-buffer (current-buffer)) - (sit-for 0.1) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (forward-word -1) - (sit-for 0.1) - (assert (looking-at "print") nil "usr-bin-python-shell-complete-test failed") - (when py-verbose-p (message "%s" "usr-bin-python-shell-complete-test passed")))) - - -(defun usr-bin-python2.7-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "/usr/bin/python2.7" nil "/")) - (when (interactive-p) (switch-to-buffer (current-buffer))) - (sit-for 0.1) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (forward-word -1) - (assert (looking-at "print") nil "usr-bin-python2.7-shell-complete-test failed") - (message "%s" "usr-bin-python2.7-shell-complete-test passed"))) - - -(defun arbeit-python-epdfree-epd_free-7.2-2-rh5-x86-bin-python2.7-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "~/arbeit/python/epdfree/epd_free-7.2-2-rh5-x86/bin/python2.7" nil "/")) - (sit-for 0.2 t) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (sit-for 0.1) - (forward-word -1) - (assert (looking-at "print") nil "arbeit-python-epdfree-epd_free-7.2-2-rh5-x86-bin-python2.7-shell-complete-test failed") - (when py-verbose-p (message "%s" "arbeit-python-epdfree-epd_free-7.2-2-rh5-x86-bin-python2.7-shell-complete-test passed")))) - -(defun usr-bin-python3-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "/usr/local/bin/python3" nil "/")) - (when (interactive-p) (switch-to-buffer (current-buffer))) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (forward-word -1) - (sit-for 0.1) - (assert (looking-at "print") nil "usr-bin-python3-shell-complete-test failed") - (message "%s" "usr-bin-python3-shell-complete-test passed"))) - -(defun ipython-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "ipython")) - (switch-to-buffer (current-buffer)) - (sit-for 2) - (goto-char (point-max)) - ;; (comint-send-input) - (insert "pri") - - (py-shell-complete) - (sit-for 0.1) - (assert (looking-back "print") nil "ipython-shell-complete-test failed") - (message "%s" "ipython-shell-complete-test passed"))) - - -(defun usr-bin-ipython-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "/usr/bin/ipython" nil "/")) - (sit-for 0.1) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (sit-for 1 t) - (forward-word -1) - (assert (looking-at "print") nil "usr-bin-ipython-shell-complete-test failed") - (message "%s" "usr-bin-ipython-shell-complete-test passed"))) - - -(defun arbeit-python-epd_free-7.1-2-rh5-x86-bin-ipython-shell-complete-test () - (interactive) - (let (py-shell-switch-buffers-on-execute-p - py-split-windows-on-execute-p) - (set-buffer (py-shell nil t "~/arbeit/python/epd_free-7.1-2-rh5-x86/bin/ipython" nil "/")) - (sit-for 0.1) - (switch-to-buffer (current-buffer)) - (goto-char (point-max)) - (insert "pri") - (py-shell-complete) - (sit-for 1 t) - (forward-word -1) - (assert (looking-at "print") nil "arbeit-python-epd_free-7.1-2-rh5-x86-bin-ipython-shell-complete-test failed") - (message "%s" "arbeit-python-epd_free-7.1-2-rh5-x86-bin-ipython-shell-complete-test passed"))) - - - -(provide 'py-shell-completion-tests) -;;; py-shell-completion-tests ends here diff --git a/elpa/python-mode-6.1.3/test/py-shell-completion-tests.elc b/elpa/python-mode-6.1.3/test/py-shell-completion-tests.elc deleted file mode 100644 index ba8f5f7dd1c3f2998ffa283b76bb427c90adbb8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5420 zcmc&&U2oeq6wPDdr)?Ovbx)j%VoecBA|=^v^U@;dfC2;dumO9hi-MNuSg0(yqMS5+ z=x^U4_2Dl`R+khB;7H=fC3Vla=U(dk^`93%pPZbG&d<-uMYdeUiHykXhAc&~h=qC| z$!ifV3You5^UHv))6}!|oxN7}WgbU%x)y0D?J!%CEG7S9_FrK^SU}v#i(vdBV1&EO zH}>Z_2FHKFAt8#;D zB^8NoQn8Ff5@n$(@;JRzXXwpUK|~bcMVoclbDKXuun}djk!A%6v$PNxye{VS8Cp{M z>hFs;Z%DWhxd`D~b!L_qX+%^;LXnc0BuOTA7O7rF5h?N{mN_XF7|6YHUEp`CKfQt5 z{*6YXC$pPE0+>h=YwEcSKaQV=pZ~{qriHr`i@e>&b_Y#aVo9n2Eq!FIaypAsI(P`5 z+LK+*l&kDn^4i9{BmU{=NhIeYK|GM(!M=Q*wvANe(c3gmi1k3f@xv)+?AIxGgP%^O z=}Z0eJ;8r>n!eHxKcLHhaH5Ak#qA)UNQ4fhQI^E2prBMjDZz^Gh^H^+c5kmHfZBXm zZ57LNy_;Vi>W!EuAcbr2=%d-J=Z>*!*ZWcLbh7%bY{Xl5OoQuBE!`5$Ogm=)oAIz3 z>T$Q~V0@)bRThe@GC~v5=FQ5UJS*r~?(+G<2e{h|F_LtQKk`3z-8x8Chg0l@gZ-m&eNLov;#0VFLKr z4)%bk*nsWHw#S023VJ3|2`B>( zSPu^dVAIZr0TUZujEC@|QwlfS=nw>OLreL%=7u{l!T@zceE(0HfN*RAD!9I@NdTGP ztYS?i1DX}zQVRA+z-GVB72WxqlshRr?33z5$x1g=V=auv;UDJib+ z&CO(LbINJH2z%hSbW`B zW|O<7QLnIkaZ2A-!s1lE)z`|m+pgV`poV?JG7lpVo^FaA19*EA+xUJJ7w>qHW2D`s zerv&2S7Ao4>MXZY+6+*#hKj7talFoPUd=wFD;Cr_ZbQX;Rk9=tMY6>xZ;+aG6*r*Q zhKYSt8v@Ia1lJDeF;c`m2Z5t$ZBysgIm|`9!pe%Yn+9f(SEFB3!S$c&bXb!?%T}4x zj1YaxJXZOjr-13JVK>;$MEGI9itY1nJF0y%8Z?j8v3)jQsX%ejV(a zLyJx|_i<=xDwPImQ?E8>l&Jx6k42Fb|p8z}-=v9wd;a{9t?KN8kQ#LkPgh z%Ghth{h$Cb;jWKL8)`IXojTg@uZV3aIO;-U%ZVl}bdu-b^xKsbj -;; Keywords: languages, convenience - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(defun py-execute-statement-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-test\")")) - (py-bug-tests-intern 'py-execute-statement-base arg teststring))) - -(defun py-execute-statement-base () - (assert (py-execute-statement) nil "py-execute-statement-test failed")) - -(defun py-execute-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-test\")")) - (py-bug-tests-intern 'py-execute-block-base arg teststring))) - -(defun py-execute-block-base () - (assert (py-execute-block) nil "py-execute-block-test failed")) - -(defun py-execute-block-or-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-base arg teststring))) - -(defun py-execute-block-or-clause-base () - (assert (py-execute-block-or-clause) nil "py-execute-block-or-clause-test failed")) - -(defun py-execute-def-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-test\")")) - (py-bug-tests-intern 'py-execute-def-base arg teststring))) - -(defun py-execute-def-base () - (assert (py-execute-def) nil "py-execute-def-test failed")) - -(defun py-execute-class-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-test\")")) - (py-bug-tests-intern 'py-execute-class-base arg teststring))) - -(defun py-execute-class-base () - (assert (py-execute-class) nil "py-execute-class-test failed")) - -(defun py-execute-region-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-test\")")) - (py-bug-tests-intern 'py-execute-region-base arg teststring))) - -(defun py-execute-region-base () - (assert (eq nil (py-execute-region (line-beginning-position) (line-end-position))) nil "py-execute-region-test failed")) - -(defun py-execute-buffer-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-test\")")) - (py-bug-tests-intern 'py-execute-buffer-test-base arg teststring))) - -(defun py-execute-buffer-test-base () - (assert (py-execute-buffer) nil "py-execute-buffer-test failed")) - -(defun py-execute-expression-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-test\")")) - (py-bug-tests-intern 'py-execute-expression-base arg teststring))) - -(defun py-execute-expression-base () - (assert (py-execute-expression) nil "py-execute-expression-test failed")) - -(defun py-execute-line-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-test\")")) - (py-bug-tests-intern 'py-execute-line-base arg teststring))) - -(defun py-execute-line-base () - (assert (py-execute-line) nil "py-execute-line-test failed")) - -(defun beginning-of-block-fails-from-wrong-indent-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -with file(\"roulette-\" + zeit + \".csv\", 'w') as datei: - for i in range(anzahl): - klauf.pylauf() - datei.write(str(spiel[i]) + \"\\n\") -")) - (py-bug-tests-intern 'beginning-of-block-fails-from-wrong-indent-base arg teststring))) - -(defun beginning-of-block-fails-from-wrong-indent-base () - (goto-char 102) - (assert (eq 48 (py-beginning-of-block)) nil "beginning-of-block-fails-from-wrong-indent-test failed")) - -(defun py-execute-file-test (&optional arg) - (interactive "p") - (let ((teststring "print(3)")) - (py-bug-tests-intern 'py-execute-file-intern arg teststring))) - -(defun py-execute-file-intern () - (let ((py-store-result-p t) - (file (concat py-temp-directory "/py-execute-file-test.py"))) - (write-file file) - ;; (sit-for 0.1) - (unwind-protect - (setq erg (py-execute-file file)) - (assert (string= "3" erg) nil "py-execute-file-test failed") - (delete-file file)))) - -(provide 'python-executes-test) -;;; python-executes-test.el ends here diff --git a/elpa/python-mode-6.1.3/test/python-executes-test.elc b/elpa/python-mode-6.1.3/test/python-executes-test.elc deleted file mode 100644 index 5b612f7c493235f962a6502b69e951280755c5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5070 zcmc&&OK;;g5YBPehxX7zAE#LbXsm81+mfB^CMeJ%*h7E6i6yr z=ht^gS(Xw%A}5=z0YwTqFMcze;qd&!9~a*r92|7c&(GmP&U2oz6vhjfQ#0dK|C_Q~ zn#>GSzX>%RkwS32?jybGfbOmn0;nRfdj-21}t+b zxPT8<1l%yCIT{oWgD42y+$}dVpjieoH+;_Ts6hf9bll{}8P}z4g=QMkg`jhuKq?b$ z6c zsiz_ZEg_)-#tbq^?MgyZN<4l2>Az>JmdeL>y`dI^>`|ET%-IPsehA{(2`GPFH zL$slW&6zOHO>lVC{n^4V1d2%Ir_$QWAE~4j-W8usyX(2&(4mEsk1~AWMoQg<``4Wu3-p*XW-@Dwg2eq zEC;U6F`&(TK!b;`5Abtf3-`Qnv-XrhXdOj(-Etwau^>$WoCcqnI-OZ@BLp(jNGlZ$B5@ z=X-`T$V$>yx2z~ikXt$k)6vT~1qH)IO6dAKw?U=9jV~;1Tl_29r(tf5U(Yj@t!;xJ zV_uhq7p?fR8QqC)gKup^8-z>hwiwscPeZv}#5&Hk&25oZY>E}}WdeCe4sWP!gYJ^N zExZl#Ccd^(E=ZSKhiL@TE zb$Z=Bja66vxrS(aoh>F4roOsw#u2Zdeyv zyRObT%dYsf?{vnozz~SV=H_h=KzHuLJ>@h*XT0p}%F5+R);G3fxz4pJS)*m!H^ACv zo6uE>s^S2K@2aR;pCmhjq~$iYuHBqE_lT-;$3~C0(oS31VYlg{8{`dahp%ke|Lez} z@OARK!txXWKZ&D3-;E5udt0~Ec+-%Rlq;4PsTSpR4#KVRKSr>86qzA8;yeWd9^NCZ zZYfsaV2pa;Vv*P}=yt~o+y}T{7J(t8{-OJV@cTHhcIDRkkD!*=0x5^eN k!wturPVDS`zj-ZT1uc&uxso>=O~D%$cQtnJ4$SZT2iW3mfdBvi diff --git a/elpa/python-mode-6.1.3/test/python-extended-executes-test.el b/elpa/python-mode-6.1.3/test/python-extended-executes-test.el deleted file mode 100644 index 38a2f3d7f..000000000 --- a/elpa/python-mode-6.1.3/test/python-extended-executes-test.el +++ /dev/null @@ -1,2545 +0,0 @@ -;;; python-extended-executes-test.el --- extended-executes test -;; Author: Andreas Roehler -;; Keywords: languages, convenience - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - - -(defun py-execute-statement-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python-test\")")) - (py-bug-tests-intern 'py-execute-statement-python-base arg teststring))) - -(defun py-execute-statement-python-base () - (assert (py-execute-statement-python) nil "py-execute-statement-python-test failed")) - -(defun py-execute-statement-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python-switch-base arg teststring))) - -(defun py-execute-statement-python-switch-base () - (assert (py-execute-statement-python-switch) nil "py-execute-statement-python-switch-test failed")) - -(defun py-execute-statement-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python-no-switch-base arg teststring))) - -(defun py-execute-statement-python-no-switch-base () - (assert (py-execute-statement-python-no-switch) nil "py-execute-statement-python-no-switch-test failed")) - -(defun py-execute-statement-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-python-dedicated-base arg teststring))) - -(defun py-execute-statement-python-dedicated-base () - (assert (py-execute-statement-python-dedicated) nil "py-execute-statement-python-dedicated-test failed")) - -(defun py-execute-statement-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-python-dedicated-switch-base () - (assert (py-execute-statement-python-dedicated-switch) nil "py-execute-statement-python-dedicated-switch-test failed")) - -(defun py-execute-statement-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-ipython-test\")")) - (py-bug-tests-intern 'py-execute-statement-ipython-base arg teststring))) - -(defun py-execute-statement-ipython-base () - (sit-for 0.1) - (assert (py-execute-statement-ipython) nil "py-execute-statement-ipython-test failed")) - -(defun py-execute-statement-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-ipython-switch-base arg teststring))) - -(defun py-execute-statement-ipython-switch-base () - (assert (py-execute-statement-ipython-switch) nil "py-execute-statement-ipython-switch-test failed")) - -(defun py-execute-statement-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-ipython-no-switch-base arg teststring))) - -(defun py-execute-statement-ipython-no-switch-base () - (assert (py-execute-statement-ipython-no-switch) nil "py-execute-statement-ipython-no-switch-test failed")) - -(defun py-execute-statement-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-ipython-dedicated-base arg teststring))) - -(defun py-execute-statement-ipython-dedicated-base () - (assert (py-execute-statement-ipython-dedicated) nil "py-execute-statement-ipython-dedicated-test failed")) - -(defun py-execute-statement-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-ipython-dedicated-switch-base () - (assert (py-execute-statement-ipython-dedicated-switch) nil "py-execute-statement-ipython-dedicated-switch-test failed")) - -(defun py-execute-statement-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3-base arg teststring))) - -(defun py-execute-statement-python3-base () - (assert (py-execute-statement-python3) nil "py-execute-statement-python3-test failed")) - -(defun py-execute-statement-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3-switch-base arg teststring))) - -(defun py-execute-statement-python3-switch-base () - (assert (py-execute-statement-python3-switch) nil "py-execute-statement-python3-switch-test failed")) - -(defun py-execute-statement-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3-no-switch-base arg teststring))) - -(defun py-execute-statement-python3-no-switch-base () - (assert (py-execute-statement-python3-no-switch) nil "py-execute-statement-python3-no-switch-test failed")) - -(defun py-execute-statement-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3-dedicated-base arg teststring))) - -(defun py-execute-statement-python3-dedicated-base () - (assert (py-execute-statement-python3-dedicated) nil "py-execute-statement-python3-dedicated-test failed")) - -(defun py-execute-statement-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-python3-dedicated-switch-base () - (assert (py-execute-statement-python3-dedicated-switch) nil "py-execute-statement-python3-dedicated-switch-test failed")) - -(defun py-execute-statement-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2-base arg teststring))) - -(defun py-execute-statement-python2-base () - (assert (py-execute-statement-python2) nil "py-execute-statement-python2-test failed")) - -(defun py-execute-statement-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2-switch-base arg teststring))) - -(defun py-execute-statement-python2-switch-base () - (assert (py-execute-statement-python2-switch) nil "py-execute-statement-python2-switch-test failed")) - -(defun py-execute-statement-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2-no-switch-base arg teststring))) - -(defun py-execute-statement-python2-no-switch-base () - (assert (py-execute-statement-python2-no-switch) nil "py-execute-statement-python2-no-switch-test failed")) - -(defun py-execute-statement-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2-dedicated-base arg teststring))) - -(defun py-execute-statement-python2-dedicated-base () - (assert (py-execute-statement-python2-dedicated) nil "py-execute-statement-python2-dedicated-test failed")) - -(defun py-execute-statement-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-python2-dedicated-switch-base () - (assert (py-execute-statement-python2-dedicated-switch) nil "py-execute-statement-python2-dedicated-switch-test failed")) - -(defun py-execute-statement-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2.7-base arg teststring))) - -(defun py-execute-statement-python2.7-base () - (assert (py-execute-statement-python2.7) nil "py-execute-statement-python2.7-test failed")) - -(defun py-execute-statement-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2.7-switch-base arg teststring))) - -(defun py-execute-statement-python2.7-switch-base () - (assert (py-execute-statement-python2.7-switch) nil "py-execute-statement-python2.7-switch-test failed")) - -(defun py-execute-statement-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2.7-no-switch-base arg teststring))) - -(defun py-execute-statement-python2.7-no-switch-base () - (assert (py-execute-statement-python2.7-no-switch) nil "py-execute-statement-python2.7-no-switch-test failed")) - -(defun py-execute-statement-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2.7-dedicated-base arg teststring))) - -(defun py-execute-statement-python2.7-dedicated-base () - (assert (py-execute-statement-python2.7-dedicated) nil "py-execute-statement-python2.7-dedicated-test failed")) - -(defun py-execute-statement-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-python2.7-dedicated-switch-base () - (assert (py-execute-statement-python2.7-dedicated-switch) nil "py-execute-statement-python2.7-dedicated-switch-test failed")) - -(defun py-execute-statement-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-jython-test\")")) - (py-bug-tests-intern 'py-execute-statement-jython-base arg teststring))) - -(defun py-execute-statement-jython-base () - (assert (py-execute-statement-jython) nil "py-execute-statement-jython-test failed")) - -(defun py-execute-statement-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-jython-switch-base arg teststring))) - -(defun py-execute-statement-jython-switch-base () - (assert (py-execute-statement-jython-switch) nil "py-execute-statement-jython-switch-test failed")) - -(defun py-execute-statement-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-jython-no-switch-base arg teststring))) - -(defun py-execute-statement-jython-no-switch-base () - (assert (py-execute-statement-jython-no-switch) nil "py-execute-statement-jython-no-switch-test failed")) - -(defun py-execute-statement-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-jython-dedicated-base arg teststring))) - -(defun py-execute-statement-jython-dedicated-base () - (assert (py-execute-statement-jython-dedicated) nil "py-execute-statement-jython-dedicated-test failed")) - -(defun py-execute-statement-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-jython-dedicated-switch-base () - (assert (py-execute-statement-jython-dedicated-switch) nil "py-execute-statement-jython-dedicated-switch-test failed")) - -(defun py-execute-statement-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3.2-base arg teststring))) - -(defun py-execute-statement-python3.2-base () - (assert (py-execute-statement-python3.2) nil "py-execute-statement-python3.2-test failed")) - -(defun py-execute-statement-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3.2-switch-base arg teststring))) - -(defun py-execute-statement-python3.2-switch-base () - (assert (py-execute-statement-python3.2-switch) nil "py-execute-statement-python3.2-switch-test failed")) - -(defun py-execute-statement-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3.2-no-switch-base arg teststring))) - -(defun py-execute-statement-python3.2-no-switch-base () - (assert (py-execute-statement-python3.2-no-switch) nil "py-execute-statement-python3.2-no-switch-test failed")) - -(defun py-execute-statement-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3.2-dedicated-base arg teststring))) - -(defun py-execute-statement-python3.2-dedicated-base () - (assert (py-execute-statement-python3.2-dedicated) nil "py-execute-statement-python3.2-dedicated-test failed")) - -(defun py-execute-statement-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-statement-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-statement-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-statement-python3.2-dedicated-switch-base () - (assert (py-execute-statement-python3.2-dedicated-switch) nil "py-execute-statement-python3.2-dedicated-switch-test failed")) - -(defun py-execute-block-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python-test\")")) - (py-bug-tests-intern 'py-execute-block-python-base arg teststring))) - -(defun py-execute-block-python-base () - (sit-for 0.1) - (assert (py-execute-block-python) nil "py-execute-block-python-test failed")) - -(defun py-execute-block-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python-switch-base arg teststring))) - -(defun py-execute-block-python-switch-base () - (assert (py-execute-block-python-switch) nil "py-execute-block-python-switch-test failed")) - -(defun py-execute-block-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python-no-switch-base arg teststring))) - -(defun py-execute-block-python-no-switch-base () - (assert (py-execute-block-python-no-switch) nil "py-execute-block-python-no-switch-test failed")) - -(defun py-execute-block-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-python-dedicated-base arg teststring))) - -(defun py-execute-block-python-dedicated-base () - (assert (py-execute-block-python-dedicated) nil "py-execute-block-python-dedicated-test failed")) - -(defun py-execute-block-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python-dedicated-switch-base arg teststring))) - -(defun py-execute-block-python-dedicated-switch-base () - (assert (py-execute-block-python-dedicated-switch) nil "py-execute-block-python-dedicated-switch-test failed")) - -(defun py-execute-block-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-ipython-test\")")) - (py-bug-tests-intern 'py-execute-block-ipython-base arg teststring))) - -(defun py-execute-block-ipython-base () - (assert (py-execute-block-ipython) nil "py-execute-block-ipython-test failed")) - -(defun py-execute-block-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-ipython-switch-base arg teststring))) - -(defun py-execute-block-ipython-switch-base () - (assert (py-execute-block-ipython-switch) nil "py-execute-block-ipython-switch-test failed")) - -(defun py-execute-block-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-ipython-no-switch-base arg teststring))) - -(defun py-execute-block-ipython-no-switch-base () - (assert (py-execute-block-ipython-no-switch) nil "py-execute-block-ipython-no-switch-test failed")) - -(defun py-execute-block-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-ipython-dedicated-base arg teststring))) - -(defun py-execute-block-ipython-dedicated-base () - (assert (py-execute-block-ipython-dedicated) nil "py-execute-block-ipython-dedicated-test failed")) - -(defun py-execute-block-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-block-ipython-dedicated-switch-base () - (assert (py-execute-block-ipython-dedicated-switch) nil "py-execute-block-ipython-dedicated-switch-test failed")) - -(defun py-execute-block-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3-test\")")) - (py-bug-tests-intern 'py-execute-block-python3-base arg teststring))) - -(defun py-execute-block-python3-base () - (assert (py-execute-block-python3) nil "py-execute-block-python3-test failed")) - -(defun py-execute-block-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3-switch-base arg teststring))) - -(defun py-execute-block-python3-switch-base () - (assert (py-execute-block-python3-switch) nil "py-execute-block-python3-switch-test failed")) - -(defun py-execute-block-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3-no-switch-base arg teststring))) - -(defun py-execute-block-python3-no-switch-base () - (assert (py-execute-block-python3-no-switch) nil "py-execute-block-python3-no-switch-test failed")) - -(defun py-execute-block-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-python3-dedicated-base arg teststring))) - -(defun py-execute-block-python3-dedicated-base () - (assert (py-execute-block-python3-dedicated) nil "py-execute-block-python3-dedicated-test failed")) - -(defun py-execute-block-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-block-python3-dedicated-switch-base () - (assert (py-execute-block-python3-dedicated-switch) nil "py-execute-block-python3-dedicated-switch-test failed")) - -(defun py-execute-block-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2-test\")")) - (py-bug-tests-intern 'py-execute-block-python2-base arg teststring))) - -(defun py-execute-block-python2-base () - (assert (py-execute-block-python2) nil "py-execute-block-python2-test failed")) - -(defun py-execute-block-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2-switch-base arg teststring))) - -(defun py-execute-block-python2-switch-base () - (assert (py-execute-block-python2-switch) nil "py-execute-block-python2-switch-test failed")) - -(defun py-execute-block-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2-no-switch-base arg teststring))) - -(defun py-execute-block-python2-no-switch-base () - (assert (py-execute-block-python2-no-switch) nil "py-execute-block-python2-no-switch-test failed")) - -(defun py-execute-block-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-python2-dedicated-base arg teststring))) - -(defun py-execute-block-python2-dedicated-base () - (assert (py-execute-block-python2-dedicated) nil "py-execute-block-python2-dedicated-test failed")) - -(defun py-execute-block-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-block-python2-dedicated-switch-base () - (assert (py-execute-block-python2-dedicated-switch) nil "py-execute-block-python2-dedicated-switch-test failed")) - -(defun py-execute-block-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-block-python2.7-base arg teststring))) - -(defun py-execute-block-python2.7-base () - (assert (py-execute-block-python2.7) nil "py-execute-block-python2.7-test failed")) - -(defun py-execute-block-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2.7-switch-base arg teststring))) - -(defun py-execute-block-python2.7-switch-base () - (assert (py-execute-block-python2.7-switch) nil "py-execute-block-python2.7-switch-test failed")) - -(defun py-execute-block-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2.7-no-switch-base arg teststring))) - -(defun py-execute-block-python2.7-no-switch-base () - (assert (py-execute-block-python2.7-no-switch) nil "py-execute-block-python2.7-no-switch-test failed")) - -(defun py-execute-block-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-python2.7-dedicated-base arg teststring))) - -(defun py-execute-block-python2.7-dedicated-base () - (assert (py-execute-block-python2.7-dedicated) nil "py-execute-block-python2.7-dedicated-test failed")) - -(defun py-execute-block-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-block-python2.7-dedicated-switch-base () - (assert (py-execute-block-python2.7-dedicated-switch) nil "py-execute-block-python2.7-dedicated-switch-test failed")) - -(defun py-execute-block-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-jython-test\")")) - (py-bug-tests-intern 'py-execute-block-jython-base arg teststring))) - -(defun py-execute-block-jython-base () - (assert (py-execute-block-jython) nil "py-execute-block-jython-test failed")) - -(defun py-execute-block-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-jython-switch-base arg teststring))) - -(defun py-execute-block-jython-switch-base () - (assert (py-execute-block-jython-switch) nil "py-execute-block-jython-switch-test failed")) - -(defun py-execute-block-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-jython-no-switch-base arg teststring))) - -(defun py-execute-block-jython-no-switch-base () - (assert (py-execute-block-jython-no-switch) nil "py-execute-block-jython-no-switch-test failed")) - -(defun py-execute-block-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-jython-dedicated-base arg teststring))) - -(defun py-execute-block-jython-dedicated-base () - (assert (py-execute-block-jython-dedicated) nil "py-execute-block-jython-dedicated-test failed")) - -(defun py-execute-block-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-block-jython-dedicated-switch-base () - (assert (py-execute-block-jython-dedicated-switch) nil "py-execute-block-jython-dedicated-switch-test failed")) - -(defun py-execute-block-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-block-python3.2-base arg teststring))) - -(defun py-execute-block-python3.2-base () - (assert (py-execute-block-python3.2) nil "py-execute-block-python3.2-test failed")) - -(defun py-execute-block-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3.2-switch-base arg teststring))) - -(defun py-execute-block-python3.2-switch-base () - (assert (py-execute-block-python3.2-switch) nil "py-execute-block-python3.2-switch-test failed")) - -(defun py-execute-block-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3.2-no-switch-base arg teststring))) - -(defun py-execute-block-python3.2-no-switch-base () - (assert (py-execute-block-python3.2-no-switch) nil "py-execute-block-python3.2-no-switch-test failed")) - -(defun py-execute-block-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-python3.2-dedicated-base arg teststring))) - -(defun py-execute-block-python3.2-dedicated-base () - (assert (py-execute-block-python3.2-dedicated) nil "py-execute-block-python3.2-dedicated-test failed")) - -(defun py-execute-block-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-block-python3.2-dedicated-switch-base () - (assert (py-execute-block-python3.2-dedicated-switch) nil "py-execute-block-python3.2-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python-base arg teststring))) - -(defun py-execute-block-or-clause-python-base () - (assert (py-execute-block-or-clause-python) nil "py-execute-block-or-clause-python-test failed")) - -(defun py-execute-block-or-clause-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python-switch-base () - (assert (py-execute-block-or-clause-python-switch) nil "py-execute-block-or-clause-python-switch-test failed")) - -(defun py-execute-block-or-clause-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python-no-switch-base () - (assert (py-execute-block-or-clause-python-no-switch) nil "py-execute-block-or-clause-python-no-switch-test failed")) - -(defun py-execute-block-or-clause-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-python-dedicated-base () - (assert (py-execute-block-or-clause-python-dedicated) nil "py-execute-block-or-clause-python-dedicated-test failed")) - -(defun py-execute-block-or-clause-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python-dedicated-switch-base () - (assert (py-execute-block-or-clause-python-dedicated-switch) nil "py-execute-block-or-clause-python-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-ipython-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-ipython-base arg teststring))) - -(defun py-execute-block-or-clause-ipython-base () - (assert (py-execute-block-or-clause-ipython) nil "py-execute-block-or-clause-ipython-test failed")) - -(defun py-execute-block-or-clause-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-ipython-switch-base arg teststring))) - -(defun py-execute-block-or-clause-ipython-switch-base () - (assert (py-execute-block-or-clause-ipython-switch) nil "py-execute-block-or-clause-ipython-switch-test failed")) - -(defun py-execute-block-or-clause-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-ipython-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-ipython-no-switch-base () - (assert (py-execute-block-or-clause-ipython-no-switch) nil "py-execute-block-or-clause-ipython-no-switch-test failed")) - -(defun py-execute-block-or-clause-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-ipython-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-ipython-dedicated-base () - (assert (py-execute-block-or-clause-ipython-dedicated) nil "py-execute-block-or-clause-ipython-dedicated-test failed")) - -(defun py-execute-block-or-clause-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-ipython-dedicated-switch-base () - (assert (py-execute-block-or-clause-ipython-dedicated-switch) nil "py-execute-block-or-clause-ipython-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3-base arg teststring))) - -(defun py-execute-block-or-clause-python3-base () - (assert (py-execute-block-or-clause-python3) nil "py-execute-block-or-clause-python3-test failed")) - -(defun py-execute-block-or-clause-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3-switch-base () - (assert (py-execute-block-or-clause-python3-switch) nil "py-execute-block-or-clause-python3-switch-test failed")) - -(defun py-execute-block-or-clause-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3-no-switch-base () - (assert (py-execute-block-or-clause-python3-no-switch) nil "py-execute-block-or-clause-python3-no-switch-test failed")) - -(defun py-execute-block-or-clause-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-python3-dedicated-base () - (assert (py-execute-block-or-clause-python3-dedicated) nil "py-execute-block-or-clause-python3-dedicated-test failed")) - -(defun py-execute-block-or-clause-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3-dedicated-switch-base () - (assert (py-execute-block-or-clause-python3-dedicated-switch) nil "py-execute-block-or-clause-python3-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2-base arg teststring))) - -(defun py-execute-block-or-clause-python2-base () - (assert (py-execute-block-or-clause-python2) nil "py-execute-block-or-clause-python2-test failed")) - -(defun py-execute-block-or-clause-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2-switch-base () - (assert (py-execute-block-or-clause-python2-switch) nil "py-execute-block-or-clause-python2-switch-test failed")) - -(defun py-execute-block-or-clause-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2-no-switch-base () - (assert (py-execute-block-or-clause-python2-no-switch) nil "py-execute-block-or-clause-python2-no-switch-test failed")) - -(defun py-execute-block-or-clause-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-python2-dedicated-base () - (assert (py-execute-block-or-clause-python2-dedicated) nil "py-execute-block-or-clause-python2-dedicated-test failed")) - -(defun py-execute-block-or-clause-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2-dedicated-switch-base () - (assert (py-execute-block-or-clause-python2-dedicated-switch) nil "py-execute-block-or-clause-python2-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2.7-base arg teststring))) - -(defun py-execute-block-or-clause-python2.7-base () - (assert (py-execute-block-or-clause-python2.7) nil "py-execute-block-or-clause-python2.7-test failed")) - -(defun py-execute-block-or-clause-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2.7-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2.7-switch-base () - (assert (py-execute-block-or-clause-python2.7-switch) nil "py-execute-block-or-clause-python2.7-switch-test failed")) - -(defun py-execute-block-or-clause-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2.7-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2.7-no-switch-base () - (assert (py-execute-block-or-clause-python2.7-no-switch) nil "py-execute-block-or-clause-python2.7-no-switch-test failed")) - -(defun py-execute-block-or-clause-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2.7-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-python2.7-dedicated-base () - (assert (py-execute-block-or-clause-python2.7-dedicated) nil "py-execute-block-or-clause-python2.7-dedicated-test failed")) - -(defun py-execute-block-or-clause-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python2.7-dedicated-switch-base () - (assert (py-execute-block-or-clause-python2.7-dedicated-switch) nil "py-execute-block-or-clause-python2.7-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-jython-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-jython-base arg teststring))) - -(defun py-execute-block-or-clause-jython-base () - (assert (py-execute-block-or-clause-jython) nil "py-execute-block-or-clause-jython-test failed")) - -(defun py-execute-block-or-clause-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-jython-switch-base arg teststring))) - -(defun py-execute-block-or-clause-jython-switch-base () - (assert (py-execute-block-or-clause-jython-switch) nil "py-execute-block-or-clause-jython-switch-test failed")) - -(defun py-execute-block-or-clause-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-jython-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-jython-no-switch-base () - (assert (py-execute-block-or-clause-jython-no-switch) nil "py-execute-block-or-clause-jython-no-switch-test failed")) - -(defun py-execute-block-or-clause-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-jython-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-jython-dedicated-base () - (assert (py-execute-block-or-clause-jython-dedicated) nil "py-execute-block-or-clause-jython-dedicated-test failed")) - -(defun py-execute-block-or-clause-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-jython-dedicated-switch-base () - (assert (py-execute-block-or-clause-jython-dedicated-switch) nil "py-execute-block-or-clause-jython-dedicated-switch-test failed")) - -(defun py-execute-block-or-clause-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3.2-base arg teststring))) - -(defun py-execute-block-or-clause-python3.2-base () - (assert (py-execute-block-or-clause-python3.2) nil "py-execute-block-or-clause-python3.2-test failed")) - -(defun py-execute-block-or-clause-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3.2-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3.2-switch-base () - (assert (py-execute-block-or-clause-python3.2-switch) nil "py-execute-block-or-clause-python3.2-switch-test failed")) - -(defun py-execute-block-or-clause-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3.2-no-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3.2-no-switch-base () - (assert (py-execute-block-or-clause-python3.2-no-switch) nil "py-execute-block-or-clause-python3.2-no-switch-test failed")) - -(defun py-execute-block-or-clause-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3.2-dedicated-base arg teststring))) - -(defun py-execute-block-or-clause-python3.2-dedicated-base () - (assert (py-execute-block-or-clause-python3.2-dedicated) nil "py-execute-block-or-clause-python3.2-dedicated-test failed")) - -(defun py-execute-block-or-clause-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: print(\"I'm the py-execute-block-or-clause-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-block-or-clause-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-block-or-clause-python3.2-dedicated-switch-base () - (assert (py-execute-block-or-clause-python3.2-dedicated-switch) nil "py-execute-block-or-clause-python3.2-dedicated-switch-test failed")) - -(defun py-execute-def-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python-test\")")) - (py-bug-tests-intern 'py-execute-def-python-base arg teststring))) - -(defun py-execute-def-python-base () - (assert (py-execute-def-python) nil "py-execute-def-python-test failed")) - -(defun py-execute-def-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python-switch-base arg teststring))) - -(defun py-execute-def-python-switch-base () - (assert (py-execute-def-python-switch) nil "py-execute-def-python-switch-test failed")) - -(defun py-execute-def-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python-no-switch-base arg teststring))) - -(defun py-execute-def-python-no-switch-base () - (assert (py-execute-def-python-no-switch) nil "py-execute-def-python-no-switch-test failed")) - -(defun py-execute-def-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-python-dedicated-base arg teststring))) - -(defun py-execute-def-python-dedicated-base () - (assert (py-execute-def-python-dedicated) nil "py-execute-def-python-dedicated-test failed")) - -(defun py-execute-def-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python-dedicated-switch-base arg teststring))) - -(defun py-execute-def-python-dedicated-switch-base () - (assert (py-execute-def-python-dedicated-switch) nil "py-execute-def-python-dedicated-switch-test failed")) - -(defun py-execute-def-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-ipython-test\")")) - (py-bug-tests-intern 'py-execute-def-ipython-base arg teststring))) - -(defun py-execute-def-ipython-base () - (assert (py-execute-def-ipython) nil "py-execute-def-ipython-test failed")) - -(defun py-execute-def-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-ipython-switch-base arg teststring))) - -(defun py-execute-def-ipython-switch-base () - (assert (py-execute-def-ipython-switch) nil "py-execute-def-ipython-switch-test failed")) - -(defun py-execute-def-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-ipython-no-switch-base arg teststring))) - -(defun py-execute-def-ipython-no-switch-base () - (assert (py-execute-def-ipython-no-switch) nil "py-execute-def-ipython-no-switch-test failed")) - -(defun py-execute-def-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-ipython-dedicated-base arg teststring))) - -(defun py-execute-def-ipython-dedicated-base () - (assert (py-execute-def-ipython-dedicated) nil "py-execute-def-ipython-dedicated-test failed")) - -(defun py-execute-def-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-def-ipython-dedicated-switch-base () - (assert (py-execute-def-ipython-dedicated-switch) nil "py-execute-def-ipython-dedicated-switch-test failed")) - -(defun py-execute-def-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3-test\")")) - (py-bug-tests-intern 'py-execute-def-python3-base arg teststring))) - -(defun py-execute-def-python3-base () - (assert (py-execute-def-python3) nil "py-execute-def-python3-test failed")) - -(defun py-execute-def-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3-switch-base arg teststring))) - -(defun py-execute-def-python3-switch-base () - (assert (py-execute-def-python3-switch) nil "py-execute-def-python3-switch-test failed")) - -(defun py-execute-def-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3-no-switch-base arg teststring))) - -(defun py-execute-def-python3-no-switch-base () - (assert (py-execute-def-python3-no-switch) nil "py-execute-def-python3-no-switch-test failed")) - -(defun py-execute-def-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-python3-dedicated-base arg teststring))) - -(defun py-execute-def-python3-dedicated-base () - (assert (py-execute-def-python3-dedicated) nil "py-execute-def-python3-dedicated-test failed")) - -(defun py-execute-def-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-def-python3-dedicated-switch-base () - (assert (py-execute-def-python3-dedicated-switch) nil "py-execute-def-python3-dedicated-switch-test failed")) - -(defun py-execute-def-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2-test\")")) - (py-bug-tests-intern 'py-execute-def-python2-base arg teststring))) - -(defun py-execute-def-python2-base () - (assert (py-execute-def-python2) nil "py-execute-def-python2-test failed")) - -(defun py-execute-def-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2-switch-base arg teststring))) - -(defun py-execute-def-python2-switch-base () - (assert (py-execute-def-python2-switch) nil "py-execute-def-python2-switch-test failed")) - -(defun py-execute-def-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2-no-switch-base arg teststring))) - -(defun py-execute-def-python2-no-switch-base () - (assert (py-execute-def-python2-no-switch) nil "py-execute-def-python2-no-switch-test failed")) - -(defun py-execute-def-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-python2-dedicated-base arg teststring))) - -(defun py-execute-def-python2-dedicated-base () - (assert (py-execute-def-python2-dedicated) nil "py-execute-def-python2-dedicated-test failed")) - -(defun py-execute-def-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-def-python2-dedicated-switch-base () - (assert (py-execute-def-python2-dedicated-switch) nil "py-execute-def-python2-dedicated-switch-test failed")) - -(defun py-execute-def-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-def-python2.7-base arg teststring))) - -(defun py-execute-def-python2.7-base () - (assert (py-execute-def-python2.7) nil "py-execute-def-python2.7-test failed")) - -(defun py-execute-def-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2.7-switch-base arg teststring))) - -(defun py-execute-def-python2.7-switch-base () - (assert (py-execute-def-python2.7-switch) nil "py-execute-def-python2.7-switch-test failed")) - -(defun py-execute-def-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2.7-no-switch-base arg teststring))) - -(defun py-execute-def-python2.7-no-switch-base () - (assert (py-execute-def-python2.7-no-switch) nil "py-execute-def-python2.7-no-switch-test failed")) - -(defun py-execute-def-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-python2.7-dedicated-base arg teststring))) - -(defun py-execute-def-python2.7-dedicated-base () - (assert (py-execute-def-python2.7-dedicated) nil "py-execute-def-python2.7-dedicated-test failed")) - -(defun py-execute-def-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-def-python2.7-dedicated-switch-base () - (assert (py-execute-def-python2.7-dedicated-switch) nil "py-execute-def-python2.7-dedicated-switch-test failed")) - -(defun py-execute-def-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-jython-test\")")) - (py-bug-tests-intern 'py-execute-def-jython-base arg teststring))) - -(defun py-execute-def-jython-base () - (assert (py-execute-def-jython) nil "py-execute-def-jython-test failed")) - -(defun py-execute-def-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-jython-switch-base arg teststring))) - -(defun py-execute-def-jython-switch-base () - (assert (py-execute-def-jython-switch) nil "py-execute-def-jython-switch-test failed")) - -(defun py-execute-def-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-jython-no-switch-base arg teststring))) - -(defun py-execute-def-jython-no-switch-base () - (assert (py-execute-def-jython-no-switch) nil "py-execute-def-jython-no-switch-test failed")) - -(defun py-execute-def-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-jython-dedicated-base arg teststring))) - -(defun py-execute-def-jython-dedicated-base () - (assert (py-execute-def-jython-dedicated) nil "py-execute-def-jython-dedicated-test failed")) - -(defun py-execute-def-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-def-jython-dedicated-switch-base () - (assert (py-execute-def-jython-dedicated-switch) nil "py-execute-def-jython-dedicated-switch-test failed")) - -(defun py-execute-def-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-def-python3.2-base arg teststring))) - -(defun py-execute-def-python3.2-base () - (assert (py-execute-def-python3.2) nil "py-execute-def-python3.2-test failed")) - -(defun py-execute-def-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3.2-switch-base arg teststring))) - -(defun py-execute-def-python3.2-switch-base () - (assert (py-execute-def-python3.2-switch) nil "py-execute-def-python3.2-switch-test failed")) - -(defun py-execute-def-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3.2-no-switch-base arg teststring))) - -(defun py-execute-def-python3.2-no-switch-base () - (assert (py-execute-def-python3.2-no-switch) nil "py-execute-def-python3.2-no-switch-test failed")) - -(defun py-execute-def-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-def-python3.2-dedicated-base arg teststring))) - -(defun py-execute-def-python3.2-dedicated-base () - (assert (py-execute-def-python3.2-dedicated) nil "py-execute-def-python3.2-dedicated-test failed")) - -(defun py-execute-def-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo (): print(\"I'm the py-execute-def-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-def-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-def-python3.2-dedicated-switch-base () - (assert (py-execute-def-python3.2-dedicated-switch) nil "py-execute-def-python3.2-dedicated-switch-test failed")) - -(defun py-execute-class-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python-test\")")) - (py-bug-tests-intern 'py-execute-class-python-base arg teststring))) - -(defun py-execute-class-python-base () - (assert (py-execute-class-python) nil "py-execute-class-python-test failed")) - -(defun py-execute-class-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python-switch-base arg teststring))) - -(defun py-execute-class-python-switch-base () - (assert (py-execute-class-python-switch) nil "py-execute-class-python-switch-test failed")) - -(defun py-execute-class-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python-no-switch-base arg teststring))) - -(defun py-execute-class-python-no-switch-base () - (assert (py-execute-class-python-no-switch) nil "py-execute-class-python-no-switch-test failed")) - -(defun py-execute-class-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-python-dedicated-base arg teststring))) - -(defun py-execute-class-python-dedicated-base () - (assert (py-execute-class-python-dedicated) nil "py-execute-class-python-dedicated-test failed")) - -(defun py-execute-class-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python-dedicated-switch-base arg teststring))) - -(defun py-execute-class-python-dedicated-switch-base () - (assert (py-execute-class-python-dedicated-switch) nil "py-execute-class-python-dedicated-switch-test failed")) - -(defun py-execute-class-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-ipython-test\")")) - (py-bug-tests-intern 'py-execute-class-ipython-base arg teststring))) - -(defun py-execute-class-ipython-base () - (assert (py-execute-class-ipython) nil "py-execute-class-ipython-test failed")) - -(defun py-execute-class-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-ipython-switch-base arg teststring))) - -(defun py-execute-class-ipython-switch-base () - (assert (py-execute-class-ipython-switch) nil "py-execute-class-ipython-switch-test failed")) - -(defun py-execute-class-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-ipython-no-switch-base arg teststring))) - -(defun py-execute-class-ipython-no-switch-base () - (assert (py-execute-class-ipython-no-switch) nil "py-execute-class-ipython-no-switch-test failed")) - -(defun py-execute-class-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-ipython-dedicated-base arg teststring))) - -(defun py-execute-class-ipython-dedicated-base () - (assert (py-execute-class-ipython-dedicated) nil "py-execute-class-ipython-dedicated-test failed")) - -(defun py-execute-class-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-class-ipython-dedicated-switch-base () - (assert (py-execute-class-ipython-dedicated-switch) nil "py-execute-class-ipython-dedicated-switch-test failed")) - -(defun py-execute-class-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3-test\")")) - (py-bug-tests-intern 'py-execute-class-python3-base arg teststring))) - -(defun py-execute-class-python3-base () - (assert (py-execute-class-python3) nil "py-execute-class-python3-test failed")) - -(defun py-execute-class-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3-switch-base arg teststring))) - -(defun py-execute-class-python3-switch-base () - (assert (py-execute-class-python3-switch) nil "py-execute-class-python3-switch-test failed")) - -(defun py-execute-class-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3-no-switch-base arg teststring))) - -(defun py-execute-class-python3-no-switch-base () - (assert (py-execute-class-python3-no-switch) nil "py-execute-class-python3-no-switch-test failed")) - -(defun py-execute-class-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-python3-dedicated-base arg teststring))) - -(defun py-execute-class-python3-dedicated-base () - (assert (py-execute-class-python3-dedicated) nil "py-execute-class-python3-dedicated-test failed")) - -(defun py-execute-class-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-class-python3-dedicated-switch-base () - (assert (py-execute-class-python3-dedicated-switch) nil "py-execute-class-python3-dedicated-switch-test failed")) - -(defun py-execute-class-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2-test\")")) - (py-bug-tests-intern 'py-execute-class-python2-base arg teststring))) - -(defun py-execute-class-python2-base () - (assert (py-execute-class-python2) nil "py-execute-class-python2-test failed")) - -(defun py-execute-class-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2-switch-base arg teststring))) - -(defun py-execute-class-python2-switch-base () - (assert (py-execute-class-python2-switch) nil "py-execute-class-python2-switch-test failed")) - -(defun py-execute-class-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2-no-switch-base arg teststring))) - -(defun py-execute-class-python2-no-switch-base () - (assert (py-execute-class-python2-no-switch) nil "py-execute-class-python2-no-switch-test failed")) - -(defun py-execute-class-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-python2-dedicated-base arg teststring))) - -(defun py-execute-class-python2-dedicated-base () - (assert (py-execute-class-python2-dedicated) nil "py-execute-class-python2-dedicated-test failed")) - -(defun py-execute-class-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-class-python2-dedicated-switch-base () - (assert (py-execute-class-python2-dedicated-switch) nil "py-execute-class-python2-dedicated-switch-test failed")) - -(defun py-execute-class-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-class-python2.7-base arg teststring))) - -(defun py-execute-class-python2.7-base () - (assert (py-execute-class-python2.7) nil "py-execute-class-python2.7-test failed")) - -(defun py-execute-class-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2.7-switch-base arg teststring))) - -(defun py-execute-class-python2.7-switch-base () - (assert (py-execute-class-python2.7-switch) nil "py-execute-class-python2.7-switch-test failed")) - -(defun py-execute-class-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2.7-no-switch-base arg teststring))) - -(defun py-execute-class-python2.7-no-switch-base () - (assert (py-execute-class-python2.7-no-switch) nil "py-execute-class-python2.7-no-switch-test failed")) - -(defun py-execute-class-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-python2.7-dedicated-base arg teststring))) - -(defun py-execute-class-python2.7-dedicated-base () - (assert (py-execute-class-python2.7-dedicated) nil "py-execute-class-python2.7-dedicated-test failed")) - -(defun py-execute-class-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-class-python2.7-dedicated-switch-base () - (assert (py-execute-class-python2.7-dedicated-switch) nil "py-execute-class-python2.7-dedicated-switch-test failed")) - -(defun py-execute-class-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-jython-test\")")) - (py-bug-tests-intern 'py-execute-class-jython-base arg teststring))) - -(defun py-execute-class-jython-base () - (assert (py-execute-class-jython) nil "py-execute-class-jython-test failed")) - -(defun py-execute-class-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-jython-switch-base arg teststring))) - -(defun py-execute-class-jython-switch-base () - (assert (py-execute-class-jython-switch) nil "py-execute-class-jython-switch-test failed")) - -(defun py-execute-class-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-jython-no-switch-base arg teststring))) - -(defun py-execute-class-jython-no-switch-base () - (assert (py-execute-class-jython-no-switch) nil "py-execute-class-jython-no-switch-test failed")) - -(defun py-execute-class-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-jython-dedicated-base arg teststring))) - -(defun py-execute-class-jython-dedicated-base () - (assert (py-execute-class-jython-dedicated) nil "py-execute-class-jython-dedicated-test failed")) - -(defun py-execute-class-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-class-jython-dedicated-switch-base () - (assert (py-execute-class-jython-dedicated-switch) nil "py-execute-class-jython-dedicated-switch-test failed")) - -(defun py-execute-class-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-class-python3.2-base arg teststring))) - -(defun py-execute-class-python3.2-base () - (assert (py-execute-class-python3.2) nil "py-execute-class-python3.2-test failed")) - -(defun py-execute-class-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3.2-switch-base arg teststring))) - -(defun py-execute-class-python3.2-switch-base () - (assert (py-execute-class-python3.2-switch) nil "py-execute-class-python3.2-switch-test failed")) - -(defun py-execute-class-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3.2-no-switch-base arg teststring))) - -(defun py-execute-class-python3.2-no-switch-base () - (assert (py-execute-class-python3.2-no-switch) nil "py-execute-class-python3.2-no-switch-test failed")) - -(defun py-execute-class-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-class-python3.2-dedicated-base arg teststring))) - -(defun py-execute-class-python3.2-dedicated-base () - (assert (py-execute-class-python3.2-dedicated) nil "py-execute-class-python3.2-dedicated-test failed")) - -(defun py-execute-class-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class foo (): print(\"I'm the py-execute-class-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-class-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-class-python3.2-dedicated-switch-base () - (assert (py-execute-class-python3.2-dedicated-switch) nil "py-execute-class-python3.2-dedicated-switch-test failed")) - -(defun py-execute-region-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python-test\")")) - (py-bug-tests-intern 'py-execute-region-python-base arg teststring))) - -(defun py-execute-region-python-base () - (assert (py-execute-region-python (line-beginning-position) (line-end-position)) nil "py-execute-region-python-test failed")) - -(defun py-execute-region-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python-switch-base arg teststring))) - -(defun py-execute-region-python-switch-base () - (assert (py-execute-region-python-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python-switch-test failed")) - -(defun py-execute-region-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python-no-switch-base arg teststring))) - -(defun py-execute-region-python-no-switch-base () - (assert (py-execute-region-python-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python-no-switch-test failed")) - -(defun py-execute-region-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-python-dedicated-base arg teststring))) - -(defun py-execute-region-python-dedicated-base () - (assert (py-execute-region-python-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-python-dedicated-test failed")) - -(defun py-execute-region-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python-dedicated-switch-base arg teststring))) - -(defun py-execute-region-python-dedicated-switch-base () - (assert (py-execute-region-python-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python-dedicated-switch-test failed")) - -(defun py-execute-region-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-ipython-test\")")) - (py-bug-tests-intern 'py-execute-region-ipython-base arg teststring))) - -(defun py-execute-region-ipython-base () - (assert (py-execute-region-ipython (line-beginning-position) (line-end-position)) nil "py-execute-region-ipython-test failed")) - -(defun py-execute-region-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-ipython-switch-base arg teststring))) - -(defun py-execute-region-ipython-switch-base () - (assert (py-execute-region-ipython-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-ipython-switch-test failed")) - -(defun py-execute-region-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-ipython-no-switch-base arg teststring))) - -(defun py-execute-region-ipython-no-switch-base () - (assert (py-execute-region-ipython-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-ipython-no-switch-test failed")) - -(defun py-execute-region-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-ipython-dedicated-base arg teststring))) - -(defun py-execute-region-ipython-dedicated-base () - (assert (py-execute-region-ipython-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-ipython-dedicated-test failed")) - -(defun py-execute-region-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-region-ipython-dedicated-switch-base () - (assert (py-execute-region-ipython-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-ipython-dedicated-switch-test failed")) - -(defun py-execute-region-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3-test\")")) - (py-bug-tests-intern 'py-execute-region-python3-base arg teststring))) - -(defun py-execute-region-python3-base () - (assert (py-execute-region-python3 (line-beginning-position) (line-end-position)) nil "py-execute-region-python3-test failed")) - -(defun py-execute-region-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3-switch-base arg teststring))) - -(defun py-execute-region-python3-switch-base () - (assert (py-execute-region-python3-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3-switch-test failed")) - -(defun py-execute-region-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3-no-switch-base arg teststring))) - -(defun py-execute-region-python3-no-switch-base () - (assert (py-execute-region-python3-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3-no-switch-test failed")) - -(defun py-execute-region-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-python3-dedicated-base arg teststring))) - -(defun py-execute-region-python3-dedicated-base () - (assert (py-execute-region-python3-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-python3-dedicated-test failed")) - -(defun py-execute-region-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-region-python3-dedicated-switch-base () - (assert (py-execute-region-python3-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3-dedicated-switch-test failed")) - -(defun py-execute-region-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2-test\")")) - (py-bug-tests-intern 'py-execute-region-python2-base arg teststring))) - -(defun py-execute-region-python2-base () - (assert (py-execute-region-python2 (line-beginning-position) (line-end-position)) nil "py-execute-region-python2-test failed")) - -(defun py-execute-region-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2-switch-base arg teststring))) - -(defun py-execute-region-python2-switch-base () - (assert (py-execute-region-python2-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2-switch-test failed")) - -(defun py-execute-region-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2-no-switch-base arg teststring))) - -(defun py-execute-region-python2-no-switch-base () - (assert (py-execute-region-python2-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2-no-switch-test failed")) - -(defun py-execute-region-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-python2-dedicated-base arg teststring))) - -(defun py-execute-region-python2-dedicated-base () - (assert (py-execute-region-python2-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-python2-dedicated-test failed")) - -(defun py-execute-region-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-region-python2-dedicated-switch-base () - (assert (py-execute-region-python2-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2-dedicated-switch-test failed")) - -(defun py-execute-region-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-region-python2.7-base arg teststring))) - -(defun py-execute-region-python2.7-base () - (assert (py-execute-region-python2.7 (line-beginning-position) (line-end-position)) nil "py-execute-region-python2.7-test failed")) - -(defun py-execute-region-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2.7-switch-base arg teststring))) - -(defun py-execute-region-python2.7-switch-base () - (assert (py-execute-region-python2.7-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2.7-switch-test failed")) - -(defun py-execute-region-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2.7-no-switch-base arg teststring))) - -(defun py-execute-region-python2.7-no-switch-base () - (sit-for 0.1) - (assert (py-execute-region-python2.7-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2.7-no-switch-test failed")) - -(defun py-execute-region-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-python2.7-dedicated-base arg teststring))) - -(defun py-execute-region-python2.7-dedicated-base () - (assert (py-execute-region-python2.7-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-python2.7-dedicated-test failed")) - -(defun py-execute-region-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-region-python2.7-dedicated-switch-base () - (assert (py-execute-region-python2.7-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python2.7-dedicated-switch-test failed")) - -(defun py-execute-region-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-jython-test\")")) - (py-bug-tests-intern 'py-execute-region-jython-base arg teststring))) - -(defun py-execute-region-jython-base () - (assert (py-execute-region-jython (line-beginning-position) (line-end-position)) nil "py-execute-region-jython-test failed")) - -(defun py-execute-region-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-jython-switch-base arg teststring))) - -(defun py-execute-region-jython-switch-base () - (assert (py-execute-region-jython-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-jython-switch-test failed")) - -(defun py-execute-region-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-jython-no-switch-base arg teststring))) - -(defun py-execute-region-jython-no-switch-base () - (assert (py-execute-region-jython-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-jython-no-switch-test failed")) - -(defun py-execute-region-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-jython-dedicated-base arg teststring))) - -(defun py-execute-region-jython-dedicated-base () - (assert (py-execute-region-jython-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-jython-dedicated-test failed")) - -(defun py-execute-region-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-region-jython-dedicated-switch-base () - (assert (py-execute-region-jython-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-jython-dedicated-switch-test failed")) - -(defun py-execute-region-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-region-python3.2-base arg teststring))) - -(defun py-execute-region-python3.2-base () - (assert (py-execute-region-python3.2 (line-beginning-position) (line-end-position)) nil "py-execute-region-python3.2-test failed")) - -(defun py-execute-region-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3.2-switch-base arg teststring))) - -(defun py-execute-region-python3.2-switch-base () - (assert (py-execute-region-python3.2-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3.2-switch-test failed")) - -(defun py-execute-region-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3.2-no-switch-base arg teststring))) - -(defun py-execute-region-python3.2-no-switch-base () - (assert (py-execute-region-python3.2-no-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3.2-no-switch-test failed")) - -(defun py-execute-region-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-region-python3.2-dedicated-base arg teststring))) - -(defun py-execute-region-python3.2-dedicated-base () - (assert (py-execute-region-python3.2-dedicated (line-beginning-position) (line-end-position)) nil "py-execute-region-python3.2-dedicated-test failed")) - -(defun py-execute-region-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-region-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-region-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-region-python3.2-dedicated-switch-base () - (assert (py-execute-region-python3.2-dedicated-switch (line-beginning-position) (line-end-position)) nil "py-execute-region-python3.2-dedicated-switch-test failed")) - -(defun py-execute-buffer-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python-base arg teststring))) - -(defun py-execute-buffer-python-base () - (assert (py-execute-buffer-python) nil "py-execute-buffer-python-test failed")) - -(defun py-execute-buffer-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python-switch-base arg teststring))) - -(defun py-execute-buffer-python-switch-base () - (assert (py-execute-buffer-python-switch) nil "py-execute-buffer-python-switch-test failed")) - -(defun py-execute-buffer-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python-no-switch-base arg teststring))) - -(defun py-execute-buffer-python-no-switch-base () - (assert (py-execute-buffer-python-no-switch) nil "py-execute-buffer-python-no-switch-test failed")) - -(defun py-execute-buffer-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python-dedicated-base arg teststring))) - -(defun py-execute-buffer-python-dedicated-base () - (assert (py-execute-buffer-python-dedicated) nil "py-execute-buffer-python-dedicated-test failed")) - -(defun py-execute-buffer-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-python-dedicated-switch-base () - (assert (py-execute-buffer-python-dedicated-switch) nil "py-execute-buffer-python-dedicated-switch-test failed")) - -(defun py-execute-buffer-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-ipython-test\")")) - (py-bug-tests-intern 'py-execute-buffer-ipython-base arg teststring))) - -(defun py-execute-buffer-ipython-base () - (assert (py-execute-buffer-ipython) nil "py-execute-buffer-ipython-test failed")) - -(defun py-execute-buffer-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-ipython-switch-base arg teststring))) - -(defun py-execute-buffer-ipython-switch-base () - (assert (py-execute-buffer-ipython-switch) nil "py-execute-buffer-ipython-switch-test failed")) - -(defun py-execute-buffer-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-ipython-no-switch-base arg teststring))) - -(defun py-execute-buffer-ipython-no-switch-base () - (assert (py-execute-buffer-ipython-no-switch) nil "py-execute-buffer-ipython-no-switch-test failed")) - -(defun py-execute-buffer-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-ipython-dedicated-base arg teststring))) - -(defun py-execute-buffer-ipython-dedicated-base () - (assert (py-execute-buffer-ipython-dedicated) nil "py-execute-buffer-ipython-dedicated-test failed")) - -(defun py-execute-buffer-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-ipython-dedicated-switch-base () - (assert (py-execute-buffer-ipython-dedicated-switch) nil "py-execute-buffer-ipython-dedicated-switch-test failed")) - -(defun py-execute-buffer-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3-base arg teststring))) - -(defun py-execute-buffer-python3-base () - (assert (py-execute-buffer-python3) nil "py-execute-buffer-python3-test failed")) - -(defun py-execute-buffer-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3-switch-base arg teststring))) - -(defun py-execute-buffer-python3-switch-base () - (assert (py-execute-buffer-python3-switch) nil "py-execute-buffer-python3-switch-test failed")) - -(defun py-execute-buffer-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3-no-switch-base arg teststring))) - -(defun py-execute-buffer-python3-no-switch-base () - (assert (py-execute-buffer-python3-no-switch) nil "py-execute-buffer-python3-no-switch-test failed")) - -(defun py-execute-buffer-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3-dedicated-base arg teststring))) - -(defun py-execute-buffer-python3-dedicated-base () - (assert (py-execute-buffer-python3-dedicated) nil "py-execute-buffer-python3-dedicated-test failed")) - -(defun py-execute-buffer-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-python3-dedicated-switch-base () - (assert (py-execute-buffer-python3-dedicated-switch) nil "py-execute-buffer-python3-dedicated-switch-test failed")) - -(defun py-execute-buffer-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2-base arg teststring))) - -(defun py-execute-buffer-python2-base () - (assert (py-execute-buffer-python2) nil "py-execute-buffer-python2-test failed")) - -(defun py-execute-buffer-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2-switch-base arg teststring))) - -(defun py-execute-buffer-python2-switch-base () - (assert (py-execute-buffer-python2-switch) nil "py-execute-buffer-python2-switch-test failed")) - -(defun py-execute-buffer-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2-no-switch-base arg teststring))) - -(defun py-execute-buffer-python2-no-switch-base () - (assert (py-execute-buffer-python2-no-switch) nil "py-execute-buffer-python2-no-switch-test failed")) - -(defun py-execute-buffer-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2-dedicated-base arg teststring))) - -(defun py-execute-buffer-python2-dedicated-base () - (assert (py-execute-buffer-python2-dedicated) nil "py-execute-buffer-python2-dedicated-test failed")) - -(defun py-execute-buffer-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-python2-dedicated-switch-base () - (assert (py-execute-buffer-python2-dedicated-switch) nil "py-execute-buffer-python2-dedicated-switch-test failed")) - -(defun py-execute-buffer-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2.7-base arg teststring))) - -(defun py-execute-buffer-python2.7-base () - (assert (py-execute-buffer-python2.7) nil "py-execute-buffer-python2.7-test failed")) - -(defun py-execute-buffer-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2.7-switch-base arg teststring))) - -(defun py-execute-buffer-python2.7-switch-base () - (assert (py-execute-buffer-python2.7-switch) nil "py-execute-buffer-python2.7-switch-test failed")) - -(defun py-execute-buffer-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2.7-no-switch-base arg teststring))) - -(defun py-execute-buffer-python2.7-no-switch-base () - (assert (py-execute-buffer-python2.7-no-switch) nil "py-execute-buffer-python2.7-no-switch-test failed")) - -(defun py-execute-buffer-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2.7-dedicated-base arg teststring))) - -(defun py-execute-buffer-python2.7-dedicated-base () - (assert (py-execute-buffer-python2.7-dedicated) nil "py-execute-buffer-python2.7-dedicated-test failed")) - -(defun py-execute-buffer-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-python2.7-dedicated-switch-base () - (assert (py-execute-buffer-python2.7-dedicated-switch) nil "py-execute-buffer-python2.7-dedicated-switch-test failed")) - -(defun py-execute-buffer-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-jython-test\")")) - (py-bug-tests-intern 'py-execute-buffer-jython-base arg teststring))) - -(defun py-execute-buffer-jython-base () - (assert (py-execute-buffer-jython) nil "py-execute-buffer-jython-test failed")) - -(defun py-execute-buffer-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-jython-switch-base arg teststring))) - -(defun py-execute-buffer-jython-switch-base () - (assert (py-execute-buffer-jython-switch) nil "py-execute-buffer-jython-switch-test failed")) - -(defun py-execute-buffer-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-jython-no-switch-base arg teststring))) - -(defun py-execute-buffer-jython-no-switch-base () - (assert (py-execute-buffer-jython-no-switch) nil "py-execute-buffer-jython-no-switch-test failed")) - -(defun py-execute-buffer-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-jython-dedicated-base arg teststring))) - -(defun py-execute-buffer-jython-dedicated-base () - (assert (py-execute-buffer-jython-dedicated) nil "py-execute-buffer-jython-dedicated-test failed")) - -(defun py-execute-buffer-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-jython-dedicated-switch-base () - (assert (py-execute-buffer-jython-dedicated-switch) nil "py-execute-buffer-jython-dedicated-switch-test failed")) - -(defun py-execute-buffer-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3.2-base arg teststring))) - -(defun py-execute-buffer-python3.2-base () - (assert (py-execute-buffer-python3.2) nil "py-execute-buffer-python3.2-test failed")) - -(defun py-execute-buffer-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3.2-switch-base arg teststring))) - -(defun py-execute-buffer-python3.2-switch-base () - (assert (py-execute-buffer-python3.2-switch) nil "py-execute-buffer-python3.2-switch-test failed")) - -(defun py-execute-buffer-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3.2-no-switch-base arg teststring))) - -(defun py-execute-buffer-python3.2-no-switch-base () - (assert (py-execute-buffer-python3.2-no-switch) nil "py-execute-buffer-python3.2-no-switch-test failed")) - -(defun py-execute-buffer-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3.2-dedicated-base arg teststring))) - -(defun py-execute-buffer-python3.2-dedicated-base () - (assert (py-execute-buffer-python3.2-dedicated) nil "py-execute-buffer-python3.2-dedicated-test failed")) - -(defun py-execute-buffer-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-buffer-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-buffer-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-buffer-python3.2-dedicated-switch-base () - (assert (py-execute-buffer-python3.2-dedicated-switch) nil "py-execute-buffer-python3.2-dedicated-switch-test failed")) - -(defun py-execute-expression-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python-test\")")) - (py-bug-tests-intern 'py-execute-expression-python-base arg teststring))) - -(defun py-execute-expression-python-base () - (assert (py-execute-expression-python) nil "py-execute-expression-python-test failed")) - -(defun py-execute-expression-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python-switch-base arg teststring))) - -(defun py-execute-expression-python-switch-base () - (assert (py-execute-expression-python-switch) nil "py-execute-expression-python-switch-test failed")) - -(defun py-execute-expression-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python-no-switch-base arg teststring))) - -(defun py-execute-expression-python-no-switch-base () - (assert (py-execute-expression-python-no-switch) nil "py-execute-expression-python-no-switch-test failed")) - -(defun py-execute-expression-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-python-dedicated-base arg teststring))) - -(defun py-execute-expression-python-dedicated-base () - (assert (py-execute-expression-python-dedicated) nil "py-execute-expression-python-dedicated-test failed")) - -(defun py-execute-expression-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-python-dedicated-switch-base () - (assert (py-execute-expression-python-dedicated-switch) nil "py-execute-expression-python-dedicated-switch-test failed")) - -(defun py-execute-expression-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-ipython-test\")")) - (py-bug-tests-intern 'py-execute-expression-ipython-base arg teststring))) - -(defun py-execute-expression-ipython-base () - (assert (py-execute-expression-ipython) nil "py-execute-expression-ipython-test failed")) - -(defun py-execute-expression-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-ipython-switch-base arg teststring))) - -(defun py-execute-expression-ipython-switch-base () - (assert (py-execute-expression-ipython-switch) nil "py-execute-expression-ipython-switch-test failed")) - -(defun py-execute-expression-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-ipython-no-switch-base arg teststring))) - -(defun py-execute-expression-ipython-no-switch-base () - (assert (py-execute-expression-ipython-no-switch) nil "py-execute-expression-ipython-no-switch-test failed")) - -(defun py-execute-expression-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-ipython-dedicated-base arg teststring))) - -(defun py-execute-expression-ipython-dedicated-base () - (assert (py-execute-expression-ipython-dedicated) nil "py-execute-expression-ipython-dedicated-test failed")) - -(defun py-execute-expression-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-ipython-dedicated-switch-base () - (assert (py-execute-expression-ipython-dedicated-switch) nil "py-execute-expression-ipython-dedicated-switch-test failed")) - -(defun py-execute-expression-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3-base arg teststring))) - -(defun py-execute-expression-python3-base () - (assert (py-execute-expression-python3) nil "py-execute-expression-python3-test failed")) - -(defun py-execute-expression-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3-switch-base arg teststring))) - -(defun py-execute-expression-python3-switch-base () - (assert (py-execute-expression-python3-switch) nil "py-execute-expression-python3-switch-test failed")) - -(defun py-execute-expression-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3-no-switch-base arg teststring))) - -(defun py-execute-expression-python3-no-switch-base () - (assert (py-execute-expression-python3-no-switch) nil "py-execute-expression-python3-no-switch-test failed")) - -(defun py-execute-expression-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3-dedicated-base arg teststring))) - -(defun py-execute-expression-python3-dedicated-base () - (assert (py-execute-expression-python3-dedicated) nil "py-execute-expression-python3-dedicated-test failed")) - -(defun py-execute-expression-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-python3-dedicated-switch-base () - (assert (py-execute-expression-python3-dedicated-switch) nil "py-execute-expression-python3-dedicated-switch-test failed")) - -(defun py-execute-expression-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2-base arg teststring))) - -(defun py-execute-expression-python2-base () - (assert (py-execute-expression-python2) nil "py-execute-expression-python2-test failed")) - -(defun py-execute-expression-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2-switch-base arg teststring))) - -(defun py-execute-expression-python2-switch-base () - (assert (py-execute-expression-python2-switch) nil "py-execute-expression-python2-switch-test failed")) - -(defun py-execute-expression-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2-no-switch-base arg teststring))) - -(defun py-execute-expression-python2-no-switch-base () - (assert (py-execute-expression-python2-no-switch) nil "py-execute-expression-python2-no-switch-test failed")) - -(defun py-execute-expression-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2-dedicated-base arg teststring))) - -(defun py-execute-expression-python2-dedicated-base () - (assert (py-execute-expression-python2-dedicated) nil "py-execute-expression-python2-dedicated-test failed")) - -(defun py-execute-expression-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-python2-dedicated-switch-base () - (assert (py-execute-expression-python2-dedicated-switch) nil "py-execute-expression-python2-dedicated-switch-test failed")) - -(defun py-execute-expression-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2.7-base arg teststring))) - -(defun py-execute-expression-python2.7-base () - (assert (py-execute-expression-python2.7) nil "py-execute-expression-python2.7-test failed")) - -(defun py-execute-expression-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2.7-switch-base arg teststring))) - -(defun py-execute-expression-python2.7-switch-base () - (assert (py-execute-expression-python2.7-switch) nil "py-execute-expression-python2.7-switch-test failed")) - -(defun py-execute-expression-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2.7-no-switch-base arg teststring))) - -(defun py-execute-expression-python2.7-no-switch-base () - (assert (py-execute-expression-python2.7-no-switch) nil "py-execute-expression-python2.7-no-switch-test failed")) - -(defun py-execute-expression-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2.7-dedicated-base arg teststring))) - -(defun py-execute-expression-python2.7-dedicated-base () - (assert (py-execute-expression-python2.7-dedicated) nil "py-execute-expression-python2.7-dedicated-test failed")) - -(defun py-execute-expression-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-python2.7-dedicated-switch-base () - (assert (py-execute-expression-python2.7-dedicated-switch) nil "py-execute-expression-python2.7-dedicated-switch-test failed")) - -(defun py-execute-expression-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-jython-test\")")) - (py-bug-tests-intern 'py-execute-expression-jython-base arg teststring))) - -(defun py-execute-expression-jython-base () - (assert (py-execute-expression-jython) nil "py-execute-expression-jython-test failed")) - -(defun py-execute-expression-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-jython-switch-base arg teststring))) - -(defun py-execute-expression-jython-switch-base () - (assert (py-execute-expression-jython-switch) nil "py-execute-expression-jython-switch-test failed")) - -(defun py-execute-expression-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-jython-no-switch-base arg teststring))) - -(defun py-execute-expression-jython-no-switch-base () - (assert (py-execute-expression-jython-no-switch) nil "py-execute-expression-jython-no-switch-test failed")) - -(defun py-execute-expression-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-jython-dedicated-base arg teststring))) - -(defun py-execute-expression-jython-dedicated-base () - (assert (py-execute-expression-jython-dedicated) nil "py-execute-expression-jython-dedicated-test failed")) - -(defun py-execute-expression-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-jython-dedicated-switch-base () - (assert (py-execute-expression-jython-dedicated-switch) nil "py-execute-expression-jython-dedicated-switch-test failed")) - -(defun py-execute-expression-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3.2-base arg teststring))) - -(defun py-execute-expression-python3.2-base () - (assert (py-execute-expression-python3.2) nil "py-execute-expression-python3.2-test failed")) - -(defun py-execute-expression-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3.2-switch-base arg teststring))) - -(defun py-execute-expression-python3.2-switch-base () - (assert (py-execute-expression-python3.2-switch) nil "py-execute-expression-python3.2-switch-test failed")) - -(defun py-execute-expression-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3.2-no-switch-base arg teststring))) - -(defun py-execute-expression-python3.2-no-switch-base () - (assert (py-execute-expression-python3.2-no-switch) nil "py-execute-expression-python3.2-no-switch-test failed")) - -(defun py-execute-expression-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3.2-dedicated-base arg teststring))) - -(defun py-execute-expression-python3.2-dedicated-base () - (assert (py-execute-expression-python3.2-dedicated) nil "py-execute-expression-python3.2-dedicated-test failed")) - -(defun py-execute-expression-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-expression-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-expression-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-expression-python3.2-dedicated-switch-base () - (assert (py-execute-expression-python3.2-dedicated-switch) nil "py-execute-expression-python3.2-dedicated-switch-test failed")) - -(defun py-execute-line-python-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python-test\")")) - (py-bug-tests-intern 'py-execute-line-python-base t teststring))) - -(defun py-execute-line-python-base () - (assert (py-execute-line-python) nil "py-execute-line-python-test failed")) - -(defun py-execute-line-python-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python-switch-base arg teststring))) - -(defun py-execute-line-python-switch-base () - (assert (py-execute-line-python-switch) nil "py-execute-line-python-switch-test failed")) - -(defun py-execute-line-python-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python-no-switch-base arg teststring))) - -(defun py-execute-line-python-no-switch-base () - (assert (py-execute-line-python-no-switch) nil "py-execute-line-python-no-switch-test failed")) - -(defun py-execute-line-python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-python-dedicated-base arg teststring))) - -(defun py-execute-line-python-dedicated-base () - (assert (py-execute-line-python-dedicated) nil "py-execute-line-python-dedicated-test failed")) - -(defun py-execute-line-python-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python-dedicated-switch-base arg teststring))) - -(defun py-execute-line-python-dedicated-switch-base () - (assert (py-execute-line-python-dedicated-switch) nil "py-execute-line-python-dedicated-switch-test failed")) - -(defun py-execute-line-ipython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-ipython-test\")")) - (py-bug-tests-intern 'py-execute-line-ipython-base arg teststring))) - -(defun py-execute-line-ipython-base () - (assert (py-execute-line-ipython) nil "py-execute-line-ipython-test failed")) - -(defun py-execute-line-ipython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-ipython-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-ipython-switch-base arg teststring))) - -(defun py-execute-line-ipython-switch-base () - (assert (py-execute-line-ipython-switch) nil "py-execute-line-ipython-switch-test failed")) - -(defun py-execute-line-ipython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-ipython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-ipython-no-switch-base arg teststring))) - -(defun py-execute-line-ipython-no-switch-base () - (assert (py-execute-line-ipython-no-switch) nil "py-execute-line-ipython-no-switch-test failed")) - -(defun py-execute-line-ipython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-ipython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-ipython-dedicated-base arg teststring))) - -(defun py-execute-line-ipython-dedicated-base () - (assert (py-execute-line-ipython-dedicated) nil "py-execute-line-ipython-dedicated-test failed")) - -(defun py-execute-line-ipython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-ipython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-ipython-dedicated-switch-base arg teststring))) - -(defun py-execute-line-ipython-dedicated-switch-base () - (assert (py-execute-line-ipython-dedicated-switch) nil "py-execute-line-ipython-dedicated-switch-test failed")) - -(defun py-execute-line-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3-test\")")) - (py-bug-tests-intern 'py-execute-line-python3-base arg teststring))) - -(defun py-execute-line-python3-base () - (assert (py-execute-line-python3) nil "py-execute-line-python3-test failed")) - -(defun py-execute-line-python3-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3-switch-base arg teststring))) - -(defun py-execute-line-python3-switch-base () - (assert (py-execute-line-python3-switch) nil "py-execute-line-python3-switch-test failed")) - -(defun py-execute-line-python3-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3-no-switch-base arg teststring))) - -(defun py-execute-line-python3-no-switch-base () - (assert (py-execute-line-python3-no-switch) nil "py-execute-line-python3-no-switch-test failed")) - -(defun py-execute-line-python3-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-python3-dedicated-base arg teststring))) - -(defun py-execute-line-python3-dedicated-base () - (assert (py-execute-line-python3-dedicated) nil "py-execute-line-python3-dedicated-test failed")) - -(defun py-execute-line-python3-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3-dedicated-switch-base arg teststring))) - -(defun py-execute-line-python3-dedicated-switch-base () - (assert (py-execute-line-python3-dedicated-switch) nil "py-execute-line-python3-dedicated-switch-test failed")) - -(defun py-execute-line-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2-test\")")) - (py-bug-tests-intern 'py-execute-line-python2-base arg teststring))) - -(defun py-execute-line-python2-base () - (assert (py-execute-line-python2) nil "py-execute-line-python2-test failed")) - -(defun py-execute-line-python2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2-switch-base arg teststring))) - -(defun py-execute-line-python2-switch-base () - (assert (py-execute-line-python2-switch) nil "py-execute-line-python2-switch-test failed")) - -(defun py-execute-line-python2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2-no-switch-base arg teststring))) - -(defun py-execute-line-python2-no-switch-base () - (assert (py-execute-line-python2-no-switch) nil "py-execute-line-python2-no-switch-test failed")) - -(defun py-execute-line-python2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-python2-dedicated-base arg teststring))) - -(defun py-execute-line-python2-dedicated-base () - (assert (py-execute-line-python2-dedicated) nil "py-execute-line-python2-dedicated-test failed")) - -(defun py-execute-line-python2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2-dedicated-switch-base arg teststring))) - -(defun py-execute-line-python2-dedicated-switch-base () - (assert (py-execute-line-python2-dedicated-switch) nil "py-execute-line-python2-dedicated-switch-test failed")) - -(defun py-execute-line-python2.7-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2.7-test\")")) - (py-bug-tests-intern 'py-execute-line-python2.7-base arg teststring))) - -(defun py-execute-line-python2.7-base () - (assert (py-execute-line-python2.7) nil "py-execute-line-python2.7-test failed")) - -(defun py-execute-line-python2.7-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2.7-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2.7-switch-base arg teststring))) - -(defun py-execute-line-python2.7-switch-base () - (assert (py-execute-line-python2.7-switch) nil "py-execute-line-python2.7-switch-test failed")) - -(defun py-execute-line-python2.7-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2.7-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2.7-no-switch-base arg teststring))) - -(defun py-execute-line-python2.7-no-switch-base () - (assert (py-execute-line-python2.7-no-switch) nil "py-execute-line-python2.7-no-switch-test failed")) - -(defun py-execute-line-python2.7-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2.7-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-python2.7-dedicated-base arg teststring))) - -(defun py-execute-line-python2.7-dedicated-base () - (assert (py-execute-line-python2.7-dedicated) nil "py-execute-line-python2.7-dedicated-test failed")) - -(defun py-execute-line-python2.7-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python2.7-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python2.7-dedicated-switch-base arg teststring))) - -(defun py-execute-line-python2.7-dedicated-switch-base () - (assert (py-execute-line-python2.7-dedicated-switch) nil "py-execute-line-python2.7-dedicated-switch-test failed")) - -(defun py-execute-line-jython-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-jython-test\")")) - (py-bug-tests-intern 'py-execute-line-jython-base arg teststring))) - -(defun py-execute-line-jython-base () - (assert (py-execute-line-jython) nil "py-execute-line-jython-test failed")) - -(defun py-execute-line-jython-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-jython-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-jython-switch-base arg teststring))) - -(defun py-execute-line-jython-switch-base () - (assert (py-execute-line-jython-switch) nil "py-execute-line-jython-switch-test failed")) - -(defun py-execute-line-jython-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-jython-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-jython-no-switch-base arg teststring))) - -(defun py-execute-line-jython-no-switch-base () - (assert (py-execute-line-jython-no-switch) nil "py-execute-line-jython-no-switch-test failed")) - -(defun py-execute-line-jython-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-jython-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-jython-dedicated-base arg teststring))) - -(defun py-execute-line-jython-dedicated-base () - (assert (py-execute-line-jython-dedicated) nil "py-execute-line-jython-dedicated-test failed")) - -(defun py-execute-line-jython-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-jython-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-jython-dedicated-switch-base arg teststring))) - -(defun py-execute-line-jython-dedicated-switch-base () - (assert (py-execute-line-jython-dedicated-switch) nil "py-execute-line-jython-dedicated-switch-test failed")) - -(defun py-execute-line-python3.2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3.2-test\")")) - (py-bug-tests-intern 'py-execute-line-python3.2-base arg teststring))) - -(defun py-execute-line-python3.2-base () - (assert (py-execute-line-python3.2) nil "py-execute-line-python3.2-test failed")) - -(defun py-execute-line-python3.2-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3.2-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3.2-switch-base arg teststring))) - -(defun py-execute-line-python3.2-switch-base () - (assert (py-execute-line-python3.2-switch) nil "py-execute-line-python3.2-switch-test failed")) - -(defun py-execute-line-python3.2-no-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3.2-no-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3.2-no-switch-base arg teststring))) - -(defun py-execute-line-python3.2-no-switch-base () - (assert (py-execute-line-python3.2-no-switch) nil "py-execute-line-python3.2-no-switch-test failed")) - -(defun py-execute-line-python3.2-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3.2-dedicated-test\")")) - (py-bug-tests-intern 'py-execute-line-python3.2-dedicated-base arg teststring))) - -(defun py-execute-line-python3.2-dedicated-base () - (assert (py-execute-line-python3.2-dedicated) nil "py-execute-line-python3.2-dedicated-test failed")) - -(defun py-execute-line-python3.2-dedicated-switch-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print(\"I'm the py-execute-line-python3.2-dedicated-switch-test\")")) - (py-bug-tests-intern 'py-execute-line-python3.2-dedicated-switch-base arg teststring))) - -(defun py-execute-line-python3.2-dedicated-switch-base () - (assert (py-execute-line-python3.2-dedicated-switch) nil "py-execute-line-python3.2-dedicated-switch-test failed")) - -(provide 'python-extended-executes-test) -;;; python-extended-executes-test.el ends here diff --git a/elpa/python-mode-6.1.3/test/python-extended-executes-test.elc b/elpa/python-mode-6.1.3/test/python-extended-executes-test.elc deleted file mode 100644 index 5e6a7493131763949ac717e90109812fd0546aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150160 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 O+xYzPW>++?U;RHx!cp%4 diff --git a/elpa/python-mode-6.1.3/test/python-mode-ert-tests.el b/elpa/python-mode-6.1.3/test/python-mode-ert-tests.el deleted file mode 100644 index 00975db96..000000000 --- a/elpa/python-mode-6.1.3/test/python-mode-ert-tests.el +++ /dev/null @@ -1,582 +0,0 @@ -;;; python-mode-ert-tests.el --- Tests, some adapted from python.el - -;; Copyright (C) 2013 Free Software Foundation, Inc. -;; Copyright (C) 2014 Andreas Roehler, - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . - -;;; Commentary: - -;;; Code: - -;; (require 'ert) - -(defmacro py-tests-with-temp-buffer (contents &rest body) - "Create a `python-mode' enabled temp buffer with CONTENTS. -BODY is code to be executed within the temp buffer. Point is -always located at the beginning of buffer." - (declare (indent 1) (debug t)) - `(with-temp-buffer - (let (hs-minor-mode) - (python-mode) - (insert ,contents) - (message "ERT %s" (point)) - (goto-char (point-min)) - ,@body))) - -(defun py-tests-go-to (string) - "Move point at beginning of STRING in the current test. " - (and (eq (point) (point-max))(goto-char (point-min))) - (search-forward string nil t 1)) - -(ert-deftest electric-kill-backward-test1 () - (let ((py-electric-kill-backward-p t)) - (with-temp-buffer - (insert "mystring[0:1]") - (py-electric-backspace 1) - (should (eq ?\] (char-after)))))) - -(ert-deftest electric-kill-backward-test2 () - (let ((py-electric-kill-backward-p t)) - (with-temp-buffer - (insert "mystring(\"asdf\")") - (py-electric-backspace 1) - (should (eq ?\) (char-after))) - ))) - -(ert-deftest electric-kill-backward-test3 () - (let ((py-electric-kill-backward-p t)) - (with-temp-buffer - (insert "mystring{0 . 1}") - (py-electric-backspace 1) - (should (eq ?\} (char-after))) - ))) - -(ert-deftest py-indent-dedenters-1 () - "Check all dedenters." - (py-tests-with-temp-buffer - " -def foo(a, b, c): - if a: - print (a) - elif b: - print (b) - else: - try: - print (c.pop()) - except (IndexError, AttributeError): - print (c) - finally: - print ('nor a, nor b are true') -" - (py-tests-go-to "if a:") - (should (= (py-compute-indentation) 4)) - (py-tests-go-to "print (a)") - (should (= (py-compute-indentation) 8)) - (py-tests-go-to "elif b:") - (should (= (py-compute-indentation) 4)) - (py-tests-go-to "print (b)") - (should (= (py-compute-indentation) 8)) - (py-tests-go-to "else:") - (should (= (py-compute-indentation) 4)) - (py-tests-go-to "try:") - (should (= (py-compute-indentation) 8)) - (py-tests-go-to "print (c.pop())") - (should (= (py-compute-indentation) 12)) - (py-tests-go-to "except (IndexError, AttributeError):") - (should (= (py-compute-indentation) 8)) - (py-tests-go-to "print (c)") - (should (= (py-compute-indentation) 12)) - (py-tests-go-to "finally:") - (should (= (py-compute-indentation) 8)) - (py-tests-go-to "print ('nor a, nor b are true')") - (should (= (py-compute-indentation) 12)))) - -(ert-deftest py-indent-after-backslash-lp-852052-1 () - "The most common case." - (py-tests-with-temp-buffer - " -from foo.bar.baz import something, something_1 \\ - something_2 something_3, \\ - something_4, something_5 -" - (py-tests-go-to "from foo.bar.baz import something, something_1") - (should (= (py-compute-indentation) 0)) - (py-tests-go-to "something_2 something_3,") - (should (= (py-compute-indentation) 5)) - (py-tests-go-to "something_4, something_5") - (should (= (py-compute-indentation) 5)))) - -(ert-deftest py-indent-closing () - "" - (py-tests-with-temp-buffer - " -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) -" - (goto-char 40) - (should (eq 4 (py-compute-indentation))) - (goto-char 129) - (should (eq 4 (py-compute-indentation))))) - -(ert-deftest py-moves () - (py-tests-with-temp-buffer - "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - - def f(): - \"\"\" - class for in 'for in while with blah' - \"\"\" - if a: - - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) - elif b: - pass - else b: - pass - -''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf -''' -" - (switch-to-buffer (current-buffer)) - ;; (sit-for 1) - (message "comment-start: %s" comment-start) - (goto-char 592) - ;; (sit-for 1) - (should (eq 561 (py-up-clause-bol))) - (message "%s" "py-up-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-up-block-or-clause-bol)) ) - (message "%s" "py-up-block-or-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 234 (py-up-def-bol))) - (message "%s" "py-up-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 1 (py-up-class-bol))) - (message "%s" "py-up-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 234 (py-up-def-or-class-bol))) - (message "%s" "py-up-def-or-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-up-block-bol))) - (message "%s" "py-up-block-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-up-minor-block-bol))) - (message "%s" "py-up-minor-block-bol-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 1) - (should (eq 325 (py-up-block))) - (message "%s" "py-up-block-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 325 (py-up-minor-block))) - (message "%s" "py-up-minor-block-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 1) - (should (eq 569 (py-up-clause))) - (message "%s" "py-up-clause-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 1) - (should (eq 569 (py-up-block-or-clause))) - (message "%s" "py-up-block-or-clause-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 238 (py-up-def))) - (message "%s" "py-up-def-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 1 (py-up-class))) - (message "%s" "py-up-class-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 238 (py-up-def-or-class))) - (message "%s" "py-up-def-or-class-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 1) - (should (eq 317 (py-down-block-bol))) - (message "%s" "py-down-block-bol-test of `py-moves-test' done") - (goto-char 561) - ;; (sit-for 1) - (should (eq 594 (py-down-clause-bol))) - (message "%s" "py-down-clause-bol-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 1) - (should (eq 317 (py-down-block-or-clause-bol))) - (message "%s" "py-down-block-or-clause-bol-test of `py-moves-test' done") - (goto-char (point-min)) - (should (eq 142 (py-down-def-bol))) - (message "%s" "py-down-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (not (py-down-class-bol))) - (message "%s" "py-down-class-bol-test of `py-moves-test' done") - (goto-char (point-min)) - (should (eq 142 (py-down-def-or-class-bol))) - (message "%s" "py-down-def-or-class-bol-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 1) - (should (eq 325 (py-down-block))) - (message "%s" "py-down-block-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 1) - (should (eq 317 (py-down-block-bol))) - (message "%s" "py-down-block-bol-test of `py-moves-test' done") - - (goto-char 264) - ;; (sit-for 1) - (should (eq 325 (py-down-minor-block))) - (message "%s" "py-down-minor-block-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 1) - (should (eq 317 (py-down-minor-block-bol))) - (message "%s" "py-down-minor-block-bol-test of `py-moves-test' done") - - (goto-char 569) - ;; (sit-for 1) - (should (eq 602 (py-down-clause))) - (message "%s" "py-down-clause-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 569 (py-down-block-or-clause))) - (message "%s" "py-down-block-or-clause-test of `py-moves-test' done") - (goto-char (point-min)) - (should (eq 146 (py-down-def))) - (message "%s" "py-down-def-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (not (py-down-class))) - (message "%s" "py-down-class-test of `py-moves-test' done") - (goto-char (point-min)) - (should (eq 146 (py-down-def-or-class))) - (message "%s" "py-down-def-or-class-test of `py-moves-test' done") - - (goto-char 410) - ;; (sit-for 1) - (should (eq 332 (py-beginning-of-statement-bol))) - (message "%s" "py-beginning-of-statement-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-beginning-of-block-bol))) - (message "%s" "py-beginning-of-block-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-beginning-of-clause-bol))) - (message "%s" "py-beginning-of-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 317 (py-beginning-of-block-or-clause-bol))) - (message "%s" "py-beginning-of-block-or-clause-bol-test of `py-moves-test' done") - (should (eq 1 (py-beginning-of-class-bol))) - (message "%s" "py-beginning-of-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 234 (py-beginning-of-def-or-class-bol))) - (message "%s" "py-beginning-of-def-or-class-bol-test of `py-moves-test' done") - (message "%s" "py-end-of-block-bol-test of `py-moves-test' done") - (goto-char 576) - ;; (sit-for 1) - (should (eq 594 (py-end-of-clause-bol))) - (message "%s" "py-end-of-clause-bol-test of `py-moves-test' done") - (goto-char 576) - ;; (sit-for 1) - (should (eq 594 (py-end-of-block-or-clause-bol))) - (message "%s" "py-end-of-block-or-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 627 (py-end-of-def-bol))) - (message "%s" "py-end-of-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 627 (py-end-of-class-bol))) - (message "%s" "py-end-of-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 627 (py-end-of-def-or-class-bol))) - (message "%s" "py-end-of-def-or-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 561 (py-end-of-statement-bol))) - (message "%s" "py-end-of-statement-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 1) - (should (eq 234 (py-beginning-of-def-bol))) - (message "%s" "py-beginning-of-def-bol-test of `py-moves-test' done") - )) - -(ert-deftest py-indent-tabs-mode-test () - (py-tests-with-temp-buffer - "class OrderedDict1(dict):" - (end-of-line) - (let ((indent-tabs-mode t)) - (py-newline-and-indent) - (should (looking-back "^\t"))))) - -(ert-deftest py-no-indent-tabs-mode-test () - (py-tests-with-temp-buffer - "class OrderedDict1(dict):" - (end-of-line) - (let ((indent-tabs-mode)) - (py-newline-and-indent) - (should (looking-back "^ "))))) - -(ert-deftest py-pyflakespep-command-test () - (py-tests-with-temp-buffer - "" - (file-readable-p py-pyflakespep8-command))) - -(ert-deftest Bogus-dedent-when-typing-colon-in-dictionary-literal-lp-1197171 () - (py-tests-with-temp-buffer - "#! /usr/bin/env python -# -*- coding: utf-8 -*- -# Put point at the end of the last line and hit colon, as you would to -# separate the key from the value. The last line will incorrectly dedent -# to column 4. Indentation should not change. - -def foo(): - bar('thing', - {'another'" - (goto-char (point-max)) - (should (eq 8 (py-compute-indentation))))) - -;; (ert-deftest exception-buffer-and-line () -;; (py-tests-with-temp-buffer -;; "print(4+5d)" -;; ;; error should report its just a buffer, not a file -;; (should (string-match "SyntaxError: invalid syntax" (py-execute-statement))))) - -(ert-deftest pep-arglist-indent () - (py-tests-with-temp-buffer - "# Aligned with opening delimiter -foo = long_function_name(var_one, var_two, - var_three, var_four) - -# More indentation included to distinguish this from the rest. -def long_function_name( - var_one, var_two, var_three, - var_four): - print(var_one) -" - (search-forward "var_three") - (should (eq 25 (py-compute-indentation))) - (search-forward "var_three") - (should (eq 8 (py-compute-indentation))) - - )) - -(ert-deftest close-at-start-column () - (py-tests-with-temp-buffer - "# boolean `py-closing-list-dedents-bos', - -# Current behavior matches default nil - -my_list = [ - 1, 2, 3, - 4, 5, 6, - ] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', - ) - -# When non-nil, it will be lined up under the first character of the line that starts the multi-line construct, as in: - -my_list = [ - 1, 2, 3, - 4, 5, 6, -] - -result = some_function_that_takes_arguments( - 'a', 'b', 'c', - 'd', 'e', 'f', -) - -# Examples see PEP8 - -asdf = { - 'a':{ - 'b':3, - 'c':4 - } -} - -data = { - 'key': - { - 'objlist': [ - { - 'pk': 1, - 'name': 'first', - }, - { - 'pk': 2, - 'name': 'second', - } - ] - } -} - -" - (let (py-closing-list-dedents-bos) - (switch-to-buffer (current-buffer)) - (search-forward "]") - (should (eq 4 (py-compute-indentation))) - (search-forward ")") - (should (eq 4 (py-compute-indentation))) - (setq py-closing-list-dedents-bos t) - (search-forward "]") - (should (eq 0 (py-compute-indentation))) - (search-forward ")") - (should (eq 0 (py-compute-indentation))) - ;; dicts - (search-forward "}") - (should (eq 4 (py-compute-indentation))) - (search-forward "}") - (should (eq 0 (py-compute-indentation))) - (search-forward "}") - (should (eq 12 (py-compute-indentation))) - (search-forward "]") - (should (eq 8 (py-compute-indentation))) - (search-forward "}") - (should (eq 4 (py-compute-indentation))) - (search-forward "}") - (should (eq 0 (py-compute-indentation))) - ))) - -(ert-deftest top-level () - (py-tests-with-temp-buffer - "klauf = kugel() - -with file(\"roulette-\" + zeit + \".csv\", 'w') as datei: - for i in range(anzahl): - klauf.pylauf() - datei.write(str(spiel[i]) + \"\\n\") -" - (message "%s" (point)) - (switch-to-buffer (current-buffer)) - (should (eq 16 (py-end-of-top-level))) - (should (eq 168 (py-end-of-top-level))) - - (should (eq 18 (py-beginning-of-top-level))) - (should (eq 1 (py-beginning-of-top-level))) - (should (eq 1 (py-beginning-of-top-level-p))))) - -(ert-deftest position-tests () - (interactive) - (py-tests-with-temp-buffer - "class kugel(object): - zeit = time.strftime('%Y%m%d--%H-%M-%S') - def pylauf(self): - \"\"\"Eine Doku fuer pylauf\"\"\" - ausgabe = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \", \" \"] - if treffer in gruen: - # print \"0, Gruen\" - elif treffer in schwarz: - # print \"%i, Schwarz\" % (treffer) - ausgabe[1] = treffer - else: - # print \"%i, manque\" % (treffer) - ausgabe[7] = treffer -" - (switch-to-buffer (current-buffer)) - (search-forward "else:") - (forward-char -1) - (should (eq 1 (py-beginning-of-top-level-position))) - (should (eq 445 (py-end-of-top-level-position))) - (should (eq 362 (py-beginning-of-statement-position))) - (should (eq 367 (py-end-of-statement-position))) - (should (eq 367 (py-end-of-line-position))) - (should (eq 354 (py-beginning-of-line-position))) - (should (eq 1 (py-beginning-of-paragraph-position))) - (should (eq 446 (py-end-of-paragraph-position))) - (should (eq 190 (py-beginning-of-block-position))) - (should (eq 445 (py-end-of-block-position))) - (should (eq 190 (py-beginning-of-minor-block-position))) - (should (eq 445 (py-end-of-minor-block-position))) - (should (eq 362 (py-beginning-of-clause-position))) - (should (eq 445 (py-end-of-clause-position))) - (should (eq 362 (py-beginning-of-block-or-clause-position))) - (should (eq 445 (py-end-of-block-or-clause-position))) - (should (eq 71 (py-beginning-of-def-position))) - (should (eq 445 (py-end-of-def-position))) - (should (eq 1 (py-beginning-of-class-position))) - (should (eq 445 (py-end-of-class-position))) - (should (eq 71 (py-beginning-of-def-or-class-position))) - (should (eq 445 (py-end-of-def-or-class-position))) - (search-forward "#") - (should (eq 380 (py-beginning-of-comment-position))) - (should (eq 412 (py-end-of-comment-position))))) - -(ert-deftest py-copy-statement-test () - (interactive) - (py-tests-with-temp-buffer - "from foo.bar.baz import something -" - (should (and (not (py-copy-statement))(string-match "from foo.bar.baz import something" (car kill-ring)))))) - -(ert-deftest execute-runs-full-file-lp-1269855 () - (interactive) - (py-tests-with-temp-buffer - ;; (switch-to-buffer (buffer-name (current-buffer))) - "a = 0 -a += 8 -a += 1 -print(a) -eval(a) -" - (py-execute-buffer) - (goto-char 14) - (py-execute-statement) - (goto-char 22) - (py-execute-statement) - (goto-char 31) - (py-execute-statement))) - -(ert-deftest py-abbrevs-changed-lp-1270631 () - (interactive) - (with-temp-buffer - (insert "foo") - (emacs-lisp-mode) - (define-abbrev lisp-mode-abbrev-table "foo" "foo") - (should abbrevs-changed) - (python-mode) - (should abbrevs-changed))) - -(provide 'python-mode-ert-tests) diff --git a/elpa/python-mode-6.1.3/test/python-mode-ert-tests.elc b/elpa/python-mode-6.1.3/test/python-mode-ert-tests.elc deleted file mode 100644 index 9a5b1657acb1c0d49c44a23df3a5da4e6a26764b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71537 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 -;; Keywords: lisp, languages - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; A couple of test cases for python-mode.el - -;;; Code: -(require 'py-bug-numbered-tests) - -(defvar py-variables (list 'py-version 'python-mode-modeline-display 'py-indent-offset 'pdb-path 'py-verbose-p 'py-load-pymacs-p 'py-smart-operator-mode-p 'py-sexp-function 'py-autopair-mode 'py-no-completion-calls-dabbrev-expand-p 'py-indent-no-completion-p 'py-fontify-shell-buffer-p 'py-modeline-display-full-path-p 'py-modeline-acronym-display-home-p 'py-install-directory 'py-guess-py-install-directory-p 'py-extensions 'py-hide-show-minor-mode-p 'empty-comment-line-separates-paragraph-p 'py-org-cycle-p 'ipython-complete-use-separate-shell-p 'py-outline-minor-mode-p 'py-outline-mode-keywords 'py-start-run-py-shell 'py-start-run-ipython-shell 'py-close-provides-newline 'py-dedent-keep-relative-column 'py-indent-honors-inline-comment 'py-closing-list-dedents-bos 'py-electric-colon-active-p 'py-electric-colon-greedy-p 'py-electric-colon-newline-and-indent-p 'py-electric-comment-p 'py-electric-comment-add-space-p 'py-mark-decorators 'py-tab-indent 'py-complete-function 'py-encoding-string 'py-shebang-startstring 'py-python-command-args 'py-jython-command-args 'py-cleanup-temporary 'py-lhs-inbound-indent 'py-continuation-offset 'py-indent-tabs-mode 'py-smart-indentation 'py-block-comment-prefix 'py-indent-comments 'py-separator-char 'py-custom-temp-directory 'py-jump-on-exception 'py-ask-about-save 'py-pdbtrack-do-tracking-p 'py-pdbtrack-filename-mapping 'py-pdbtrack-minor-mode-string 'py-import-check-point-max 'py-jython-packages 'py-current-defun-show 'py-current-defun-delay 'py-honor-IPYTHONDIR-p 'py-ipython-history 'py-honor-PYTHONHISTORY-p 'py-master-file 'py-pychecker-command 'py-pychecker-command-args 'py-pep8-command 'py-pep8-command-args 'py-pyflakespep8-command 'py-pep8-command 'py-pep8-command-args 'py-pyflakespep8-command-args 'py-pyflakes-command 'py-pyflakes-command-args 'py-pep8-command-args 'py-pylint-command 'py-pylint-command-args 'py-shell-input-prompt-1-regexp 'py-shell-input-prompt-2-regexp 'py-shell-prompt-read-only 'py-switch-buffers-on-execute-p 'py-split-windows-on-execute-p 'py-max-split-windows 'py-split-windows-on-execute-function 'py-hide-show-keywords 'py-hide-show-hide-docstrings 'python-mode-hook 'py-imenu-create-index-p 'py-imenu-create-index-function 'py-shell-name 'py-shell-toggle-1 'py-shell-toggle-2 'py-match-paren-mode 'py-kill-empty-line 'py-remove-cwd-from-path 'py-imenu-show-method-args-p 'py-history-filter-regexp 'py-use-local-default 'py-shell-local-path 'py-underscore-word-syntax-p 'py-edit-only-p 'py-force-py-shell-name-p 'python-mode-v5-behavior-p 'py-trailing-whitespace-smart-delete-p 'py-warn-tmp-files-left-p 'py-ipython-execute-delay 'strip-chars-before 'strip-chars-after 'py-fill-docstring-style 'py-number-face 'py-XXX-tag-face 'py-pseudo-keyword-face 'py-variable-name-face 'py-decorators-face 'py-builtins-face 'py-class-name-face 'py-exception-name-face 'python-mode-message-string 'py-local-command 'py-local-versioned-command 'py-shell-complete-debug 'py-encoding-string-re 'symbol-definition-start-re 'symbol-definition-start-re 'py-shebang-regexp 'py-separator-char 'py-temp-directory 'py-exec-command 'py-exec-string-command 'py-which-bufname 'py-pychecker-history 'py-pep8-history 'py-pyflakespep8-history 'py-pyflakes-history 'py-pylint-history 'ipython-de-input-prompt-regexp 'ipython-de-input-prompt-regexp 'ipython-de-output-prompt-regexp 'py-force-local-shell-p 'python-mode-v5-behavior 'python--prompt-regexp 'py-bol-forms-last-indent 'python-mode-syntax-table 'outline-heading-end-regexp 'eldoc-documentation-function 'py-completion-last-window-configuration 'ipython-version 'py-shell-template 'py-imports 'py-execute-directory 'py-use-current-dir-when-execute-p 'py-exception-buffer 'py-output-buffer 'py-string-delim-re 'py-labelled-re 'py-expression-skip-regexp 'py-expression-skip-chars 'py-expression-looking-re 'py-not-expression-regexp 'py-not-expression-chars 'py-not-expression-chars 'py-partial-expression-skip-chars 'py-partial-expression-forward-regexp 'py-partial-expression-skip-backward-chars 'py-not-partial-expression-skip-chars 'py-partial-expression-looking-regexp 'py-not-partial-expression-regexp 'py-operator-regexp 'py-assignment-regexp 'py-delimiter-regexp 'py-delimiter-chars 'py-line-number-offset 'match-paren-no-use-syntax-pps 'py-traceback-line-re 'py-traceback-line-re 'python-preoutput-result 'python-preoutput-leftover 'python-preoutput-skip-next-prompt 'py-mode-syntax-table 'py-file-queue 'python-mode-abbrev-table 'inferior-python-mode-abbrev-table 'py-pdbtrack-input-prompt 'py-pydbtrack-input-prompt 'py-pdbtrack-is-tracking-p 'py-shell-map 'py-font-lock-keywords 'py-dotted-expression-syntax-table 'jython-mode-hook 'py-shell-hook 'ipython-completion-command-string 'ipython0.10-completion-command-string 'ipython0.11-completion-command-string 'py-last-exeption-buffer 'python-preoutput-result 'py-imenu-class-regexp 'py-imenu-method-regexp 'py-imenu-method-no-arg-parens 'py-imenu-method-arg-parens 'py-imenu-generic-expression 'py-imenu-generic-regexp 'py-imenu-generic-parens 'py-mode-output-map 'py-menu 'py-already-guessed-indent-offset 'python-mode-map 'skeleton-further-elements 'virtualenv-workon-home 'virtualenv-name 'python-mode-syntax-table 'python-dotty-syntax-table 'py-shell-template 'py-blank-or-comment-re 'py-block-closing-keywords-re 'py-finally-re 'py-except-re 'py-else-re 'py-no-outdent-re 'py-assignment-re 'py-block-re 'py-minor-block-re 'py-try-block-re 'py-class-re 'py-def-or-class-re 'py-def-re 'py-block-or-clause-re 'py-extended-block-or-clause-re 'py-clause-re 'py-elif-re 'py-if-re 'py-try-re 'py-mode-syntax-table 'py-pdbtrack-stack-entry-regexp 'py-pdbtrack-input-prompt 'py-pydbtrack-input-prompt 'py-pdbtrack-marker-regexp-file-group 'py-pdbtrack-marker-regexp-line-group 'py-pdbtrack-marker-regexp-funcname-group 'py-pdbtrack-track-range 'python-compilation-regexp-alist 'py-font-lock-syntactic-keywords 'virtualenv-name ) - "Used for bug-tracking by `py-list-settings'") - -(defvar unused-variables (list 'py-indent-honors-multiline-listing 'ipython-complete-function 'py-rhs-inbound-indent 'py-align-multiline-strings-p 'py-beep-if-tab-change 'py-backspace-function 'py-delete-function 'py-send-receive-delay 'py-python-history 'py-source-modes 'py-shell-prompt-alist 'py-shell-continuation-prompt-alist 'py-match-paren-key 'py-set-complete-keymap-p 'python-eldoc-setup-code 'python-eldoc-string-code 'python-use-skeletons 'python-local-version 'py-local-complete-function 'py-shell-alist 'python-pdbtrack-tracked-buffer 'view-return-to-alist 'py-prev-dir/file 'python-preoutput-continuation 'python-version-checked 'py-help-mode-syntax-table 'python-file-queue 'python-pdbtrack-is-tracking-p 'py-indent-line-indent 'inferior-python-mode-map 'py-variables 'inferior-python-mode-syntax-table 'py-return-re 'py-try-clause-re 'py-space-backslash-table 'python-pdbtrack-stack-entry-regexp 'python-pdbtrack-input-prompt 'python-pdbtrack-track-range 'python-dotty-syntax-table 'py-help-address 'py-shell-map 'python-mode-map 'imenu-generic-expression )) - -(defun py-list-settings () - "List py-variables with it's current value. - - For debugging " - (interactive) - (set-buffer (get-buffer-create "Python-mode-el-settings")) - (erase-buffer) - (load (concat (py-normalize-directory py-install-directory) "devel/python-mode-vars.el") nil t) - (dolist (elt py-variables) - (insert (concat (prin1-to-string elt) " ==> ")) - (if (stringp (ignore-errors (symbol-value elt))) - (insert (concat (symbol-value elt) "\n\n")) - (insert (concat (prin1-to-string (ignore-errors (symbol-value elt))) "\n\n")))) - (switch-to-buffer (current-buffer))) - -(setq python-mode-tests - (list - 'docstring-style-switches-test - 'py-nested-block-or-clause-test - 'py-down-statement-test - 'py-fill-string-django-test - 'py-fill-string-onetwo-test - 'py-fill-string-pep-257-test - 'py-fill-string-pep-257-nn-test - ;; fails for unknown reasons, interactive call works - ;; 'py-fill-string-symmetric-test - 'py-highlight-indentation-test - 'py-smart-indentation-test - 'autopair-mode-test - 'py-smart-operator-test - 'py-guess-indent-offset-test - 'py-bol-moves-test - ;; broken - ;; 'augmented-assigment-test - 'key-binding-tests - 'py-end-of-statement-test - 'py-compute-indentation-test - 'py-end-of-def-inline-comment-test - 'before-inline-comment-test - 'toggle-force-py-shell-name-p-test - 'py-execute-statement-python-test - 'py-execute-statement-python-switch-test - 'py-execute-statement-python-noswitch-test - 'py-execute-statement-python-dedicated-test - 'py-execute-statement-python-dedicated-switch-test - 'py-execute-statement-ipython-test - 'py-execute-statement-ipython-switch-test - 'py-execute-statement-ipython-noswitch-test - 'py-execute-statement-ipython-dedicated-test - 'py-execute-statement-ipython-dedicated-switch-test - 'py-execute-statement-python3-test - 'py-execute-statement-python3-switch-test - 'py-execute-statement-python3-noswitch-test - 'py-execute-statement-python3-dedicated-test - 'py-execute-statement-python3-dedicated-switch-test - 'py-execute-statement-python2-test - 'py-execute-statement-python2-switch-test - 'py-execute-statement-python2-noswitch-test - 'py-execute-statement-python2-dedicated-test - 'py-execute-statement-python2-dedicated-switch-test - 'py-execute-statement-python2.7-test - 'py-execute-statement-python2.7-switch-test - 'py-execute-statement-python2.7-noswitch-test - 'py-execute-statement-python2.7-dedicated-test - 'py-execute-statement-python2.7-dedicated-switch-test - 'py-execute-statement-jython-test - 'py-execute-statement-jython-switch-test - 'py-execute-statement-jython-noswitch-test - 'py-execute-statement-jython-dedicated-test - 'py-execute-statement-jython-dedicated-switch-test - 'py-separator-char-test - 'py-execute-block-python-switch-test - 'py-execute-block-python-noswitch-test - 'py-execute-block-python-dedicated-test - 'py-execute-block-python-dedicated-switch-test - 'py-execute-block-ipython-test - 'py-execute-block-ipython-switch-test - 'py-execute-block-ipython-noswitch-test - 'py-execute-block-ipython-dedicated-test - 'py-execute-block-ipython-dedicated-switch-test - 'py-execute-block-python3-test - 'py-execute-block-python3-switch-test - 'py-execute-block-python3-noswitch-test - 'py-execute-block-python3-dedicated-test - 'py-execute-block-python3-dedicated-switch-test - 'py-execute-block-python2-test - 'py-execute-block-python2-switch-test - 'py-execute-block-python2-noswitch-test - 'py-execute-block-python2-dedicated-test - 'py-execute-block-python2-dedicated-switch-test - 'py-execute-block-python2.7-test - 'py-execute-block-python2.7-switch-test - 'py-execute-block-python2.7-noswitch-test - 'py-execute-block-python2.7-dedicated-test - 'py-execute-block-python2.7-dedicated-switch-test - 'py-execute-block-jython-test - 'py-execute-block-jython-switch-test - 'py-execute-block-jython-noswitch-test - 'py-execute-block-jython-dedicated-test - 'py-execute-block-jython-dedicated-switch-test - 'py-execute-block-or-clause-python-test - 'py-execute-block-or-clause-python-switch-test - 'py-execute-block-or-clause-python-noswitch-test - 'py-execute-block-or-clause-python-dedicated-test - 'py-execute-block-or-clause-python-dedicated-switch-test - 'py-execute-block-or-clause-ipython-test - 'py-execute-block-or-clause-ipython-switch-test - 'py-execute-block-or-clause-ipython-noswitch-test - 'py-execute-block-or-clause-ipython-dedicated-test - 'py-execute-block-or-clause-ipython-dedicated-switch-test - 'py-execute-block-or-clause-python3-test - 'py-execute-block-or-clause-python3-switch-test - 'py-execute-block-or-clause-python3-noswitch-test - 'py-execute-block-or-clause-python3-dedicated-test - 'py-execute-block-or-clause-python3-dedicated-switch-test - 'py-execute-block-or-clause-python2-test - 'py-execute-block-or-clause-python2-switch-test - 'py-execute-block-or-clause-python2-noswitch-test - 'py-execute-block-or-clause-python2-dedicated-test - 'py-execute-block-or-clause-python2-dedicated-switch-test - 'py-execute-block-or-clause-python2.7-test - 'py-execute-block-or-clause-python2.7-switch-test - 'py-execute-block-or-clause-python2.7-noswitch-test - 'py-execute-block-or-clause-python2.7-dedicated-test - 'py-execute-block-or-clause-python2.7-dedicated-switch-test - 'py-execute-block-or-clause-jython-test - 'py-execute-block-or-clause-jython-switch-test - 'py-execute-block-or-clause-jython-noswitch-test - 'py-execute-block-or-clause-jython-dedicated-test - 'py-execute-block-or-clause-jython-dedicated-switch-test - 'py-execute-def-python-test - 'py-execute-def-python-switch-test - 'py-execute-def-python-noswitch-test - 'py-execute-def-python-dedicated-test - 'py-execute-def-python-dedicated-switch-test - 'py-execute-def-ipython-test - 'py-execute-def-ipython-switch-test - 'py-execute-def-ipython-noswitch-test - 'py-execute-def-ipython-dedicated-test - 'py-execute-def-ipython-dedicated-switch-test - 'py-execute-def-python3-test - 'py-execute-def-python3-switch-test - 'py-execute-def-python3-noswitch-test - 'py-execute-def-python3-dedicated-test - 'py-execute-def-python3-dedicated-switch-test - 'py-execute-def-python2-test - 'py-execute-def-python2-switch-test - 'py-execute-def-python2-noswitch-test - 'py-execute-def-python2-dedicated-test - 'py-execute-def-python2-dedicated-switch-test - 'py-execute-def-python2.7-test - 'py-execute-def-python2.7-switch-test - 'py-execute-def-python2.7-noswitch-test - 'py-execute-def-python2.7-dedicated-test - 'py-execute-def-python2.7-dedicated-switch-test - 'py-execute-def-jython-test - 'py-execute-def-jython-switch-test - 'py-execute-def-jython-noswitch-test - 'py-execute-def-jython-dedicated-test - 'py-execute-def-jython-dedicated-switch-test - 'py-execute-class-python-test - 'py-execute-class-python-switch-test - 'py-execute-class-python-noswitch-test - 'py-execute-class-python-dedicated-test - 'py-execute-class-python-dedicated-switch-test - 'py-execute-class-ipython-test - 'py-execute-class-ipython-switch-test - 'py-execute-class-ipython-noswitch-test - 'py-execute-class-ipython-dedicated-test - 'py-execute-class-ipython-dedicated-switch-test - 'py-execute-class-python3-test - 'py-execute-class-python3-switch-test - 'py-execute-class-python3-noswitch-test - 'py-execute-class-python3-dedicated-test - 'py-execute-class-python3-dedicated-switch-test - 'py-execute-class-python2-test - 'py-execute-class-python2-switch-test - 'py-execute-class-python2-noswitch-test - 'py-execute-class-python2-dedicated-test - 'py-execute-class-python2-dedicated-switch-test - 'py-execute-class-python2.7-test - 'py-execute-class-python2.7-switch-test - 'py-execute-class-python2.7-noswitch-test - 'py-execute-class-python2.7-dedicated-test - 'py-execute-class-python2.7-dedicated-switch-test - 'py-execute-class-jython-test - 'py-execute-class-jython-switch-test - 'py-execute-class-jython-noswitch-test - 'py-execute-class-jython-dedicated-test - 'py-execute-class-jython-dedicated-switch-test - 'py-execute-region-python-test - 'py-execute-region-python-switch-test - 'py-execute-region-python-noswitch-test - 'py-execute-region-python-dedicated-test - 'py-execute-region-python-dedicated-switch-test - 'py-execute-region-ipython-test - 'py-execute-region-ipython-switch-test - 'py-execute-region-ipython-noswitch-test - 'py-execute-region-ipython-dedicated-test - 'py-execute-region-ipython-dedicated-switch-test - 'py-execute-region-python3-test - 'py-execute-region-python3-switch-test - 'py-execute-region-python3-noswitch-test - 'py-execute-region-python3-dedicated-test - 'py-execute-region-python3-dedicated-switch-test - 'py-execute-region-python2-test - 'py-execute-region-python2-switch-test - 'py-execute-region-python2-noswitch-test - 'py-execute-region-python2-dedicated-test - 'py-execute-region-python2-dedicated-switch-test - 'py-execute-region-python2.7-test - 'py-execute-region-python2.7-switch-test - 'py-execute-region-python2.7-noswitch-test - 'py-execute-region-python2.7-dedicated-test - 'py-execute-region-python2.7-dedicated-switch-test - 'py-execute-region-jython-test - 'py-execute-region-jython-switch-test - 'py-execute-region-jython-noswitch-test - 'py-execute-region-jython-dedicated-test - 'py-execute-region-jython-dedicated-switch-test - 'py-execute-buffer-python-test - 'py-execute-buffer-python-switch-test - 'py-execute-buffer-python-noswitch-test - 'py-execute-buffer-python-dedicated-test - 'py-execute-buffer-python-dedicated-switch-test - 'py-execute-buffer-ipython-test - 'py-execute-buffer-ipython-switch-test - 'py-execute-buffer-ipython-noswitch-test - 'py-execute-buffer-ipython-dedicated-test - 'py-execute-buffer-ipython-dedicated-switch-test - 'py-execute-buffer-python3-test - 'py-execute-buffer-python3-switch-test - 'py-execute-buffer-python3-noswitch-test - 'py-execute-buffer-python3-dedicated-test - 'py-execute-buffer-python3-dedicated-switch-test - 'py-execute-buffer-python2-test - 'py-execute-buffer-python2-switch-test - 'py-execute-buffer-python2-noswitch-test - 'py-execute-buffer-python2-dedicated-test - 'py-execute-buffer-python2-dedicated-switch-test - 'py-execute-buffer-python2.7-test - 'py-execute-buffer-python2.7-switch-test - 'py-execute-buffer-python2.7-noswitch-test - 'py-execute-buffer-python2.7-dedicated-test - 'py-execute-buffer-python2.7-dedicated-switch-test - 'py-execute-buffer-jython-test - 'py-execute-buffer-jython-switch-test - 'py-execute-buffer-jython-noswitch-test - 'py-execute-buffer-jython-dedicated-test - 'py-execute-buffer-jython-dedicated-switch-test - 'py-execute-expression-python-test - 'py-execute-expression-python-switch-test - 'py-execute-expression-python-noswitch-test - 'py-execute-expression-python-dedicated-test - 'py-execute-expression-python-dedicated-switch-test - 'py-execute-expression-ipython-test - 'py-execute-expression-ipython-switch-test - 'py-execute-expression-ipython-noswitch-test - 'py-execute-expression-ipython-dedicated-test - 'py-execute-expression-ipython-dedicated-switch-test - 'py-execute-expression-python3-test - 'py-execute-expression-python3-switch-test - 'py-execute-expression-python3-noswitch-test - 'py-execute-expression-python3-dedicated-test - 'py-execute-expression-python3-dedicated-switch-test - 'py-execute-expression-python2-test - 'py-execute-expression-python2-switch-test - 'py-execute-expression-python2-noswitch-test - 'py-execute-expression-python2-dedicated-test - 'py-execute-expression-python2-dedicated-switch-test - 'py-execute-expression-python2.7-test - 'py-execute-expression-python2.7-switch-test - 'py-execute-expression-python2.7-noswitch-test - 'py-execute-expression-python2.7-dedicated-test - 'py-execute-expression-python2.7-dedicated-switch-test - 'py-execute-expression-jython-test - 'py-execute-expression-jython-switch-test - 'py-execute-expression-jython-noswitch-test - 'py-execute-expression-jython-dedicated-test - 'py-execute-expression-jython-dedicated-switch-test - 'py-execute-partial-expression-python-test - 'py-execute-partial-expression-python-switch-test - 'py-execute-partial-expression-python-noswitch-test - 'py-execute-partial-expression-python-dedicated-test - 'py-execute-partial-expression-python-dedicated-switch-test - 'py-execute-partial-expression-ipython-test - 'py-execute-partial-expression-ipython-switch-test - 'py-execute-partial-expression-ipython-noswitch-test - 'py-execute-partial-expression-ipython-dedicated-test - 'py-execute-partial-expression-ipython-dedicated-switch-test - 'py-execute-partial-expression-python3-test - 'py-execute-partial-expression-python3-switch-test - 'py-execute-partial-expression-python3-noswitch-test - 'py-execute-partial-expression-python3-dedicated-test - 'py-execute-partial-expression-python3-dedicated-switch-test - 'py-execute-partial-expression-python2-test - 'py-execute-partial-expression-python2-switch-test - 'py-execute-partial-expression-python2-noswitch-test - 'py-execute-partial-expression-python2-dedicated-test - 'py-execute-partial-expression-python2-dedicated-switch-test - 'py-execute-partial-expression-python2.7-test - 'py-execute-partial-expression-python2.7-switch-test - 'py-execute-partial-expression-python2.7-noswitch-test - 'py-execute-partial-expression-python2.7-dedicated-test - 'py-execute-partial-expression-python2.7-dedicated-switch-test - 'py-execute-partial-expression-jython-test - 'py-execute-partial-expression-jython-switch-test - 'py-execute-partial-expression-jython-noswitch-test - 'py-execute-partial-expression-jython-dedicated-test - 'py-execute-partial-expression-jython-dedicated-switch-test - 'py-execute-line-python-test - 'py-execute-line-python-switch-test - 'py-execute-line-python-noswitch-test - 'py-execute-line-python-dedicated-test - 'py-execute-line-python-dedicated-switch-test - 'py-execute-line-ipython-test - 'py-execute-line-ipython-switch-test - 'py-execute-line-ipython-noswitch-test - 'py-execute-line-ipython-dedicated-test - 'py-execute-line-ipython-dedicated-switch-test - 'py-execute-line-python3-test - 'py-execute-line-python3-switch-test - 'py-execute-line-python3-noswitch-test - 'py-execute-line-python3-dedicated-test - 'py-execute-line-python3-dedicated-switch-test - 'py-execute-line-python2-test - 'py-execute-line-python2-switch-test - 'py-execute-line-python2-noswitch-test - 'py-execute-line-python2-dedicated-test - 'py-execute-line-python2-dedicated-switch-test - 'py-execute-line-python2.7-test - 'py-execute-line-python2.7-switch-test - 'py-execute-line-python2.7-noswitch-test - 'py-execute-line-python2.7-dedicated-test - 'py-execute-line-python2.7-dedicated-switch-test - 'py-execute-line-jython-test - 'py-execute-line-jython-switch-test - 'py-execute-line-jython-noswitch-test - 'py-execute-line-jython-dedicated-test - 'py-execute-line-jython-dedicated-switch-test - - 'py-beginning-of-block-test - 'py-end-of-block-test - 'py-beginning-of-block-or-clause-test - 'py-end-of-block-or-clause-test - 'py-beginning-of-def-test - 'py-end-of-def-test - 'py-beginning-of-def-or-class-test - 'py-end-of-def-or-class-test - 'py-electric-backspace-test - 'py-electric-delete-test - 'dict-error-test - ;; 'py-expand-abbrev-pst-pdb.set_trace-test - 'near-bob-beginning-of-statement-test - 'bob-beginning-of-statement-test - 'honor-comments-indent-test - 'assignment-indent-test - 'if-elif-test - 'if-elif-bob-test - 'try-else-clause-test - 'try-except-test - 'assignment-after-block-test - 'py-beginning-of-clause-test - 'py-end-of-clause-test - 'py-beginning-of-expression-test - 'py-end-of-expression-test - 'py-expression-index-test - 'py-indent-after-assigment-test - 'leave-dict-test - 'eofs-attribut-test - 'py-insert-super-python2-test - 'py-insert-super-python3-test - 'args-list-first-line-indent-test - 'py-partial-expression-test - 'py-execute-block-test - 'multiline-list-indent-test - 'close-block-test - 'py-shift-block-test - 'nesting-if-test - 'py-end-of-print-statement-test - 'nested-try-test - 'nested-if-test - 'nested-try-finally-test - 'py-shell-complete-test - 'python-dedicated-test - 'tqs-list-error-test - 'py-mark-def-commandp-test - 'split-windows-on-execute-p-test - 'switch-windows-on-execute-p-test - 'py-install-directory-path-test - 'UnicodeEncodeError-python3-test - 'py-execute-block-python-test - - )) - -(defun py-run-tests (&optional arg) - (interactive "p") - (dolist (ele python-mode-tests) - (funcall ele arg))) - -(defvar python-mode-teststring "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - - def f(): - \"\"\" - class for in 'for in while with blah' - \"\"\" - if a: - - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) - elif b: - pass - else b: - pass - - ]) - -''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf -''' -" - "String used for tests by python-mode-test.el") - -(setq python-mode-teststring "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - - def f(): - \"\"\" - class for in 'for in while with blah' - \"\"\" - if a: - - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) - elif b: - pass - else b: - pass - -''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf -''' -") - -(defun py-beginning-of-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-beginning-of-block-test-base arg teststring))) - -(defun py-beginning-of-block-test-base () - (goto-char 627) - (py-beginning-of-block) - (assert (eq (point) 325) nil "py-beginning-of-block-test failed")) - -(defun py-end-of-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - - def f(): - \"\"\" - class for in 'for in while with blah' - \"\"\" - if foo: - - ar_atpt_python_list_roh = ([ - 'python-expression', - - # def ar_thingatpt_write_lists (&optional datei): - 'python-partial-expression', - 'python-statement', - ]) - - elif bar: - pass - else: - pass - ")) - (py-bug-tests-intern 'py-end-of-block-base arg teststring))) - -(defun py-end-of-block-base () - (goto-char 326) - (assert (eq 562 (py-end-of-clause)) nil "py-end-of-block-test #1 failed") - (assert (eq 598 (py-end-of-clause)) nil "py-end-of-block-test #2 failed") - (assert (eq 629 (py-end-of-block)) nil "py-end-of-block-test #3 failed")) - -(defun py-beginning-of-block-or-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-beginning-of-block-or-clause-base arg teststring))) - -(defun py-beginning-of-block-or-clause-base () - (goto-char 627) - (py-beginning-of-block-or-clause) - (assert (looking-at "else") nil "py-beginning-of-block-or-clause-test failed") - (py-beginning-of-block-or-clause) - (assert (looking-at "elif") nil "py-beginning-of-block-or-clause-test failed") - (py-beginning-of-block-or-clause) - (assert (looking-at "if") nil "py-beginning-of-block-or-clause-test failed") - - ) - -(defun py-end-of-block-or-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-end-of-block-or-clause-base arg teststring))) - -(defun py-end-of-block-or-clause-base () - (goto-char 602) - (py-end-of-block-or-clause) - (assert (eq (point) 626) nil "py-end-of-block-or-clause-test failed")) - -(defun py-beginning-of-def-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-beginning-of-def-base arg teststring))) - -(defun py-beginning-of-def-base () - (goto-char 627) - (py-beginning-of-def) - (assert (eq (point) 238) nil "py-beginning-of-def-test failed") - ) - -(defun py-end-of-def-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-end-of-def-base arg teststring))) - -(defun py-end-of-def-base () - (goto-char 627) - (py-beginning-of-def) - (py-end-of-def) - (assert (eq (point) 626) nil "py-end-of-def-test failed") - ) - -(defun py-beginning-of-def-or-class-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-beginning-of-def-or-class-base arg teststring))) - -(defun py-beginning-of-def-or-class-base () - (goto-char 627) - (py-beginning-of-def-or-class 4) - (assert (eq (point) 238) nil "py-beginning-of-def-or-class-test failed")) - -(defun py-end-of-def-or-class-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-end-of-def-or-class-base arg teststring))) - -(defun py-end-of-def-or-class-base () - (goto-char 627) - (assert (eq 238 (py-beginning-of-def-or-class)) nil "py-end-of-def-or-class-test #1 failed") - (assert (eq 146 (py-beginning-of-def-or-class)) nil "py-end-of-def-or-class-test #2 failed") - (goto-char 201) - (assert (eq 232 (py-end-of-def-or-class)) nil "py-end-of-def-or-class-test #3 failed") - (assert (eq 626 (py-end-of-def-or-class '(4))) nil "py-end-of-def-or-class-test #4 failed")) - -(defun py-electric-backspace-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-electric-backspace-base arg teststring))) - -(defun py-electric-backspace-base () - (goto-char 232) - (py-newline-and-indent) - (sit-for 0.1) - (assert (eq 241 (point)) nil "py-electric-backspace-test #1 failed") - (py-electric-backspace) - (assert (eq 4 (current-column)) nil "py-electric-backspace-test #2 failed") - (py-electric-backspace) - (assert (eq 0 (current-column)) nil "py-electric-backspace-test #3 failed") - (py-electric-backspace) - (assert (eq 232 (point)) nil "py-electric-backspace-test #4 failed")) - -(defun py-electric-delete-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-electric-delete-base arg teststring))) - -(defun py-electric-delete-base () - (goto-char 202) - (py-electric-delete) - (assert (eq 4 (length (progn (looking-at "[ \t]+")(match-string-no-properties 0)))) nil "py-electric-delete-test #1 failed") - (py-electric-delete) - (assert (not (looking-at "[ \t]+")) nil "py-electric-delete-test #2 failed") - (py-electric-delete) - (assert (looking-at "ict") nil "py-electric-delete-test #2 failed") - ) - -(defun UnicodeEncodeError-python3-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat "#! /usr/bin/env python3 -# -\*- coding: utf-8 -\*-\n -print(\'\\xA9\') -"))) - (py-bug-tests-intern 'UnicodeEncodeError-python3-base 2 teststring))) - -(defun UnicodeEncodeError-python3-base () - (delete-other-windows) - (let ((py-split-windows-on-execute-p t) - (py-shell-switch-buffers-on-execute-p t) - erg pos) - (py-execute-region 50 63) - (setq erg (goto-char (point-max))) - (sit-for 1.0) - (assert (and (setq pos (search-backward "©"))(< (- erg pos) 9)) nil "UnicodeEncodeError-python3-test failed"))) - -(defun dict-error-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -*- coding: utf-8 -*- - -class foo(bar): - \"\"\"baz\"\"\" - _some_extensions = { - - '38': 'asd', # whatever - '43': 'ddd', - '45': 'ddd', - } -"))) - (py-bug-tests-intern 'dict-error-base arg teststring))) - -(defun dict-error-base () - (goto-char 78) - (assert (eq 166 (py-end-of-statement)) nil "dict-error-test failed")) - -(defun py-expand-abbrev-pst-pdb.set_trace-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -print('\xA9') -pst -"))) - (py-bug-tests-intern 'py-expand-abbrev-pst-pdb.set_trace-base arg teststring))) - -(defun py-expand-abbrev-pst-pdb.set_trace-base () - (forward-char -1) - (expand-abbrev) - (sit-for 1) - ;; (assert (string= (expand-abbrev) "pst") nil "py-expand-abbrev-pst-pdb.set_trace-test failed")) - ;; (assert (expand-abbrev) nil "py-expand-abbrev-pst-pdb.set_trace-test failed")) - (progn (looking-back "pdb.set_trace()") - ;; (message "Looking back: %s" (match-string-no-properties 0)) - ) - (assert (looking-back "pdb.set_trace()") - ;; (message "%s" (match-string-no-properties 1)) - nil "py-expand-abbrev-pst-pdb.set_trace-test failed")) - -(defun near-bob-beginning-of-statement-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -*- coding: utf-8 -*- - -print u'\xA9' -"))) - (py-bug-tests-intern 'near-bob-beginning-of-statement-base arg teststring))) - -(defun near-bob-beginning-of-statement-base () - (goto-char 50) - (assert (eq 0 (py-compute-indentation)) nil "near-bob-beginning-of-statement-test failed")) - -(defun bob-beginning-of-statement-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " #Foo.py -")) - (py-bug-tests-intern 'bob-beginning-of-statement-base arg teststring))) - -(defun bob-beginning-of-statement-base () - (py-beginning-of-statement) - (assert (eq 1 (point)) "bob-beginning-of-statement-test failed")) - -(defun honor-comments-indent-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " #Something.py - # The purpose of this program is uncertain. -")) - (py-bug-tests-intern 'honor-comments-indent-base arg teststring))) - -(defun honor-comments-indent-base () - (goto-char 19) - (assert (eq 4 (py-compute-indentation)) nil "honor-comments-indent-test failed")) - -(defun first-line-offset-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " #Something.py - # The purpose of this program is uncertain. -")) - (py-bug-tests-intern 'first-line-offset-base arg teststring))) - -(defun first-line-offset-base () - (goto-char 18) - (assert (eq 4 (py-compute-indentation)) nil "first-line-offset-test failed")) - -(defun assignment-indent-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo(): -sammlung = [] -")) - (py-bug-tests-intern 'assignment-indent-base arg teststring))) - -(defun assignment-indent-base () - (goto-char 12) - (assert (eq 4 (py-compute-indentation)) nil "assignment-indent-test failed")) - -(defun if-elif-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if bar in baz: - print \"0, baz\" - abc[1] = \"x\" - -elif barr in bazz: - print \"\" -")) - (py-bug-tests-intern 'if-elif-base arg teststring))) - -(defun if-elif-base () - (goto-char 76) - (assert (eq 4 (py-compute-indentation)) nil "if-elif.py-test failed")) - -(defun if-elif-bob-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if bar in baz: - print \"0, baz\" -")) - (py-bug-tests-intern 'if-elif-bob-base arg teststring))) - -(defun if-elif-bob-base () - (goto-char (point-min)) - (assert (eq 0 (py-compute-indentation)) nil "if-elif-bob.py-test failed")) - -(defun try-else-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " -# an example from http://www.thomas-guettler.de -# © 2002-2008 Thomas Güttler. Der Text darf nach belieben kopiert und modifiziert werden, solange dieser Hinweis zum Copyright und ein Links zu dem Original unter www.thomas-guettler.de erhalten bleibt. Es wäre nett, wenn Sie mir Verbesserungsvorschläge mitteilen: guettli@thomas-guettler.de - -def _commit_on_success(*args, **kw): - begin() - try: - res = func(*args, **kw) - except Exception, e: - rollback() - raise # Re-raise (aufgefangene Exception erneut werfen) - else: - commit() - return res -")) - (py-bug-tests-intern 'try-else-clause-base arg teststring))) - -(defun try-else-clause-base () - (goto-char 541) - (assert (eq 4 (py-compute-indentation)) nil "try-else-clause-test failed")) - -(defun try-except-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " -# an example from http://www.thomas-guettler.de -# © 2002-2008 Thomas Güttler. Der Text darf nach belieben kopiert und modifiziert werden, solange dieser Hinweis zum Copyright und ein Links zu dem Original unter www.thomas-guettler.de erhalten bleibt. Es wäre nett, wenn Sie mir Verbesserungsvorschläge mitteilen: guettli@thomas-guettler.de - -def _commit_on_success(*args, **kw): - begin() - try: - res = func(*args, **kw) - except Exception, e: - rollback() - raise # Re-raise (aufgefangene Exception erneut werfen) - else: - commit() - return res -")) - (py-bug-tests-intern 'try-except-base arg teststring))) - -(defun try-except-base () - (goto-char 434) - (assert (eq 4 (py-compute-indentation)) nil "try-except-test failed")) - -(defun assignment-after-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " -if x > 0: - for i in range(100): - print i - else: - print \"All done\" - -a = \"asdf\" -b = \"asdf\" -")) - (py-bug-tests-intern 'assignment-after-block-base arg teststring))) - -(defun assignment-after-block-base () - (forward-line -1) - (assert (eq 0 (py-compute-indentation)) nil "assignment-after-block-test failed")) - -(defun py-beginning-of-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "# Examples from http://diveintopython.org/ - -def main(argv): - grammar = \"kant.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - sys.exit(2) - for opt, arg in opts: - if opt in (\"-h\", \"--help\"): - usage() - sys.exit() - elif opt == '-d': - global _debug - _debug = 1 - elif opt in (\"-g\", \"--grammar\"): - grammar = arg -")) - (py-bug-tests-intern 'py-beginning-of-clause-base arg teststring))) - -(defun py-beginning-of-clause-base () - (goto-char 364) - (assert (eq 346 (py-beginning-of-clause)) "py-beginning-of-clause-test failed")) - -(defun py-end-of-clause-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "# Examples from http://diveintopython.org/ - -def main(argv): - grammar = \"kant.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - sys.exit(2) - for opt, arg in opts: - if opt in (\"-h\", \"--help\"): - usage() - sys.exit() - elif opt == '-d': - global _debug - _debug = 1 - elif opt in (\"-g\", \"--grammar\"): - grammar = arg -")) - (py-bug-tests-intern 'py-end-of-clause-base arg teststring))) - -(defun py-end-of-clause-base () - (goto-char 364) - (assert (eq 412 (py-end-of-clause)) "py-end-of-clause-test failed")) - -(defun py-beginning-of-expression-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "# Examples from http://diveintopython.org/ - -def main(argv): - grammar = \"kant.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - sys.exit(2) -")) - (py-bug-tests-intern 'py-beginning-of-expression-base arg teststring))) - -(defun py-beginning-of-expression-base () - (goto-char 227) - (assert (eq 221 (py-beginning-of-expression)) nil "py-beginning-of-expression-test #1 failed") - (assert (eq 205 (py-beginning-of-expression)) nil "py-beginning-of-expression-test #2 failed") - (assert (eq 177 (py-beginning-of-expression)) nil "py-beginning-of-expression-test #3 failed")) - -(defun py-end-of-expression-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "# Examples from http://diveintopython.org/ - -def main(argv): - grammar = \"kant.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - sys.exit(2) -")) - (py-bug-tests-intern 'py-end-of-expression-base arg teststring))) - -(defun py-end-of-expression-base () - (goto-char 49) - (assert (eq 60 (py-end-of-expression)) nil "py-end-of-expression-test failed") - (goto-char 69) - (assert (eq 72 (py-end-of-expression)) nil "py-end-of-expression-test failed") - (assert (eq 85 (py-end-of-expression)) nil "py-end-of-expression-test failed") - (assert (eq 94 (py-end-of-expression)) nil "py-end-of-expression-test failed") - (assert (eq 113 (py-end-of-expression)) nil "py-end-of-expression-test failed") - (goto-char 225) - (assert (eq 232 (py-end-of-expression)) nil "py-end-of-expression-test failed")) - -(defun py-expression-index-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " - # -\*- coding: utf-8 -\*- -b = a[0].split(':')[1] -"))) - (py-bug-tests-intern 'py-expression-index-base arg teststring))) - -(defun py-expression-index-base () - (goto-char 58) - (assert (eq 71 (py-end-of-expression)) nil "py-expression-index-test failed") -) - -(defun py-insert-super-python2-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- -# As example given in Python v3.1 documentation » The Python Standard Library » -# -# class C(B): -# def method(self, arg): -# super().method(arg) # This does the same thing as: -# # super(C, self).method(arg)\" - -class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - "))) - (py-bug-tests-intern 'py-insert-super-python2-base arg teststring))) - -(defun py-insert-super-python2-base () - (ignore-errors (py-insert-super)) - (sit-for 0.1) - (assert (looking-back "super(OrderedDict1, self).__init__(d={})") nil "py-insert-super-python2-test failed")) - -(defun py-insert-super-python3-test (&optional arg load-branch-function) - (interactive "p") - (let* ((py-test-shebang "#! /usr/bin/env python3") - (teststring (concat py-test-shebang " -# -\*- coding: utf-8 -\*- -# As example given in Python v3.1 documentation » The Python Standard Library » -# -# class C(B): -# def method(self, arg): -# super().method(arg) # This does the same thing as: -# # super(C, self).method(arg)\" - -class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - "))) - (py-bug-tests-intern 'py-insert-super-python3-base arg teststring))) - -(defun py-insert-super-python3-base () - (save-excursion - (py-insert-super)) - (sit-for 0.2) - (assert (looking-at "super().__init__(d={})") nil "py-insert-super-python3-test failed")) - -(defun py-indent-after-assigment-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -##################################### -def foo( self, bar=False ): # version 12345 - title = self.barz.attrs['file'].split('.')[ -1 ] - if asdf: -"))) - (py-bug-tests-intern 'indent-after-assigment-base arg teststring))) - -(defun indent-after-assigment-base () - (goto-char 185) - (assert (eq 4 (py-compute-indentation)) nil "py-indent-after-assigment-test failed")) - -(defun leave-dict-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring " -foo = { - b\"yyyyt\": \"bxxk\", - \"bxxk\": { \"yyer\": [\"wxrddef\", \"yytem\", \"hym\",], - \"wfter\": [], \"xbject\": BxxkTwg, }, - \"yytem\": { \"yyer\": [], \"wfter\": [\"yytem\"], \"xbject\": ItemTwg, }, - \"hym\": { \"yyer\": [], \"wfter\": [\"hym\"], \"xbject\": ItemTwg, }, - \"yyfx\": { \"yyer\": [], \"wfter\": [\"yytem\", \"hym\"], \"xbject\": IfxTwg, }, - \"wxrddef\": { \"yyer\": [], \"wfter\": [\"yyfx\", \"yytem\", \"hym\"], \"xbject\": WxrddefTwg, }, -} -")) - (py-bug-tests-intern 'leave-dict-base arg teststring))) - -(defun leave-dict-base () - (goto-char (point-min)) - (py-end-of-statement) - (assert (eq 431 (point)) nil "leave-dict-test failed")) - -(defun eofs-attribut-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "def foo( baz ): # version - return baz.replace(\"\+\",\"§\").replace(\"_\", \" \").replace(\"fi\",\"fr\").replace( - \"fl\", \"fg\").replace(\"--\", \"ü\") -")) - (py-bug-tests-intern 'eofs-attribut-base arg teststring))) - -(defun eofs-attribut-base () - (forward-line -2) - (assert (eq 142 (py-end-of-statement)) nil "eofs-attribut-test failed")) - -(defun args-list-first-line-indent-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - bar.append( - ht( - T.a('Sorted Foo', href='#Blub', ), - ' -- foo bar baz--', - self.Tasdf( afsd ), - self.Tasdf( asdf ), - ) - ) -"))) - (py-bug-tests-intern 'args-list-first-line-indent-base arg teststring))) - -(defun args-list-first-line-indent-base () - (goto-char 72) - (assert (eq 4 (py-compute-indentation)) nil "args-list-first-line-indent-test failed")) - -(defun py-partial-expression-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - bar.append( - ht( - T.a('Sorted Foo', href='#Blub', ), - ' -- foo bar baz--', - self.Tasdf( afsd ), - self.Tasdf( asdf ), - ) - ) -"))) - (py-bug-tests-intern 'py-partial-expression-base arg teststring))) - -(defun py-partial-expression-base () - (goto-char 104) - (assert (eq 102 (py-beginning-of-partial-expression)) nil "py-partial-expression-test #1 failed") - (assert (eq 108 (py-end-of-partial-expression)) nil "py-partial-expression-test #2 failed") - (goto-char 178) - (assert (eq 177 (py-beginning-of-partial-expression)) nil "py-partial-expression-test #3 failed") - (assert (eq 195 (py-end-of-partial-expression)) nil "py-partial-expression-test #3 failed") - ) - -(defun py-execute-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "if True: - print \"asdf\"")) - (py-bug-tests-intern 'py-execute-block-base 2 teststring))) - -(defun py-execute-block-base () - (beginning-of-line) - (let ((py-shell-switch-buffers-on-execute-p nil) - (py-cleanup-temporary nil)) - (assert (py-execute-block) nil "py-execute-block-test failed"))) - -(defun multiline-list-indent-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "print [1, 2, - 3, 4]")) - (py-bug-tests-intern 'multiline-list-indent-base arg teststring))) - -(defun multiline-list-indent-base () - (assert (eq 7 (py-compute-indentation)) nil "multiline-list-indent-test failed")) - -(defun no-switch-no-split-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -print u'\\xA9' -"))) - (py-bug-tests-intern 'no-switch-no-split-base arg teststring))) - -(defun no-switch-no-split-base () - (let ((oldbuf (current-buffer)) - py-split-windows-on-execute py-shell-switch-buffers-on-execute-p) - (goto-char 49) - (push-mark) - (end-of-line) - (py-execute-region (line-beginning-position) (point)) - (assert (window-full-height-p) "no-switch-no-split-test failed") - (assert (eq (current-buffer) oldbuf)))) - -(defun close-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def main(): - if len(sys.argv)==1: - usage() - sys.exit() -if __name__==\"__main__\": - main() -"))) - (py-bug-tests-intern 'close-block-base arg teststring))) - -(defun close-block-base () - (goto-char 102) - (assert (eq 4 (py-close-block)) nil "close-block-test failed")) - -(defun py-shift-block-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -class OrderedDict1(dict): - \"\"\" - This implementation of a dictionary keeps track of the order - in which keys were inserted. - \"\"\" - - def __init__(self, d={}): - self._keys = d.keys() - dict.__init__(self, d) - "))) - (py-bug-tests-intern 'py-shift-block-base arg teststring))) - -(defun py-shift-block-base () - (let (py-smart-indentation) - (goto-char 237) - (assert (eq 12 (py-shift-block-right)) nil "py-shift-block-test #1 failed") - (assert (eq 8 (py-shift-block-left)) nil "py-shift-block-test #1 failed"))) - -(defun nesting-if-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if foo: - if bar: - pass - else: - pass -else: - pass - -"))) - (py-bug-tests-intern 'nesting-if-test-base arg teststring))) - -(defun nesting-if-test-base () - (goto-char 105) - (assert (eq 0 (py-compute-indentation)) nil "nesting-if-test failed")) - -(defun py-end-of-print-statement-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def usage(): - print \"\"\"Error: %s -somme errors -\"\"\" % ( - os.path.basename(sys.argv[0])) - -def usage(): - print '''Error: %s -somme errors -''' % ( - os.path.basename(sys.argv[0])) - -"))) - (py-bug-tests-intern 'py-end-of-print-statement-base arg teststring))) - -(defun py-end-of-print-statement-base () - (goto-char 66) - (sit-for 0.1) - (assert (eq 146 (py-end-of-statement)) nil "py-end-of-print-statement-test #1 failed") - - (assert (eq 160 (py-end-of-statement)) nil "py-end-of-print-statement-test #2 failed") - - (assert (eq 245 (py-end-of-statement)) nil "py-end-of-print-statement-test #3 failed") - - ) - -(defun nested-try-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -def main(argv): - grammar = \"foo.xml\" - try: - opts, args = getopt.getopt(argv, \"hg:d\", [\"help\", \"grammar=\"]) - except getopt.GetoptError: - usage() - try: - bla - except getopt.GetoptError: - asdf() - finally: - return \"blub\" - finally: - print \"asdf\" - -"))) - (py-bug-tests-intern 'nested-try-base arg teststring))) - -(defun nested-try-base () - (goto-char 306) - (assert (eq 8 (py-compute-indentation)) nil "nested-try-test failed")) - -(defun nested-if-test-1 (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -if abr: - if x > 0: - if foo: - print \"foo\" - elif bar: - print \"abasdf\" - elif baz: - for i in range(100): - print i - else: - print \\\"All done\\\" - elif x < 0: - print \\\"x is negative\\\" -else: - print \"asbd\" - -"))) - (py-bug-tests-intern 'nested-if-base-1 arg teststring))) - -(defun nested-if-base-1 () - (goto-char 299) - (assert (eq 8 (py-compute-indentation)) nil "nested-if-test-1 failed")) - -(defun nested-try-finally-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- - -# Example from: -# To: python-ideas@python.org -# From: Nikolaus Rath -# Date: Tue, 18 Oct 2011 22:14:56 -0400 -# Message-ID: <87pqhtafrz.fsf@vostro.rath.org> - -def my_fun(): - allocate_res1() - try: - # do stuff - allocate_res2() - try: - # do stuff - allocate_res3() - try: - do stuff - finally: - cleanup_res3() - finally: - cleanup_res2() - finally: - cleanup_res1() - - return - -"))) - (py-bug-tests-intern 'nested-try-finally-base arg teststring))) - -(defun nested-try-finally-base () - (goto-char 431) - (assert (eq 12 (py-compute-indentation)) nil "nested-try-finally-test failed")) - -(defun tqs-list-error-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -class foo(bar, baz): - \"\"\" - foo is an ABC for matrix containers; i.e., - \\\"\\\"\\\"containers of a finite number of orig -\"\"\" - pass -"))) - (py-bug-tests-intern 'tqs-list-error-base 2 teststring))) - -(defun tqs-list-error-base () - (goto-char 90) - (assert (eq 175 (py-end-of-statement)) nil "tqs-list-error-test failed")) - -(defun py-smart-indent-eight-test (&optional arg load-branch-function) - (interactive "p") - (let ((py-smart-indentation t) - (teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -for x in y: - for z in l: - for r in t: - pass - # <--- indents here. Pressing dedents eight spaces (i.e. you can go to column 0 in two presess) -"))) - (py-bug-tests-intern 'py-smart-indent-eight-base arg teststring))) - -(defun py-smart-indent-eight-base () - (goto-char 104) - (assert (eq 4 (py-guess-indent-offset)) nil "py-smart-indent-eight-test #1 failed") - (assert (eq 12 (py-compute-indentation)) nil "py-smart-indent-eight-test #2 failed") -) - -(defun py-install-directory-path-test (&optional arg) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -"))) - (py-bug-tests-intern 'py-install-directory-path-base arg teststring))) - -(defun py-install-directory-path-base () - "See if `py-install-directory' is set when required. " - (assert (py-install-directory-check) nil "`py-install-directory' not valid. See INSTALL. ")) - -;;; -(defun switch-windows-on-execute-p-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -print(\"I'm the switch-windows-on-execute-p-test\") -"))) - (py-bug-tests-intern 'switch-windows-on-execute-p-base arg teststring))) - -(defun switch-windows-on-execute-p-base () - (let ((py-shell-switch-buffers-on-execute-p t) - (erg (buffer-name))) - (assert (py-execute-buffer) nil "switch-windows-on-execute-p-test failed"))) - -(defun split-windows-on-execute-p-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -print(\"I'm the `split-windows-on-execute-p-test'\") -"))) - (py-bug-tests-intern 'split-windows-on-execute-p-base arg teststring))) - -(defun split-windows-on-execute-p-base () - (delete-other-windows) - (let ((py-split-windows-on-execute-p t) - (py-split-windows-on-execute-function 'split-window-vertically) - (py-shell-switch-buffers-on-execute-p t) - (erg (current-window-configuration))) - (py-execute-buffer) - (assert (not (window-full-height-p)) nil "split-windows-on-execute-p-test failed"))) - -;; this test is not valable, as python-mode-map often changes -(defun py-menu-pyshell-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -print(\"I'm the `py-menu-pyshell-test'\") -"))) - (py-bug-tests-intern 'py-menu-pyshell-base arg teststring))) - -(defun py-menu-pyshell-base () - (assert (string= "PyShell" (prin1-to-string - (car (nth 1 (cdr (nth 17 python-mode-map)))) - ;; (car (nth 2 (nth 1 (cdr python-mode-map)))) - )) nil "py-menu-pyshell-test failed")) - -(defun python-dedicated-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'python-dedicated-base arg teststring))) - -(defun python-dedicated-base () - (set-buffer (python-dedicated)) - (sit-for 0.1) - (assert (string-match "^\*Python-[:alnum:]+*" (buffer-name)) nil "python-dedicated-test failed")) - -(defun py-separator-char-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'py-separator-char-base arg teststring))) - -(defun py-separator-char-base () - (assert (stringp (py-separator-char)) nil "py-separator-char-test failed")) - -(defun py-shell-complete-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring (concat py-test-shebang " -# -*- coding: utf-8 -*- -impo"))) - (py-bug-tests-intern 'py-shell-complete-base 2 teststring))) - -(defun py-shell-complete-base () - (py-shell-complete) - (sit-for 0.1) - (assert (looking-back "import") nil "py-shell-complete-test failed")) - -(defun toggle-force-py-shell-name-p-test (&optional arg) - (interactive "p") - (let ((teststring "")) - (py-bug-tests-intern 'toggle-force-py-shell-name-p-base arg teststring))) - -(defun toggle-force-py-shell-name-p-base () - (let ((old py-force-py-shell-name-p)) - (assert (not (eq old (toggle-force-py-shell-name-p))) nil "toggle-force-py-shell-name-p-test failed") - (setq py-force-py-shell-name-p old))) - -(defun before-inline-comment-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -self._blah_blup = 0xe000 # aka: foo bar baz -self.nult = {} -self.nult['_foobar'] = [] -")) - (py-bug-tests-intern 'before-inline-comment-base arg teststring))) - -(defun before-inline-comment-base () - (goto-char 72) - (py-end-of-statement) - (sit-for 0.1) - (assert (eq 106 (point)) nil "before-inline-comment-test failed")) - -(defun py-end-of-def-inline-comment-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - - ##################################### -##################################### -def fooBaz( bar ): # version 2003/9/7 - if \"Foo:\" == bar \\ - or \"[Foo:]\" == bar \\ - or \"Foo:]\" == bar \\ - or \"Baz:\" == bar: - return False - return True -")) - (py-bug-tests-intern 'py-end-of-def-inline-comment-base arg teststring))) - -(defun py-end-of-def-inline-comment-base () - (let ((py-smart-indentation t)) - (goto-char 49) - (py-end-of-def-or-class) - (assert (eq 311 (point)) nil "py-end-of-def-inline-comment-test failed"))) - -(defun py-compute-indentation-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -\*- coding: utf-8 -\*- -with file(\"foo\" + zeit + \".ending\", 'w') as datei: - for i in range(anzahl): - bar.dosomething() - datei.write(str(baz[i]) + \"\\n\") - -def foo() -")) - (py-bug-tests-intern 'py-compute-indentation-base arg teststring))) - -(defun py-compute-indentation-base () - (goto-char 99) - (assert (eq 4 (py-compute-indentation)) nil "py-compute-indentation-test #1 failed") - (goto-char 127) - (assert (eq 8 (py-compute-indentation)) nil "py-compute-indentation-test #2 failed")) - -(defun py-end-of-statement-test-1 (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/python -# -*- coding: utf-8 -*- -print dir() -c = Cat() -c.hello() #causes error, but emacs tracking fails -import sys, os; os.remove('do/something/nasty') # lp:1025000 -")) - (py-bug-tests-intern 'py-end-of-statement-1-base arg teststring))) - -(defun py-end-of-statement-1-base () - (goto-char (point-min)) - (assert (eq 55 (py-end-of-statement)) nil "py-end-of-statement-test-1 #1 failed") - (assert (eq 65 (py-end-of-statement)) nil "py-end-of-statement-test-1 #2 failed") - (assert (eq 75 (py-end-of-statement)) nil "py-end-of-statement-test-1 #2 failed") - (assert (eq 131 (py-end-of-statement)) nil "py-end-of-statement-test-1 #3 failed") - (py-end-of-statement) - (assert (eq 163 (point)) nil "py-end-of-statement-test-1 #4 failed")) - -(defun py-end-of-statement-test-2 (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/python -# -*- coding: utf-8 -*- -pdb.set_trace() -# r'\\fB\$\{\\f([BI])([^}]+)\\f\1([^\\]+)\\fB}(.+)$') -result = w_behandlung(aus, i, line, klammer1=w.group(1), klammer2=w.group(2), klammer3=w.group(3), klammer4=w.group(4)) -aus.write(result + \"\\n\") -")) - (py-bug-tests-intern 'py-end-of-statement-2-base arg teststring))) - -(defun py-end-of-statement-2-base () - (goto-char 59) - (py-end-of-statement) - (assert (eq 225 (point)) nil "py-end-of-statement-test-2 #1 failed")) - -(defun key-binding-tests (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -")) - (py-bug-tests-intern 'key-binding-base arg teststring))) - -(defun key-binding-base () - (assert (eq (key-binding [(:)]) 'py-electric-colon) nil "py-electric-colon key-binding test failed") - - (assert (eq (key-binding [(\#)]) 'py-electric-comment) nil "py-electric-comment key-binding test failed") - (assert (eq (key-binding [(delete)]) 'py-electric-delete) nil "py-electric-delete key-binding test failed") - (assert (eq (key-binding [(backspace)]) 'py-electric-backspace) nil "py-electric-backspace key-binding test failed") - (assert (eq (key-binding [(control backspace)]) 'py-hungry-delete-backwards) nil "py-hungry-delete-backwards key-binding test failed") - (assert (eq (key-binding [(control c) (delete)]) 'py-hungry-delete-forward) nil "py-hungry-delete-forward key-binding test failed") - (assert (eq (key-binding [(control meta a)]) 'py-beginning-of-def-or-class) nil "py-beginning-of-def-or-class key-binding test failed") - (assert (eq (key-binding [(control meta e)]) 'py-end-of-def-or-class) nil "py-end-of-def-or-class key-binding test failed") - (assert (eq (key-binding [(control c)(control l)]) 'py-shift-left) nil "py-shift-left key-binding test failed") - (assert (eq (key-binding [(control c)(control r)]) 'py-shift-right) nil "py-shift-right key-binding test failed") - (assert (eq (key-binding [(control c)(<)]) 'py-shift-left) nil "py-shift-left key-binding test failed") - (assert (eq (key-binding [(control c)(>)]) 'py-shift-right) nil "py-shift-right key-binding test failed") - (assert (eq (key-binding [(control c)(tab)]) 'py-indent-region) nil "py-indent-region key-binding test failed") - (assert (eq (key-binding [(control c)(:)]) 'py-guess-indent-offset) nil "py-guess-indent-offset key-binding test failed") - - (assert (eq (key-binding [(control c)(control c)]) 'py-execute-buffer) nil "py-execute-buffer key-binding test failed") - (assert (eq (key-binding [(control c)(control m)]) 'py-execute-import-or-reload) nil "py-execute-import-or-reload key-binding test failed") - (assert (eq (key-binding [(control c)(control s)]) 'py-execute-string) nil "py-execute-string key-binding test failed") - (assert (eq (key-binding [(control c)(|)]) 'py-execute-region) nil "py-execute-region key-binding test failed") - (assert (eq (key-binding [(control meta x)]) 'py-execute-def-or-class) nil "py-execute-def-or-class key-binding test failed") - (assert (eq (key-binding [(control c)(!)]) 'py-shell) nil "py-shell key-binding test failed") - (assert (eq (key-binding [(control c)(control t)]) 'py-toggle-shell) nil "py-toggle-shell key-binding test failed") - (assert (eq (key-binding [(control meta h)]) 'py-mark-def-or-class) nil "py-mark-def-or-class key-binding test failed") - (assert (eq (key-binding [(control c)(control k)]) 'py-mark-block-or-clause) nil "py-mark-block-or-clause key-binding test failed") - - (assert (eq (key-binding [(control c)(\.)]) 'py-expression) nil "py-expression key-binding test failed") - - (assert (eq (key-binding [(control c)(control d)]) 'py-pdbtrack-toggle-stack-tracking) nil "py-pdbtrack-toggle-stack-tracking key-binding test failed") - (assert (eq (key-binding [(control c)(control f)]) 'py-sort-imports) nil "py-sort-imports key-binding test failed") - (assert (eq (key-binding [(control c)(\#)]) 'py-comment-region) nil "py-comment-region key-binding test failed") - (assert (eq (key-binding [(control c)(\?)]) 'py-describe-mode) nil "py-describe-mode key-binding test failed") - - (assert (eq (key-binding [(control c)(control e)]) 'py-help-at-point) nil "py-describe-symbol key-binding test failed") - (assert (eq (key-binding [(control c)(-)]) 'py-up-exception) nil "py-up-exception key-binding test failed") - (assert (eq (key-binding [(control c)(=)]) 'py-down-exception) nil "py-down-exception key-binding test failed") - (assert (eq (key-binding [(control x) (n) (d)]) 'py-narrow-to-defun) nil "py-narrow-to-defun key-binding test failed") - (assert (eq (key-binding [(control c)(control b)]) 'py-submit-bug-report) nil "py-submit-bug-report key-binding test failed") - (assert (eq (key-binding [(control c)(control v)]) 'py-version) nil "py-version key-binding test failed") - (assert (eq (key-binding [(control c)(control w)]) 'py-pychecker-run) nil "py-pychecker-run key-binding test failed") - (assert (eq (key-binding (kbd "TAB")) 'py-indent-line) nil "py-indent-line key-binding test failed") - (assert (eq (key-binding [(control c)(control p)]) 'py-beginning-of-statement) nil "py-beginning-of-statement key-binding test failed") - (assert (eq (key-binding [(control c)(control n)]) 'py-end-of-statement) nil "py-end-of-statement key-binding test failed") - (assert (eq (key-binding [(control j)]) 'py-newline-and-indent) nil "py-newline-and-indent key-binding test failed") - (assert (eq (key-binding (kbd "RET")) 'py-newline-and-indent) nil "py-newline-and-indent key-binding test failed")) - -(defun py-smart-operator-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -foo ")) - (py-bug-tests-intern 'py-smart-operator-base arg teststring))) - -(defun py-smart-operator-base () - (python-mode) - (let ((py-smart-operator-mode-p t)) - (py-smart-operator-mode-p-on) - (goto-char 52) - (save-excursion - (smart-operator-<)) - (assert (looking-at " < ") nil "smart-operator-test \"smart-operator-<\" failed") - (delete-region (point) (line-end-position)) - (save-excursion - (smart-operator->)) - (assert (looking-at " > ") nil "smart-operator-test \"smart-operator->\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-%)) - (assert (looking-at " % ") nil "smart-operator-test \"smart-operator-%\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-+)) - (assert (looking-at " \\+ ") nil "smart-operator-test \"smart-operator-+\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator--)) - (assert (looking-at " - ") nil "smart-operator-test \"smart-operator--\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-*)) - (assert (looking-at " * ") nil "smart-operator-test \"smart-operator-*\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-&)) - (assert (looking-at " & ") nil "smart-operator-test \"smart-operator-&\" failed") - ;; (delete-region (point) (line-end-position)) - ;; (save-excursion (smart-operator-!)) - ;; (assert (looking-at "! ") nil "smart-operator-test \"smart-operator-!\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-?)) - (assert (looking-at "? ") nil "smart-operator-test \"smart-operator-?\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-\,)) - (assert (looking-at ", ") nil "smart-operator-test \"smart-operator-\,\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-.)) - (assert (looking-at ".") nil "smart-operator-test \"smart-operator-.\" failed") - (when py-verbose-p (message "%s" "smart-operator-test passed")))) - -;; broken -(defun augmented-assigment-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -foo")) - (py-bug-tests-intern 'augmented-assigment-base arg teststring))) - -(defun augmented-assigment-base () - (let ((py-smart-operator-mode-p t)) - (smart-operator-mode-on) - (goto-char 52) - (save-excursion - (smart-operator-<) - (insert "=")) - - (assert (looking-at " <= ") nil "augmented-assigment-test \"smart-operator-<\" failed") - (delete-region (point) (line-end-position)) - (save-excursion - (smart-operator->)) - (assert (looking-at " >= ") nil "augmented-assigment-test \"smart-operator->\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-%)) - (assert (looking-at " %= ") nil "augmented-assigment-test \"smart-operator-%\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-+)) - (assert (looking-at " \\+= ") nil "augmented-assigment-test \"smart-operator-+\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator--)) - (assert (looking-at " -= ") nil "augmented-assigment-test \"smart-operator--\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-*)) - (assert (looking-at " \\*= ") nil "augmented-assigment-test \"smart-operator-*\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-&)) - (assert (looking-at " &= ") nil "augmented-assigment-test \"smart-operator-&\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-!)) - (assert (looking-at " != ") nil "augmented-assigment-test \"smart-operator-!\" failed") - (delete-region (point) (line-end-position)) - (save-excursion (smart-operator-?)) - (assert (looking-at " \\?= ") nil "augmented-assigment-test \"smart-operator-?\" failed") - ;; (delete-region (point) (line-end-position)) - ;; (save-excursion (smart-operator-\,)) - ;; (assert (looking-at " ,= ") nil "augmented-assigment-test \"smart-operator-\,\" failed") - ;; (delete-region (point) (line-end-position)) - ;; (save-excursion (smart-operator-.)) - ;; (assert (looking-at " .= ") nil "augmented-assigment-test \"smart-operator-.\" failed") - ;; (assert nil "smart-operator-test failed") - (when py-verbose-p (message "%s" "augmented-assigment-test passed")))) - -(defun py-smart-operator-repeat-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -foo ")) - (py-bug-tests-intern 'py-smart-operator-repeat-base arg teststring))) - -(defun py-smart-operator-repeat-base () - (let ((py-smart-operator-mode-p t)) - (py-smart-operator-mode-on) - (goto-char 52) - (setq last-command nil) - (save-excursion - (call-interactively 'smart-operator-> t) - (setq last-command 'smart-operator->) - (setq this-command 'smart-operator->) - ;; (message "%s" this-command-keys-vector) - (call-interactively 'smart-operator->)) - (assert (looking-at " >> ") nil "smart-operator-test \"smart-operator->\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion - (call-interactively 'smart-operator-<) - (setq last-command 'smart-operator-<) - (setq this-command 'smart-operator-<) - (call-interactively 'smart-operator-<)) - (assert (looking-at " << ") nil "smart-operator-test \"smart-operator-<\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-%)(setq this-command 'smart-operator-%)(setq last-command 'smart-operator-%)(smart-operator-%)) - (assert (looking-at " %% ") nil "smart-operator-test \"smart-operator-%\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-+)(setq this-command 'smart-operator-+)(setq last-command 'smart-operator-+)(smart-operator-+)) - (assert (looking-at " \\+\\+ ") nil "smart-operator-test \"smart-operator-+\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator--)(setq this-command 'smart-operator--)(setq last-command 'smart-operator--)(smart-operator--)) - (assert (looking-at " -- ") nil "smart-operator-test \"smart-operator--\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-*)(setq this-command 'smart-operator-*)(setq last-command 'smart-operator-*)(smart-operator-*)) - (assert (looking-at " ** ") nil "smart-operator-test \"smart-operator-*\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-&)(setq this-command 'smart-operator-&)(setq last-command 'smart-operator-&)(smart-operator-&)) - (assert (looking-at " && ") nil "smart-operator-test \"smart-operator-&\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-!)(setq this-command 'smart-operator-!)(setq last-command 'smart-operator-!)(smart-operator-!)) - (assert (looking-at "!! ") nil "smart-operator-test \"smart-operator-!\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-?)(setq this-command 'smart-operator-?)(setq last-command 'smart-operator-?)(smart-operator-?)) - (assert (looking-at "\\?\\? ") nil "smart-operator-test \"smart-operator-?\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-\,)(setq this-command 'smart-operator-\,)(setq last-command 'smart-operator-\,)(smart-operator-\,)) - (assert (looking-at ",, ") nil "smart-operator-test \"smart-operator-\,\" failed") - (delete-region (point) (line-end-position)) - (setq last-command nil) - (save-excursion (smart-operator-.)(setq this-command 'smart-operator-.)(setq last-command 'smart-operator-.)(smart-operator-.)) - (assert (looking-at "..") nil "smart-operator-test \"smart-operator-.\" failed") - (when py-verbose-p (message "%s" "py-smart-operator-test passed")))) - -(defun py-switch-imenu-index-function-test (&optional arg) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-switch-imenu-index-function-base arg teststring))) - -(defun py-switch-imenu-index-function-base () - (assert (listp imenu--index-alist) nil "py-switch-imenu-index-function-test failed") - (assert (py-switch-imenu-index-function) nil "py-switch-imenu-index-function-test failed") - (assert (listp imenu--index-alist) nil "py-switch-imenu-index-function-test failed")) - -(defun py-bol-moves-test (&optional arg load-branch-function) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-bol-moves-base arg teststring))) - -(defun py-bol-moves-base () - (message "comment-start: %s" comment-start) - (goto-char 592) - ;; (sit-for 0.1) - (assert (eq 561 (py-up-clause-bol)) nil "py-up-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-up-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 317 (py-up-block-or-clause-bol)) nil "py-up-block-or-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-up-block-or-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 234 (py-up-def-bol)) nil "py-up-def-bol-test of `py-moves-test' failed") - (message "%s" "py-up-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 1 (py-up-class-bol)) nil "py-up-class-bol-test of `py-moves-test' failed") - (message "%s" "py-up-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 234 (py-up-def-or-class-bol)) nil "py-up-def-or-class-bol-test of `py-moves-test' failed") - (message "%s" "py-up-def-or-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 317 (py-up-block-bol)) nil "py-up-block-bol-test of `py-moves-test' failed") - (message "%s" "py-up-block-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 317 (py-up-minor-block-bol)) nil "py-up-minor-block-bol-test of `py-moves-test' failed") - (message "%s" "py-up-minor-block-bol-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 0.1) - (assert (eq 325 (py-up-block)) nil "py-up-block-test of `py-moves-test' failed") - (message "%s" "py-up-block-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 325 (py-up-minor-block)) nil "py-up-minor-block-test of `py-moves-test' failed") - (message "%s" "py-up-minor-block-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 0.1) - (assert (eq 569 (py-up-clause)) nil "py-up-clause-test of `py-moves-test' failed") - (message "%s" "py-up-clause-test of `py-moves-test' done") - (goto-char 592) - ;; (sit-for 0.1) - (assert (eq 569 (py-up-block-or-clause)) nil "py-up-block-or-clause-test of `py-moves-test' failed") - (message "%s" "py-up-block-or-clause-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 238 (py-up-def)) nil "py-up-def-test of `py-moves-test' failed") - (message "%s" "py-up-def-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 1 (py-up-class)) nil "py-up-class-test of `py-moves-test' failed") - (message "%s" "py-up-class-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 238 (py-up-def-or-class)) nil "py-up-def-or-class-test of `py-moves-test' failed") - (message "%s" "py-up-def-or-class-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 317 (py-down-block-bol)) nil "py-down-block-bol-test of `py-moves-test' failed") - (message "%s" "py-down-block-bol-test of `py-moves-test' done") - (goto-char 561) - ;; (sit-for 0.1) - (assert (eq 594 (py-down-clause-bol)) nil "py-down-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-down-clause-bol-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 317 (py-down-block-or-clause-bol)) nil "py-down-block-or-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-down-block-or-clause-bol-test of `py-moves-test' done") - (goto-char (point-min)) - (assert (eq 142 (py-down-def-bol)) nil "py-down-def-bol-test of `py-moves-test' failed") - (message "%s" "py-down-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (not (py-down-class-bol)) nil "py-down-class-bol-test of `py-moves-test' failed") - (message "%s" "py-down-class-bol-test of `py-moves-test' done") - (goto-char (point-min)) - (assert (eq 142 (py-down-def-or-class-bol)) nil "py-down-def-or-class-bol-test of `py-moves-test' failed") - (message "%s" "py-down-def-or-class-bol-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 325 (py-down-block)) nil "py-down-block-test of `py-moves-test' failed") - (message "%s" "py-down-block-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 317 (py-down-block-bol)) nil "py-down-block-bol-test of `py-moves-test' failed") - (message "%s" "py-down-block-bol-test of `py-moves-test' done") - - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 325 (py-down-minor-block)) nil "py-down-minor-block-test of `py-moves-test' failed") - (message "%s" "py-down-minor-block-test of `py-moves-test' done") - (goto-char 264) - ;; (sit-for 0.1) - (assert (eq 317 (py-down-minor-block-bol)) nil "py-down-minor-block-bol-test of `py-moves-test' failed") - (message "%s" "py-down-minor-block-bol-test of `py-moves-test' done") - - (goto-char 569) - ;; (sit-for 0.1) - (assert (eq 602 (py-down-clause)) nil "py-down-clause-test of `py-moves-test' failed") - (message "%s" "py-down-clause-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 569 (py-down-block-or-clause)) nil "py-down-block-or-clause-test of `py-moves-test' failed") - (message "%s" "py-down-block-or-clause-test of `py-moves-test' done") - (goto-char (point-min)) - (assert (eq 146 (py-down-def)) nil "py-down-def-test of `py-moves-test' failed") - (message "%s" "py-down-def-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (not (py-down-class)) nil "py-down-class-test of `py-moves-test' failed") - (message "%s" "py-down-class-test of `py-moves-test' done") - (goto-char (point-min)) - (assert (eq 146 (py-down-def-or-class)) nil "py-down-def-or-class-test of `py-moves-test' failed") - (message "%s" "py-down-def-or-class-test of `py-moves-test' done") - - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 332 (py-beginning-of-statement-bol)) nil "py-beginning-of-statement-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-statement-bol-test of `py-moves-test' done") - (goto-char 410) - (sit-for 0.1) - (assert (eq 317 (py-beginning-of-block-bol)) nil "py-beginning-of-block-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-block-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 317 (py-beginning-of-clause-bol)) nil "py-beginning-of-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 317 (py-beginning-of-block-or-clause-bol)) nil "py-beginning-of-block-or-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-block-or-clause-bol-test of `py-moves-test' done") - (assert (eq 1 (py-beginning-of-class-bol)) nil "py-beginning-of-class-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 234 (py-beginning-of-def-or-class-bol)) nil "py-beginning-of-def-or-class-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-def-or-class-bol-test of `py-moves-test' done") - (message "%s" "py-end-of-block-bol-test of `py-moves-test' done") - (goto-char 576) - ;; (sit-for 0.1) - (assert (eq 594 (py-end-of-clause-bol)) nil "py-end-of-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-clause-bol-test of `py-moves-test' done") - (goto-char 576) - ;; (sit-for 0.1) - (assert (eq 594 (py-end-of-block-or-clause-bol)) nil "py-end-of-block-or-clause-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-block-or-clause-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 627 (py-end-of-def-bol)) nil "py-end-of-def-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-def-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 627 (py-end-of-class-bol)) nil "py-end-of-class-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 627 (py-end-of-def-or-class-bol)) nil "py-end-of-def-or-class-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-def-or-class-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 561 (py-end-of-statement-bol)) nil "py-end-of-statement-bol-test of `py-moves-test' failed") - (message "%s" "py-end-of-statement-bol-test of `py-moves-test' done") - (goto-char 410) - ;; (sit-for 0.1) - (assert (eq 234 (py-beginning-of-def-bol)) nil "py-beginning-of-def-bol-test of `py-moves-test' failed") - (message "%s" "py-beginning-of-def-bol-test of `py-moves-test' done") - ) - -(defun py-guess-indent-offset-test (&optional arg) - (interactive "p") - (let (py-smart-indentation - (teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - - ##################################### -##################################### -def fooBaz( bar ): # version 2003/9/7 - if \"Foo:\" == bar \\ - or \"[Foo:]\" == bar \\ - or \"Foo:]\" == bar \\ - or \"Baz:\" == bar: - return False - return True -")) - (py-bug-tests-intern 'py-guess-indent-offset-base arg teststring))) - -(defun py-guess-indent-offset-base () - (goto-char 49) - (assert (eq 4 (py-guess-indent-offset)) nil "py-guess-indent-offset-test #1 failed") - (message "%s" "py-guess-indent-offset-test #1 done") - (goto-char 168) - (assert (eq 2 (py-guess-indent-offset)) nil "py-guess-indent-offset-test #2 failed") - (message "%s" "py-guess-indent-offset-test #2 done") - (goto-char 251) - (assert (eq 4 (py-guess-indent-offset)) nil "py-guess-indent-offset-test #3 failed") - (message "%s" "py-guess-indent-offset-test #3 done") - (goto-char 280) - (assert (eq 4 (py-guess-indent-offset)) nil "py-guess-indent-offset-test #4 failed") - (message "%s" "py-guess-indent-offset-test #4 done") - (goto-char 298) - ;; indent might be eithe 4 or 2 - (assert (eq 2 (py-guess-indent-offset)) nil "py-guess-indent-offset-test #5 failed") - (message "%s" "py-guess-indent-offset-test #5 done")) - -(defun autopair-mode-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -")) - (py-bug-tests-intern 'autopair-on-base arg teststring))) - -(defun autopair-on-base () - (assert (py-autopair-mode-on) nil "autopair-mode-test #1 failed") - (message "%s" "autopair-mode-test #1 done") - (assert (not (py-toggle-autopair-mode)) nil "autopair-mode-test #2 failed")) - (message "%s" "autopair-mode-test #2 done") - -(defun py-smart-indentation-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -")) - (py-bug-tests-intern 'py-smart-indentation-base arg teststring))) - -(defun py-smart-indentation-base () - (assert (py-smart-indentation-on) nil "smart-indentation-test #1 failed") - (message "%s" "smart-indentation-test #1 done") - (assert (not (py-smart-indentation-off)) nil "smart-indentation-test #2 failed") - (message "%s" "smart-indentation-test #2 done") - (assert (py-toggle-smart-indentation) nil "smart-indentation-test #3 failed")) - (message "%s" "smart-indentation-test #3 done") - -(defun py-highlight-indentation-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -")) - (py-bug-tests-intern 'py-highlight-indentation-base arg teststring))) - -(defun py-highlight-indentation-base () - (py-highlight-indentation-on) - (assert highlight-indent-active nil "highlight-indentation-test #1 failed") - (message "%s" "highlight-indentation-test #1 done") - (py-highlight-indentation-off) - (assert (not highlight-indent-active) nil "highlight-indentation-test #2 failed") - (message "%s" "highlight-indentation-test #2 done") - (py-toggle-highlight-indentation) - (assert highlight-indent-active nil "highlight-indentation-test #3 failed")) - (message "%s" "highlight-indentation-test #3 done") - -(defun py-fill-string-django-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo() - ''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf''' -")) - (py-bug-tests-intern 'py-fill-string-django-base arg teststring))) - -(defun py-fill-string-django-base () - (sit-for 0.1) - (goto-char 99) - (py-fill-string-django) - (beginning-of-line) - (sit-for 0.1) - (assert (nth 8 (syntax-ppss)) t nil "py-fill-string-django-test #1 failed") - (message "%s" "py-fill-string-django-test #1 done") - (goto-char (nth 8 (syntax-ppss))) - (sit-for 1) - (assert (looking-at (concat py-string-delim-re "$")) t nil "py-fill-string-django-test #2 failed") - (message "%s" "$") -) - -(defun py-fill-string-onetwo-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo() - ''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf''' -")) - (py-bug-tests-intern 'py-fill-string-onetwo-base arg teststring))) - -(defun py-fill-string-onetwo-base () - (sit-for 0.1) - (goto-char 99) - (py-fill-string-onetwo) - (forward-line 2) - (assert (empty-line-p) nil "py-fill-string-onetwo-test #1 failed") - (message "%s" "py-fill-string-onetwo-test #1 done") - (goto-char (nth 8 (syntax-ppss))) - (assert (looking-at (concat py-string-delim-re "$")) nil "py-fill-string-onetwo-test #2 failed")) - (message "%s" "$") - -(defun py-fill-string-pep-257-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo() - ''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf''' -")) - (py-bug-tests-intern 'py-fill-string-pep-257-base arg teststring))) - -(defun py-fill-string-pep-257-base () - (sit-for 0.1) - (goto-char 99) - (py-fill-string-pep-257) - (forward-line 1) - (assert (nth 3 (syntax-ppss)) nil "py-fill-string-pep-257-test #1 failed") - (message "%s" "py-fill-string-pep-257-test #1 done") - (assert (empty-line-p) nil "py-fill-string-pep-257-test #2 failed")) - (message "%s" "py-fill-string-pep-257-test #2 done") - -(defun py-fill-string-pep-257-nn-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo() - ''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf''' -")) - (py-bug-tests-intern 'py-fill-string-pep-257-nn-base arg teststring))) - -(defun py-fill-string-pep-257-nn-base () - (sit-for 0.1) - (goto-char 99) - (py-fill-string-pep-257-nn) - (assert (nth 3 (syntax-ppss)) nil "py-fill-string-pep-257-nn-test #1 failed") - (message "%s" "py-fill-string-pep-257-nn-test #1 done") - (re-search-forward "py-string-delim-re" nil t 1) - (assert (not (empty-line-p)) nil "py-fill-string-pep-257-non-nil-test #2 failed")) - (message "%s" "py-fill-string-pep-257-non-nil-test #2 done") - -(defun py-fill-string-symmetric-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def foo(): - ''' asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf - -asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf asdf' asdf asdf asdf asdf asdfasdf asdfasdf a asdf asdf asdf asdfasdfa asdf asdf asdf asdf -''' - pass -")) - (py-bug-tests-intern 'py-fill-string-symmetric-base arg teststring))) - -(defun py-fill-string-symmetric-base () - (goto-char 84) - (py-fill-string-symmetric) - (sit-for 0.1) - (forward-line -4) - (assert (empty-line-p) nil "py-fill-string-symmetric-test failed") - (message "%s" "py-fill-string-symmetric-test done") - (re-search-forward py-string-delim-re nil t 3) - (goto-char (match-beginning 0)) - (assert (looking-at (concat py-string-delim-re "$")) nil "py-fill-string-symmetric-test failed") - (message "%s" "$") -) - -(defun py-electric-yank-test (&optional arg) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-electric-yank-base arg teststring))) - -(defun py-electric-yank-base () - (let ((py-electric-yank-active-p t) - (kill-new "asdf")) - (goto-char 610) - (py-electric-delete) - (assert (eq 8 (current-indentation)) nil "py-electric-yank-test #1 failed, `py-electric-delete' ") - (message "%s" "py-electric-yank-test #1 failed, `py-electric-delete' ") - (end-of-line) - (py-electric-yank) - (assert (eq 12 (current-indentation)) nil "py-electric-yank-test #2 failed"))) - (message "%s" "py-electric-yank-test #2 done") - -(defun py-down-statement-test (&optional arg) - (interactive "p") - (let ((teststring python-mode-teststring)) - (py-bug-tests-intern 'py-down-statement-base arg teststring))) - -(defun py-down-statement-base () - (goto-char (point-min)) - (assert (eq 31 (py-down-statement)) nil "py-down-statement-test failed")) - (message "%s" "py-down-statement-test done") - -(defun py-nested-block-or-clause-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -if foo: - if bar: - if True: - pass - elif False: - pass - else: - pass - elif baz: - pass -elif foo2: - if bar2: - pass - elif baz2: - pass - else: - pass -else: - pass - -")) - (py-bug-tests-intern 'py-nested-block-or-clause-base arg teststring))) - -(defun py-nested-block-or-clause-base () - (goto-char 48) - (assert (eq 299 (py-end-of-block)) nil "py-nested-block-or-clause-test #1 failed") - (message "%s" "py-nested-block-or-clause-test #1 done") - (goto-char 60) - (assert (eq 196 (py-end-of-block)) nil "py-nested-block-or-clause-test #2 failed") - (message "%s" "py-nested-block-or-clause-test #2 done") - (goto-char 76) - (assert (eq 169 (py-end-of-block)) nil "py-nested-block-or-clause-test #3 failed") - (message "%s" "py-nested-block-or-clause-test #3 done") - (goto-char 48) - (assert (eq 196 (py-end-of-clause)) nil "py-nested-block-or-clause-test #4 failed") - (message "%s" "py-nested-block-or-clause-test #4 done") - (goto-char 60) - (assert (eq 169 (py-end-of-clause)) nil "py-nested-block-or-clause-test #5 failed") - (message "%s" "py-nested-block-or-clause-test #5 done") - (goto-char 85) - (assert (eq 101 (py-end-of-clause)) nil "py-nested-block-or-clause-test #6 failed") - (message "%s" "py-nested-block-or-clause-test #6 done") - (goto-char 291) - (assert (eq 285 (py-beginning-of-clause)) nil "py-nested-block-or-clause-test #7 failed") - (message "%s" "py-nested-block-or-clause-test #7 done") - (sit-for 0.1) - (assert (eq 197 (py-beginning-of-clause)) nil "py-nested-block-or-clause-test #8 failed") - (message "%s" "py-nested-block-or-clause-test #8 done") - (assert (eq 48 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #9 failed") - (message "%s" "py-nested-block-or-clause-test #9 done") - (goto-char 284) - (assert (eq 266 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #10 failed") - (message "%s" "py-nested-block-or-clause-test #10 done") - (assert (eq 238 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #11 failed") - (message "%s" "py-nested-block-or-clause-test #11 done") - (assert (eq 212 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #12 failed") - (message "%s" "py-nested-block-or-clause-test #12 done") - (assert (eq 197 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #13 failed") - (message "%s" "py-nested-block-or-clause-test #13 done") - (goto-char 196) - (assert (eq 174 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #14 failed") - (message "%s" "py-nested-block-or-clause-test #14 done") - (goto-char 169) - (assert (eq 147 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #15 failed") - (message "%s" "py-nested-block-or-clause-test #15 done") - (assert (eq 110 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #16 failed") - (message "%s" "py-nested-block-or-clause-test #16 done") - (assert (eq 76 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #17 failed") - (message "%s" "py-nested-block-or-clause-test #17 done") - (assert (eq 60 (py-beginning-of-block-or-clause)) nil "py-nested-block-or-clause-test #18 failed") - (message "%s" "py-nested-block-or-clause-test #18 done") - ) - -(setq py-travel-current-indent-test-start 12) - -(defun py-travel-current-indent-test (&optional indent orig) - (interactive) - (let ((orig (point)) - (indent (or indent - py-travel-current-indent-test-start - (string-to-number (read-from-minibuffer "Indent to travel:"))))) - (py-travel-current-indent indent orig))) - -(defun docstring-style-switches-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- - -")) - (py-bug-tests-intern 'docstring-style-switches-base arg teststring))) - -(defun docstring-style-switches-base () - - (py-django-docstring-style-on) - (assert (eq 'django py-docstring-style) nil "django not py-docstring-style") - - (py-onetwo-docstring-style-on) - (assert (eq 'onetwo py-docstring-style) nil "onetwo not py-docstring-style") - - (py-pep-257-docstring-style-on) - (assert (eq 'pep-257 py-docstring-style) nil "pep-257 not py-docstring-style") - - (py-pep-257-nn-docstring-style-on) - (assert (eq 'pep-257-nn py-docstring-style) nil "pep-257-nn not py-docstring-style") - - (py-symmetric-docstring-style-on) - (assert (eq 'symmetric py-docstring-style) nil "symmetric not py-docstring-style") - -) - -(defun forward-sexp-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -def usage(): - print(\"\"\"Fehler: %s -Es muß die aufzurufende Ziehungszahl als Argument angegeben werden: -'python roulette.py 1, 'python roulette.py 2', ... 'python roulette.py n'. -\"\"\" % ( - os.path.basename(sys.argv[0]))) -")) - (py-bug-tests-intern 'forward-sexp-base arg teststring))) - -(defun forward-sexp-base () - ;; (message "forward-sexp-function: %s" forward-sexp-function) - (goto-char 71) - (sit-for 0.1) - (forward-sexp 1) - (sit-for 0.1) - (assert (eq 231 (point)) nil "forward-sexp-test failed")) - -(defun nested-if-test (&optional arg) - (interactive "p") - (let ((teststring "#! /usr/bin/env python -# -*- coding: utf-8 -*- -if foo: - bar = \"p\" -elif bar: - if baz == True: - print(\" \") -else: - bar = baz -")) - (py-bug-tests-intern 'nested-if-base arg teststring))) - -(defun nested-if-base () - (py-beginning-of-block) - (assert (eq 48 (point)) nil "nested-if-test #1 failed") - (goto-char 118) - (py-beginning-of-block) - (assert (eq 84 (point)) nil "nested-if-test #2 failed") - (py-beginning-of-block) - (assert (eq 48 (point)) nil "nested-if-test #3 failed")) - -(defun py-execute-region-error-test (&optional arg) - (interactive "p") - (let ((teststring "with file(\"roulette-\" + zeit + \".csv\", 'w') as datei: - for i in range(anzahl): - klauf.pylauf() - datei.write(str(spiel[i]) + \"\\n\") - print(F) -")) - (py-bug-tests-intern 'py-execute-region-base arg teststring))) - -(defun py-execute-region-base () - (goto-char 152) - (push-mark) - (end-of-line) - (py-execute-region (line-beginning-position) (line-end-position)) - (set-buffer "*Python*") - (goto-char (point-max)) - (switch-to-buffer (current-buffer)) - (assert (and (re-search-backward py-shell-prompt-regexp nil t 2) - (search-forward "line 5")) nil "py-execute-region-test failed")) - -(defun py-execute-statement-error-test (&optional arg) - (interactive "p") - (let ((teststring "with file(\"roulette-\" + zeit + \".csv\", 'w') as datei: - for i in range(anzahl): - klauf.pylauf() - datei.write(str(spiel[i]) + \"\\n\") - print(F) -")) - (py-bug-tests-intern 'py-execute-statement-base arg teststring))) - -(defun py-execute-statement-base () - (goto-char 152) - (push-mark) - (end-of-line) - (py-execute-statement) - (set-buffer "*Python*") - (goto-char (point-max)) - (switch-to-buffer (current-buffer)) - (assert (and (re-search-backward py-shell-prompt-regexp nil t 2) - (search-forward "line 5")) nil "py-execute-statement-test failed")) - - - -(provide 'python-mode-test) diff --git a/elpa/python-mode-6.1.3/test/python-mode-tests.sh b/elpa/python-mode-6.1.3/test/python-mode-tests.sh deleted file mode 100755 index 81b633f4e..000000000 --- a/elpa/python-mode-6.1.3/test/python-mode-tests.sh +++ /dev/null @@ -1,1459 +0,0 @@ - #!/bin/bash - -# Author: Andreas Roehler - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# Commentary: - -# This script tests Emacs python-mode. - -# Caveats: -# -# needs being started in `test' directory -# optional shell argument PATH/TO/EMACS-SOURCE-DIRECTORY might be given -# -# If testing with emacs-24 please be aware of bug 11984 [0], for the -# time being the patch will need to be added manually. -# -# IPython 0.12 due to a bug in argparse requires a patch [1] to work. -# -# 0. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11984 -# 1. http://bugs.python.org/issue13720 - -# Code: - - -# if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then -# hash -r 2>/dev/null -# fi - -# needs being in `test' directory -# PCOT=`pwd` -PCOT=$PWD -# PDIR=".." -PDIR=$(cd ..; pwd) -# the directory that this file is in. -# TESTDIR="$(dirname "$0")" -# PDIR="$TESTDIR/.." - -# write PATH-TO-EMACS source code default directory here -EMACS_DEFAULT_DIR="/usr/share/emacs/24.2" - -EMACS_DIR= -if [ $1 ]; then - echo "\$1: $1" - EMACS_DIR=$1 -else - EMACS_DIR=$EMACS_DEFAULT_DIR -fi - -# else -# cat <s should be marked as strings. -# - None of the quote marks around O's should be marked as strings. -# - Quote marks that are between angle brackets (<...>) should be -# marked as strings. Think of "X" as a pair of angle brackets -# right next to one another. Also, quotes to the left of >s -# and the right of with other characters should not affect -# the fontificatin any; these characters were just used to make it -# easier to see what the intended colorization is.) - -# Some easy cases: -"O" 'O' "<'>" '<">' - "O" 'O' "<'>" '<">' - " O " ' O ' " < ' > " ' < " > ' -"""O""" '''O''' "<<<'>>>" '''<">''' - -# Some harder cases: -"""<">""" '''<'>''' - -# Some tricky cases with backslashes. -'''<'>''' '''<\'''>''' '''<\\''' - -# Some tricky cases with more than 3 quotes in a row. -"O""" "O" -"""">""" -"""">>""" -""""X">""" -""""X"">""" -"""O""""O" "" -"""O""""" "O" -"""O""""""<">""" -"""O"""""""X">""" -"""O""""""""X">""" -"""O""" "<<<>>>>" -"""""""""O""" "O" -"""O""""O""O""O""" -"""">""" """">>""" """">>>""" -""""">""" """"">>""" """"">>>""" -""""">>>""""O" """"">>>""""" -"""""""""<""X"X"">""" - -# One version had a bug with comments ending in string markers: " -"""O""" - - "" "" - -"""<">""" '''<'>''' - -# Spanning multiple lines: - -"< ->" - -'< ->' - -""" -< -< -< -< -' -X -X -X -" -> -> -""" diff --git a/init.el b/init.el index bc0a8a432..fea86644a 100644 --- a/init.el +++ b/init.el @@ -20,9 +20,13 @@ ;; If there is more than one, they won't work right. '(ansi-color-faces-vector [default bold shadow italic underline bold bold-italic bold]) '(ansi-color-names-vector [zenburn-bg zenburn-red zenburn-green zenburn-yellow zenburn-blue zenburn-magenta zenburn-cyan zenburn-fg]) - '(custom-enabled-themes (quote (zenburn))) - '(custom-safe-themes (quote ("9e54a6ac0051987b4296e9276eecc5dfb67fdcd620191ee553f40a9b6d943e78" default))) - '(fci-rule-color "#2a2a2a")) + '(background-color "#ffffff") + '(background-mode light) + '(cursor-color "#ffff00") + '(custom-enabled-themes (quote (light-blue))) + '(custom-safe-themes (quote ("52588047a0fe3727e3cd8a90e76d7f078c9bd62c0b246324e557dfa5112e0d0c" "1157a4055504672be1df1232bed784ba575c60ab44d8e6c7b3800ae76b42f8bd" "7f1263c969f04a8e58f9441f4ba4d7fb1302243355cb9faecb55aec878a06ee9" "1e7e097ec8cb1f8c3a912d7e1e0331caeed49fef6cff220be63bd2a6ba4cc365" "fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" "9e54a6ac0051987b4296e9276eecc5dfb67fdcd620191ee553f40a9b6d943e78" default))) + '(fci-rule-color "#2a2a2a") + '(foreground-color "#ffff00")) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/user.el b/user.el index 0c222c080..64047530a 100644 --- a/user.el +++ b/user.el @@ -50,3 +50,15 @@ ;; Save here instead of littering current directory with emacs backup files (setq backup-directory-alist `(("." . "~/.saves"))) + +(elpy-enable) +(elpy-use-ipython) +;(pyvenv-mode) + + +;;; Use flycheck rather than flymake +(when (require 'flycheck nil t) + (remove-hook 'elpy-modules 'elpy-module-flymake) + (add-hook 'elpy-mode-hook 'flycheck-mode)) + +