Mercurial > dotfiles
comparison .elisp/python-mode.el @ 175:4741c022c7ae
python-mode: apply patch from the python-mode list to fix triplequotes.
This patch is originally by Andreas Roehler <andreas.roehler at online.de>.
It was not applied because it works only in GNU Emacs based on list archives.
| author | Augie Fackler <durin42@gmail.com> |
|---|---|
| date | Wed, 16 Dec 2009 22:59:38 -0600 |
| parents | 014e745b2d04 |
| children |
comparison
equal
deleted
inserted
replaced
| 174:014e745b2d04 | 175:4741c022c7ae |
|---|---|
| 6 ;; 1995-2002 Barry A. Warsaw | 6 ;; 1995-2002 Barry A. Warsaw |
| 7 ;; 1992-1994 Tim Peters | 7 ;; 1992-1994 Tim Peters |
| 8 ;; Maintainer: python-mode@python.org | 8 ;; Maintainer: python-mode@python.org |
| 9 ;; Created: Feb 1992 | 9 ;; Created: Feb 1992 |
| 10 ;; Keywords: python languages oop | 10 ;; Keywords: python languages oop |
| 11 | |
| 11 | 12 |
| 12 (defconst py-version "5.1.0+" | 13 (defconst py-version "5.1.0+" |
| 13 "`python-mode' version number.") | 14 "`python-mode' version number.") |
| 14 | 15 |
| 15 ;; This file is part of python-mode.el. | 16 ;; This file is part of python-mode.el. |
| 382 (defvar py-line-number-offset 0 | 383 (defvar py-line-number-offset 0 |
| 383 "When an exception occurs as a result of py-execute-region, a | 384 "When an exception occurs as a result of py-execute-region, a |
| 384 subsequent py-up-exception needs the line number where the region | 385 subsequent py-up-exception needs the line number where the region |
| 385 started, in order to jump to the correct file line. This variable is | 386 started, in order to jump to the correct file line. This variable is |
| 386 set in py-execute-region and used in py-jump-to-exception.") | 387 set in py-execute-region and used in py-jump-to-exception.") |
| 388 | |
| 389 ;; 2009-09-10 a.roehler@web.de changed section start | |
| 390 ;; from python.el, version "22.1" | |
| 391 | |
| 392 (defconst python-font-lock-syntactic-keywords | |
| 393 ;; Make outer chars of matching triple-quote sequences into generic | |
| 394 ;; string delimiters. Fixme: Is there a better way? | |
| 395 ;; First avoid a sequence preceded by an odd number of backslashes. | |
| 396 `((,(rx (not (any ?\\)) | |
| 397 ?\\ (* (and ?\\ ?\\)) | |
| 398 (group (syntax string-quote)) | |
| 399 (backref 1) | |
| 400 (group (backref 1))) | |
| 401 (2 ,(string-to-syntax "\""))) ; dummy | |
| 402 (,(rx (group (optional (any "uUrR"))) ; prefix gets syntax property | |
| 403 (optional (any "rR")) ; possible second prefix | |
| 404 (group (syntax string-quote)) ; maybe gets property | |
| 405 (backref 2) ; per first quote | |
| 406 (group (backref 2))) ; maybe gets property | |
| 407 (1 (python-quote-syntax 1)) | |
| 408 (2 (python-quote-syntax 2)) | |
| 409 (3 (python-quote-syntax 3))) | |
| 410 ;; This doesn't really help. | |
| 411 ;;; (,(rx (and ?\\ (group ?\n))) (1 " ")) | |
| 412 )) | |
| 413 | |
| 414 (defun python-quote-syntax (n) | |
| 415 "Put `syntax-table' property correctly on triple quote. | |
| 416 Used for syntactic keywords. N is the match number (1, 2 or 3)." | |
| 417 ;; Given a triple quote, we have to check the context to know | |
| 418 ;; whether this is an opening or closing triple or whether it's | |
| 419 ;; quoted anyhow, and should be ignored. (For that we need to do | |
| 420 ;; the same job as `syntax-ppss' to be correct and it seems to be OK | |
| 421 ;; to use it here despite initial worries.) We also have to sort | |
| 422 ;; out a possible prefix -- well, we don't _have_ to, but I think it | |
| 423 ;; should be treated as part of the string. | |
| 424 | |
| 425 ;; Test cases: | |
| 426 ;; ur"""ar""" x='"' # """ | |
| 427 ;; x = ''' """ ' a | |
| 428 ;; ''' | |
| 429 ;; x '"""' x """ \"""" x | |
| 430 (save-excursion | |
| 431 (goto-char (match-beginning 0)) | |
| 432 (cond | |
| 433 ;; Consider property for the last char if in a fenced string. | |
| 434 ((= n 3) | |
| 435 (let* ((font-lock-syntactic-keywords nil) | |
| 436 (syntax (syntax-ppss))) | |
| 437 (when (eq t (nth 3 syntax)) ; after unclosed fence | |
| 438 (goto-char (nth 8 syntax)) ; fence position | |
| 439 (skip-chars-forward "uUrR") ; skip any prefix | |
| 440 ;; Is it a matching sequence? | |
| 441 (if (eq (char-after) (char-after (match-beginning 2))) | |
| 442 (eval-when-compile (string-to-syntax "|")))))) | |
| 443 ;; Consider property for initial char, accounting for prefixes. | |
| 444 ((or (and (= n 2) ; leading quote (not prefix) | |
| 445 (= (match-beginning 1) (match-end 1))) ; prefix is null | |
| 446 (and (= n 1) ; prefix | |
| 447 (/= (match-beginning 1) (match-end 1)))) ; non-empty | |
| 448 (let ((font-lock-syntactic-keywords nil)) | |
| 449 (unless (eq 'string (syntax-ppss-context (syntax-ppss))) | |
| 450 (eval-when-compile (string-to-syntax "|"))))) | |
| 451 ;; Otherwise (we're in a non-matching string) the property is | |
| 452 ;; nil, which is OK. | |
| 453 ))) | |
| 454 | |
| 455 | |
| 456 (defvar py-mode-syntax-table | |
| 457 (let ((table (make-syntax-table))) | |
| 458 ;; Give punctuation syntax to ASCII that normally has symbol | |
| 459 ;; syntax or has word syntax and isn't a letter. | |
| 460 (let ((symbol (string-to-syntax "_")) | |
| 461 (sst (standard-syntax-table))) | |
| 462 (dotimes (i 128) | |
| 463 (unless (= i ?_) | |
| 464 (if (equal symbol (aref sst i)) | |
| 465 (modify-syntax-entry i "." table))))) | |
| 466 (modify-syntax-entry ?$ "." table) | |
| 467 (modify-syntax-entry ?% "." table) | |
| 468 ;; exceptions | |
| 469 (modify-syntax-entry ?# "<" table) | |
| 470 (modify-syntax-entry ?\n ">" table) | |
| 471 (modify-syntax-entry ?' "\"" table) | |
| 472 (modify-syntax-entry ?` "$" table) | |
| 473 table)) | |
| 474 | |
| 475 (defsubst python-in-string/comment () | |
| 476 "Return non-nil if point is in a Python literal (a comment or string)." | |
| 477 ;; We don't need to save the match data. | |
| 478 (nth 8 (syntax-ppss))) | |
| 479 | |
| 480 (defconst python-space-backslash-table | |
| 481 (let ((table (copy-syntax-table py-mode-syntax-table))) | |
| 482 (modify-syntax-entry ?\\ " " table) | |
| 483 table) | |
| 484 "`python-mode-syntax-table' with backslash given whitespace syntax.") | |
| 485 | |
| 486 ;; 2009-09-10 a.roehler@web.de changed section end | |
| 387 | 487 |
| 388 (defconst py-emacs-features | 488 (defconst py-emacs-features |
| 389 (let (features) | 489 (let (features) |
| 390 features) | 490 features) |
| 391 "A list of features extant in the Emacs you are using. | 491 "A list of features extant in the Emacs you are using. |
| 503 1 py-pseudo-keyword-face) | 603 1 py-pseudo-keyword-face) |
| 504 ;; XXX, TODO, and FIXME tags | 604 ;; XXX, TODO, and FIXME tags |
| 505 '("XXX\\|TODO\\|FIXME" 0 py-XXX-tag-face t) | 605 '("XXX\\|TODO\\|FIXME" 0 py-XXX-tag-face t) |
| 506 )) | 606 )) |
| 507 "Additional expressions to highlight in Python mode.") | 607 "Additional expressions to highlight in Python mode.") |
| 508 (put 'python-mode 'font-lock-defaults '(python-font-lock-keywords)) | |
| 509 | 608 |
| 510 ;; have to bind py-file-queue before installing the kill-emacs-hook | 609 ;; have to bind py-file-queue before installing the kill-emacs-hook |
| 511 (defvar py-file-queue nil | 610 (defvar py-file-queue nil |
| 512 "Queue of Python temp files awaiting execution. | 611 "Queue of Python temp files awaiting execution. |
| 513 Currently-active file is at the head of the list.") | 612 Currently-active file is at the head of the list.") |
| 725 (define-key py-shell-map [tab] 'tab-to-tab-stop) | 824 (define-key py-shell-map [tab] 'tab-to-tab-stop) |
| 726 (define-key py-shell-map "\C-c-" 'py-up-exception) | 825 (define-key py-shell-map "\C-c-" 'py-up-exception) |
| 727 (define-key py-shell-map "\C-c=" 'py-down-exception) | 826 (define-key py-shell-map "\C-c=" 'py-down-exception) |
| 728 ) | 827 ) |
| 729 | 828 |
| 730 (defvar py-mode-syntax-table nil | 829 ;; 2009-09-09 a.roehler@web.de changed section start |
| 731 "Syntax table used in `python-mode' buffers.") | 830 ;; from python.el, version "22.1" |
| 732 (when (not py-mode-syntax-table) | 831 |
| 733 (setq py-mode-syntax-table (make-syntax-table)) | 832 ;; (defvar py-mode-syntax-table nil |
| 734 (modify-syntax-entry ?\( "()" py-mode-syntax-table) | 833 ;; "Syntax table used in `python-mode' buffers.") |
| 735 (modify-syntax-entry ?\) ")(" py-mode-syntax-table) | 834 ;; (when (not py-mode-syntax-table) |
| 736 (modify-syntax-entry ?\[ "(]" py-mode-syntax-table) | 835 ;; (setq py-mode-syntax-table (make-syntax-table)) |
| 737 (modify-syntax-entry ?\] ")[" py-mode-syntax-table) | 836 ;; (modify-syntax-entry ?\( "()" py-mode-syntax-table) |
| 738 (modify-syntax-entry ?\{ "(}" py-mode-syntax-table) | 837 ;; (modify-syntax-entry ?\) ")(" py-mode-syntax-table) |
| 739 (modify-syntax-entry ?\} "){" py-mode-syntax-table) | 838 ;; (modify-syntax-entry ?\[ "(]" py-mode-syntax-table) |
| 740 ;; Add operator symbols misassigned in the std table | 839 ;; (modify-syntax-entry ?\] ")[" py-mode-syntax-table) |
| 741 (modify-syntax-entry ?\$ "." py-mode-syntax-table) | 840 ;; (modify-syntax-entry ?\{ "(}" py-mode-syntax-table) |
| 742 (modify-syntax-entry ?\% "." py-mode-syntax-table) | 841 ;; (modify-syntax-entry ?\} "){" py-mode-syntax-table) |
| 743 (modify-syntax-entry ?\& "." py-mode-syntax-table) | 842 ;; ;; Add operator symbols misassigned in the std table |
| 744 (modify-syntax-entry ?\* "." py-mode-syntax-table) | 843 ;; (modify-syntax-entry ?\$ "." py-mode-syntax-table) |
| 745 (modify-syntax-entry ?\+ "." py-mode-syntax-table) | 844 ;; (modify-syntax-entry ?\% "." py-mode-syntax-table) |
| 746 (modify-syntax-entry ?\- "." py-mode-syntax-table) | 845 ;; (modify-syntax-entry ?\& "." py-mode-syntax-table) |
| 747 (modify-syntax-entry ?\/ "." py-mode-syntax-table) | 846 ;; (modify-syntax-entry ?\* "." py-mode-syntax-table) |
| 748 (modify-syntax-entry ?\< "." py-mode-syntax-table) | 847 ;; (modify-syntax-entry ?\+ "." py-mode-syntax-table) |
| 749 (modify-syntax-entry ?\= "." py-mode-syntax-table) | 848 ;; (modify-syntax-entry ?\- "." py-mode-syntax-table) |
| 750 (modify-syntax-entry ?\> "." py-mode-syntax-table) | 849 ;; (modify-syntax-entry ?\/ "." py-mode-syntax-table) |
| 751 (modify-syntax-entry ?\| "." py-mode-syntax-table) | 850 ;; (modify-syntax-entry ?\< "." py-mode-syntax-table) |
| 752 ;; For historical reasons, underscore is word class instead of | 851 ;; (modify-syntax-entry ?\= "." py-mode-syntax-table) |
| 753 ;; symbol class. GNU conventions say it should be symbol class, but | 852 ;; (modify-syntax-entry ?\> "." py-mode-syntax-table) |
| 754 ;; there's a natural conflict between what major mode authors want | 853 ;; (modify-syntax-entry ?\| "." py-mode-syntax-table) |
| 755 ;; and what users expect from `forward-word' and `backward-word'. | 854 ;; ;; For historical reasons, underscore is word class instead of |
| 756 ;; Guido and I have hashed this out and have decided to keep | 855 ;; ;; symbol class. GNU conventions say it should be symbol class, but |
| 757 ;; underscore in word class. If you're tempted to change it, try | 856 ;; ;; there's a natural conflict between what major mode authors want |
| 758 ;; binding M-f and M-b to py-forward-into-nomenclature and | 857 ;; ;; and what users expect from `forward-word' and `backward-word'. |
| 759 ;; py-backward-into-nomenclature instead. This doesn't help in all | 858 ;; ;; Guido and I have hashed this out and have decided to keep |
| 760 ;; situations where you'd want the different behavior | 859 ;; ;; underscore in word class. If you're tempted to change it, try |
| 761 ;; (e.g. backward-kill-word). | 860 ;; ;; binding M-f and M-b to py-forward-into-nomenclature and |
| 762 (modify-syntax-entry ?\_ "w" py-mode-syntax-table) | 861 ;; ;; py-backward-into-nomenclature instead. This doesn't help in all |
| 763 ;; Both single quote and double quote are string delimiters | 862 ;; ;; situations where you'd want the different behavior |
| 764 (modify-syntax-entry ?\' "\"" py-mode-syntax-table) | 863 ;; ;; (e.g. backward-kill-word). |
| 765 (modify-syntax-entry ?\" "\"" py-mode-syntax-table) | 864 ;; (modify-syntax-entry ?\_ "w" py-mode-syntax-table) |
| 766 ;; backquote is open and close paren | 865 ;; ;; Both single quote and double quote are string delimiters |
| 767 (modify-syntax-entry ?\` "$" py-mode-syntax-table) | 866 ;; (modify-syntax-entry ?\' "\"" py-mode-syntax-table) |
| 768 ;; comment delimiters | 867 ;; (modify-syntax-entry ?\" "\"" py-mode-syntax-table) |
| 769 (modify-syntax-entry ?\# "<" py-mode-syntax-table) | 868 ;; ;; backquote is open and close paren |
| 770 (modify-syntax-entry ?\n ">" py-mode-syntax-table) | 869 ;; (modify-syntax-entry ?\` "$" py-mode-syntax-table) |
| 771 ) | 870 ;; ;; comment delimiters |
| 871 ;; (modify-syntax-entry ?\# "<" py-mode-syntax-table) | |
| 872 ;; (modify-syntax-entry ?\n ">" py-mode-syntax-table) | |
| 873 ;; | |
| 874 ;; ) | |
| 875 ;; 2009-09-09 a.roehler@web.de changed section end | |
| 772 | 876 |
| 773 ;; An auxiliary syntax table which places underscore and dot in the | 877 ;; An auxiliary syntax table which places underscore and dot in the |
| 774 ;; symbol class for simplicity | 878 ;; symbol class for simplicity |
| 775 (defvar py-dotted-expression-syntax-table nil | 879 (defvar py-dotted-expression-syntax-table nil |
| 776 "Syntax table used to identify Python dotted expressions.") | 880 "Syntax table used to identify Python dotted expressions.") |
| 1159 "Major mode for editing Python files. | 1263 "Major mode for editing Python files. |
| 1160 To submit a problem report, enter `\\[py-submit-bug-report]' from a | 1264 To submit a problem report, enter `\\[py-submit-bug-report]' from a |
| 1161 `python-mode' buffer. Do `\\[py-describe-mode]' for detailed | 1265 `python-mode' buffer. Do `\\[py-describe-mode]' for detailed |
| 1162 documentation. To see what version of `python-mode' you are running, | 1266 documentation. To see what version of `python-mode' you are running, |
| 1163 enter `\\[py-version]'. | 1267 enter `\\[py-version]'. |
| 1164 | |
| 1165 This mode knows about Python indentation, tokens, comments and | 1268 This mode knows about Python indentation, tokens, comments and |
| 1166 continuation lines. Paragraphs are separated by blank lines only. | 1269 continuation lines. Paragraphs are separated by blank lines only. |
| 1167 | |
| 1168 COMMANDS | 1270 COMMANDS |
| 1169 \\{py-mode-map} | 1271 \\{py-mode-map} |
| 1170 VARIABLES | 1272 VARIABLES |
| 1171 | |
| 1172 py-indent-offset\t\tindentation increment | 1273 py-indent-offset\t\tindentation increment |
| 1173 py-block-comment-prefix\t\tcomment string used by `comment-region' | 1274 py-block-comment-prefix\t\tcomment string used by `comment-region' |
| 1174 py-python-command\t\tshell command to invoke Python interpreter | 1275 py-python-command\t\tshell command to invoke Python interpreter |
| 1175 py-temp-directory\t\tdirectory used for temp files (if needed) | 1276 py-temp-directory\t\tdirectory used for temp files (if needed) |
| 1176 py-beep-if-tab-change\t\tring the bell if `tab-width' is changed" | 1277 py-beep-if-tab-change\t\tring the bell if `tab-width' is changed" |
| 1177 (interactive) | 1278 (interactive) |
| 1178 ;; set up local variables | 1279 ;; set up local variables |
| 1179 (kill-all-local-variables) | 1280 (kill-all-local-variables) |
| 1180 (make-local-variable 'font-lock-defaults) | 1281 ;; (make-local-variable 'font-lock-defaults) |
| 1181 (make-local-variable 'paragraph-separate) | 1282 (make-local-variable 'paragraph-separate) |
| 1182 (make-local-variable 'paragraph-start) | 1283 (make-local-variable 'paragraph-start) |
| 1183 (make-local-variable 'require-final-newline) | 1284 (make-local-variable 'require-final-newline) |
| 1184 (make-local-variable 'comment-start) | 1285 (make-local-variable 'comment-start) |
| 1185 (make-local-variable 'comment-end) | 1286 (make-local-variable 'comment-end) |
| 1190 (make-local-variable 'indent-line-function) | 1291 (make-local-variable 'indent-line-function) |
| 1191 (make-local-variable 'add-log-current-defun-function) | 1292 (make-local-variable 'add-log-current-defun-function) |
| 1192 (make-local-variable 'fill-paragraph-function) | 1293 (make-local-variable 'fill-paragraph-function) |
| 1193 ;; | 1294 ;; |
| 1194 (set-syntax-table py-mode-syntax-table) | 1295 (set-syntax-table py-mode-syntax-table) |
| 1195 (setq major-mode 'python-mode | 1296 ;; 2009-09-10 a.roehler@web.de changed section start |
| 1196 mode-name "Python" | 1297 ;; from python.el, version "22.1" |
| 1197 local-abbrev-table python-mode-abbrev-table | 1298 (set (make-local-variable 'font-lock-defaults) |
| 1198 font-lock-defaults '(python-font-lock-keywords) | 1299 '(python-font-lock-keywords nil nil nil nil |
| 1199 paragraph-separate "^[ \t]*$" | 1300 (font-lock-syntactic-keywords |
| 1200 paragraph-start "^[ \t]*$" | 1301 . python-font-lock-syntactic-keywords))) |
| 1201 require-final-newline t | 1302 ;; 2009-09-10 a.roehler@web.de changed section end |
| 1202 comment-start "# " | 1303 (setq major-mode 'python-mode |
| 1203 comment-end "" | 1304 mode-name "Python" |
| 1204 comment-start-skip "# *" | 1305 local-abbrev-table python-mode-abbrev-table |
| 1205 comment-column 40 | 1306 ;; 2009-09-10 a.roehler@web.de changed section start |
| 1307 ;; font-lock-defaults ... | |
| 1308 ;; 2009-09-10 a.roehler@web.de changed section end | |
| 1309 paragraph-separate "^[ \t]*$" | |
| 1310 paragraph-start "^[ \t]*$" | |
| 1311 require-final-newline t | |
| 1312 comment-start "# " | |
| 1313 comment-end "" | |
| 1314 comment-start-skip "# *" | |
| 1315 comment-column 40 | |
| 1206 comment-indent-function 'py-comment-indent-function | 1316 comment-indent-function 'py-comment-indent-function |
| 1207 indent-region-function 'py-indent-region | 1317 indent-region-function 'py-indent-region |
| 1208 indent-line-function 'py-indent-line | 1318 indent-line-function 'py-indent-line |
| 1209 ;; tell add-log.el how to find the current function/method/variable | 1319 ;; tell add-log.el how to find the current function/method/variable |
| 1210 add-log-current-defun-function 'py-current-defun | 1320 add-log-current-defun-function 'py-current-defun |
| 1211 | 1321 fill-paragraph-function 'py-fill-paragraph) |
| 1212 fill-paragraph-function 'py-fill-paragraph | |
| 1213 ) | |
| 1214 (use-local-map py-mode-map) | 1322 (use-local-map py-mode-map) |
| 1215 ;; add the menu | 1323 ;; add the menu |
| 1216 (if py-menu | 1324 (if py-menu |
| 1217 (easy-menu-add py-menu)) | 1325 (easy-menu-add py-menu)) |
| 1218 ;; Emacs 19 requires this | 1326 ;; Emacs 19 requires this |
| 1221 ;; Install Imenu if available | 1329 ;; Install Imenu if available |
| 1222 (when (py-safe (require 'imenu)) | 1330 (when (py-safe (require 'imenu)) |
| 1223 (setq imenu-create-index-function #'py-imenu-create-index-function) | 1331 (setq imenu-create-index-function #'py-imenu-create-index-function) |
| 1224 (setq imenu-generic-expression py-imenu-generic-expression) | 1332 (setq imenu-generic-expression py-imenu-generic-expression) |
| 1225 (if (fboundp 'imenu-add-to-menubar) | 1333 (if (fboundp 'imenu-add-to-menubar) |
| 1226 (imenu-add-to-menubar (format "%s-%s" "IM" mode-name))) | 1334 (imenu-add-to-menubar (format "%s-%s" "IM" mode-name)))) |
| 1227 ) | |
| 1228 ;; Run the mode hook. Note that py-mode-hook is deprecated. | 1335 ;; Run the mode hook. Note that py-mode-hook is deprecated. |
| 1229 (if python-mode-hook | 1336 (if python-mode-hook |
| 1230 (run-hooks 'python-mode-hook) | 1337 (run-hooks 'python-mode-hook) |
| 1231 (run-hooks 'py-mode-hook)) | 1338 (run-hooks 'py-mode-hook)) |
| 1232 ;; Now do the automagical guessing | 1339 ;; Now do the automagical guessing |
| 1233 (if py-smart-indentation | 1340 (if py-smart-indentation |
| 1234 (let ((offset py-indent-offset)) | 1341 (let ((offset py-indent-offset)) |
| 1235 ;; It's okay if this fails to guess a good value | 1342 ;; It's okay if this fails to guess a good value |
| 1236 (if (and (py-safe (py-guess-indent-offset)) | 1343 (if (and (py-safe (py-guess-indent-offset)) |
| 1237 (<= py-indent-offset 8) | 1344 (<= py-indent-offset 8) |
| 1238 (>= py-indent-offset 2)) | 1345 (>= py-indent-offset 2)) |
| 1239 (setq offset py-indent-offset)) | 1346 (setq offset py-indent-offset)) |
| 1240 (setq py-indent-offset offset) | 1347 (setq py-indent-offset offset) |
| 1241 ;; Only turn indent-tabs-mode off if tab-width != | 1348 ;; Only turn indent-tabs-mode off if tab-width != |
| 1242 ;; py-indent-offset. Never turn it on, because the user must | 1349 ;; py-indent-offset. Never turn it on, because the user must |
| 1243 ;; have explicitly turned it off. | 1350 ;; have explicitly turned it off. |
| 1244 (if (/= tab-width py-indent-offset) | 1351 (if (/= tab-width py-indent-offset) |
| 1245 (setq indent-tabs-mode nil)) | 1352 (setq indent-tabs-mode nil)))) |
| 1246 )) | |
| 1247 ;; Set the default shell if not already set | 1353 ;; Set the default shell if not already set |
| 1248 (when (null py-which-shell) | 1354 (when (null py-which-shell) |
| 1249 (py-toggle-shells (py-choose-shell)))) | 1355 (py-toggle-shells (py-choose-shell)))) |
| 1250 | 1356 |
| 1251 | 1357 |
