;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301\302\303#\210\304\305\302\306\307\310%\207" [require smie nil t custom-declare-group smalltalk-mode "Custom group for the Smalltalk major mode" :group languages] 6) #@59 A regular expression that matches a Smalltalk identifier. (defvar smalltalk-name-regexp "[[:alpha:]][[:alnum:]_]*" (#$ . 593)) #@56 A regular expression that matches a Smalltalk keyword. (defvar smalltalk-keyword-regexp (concat smalltalk-name-regexp ":") (#$ . 726)) #@70 The collection of character that can compose a Smalltalk identifier. (defvar smalltalk-name-chars "[:alnum:]_" (#$ . 867)) (defvar smalltalk-whitespace " \n\f") (byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\306\313%\210\300\314\302\303\315DD\316\306\313%\207" [custom-declare-variable smalltalk-indent-amount funcall function #[0 "\300\207" [4] 1] "'Tab size'; used for simple indentation alignment." :type integer smalltalk-indent-align-colon #[0 "\300\207" [nil] 1] "If non-nil, try and align the `:' of keyword selectors." boolean smalltalk-use-smie #[0 "\300\301!\207" [featurep smie] 2] "Whether to use SMIE for indentation and navigation.\nRequires Emacsā‰„23.3."] 6) #@38 Syntax table used by Smalltalk mode. (defvar smalltalk-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\301\320\321#\210\301\322\323#\210\301\324\325#\210\301\326\327#\210\301\330\331#\210\301\332\303#\210\301\333\303#\210\301\334\303#\210\301\335\303#\210\301\336\303#\210\301\337\303#\210\301\340\303#\210\301\341\303#\210\301\342\303#\210\301\343\303#\210\301\344\303#\210\301\345\303#\210\301\346\303#\210\301\347\303#\210\301\350\303#\210\301\351\303#\210\301\352\303#\210\211\207" [make-syntax-table modify-syntax-entry 58 ". " 95 "_ " 34 "! " 39 "\"' " 35 "' " 40 "() " 41 ")( " 91 "(] " 93 ")[ " 123 "(} " 125 "){ " 36 "/ " 33 59 124 94 60 62 43 45 42 47 61 37 38 92 126 64 44] 5) (#$ . 1580)) (define-abbrev-table 'smalltalk-mode-abbrev-table nil "Abbrev table in use in `smalltalk-mode' buffers.") #@35 Keymap of template creation keys. (defvar smalltalk-template-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\211\207" [make-sparse-keymap define-key "p" smalltalk-private-template "c" smalltalk-class-template "i" smalltalk-instance-template] 5) (#$ . 2545)) #@28 Keymap for Smalltalk mode. (defvar smalltalk-mode-map (byte-code "\302 \204\303\304\305#\210\303\306\307#\210\303\310\311#\210\303\312\313#\210\303\314\315#\210\303\316\317#\210\303\320 #\210\204L\303\321\305#\210\303\322\307#\210\303\323\311#\210\303\324\313#\210\303\325\326#\210\327\330!\204^\303\331\332#\210\303\333\334#\210\303\335\336#\210\303\337\340#\210\303\341\342#\210\303\343\344#\210\303\345\346#\210\211\207" [smalltalk-use-smie smalltalk-template-map make-sparse-keymap define-key "" smalltalk-begin-of-defun "" smalltalk-end-of-defun "" smalltalk-forward-sexp "" smalltalk-backward-sexp "" smalltalk-goto-previous-keyword "" smalltalk-goto-next-keyword "" "\201" "\205" "\206" "\202" "!" smalltalk-bang fboundp electric-indent-local-mode ":" smalltalk-colon "d" smalltalk-doit "f" smalltalk-filein-buffer "m" gst "p" smalltalk-print "q" smalltalk-quit "s" smalltalk-snapshot] 5) (#$ . 2837)) #@83 Smalltalk binary selectors. Also matches the assignment operator (in submatch 1). (defconst smalltalk-binsel "[-+*/~,<>=|&?]\\{1,2\\}\\|\\(:=\\)" (#$ . 3797)) #@40 Basic Smalltalk keywords font-locking. (defconst smalltalk-font-lock-keywords (byte-code "\302P\303B\304\305Q\306B \307B\310BBB\207" [smalltalk-name-regexp smalltalk-binsel "#" ((0 'font-lock-constant-face)) "\\<" ":" ((0 'font-lock-function-name-face)) ((0 'font-lock-function-name-face)) (("\\^" (0 'font-lock-builtin-face)) ("\\$." (0 'font-lock-string-face)) ("\\<[[:upper:]][[:alnum:]_]*\\>" (0 'font-lock-type-face)))] 4) (#$ . 3962)) #@42 Level 1 Smalltalk font-locking keywords. (defconst smalltalk-font-lock-keywords-1 smalltalk-font-lock-keywords (#$ . 4411)) #@42 Level 2 Smalltalk font-locking keywords. (defconst smalltalk-font-lock-keywords-2 (append smalltalk-font-lock-keywords-1 '(("\\<\\(true\\|false\\|nil\\)\\>" . font-lock-constant-face) ("\\<\\(self\\|super\\)\\>" . font-lock-keyword-face) (":[[:lower:]][[:alnum:]_]*" . font-lock-variable-name-face))) (#$ . 4541)) #@26 Category of last method. (defvar smalltalk-last-category "" (#$ . 4861)) #@16 (fn SYM EXP) (defalias 'smalltalk--when-fboundp '(macro . #[514 "\300!\203\207\301\302\303\300\302DDEDD\207" [fboundp eval quote if] 8 (#$ . 4940)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put smalltalk--when-fboundp lisp-indent-function 1 put edebug-form-spec (symbolp form)] 5) #@63 Return non-nil if the `<' at point starts a pragma. (fn POS) (defalias 'smalltalk--pragma-start-p #[257 "\212\211b\210\300`[!\210`Sf\211\301>\203\302\202,\211\303=\203+`W\205,\304`S!\305\232\202,\306\262)\207" [forward-comment (91 nil) t 62 syntax-after (5 . 60) nil] 4 (#$ . 5257)]) #@61 Return non-nil if the `>' at point ends a pragma. (fn POS) (defalias 'smalltalk--pragma-end-p #[257 "\212\300!\211A@\205\211A@f\301=\262)\207" [syntax-ppss 60] 4 (#$ . 5556)]) (defconst smalltalk--syntax-propertize #[514 "b\210`W\205\300\301\302#\205\303\224\2032\303\224\303\225\304\305 8\205\"\306\211\203-\307\310$\210\266\202\311\224\203f\312\313!\211A\314\233\241\210\315!\266\316\224\316\225\212\317\305\316\224!8)\205V\306\211\203a\307\310$\210\266\202\317\224\203\226\312\313!\211A\304\233\241\210\315!\266\316\224\316\225\320\316\224!\205\206\321\211\203\221\307\310$\210\266\202\322\224\203\306\312\313!\211A\323\233\241\210\315!\266\316\224\316\225\324\316\224!\205\266\325\211\203\301\307\310$\210\266\202\326\224\203\327\307\326\224\326\225\310\306$\210\202\314\224\203\312\313!\211A\327\233\241\210\315!\266\303\224\303\225\212\305\316\224!\211A@\205\211A@b\210\330 ?\205\306\262)\211\203\307\310$\210\266\202\207" [re-search-forward "\\(\\$\\)[][(){}'\")]\\|\\(''\\)\\|\\(<\\)\\|\\(>\\)\\|![ \n]*\n[[:lower:]][[:alnum:]_:. ]*\\(\n\\)\\|][ ]*\\(\n\\)" t 1 8 syntax-ppss (1) put-text-property syntax-table 2 match-data ints 6 set-match-data 0 3 smalltalk--pragma-start-p (4 . 62) 4 10 smalltalk--pragma-end-p (5 . 60) 5 12 smalltalk--smie-exp-p] 10 "\n\n(fn START END)"]) #@176 Move to the beginning of a defun. If search is successful, return t; point ends up at the beginning of the line where the search succeeded. Otherwise, return nil. (fn ARG) (defalias 'smalltalk--goto-defun-start #[257 "\211\300W\2037\301\302\303\304#\2031\305\306 8\204`Sf\307=\203'\212\310u\210\311 )\204\211T\211\262\300W\204\310u\210\202l\312`[!\210`Sf\313=\203G\310u\210\314\302\303\304#\203l\305\306 8\204G\303f\307=\203b\311 \204G\211S\211\262\300V\204G\303f\211\307=\203y\315 \202\211\211\313=\203\210\316u\210\312d!\202\211\303\207" [0 re-search-forward "[[!]" nil move 8 syntax-ppss 91 -1 smalltalk--smie-exp-p forward-comment 33 re-search-backward smalltalk--smie-begin-def 1] 5 (#$ . 6929)]) #@40 Move forward to end of defun at point. (defalias 'smalltalk--goto-defun-end #[0 "`\300`[!\210`Sf\301=\203\302\303!\202+\211b\210\304\305\306\307#\203&\310\311 8\204\312u\210\313 \207" [forward-comment 33 smie-forward-sexp "!" search-forward "[" nil t 8 syntax-ppss -1 forward-sexp] 5 (#$ . 7662)]) (defvar smalltalk--smie-grammar (byte-code "\300\301!\205\302\207" [fboundp smie-bnf->prec2 ((:smie-closer-alist (#3="|-open" . "|") (#4="[" . #2="]") (#5="<" . #1=">")) (#1# 80 (81)) (#2# 0 (82)) (#3# (83) 79) (#4# (84) 0) ("^" (85) 46) ("bin-sel" 68 68) ("kw-sel" 68 68) (#5# (86) 80) ("!" 11 11) (":=" 87 45) ("_" 88 44) (";" 57 57) ("\n" 33 33) ("." 33 33) ("|" 79 22))] 2)) (defconst smalltalk--smie-id-re (concat #1="\\(:\\)?" smalltalk-name-regexp "\\(?:\\." smalltalk-name-regexp "\\)*" #1#)) (defconst smalltalk--smie-symbol-re (concat "#\\(?:" smalltalk-binsel "\\|\\(?:" smalltalk-name-regexp "\\(?:\\(?::" smalltalk-name-regexp "\\)*:" "\\|\\(?:\\." smalltalk-name-regexp "\\)*" "\\)\\)\\)")) (defconst smalltalk--smie-number-re "\\(?:[0-9]+r\\)?-?[0-9][0-9.]*\\(?:[deqs]-?[0-9]+\\)?") (defalias 'smalltalk--smie-|-kind #[0 "\212\300`[!\210hz\301>)\203\302\207\303\207" [forward-comment (119 95) "|" "|-open"] 2]) (defalias 'smalltalk--smie-forward-token #[0 "\304d!\210\305\306!\203\f\307\207\305!\203\310\225b\210\311\207\305 !\203$\310\225b\210\312\207\305\n!\2037\310\225b\210\313\224\2035\314\207\315\207\305 !\203I\310\225b\210\316\317!\206g\320\207\305\321!\203W\310\225\322 b\210\207\305\323!\203e\310\225b\210\316\310!\207\324 \207" [smalltalk--smie-symbol-re smalltalk--smie-number-re smalltalk--smie-id-re smalltalk-binsel forward-comment looking-at "\\s(\\|\\s)" "" 0 "lit-symbol" "lit-number" 2 "kw-sel" "id" match-string 1 "bin-sel" "|" smalltalk--smie-|-kind "[;.!^]" smie-default-forward-token] 3]) (defalias 'smalltalk--smie-backward-token #[0 "\302`[!\210\303\304`S\"\203\305\207`Sf\306=\203H`S\206`Sf\206#\307z\310>\203H\311u\210\312\313x\210`Sf\306=\203F\303\314 \"\203F\315\224b\210\316\207\317\207hz\320>\203o\321\313x\210`Sf\322=\203`\311u\210\316\207`Sf\323=\203m\311u\210\324\207\325\207\303 `\326Z\327#\203\222\315\224b\210`Sf\322=\203\212\311u\210\316\207\330\331!\206\221\332\207`Sf\333=\203\240\311u\210\334 \207\335`Sf\336\"\203\261\311u\210``T{\207\337 \207" [smalltalk--smie-symbol-re smalltalk-binsel forward-comment looking-back "\\s(\\|\\s)" "" 58 32 (119 95) -1 "[:alnum:]_" nil line-beginning-position 0 "lit-symbol" "kw-sel" (119 95) "[:alnum:]_." 35 45 "lit-number" "id" 2 t match-string 1 "bin-sel" 124 smalltalk--smie-|-kind memql (59 46 94 33) smie-default-backward-token] 4]) #@66 Return non-nil if the thing at point is allowed to be an /expr/. (defalias 'smalltalk--smie-exp-p #[0 "\212\300 \211\301\235\203 \302\202\"\211\303\235\204\211\304\232\204\305\202\"\306\307`S\"\262)\207" [smalltalk--smie-backward-token ("|" "!" "^" "." "_" ":=" "kw-sel" "bin-sel") t ("lit-number" "lit-symbol" ";" "|-open") "" nil looking-back "\\s("] 4 (#$ . 10337)]) (defalias 'smalltalk--smie-begin-def #[0 "\300\301 \302\235\203`\262\202\211b\207" [nil smalltalk--smie-backward-token ("bin-sel" "kw-sel" "id")] 3]) #@19 (fn METHOD ARG) (defalias 'smalltalk--smie-rules #[514 "B\211:\205$\211@\211\303=\203A\211\304=\205\262\202\"\211\305=\203\204A\211\306\232\2030\307\202\211\310\232\203:\307\202\211\311\235\203D\202\211\312\232\203T\313\314!\205\202\211\315\232\203~\212\316u\210\317\320!\3218\211\315\232?\205v\322\316!\210\323\316!\210\324iB\262\262)\202\325\262\202\"\211\326=\203!A\211\327\232\203\373`\330 !\205\236\331\332\307!!\211\205\366\212\307\225b\210\317\320!\3218\211\327\232\203\323A@b\210\330 !\205\303\331\332\307!!\n\203\315\211Z\202\316\307\262\202\361\211\314\232\204\337\211\333\232\203\343\307\202\361`W\205\361i\324\\B\262\262\262)\266\202\202\211\334\232\203\335 \203\336 \205\337 \202\212\340 \210\324i)B\202\325\262\202\"\325\262\207" [smalltalk-indent-amount smalltalk--smie-id-re smalltalk-indent-align-colon :elem basic :after "|" 0 ">" ("_" ":=") "\n" smie-rule-parent-p "!" ";" 1 smie-backward-sexp halfsexp 2 forward-sexp forward-comment column nil :before "kw-sel" looking-at string-width match-string "bin-sel" "[" smalltalk--smie-exp-p smie-rule-hanging-p smie-rule-parent smalltalk--smie-begin-def] 13 (#$ . 10876)]) (defvar smalltalk-prettify-symbols-alist '(("^" . 8593) ("_" . 8592) (":=" . 8592))) (defvar smalltalk-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [smalltalk-mode-hook variable-documentation put "Hook run after entering Smalltalk mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp smalltalk-mode-map definition-name smalltalk-mode] 4) (defvar smalltalk-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [smalltalk-mode-abbrev-table smalltalk-mode-map variable-documentation put purecopy "Keymap for `smalltalk-mode'." boundp smalltalk-mode-syntax-table definition-name smalltalk-mode (lambda (#1=#:def-tmp-var) (defvar smalltalk-mode-syntax-table #1#)) make-syntax-table "Syntax table for `smalltalk-mode'." (lambda (#1#) (defvar smalltalk-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `smalltalk-mode'." derived-mode-parent prog-mode] 5) #@246 Major mode for editing Smalltalk code. Commands: \{smalltalk-mode-map} In addition to any hooks its parent mode `prog-mode' might have run, this mode runs the hook `smalltalk-mode-hook', as the final or penultimate step during initialization. (defalias 'smalltalk-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R @=\204R\326 \325@C#\210\327 !\210\330\f!\210 @ @\306\331!\210\332AP\306\333!\210\306\334!\210\307\306\335!\210\336\337\340!\203\215\341\306\340!\342\"\210B\203\243\343\344!\203\243\344C\345\346\347\350\351&\210\306\352!\210D*\306\353!\210\307+\306\354!\210\355,\306\356!\210\355.\306\357!\210\360/\306\361!\210\3621\306\363!\210\3643\306\365!\210\3075\306\366!\210E6\306\367!\210\3707\306\371!\210\3729\306\373!\210\374;\306\375!\210\376=)\377\201F!\207" [delay-mode-hooks major-mode mode-name smalltalk-mode-map smalltalk-mode-syntax-table smalltalk-mode-abbrev-table make-local-variable t prog-mode smalltalk-mode "Smalltalk" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table paragraph-start "^$\\|" paragraph-separate paragraph-ignore-fill-prefix indent-line-function smalltalk-indent-line boundp electric-indent-chars add-to-list 58 fboundp smie-setup smalltalk--smie-rules :forward-token smalltalk--smie-forward-token :backward-token smalltalk--smie-backward-token prettify-symbols-alist require-final-newline comment-start "\"" comment-end comment-start-skip "\"[ ]*" comment-end-skip "[ ]*\"" comment-indent-function smalltalk-comment-indent parse-sexp-ignore-comments syntax-propertize-function beginning-of-defun-function smalltalk--goto-defun-start end-of-defun-function smalltalk--goto-defun-end font-lock-defaults ((smalltalk-font-lock-keywords smalltalk-font-lock-keywords-1 smalltalk-font-lock-keywords-2) nil nil nil nil) find-tag-default-function smalltalk-find-message run-mode-hooks local-abbrev-table page-delimiter smalltalk-use-smie smalltalk--smie-grammar smalltalk-prettify-symbols-alist smalltalk--syntax-propertize smalltalk-mode-hook] 7 (#$ . 13366) nil]) (byte-code "\301\302\303\"\210\301\300\304\"\210\301\300\305\30628\211\2034\211@\307@\310\"\203-\311A!\203-\312\306A\"\210A\266\202\202\306\2620B\"\210\301\313\314!\203F\314\202G\315\305\"\207" [auto-mode-alist add-to-list hs-special-modes-alist (smalltalk-mode "\\[" "\\]" "\"=" nil nil) ("\\.st\\'" . smalltalk-mode) "\\.star\\'" archive-mode string-match "Starfile.zip" functionp throw boundp inhibit-local-variables-regexps inhibit-first-line-modes-regexp] 8) (defalias 'smalltalk-tab #[0 "\301i\\\245_\262\211j\207" [smalltalk-indent-amount nil] 3 nil nil]) (defalias 'smalltalk-bang-begin-of-defun #[0 "\301\302\211`\262\303\304\302\305#\203#\306 \3078\205\3078b\210\310\262\204`\262\311\304!\203/\312u\210\313 \210`U\205P\211eU?\205P\211b\210\314 \210h\315U\203N\316u\210\317 )\207" [parse-sexp-ignore-comments t nil search-backward "!" to-end syntax-ppss 8 keep-searching looking-at 1 smalltalk-forward-whitespace smalltalk-backward-whitespace 33 -1 smalltalk-begin-of-defun] 7]) (defalias 'smalltalk-scope-begin-of-defun #[0 "\300\211\301 \211\205\217`U?\205\217\302u\210\303\300x\210n\203 \302u\210\202#\300\210`\262\211b\210\304\300w\210\305u\210\3061N`W\205J\307\310!\203C`\262\311\305!\210\20240\202R\210\202S\210\203\215b\210\3121|\311\305!\210`W\205x`Sf\313U\205x\314\303!\210`\211\2620\202\200\210\202\201\210b\210\315 \210\303\300w\202\217\211b\207" [nil smalltalk-current-scope-point -1 " " "^[" 1 (error) looking-at "[ ]*\\[" forward-sexp (error) 93 skip-syntax-forward beginning-of-line] 5]) #@132 Skips to the beginning of the current method. If already at the beginning of a method, skips to the beginning of the previous one. (defalias 'smalltalk-begin-of-defun #[0 "\300 \203\301 \207\302 \207" [smalltalk-in-bang-syntax smalltalk-bang-begin-of-defun smalltalk-scope-begin-of-defun] 1 (#$ . 17289) nil]) #@132 Skips to the beginning of the current method. If already at the beginning of a method, skips to the beginning of the previous one. (defalias 'smalltalk-begin-of-scope #[0 "\300 \211\205\211b\207" [smalltalk-current-scope-point] 2 (#$ . 17608) nil]) #@59 Move point left to the next smalltalk expression. (fn N) (defalias 'smalltalk-forward-sexp #[257 "\211\301W\203 \302[!\207\204\303!\207\211\301V\205'\304 \210\303\305!\210\211S\262\202\207" [parse-sexp-ignore-comments 0 smalltalk-backward-sexp forward-sexp smalltalk-forward-whitespace 1] 3 (#$ . 17865) "p"]) #@60 Move point right to the next smalltalk expression. (fn N) (defalias 'smalltalk-backward-sexp #[257 "\211\301W\203 \302[!\207\204\303!\207\211\301V\205'\304 \210\303\305!\210\211S\262\202\207" [parse-sexp-ignore-comments 0 smalltalk-forward-sexp backward-sexp smalltalk-backward-whitespace 1] 3 (#$ . 18192) "p"]) (byte-code "\300\301\302\303#\210\304\301\302\303#\210\300\305\306\303#\210\304\305\306\303#\207" [defalias smalltalk-reindent indent-according-to-mode nil make-obsolete smalltalk-newline-and-indent newline-and-indent] 4) #@367 Possibly reindents a line when a colon is typed. If the colon appears on a keyword that's at the start of the line (ignoring whitespace, of course), then the previous line is examined to see if there is a colon on that line, in which case this colon should be aligned with the left most character of that keyword. This function is not fooled by nested expressions. (defalias 'smalltalk-colon #[0 "\302\211\303\304 \262\3058\204*\212\306\302x\210\307 !\203\"\310 \204\"\311 \262)\203*\312 \210\313\314!)\207" [parse-sexp-ignore-comments smalltalk-name-regexp nil t syntax-ppss 8 "A-Za-z0-9_" looking-at smalltalk-at-begin-of-defun smalltalk-white-to-bolp smalltalk-indent-for-colon self-insert-command 1] 4 (#$ . 18745) nil]) #@41 Go to the end of the method definition. (defalias 'smalltalk-bang #[0 "\300\301 8\203\n\302c\207\303 \203 \302c\210\212\304 \210\305\306!\205\307 )\207\310 \207" [8 syntax-ppss "!" smalltalk-in-bang-syntax beginning-of-line looking-at "^[ ]+!" delete-horizontal-space smalltalk-end-of-defun] 2 (#$ . 19486) nil]) (defalias 'smalltalk-end-of-defun #[0 "\300 \203\301\302!\210\303u\210\304\305!\205*\301\303!\210\303u\207\306\210\307 \210\310\306w\210\311\303!\210\312\306w\207" [smalltalk-in-bang-syntax search-forward "!" 1 looking-at "[ \n]+!" nil smalltalk-begin-of-defun "^[" forward-sexp " \n"] 2 nil nil]) (defalias 'smalltalk-last-category-name #[0 "\207" [smalltalk-last-category] 1]) #@15 (fn STRING) (defalias 'smalltalk-insert-indented-line #[257 "\300\301\"c\210\212\302u\210\303 )\207" [format "%s\n" -1 smalltalk-indent-line] 4 (#$ . 20196)]) #@10 (fn N) (defalias 'smalltalk-maybe-insert-spacing-line #[257 "\212\211[y\210\300\301!)?\205\302c\207" [looking-at "^[ ]*$" "\n"] 3 (#$ . 20364)]) #@36 (fn SELECTOR-NAME CATEGORY-NAME) (defalias 'smalltalk-insert-method-body #[514 "\300\301 \210\302 \210\301 \210\303 \262\211\204\304 \210\301 \210\305\306!\210\307\310\311\"!\210\212\312c\210\313\232\2044\307\310\314\"!\210\307\315!\210\305\316!\210)\317 \210\300\207" [nil beginning-of-line smalltalk-forward-whitespace smalltalk-at-begin-of-defun smalltalk-end-of-defun smalltalk-maybe-insert-spacing-line 1 smalltalk-insert-indented-line format "%s [" "\n" "" "" "]" 0 smalltalk-indent-line] 7 (#$ . 20520)]) #@47 (fn CLASS-NAME SELECTOR-NAME CATEGORY-NAME) (defalias 'smalltalk-instance-template-fn #[771 "\211\301 \210\302\303 \232\203\202\304\305#\"\207" [smalltalk-last-category smalltalk-exit-class-scope smalltalk-insert-method-body smalltalk-current-class-name format "%s >> %s"] 8 (#$ . 21064)]) #@47 (fn CLASS-NAME SELECTOR-NAME CATEGORY-NAME) (defalias 'smalltalk-class-template-fn #[771 "\211\301\232\203\302 \232\203\303\304\305\"\301\"\210\306\211\207\303\307 \203,\302 \232\203,\2021\304\310#\"\207" [smalltalk-last-category "" smalltalk-current-class-name smalltalk-insert-method-body format " %s class" "instance creation" smalltalk-in-class-scope "%s class >> %s"] 8 (#$ . 21372)]) #@33 (fn CLASS-NAME SELECTOR-NAME) (defalias 'smalltalk-private-template-fn #[514 "\300 \203 \301\302#\207\303\302#\207" [smalltalk-in-class-scope smalltalk-class-template-fn "private" smalltalk-instance-template-fn] 6 (#$ . 21790)]) #@19 (fn WITH-CLASS) (defalias 'smalltalk-maybe-read-class #[257 "\211\300U\203 \301 \207\302\303\301 \"\207" [1 smalltalk-current-class-name read-string "Class: "] 4 (#$ . 22032)]) #@19 (fn WITH-CLASS) (defalias 'smalltalk-instance-template #[257 "\300\301!\302\303!\302\304\305 \"#\207" [smalltalk-instance-template-fn smalltalk-maybe-read-class read-string "Selector: " "Category: " smalltalk-last-category-name] 7 (#$ . 22218) "p"]) #@19 (fn WITH-CLASS) (defalias 'smalltalk-class-template #[257 "\300!\301\302!\211\303\232\203\303\202\301\304\305 \"\306#\207" [smalltalk-maybe-read-class read-string "Selector: " "" "Category: " smalltalk-last-category-name smalltalk-class-template-fn] 8 (#$ . 22477) "p"]) #@19 (fn WITH-CLASS) (defalias 'smalltalk-private-template #[257 "\300\301!\302\303!\"\207" [smalltalk-private-template-fn smalltalk-maybe-read-class read-string "Selector: "] 5 (#$ . 22764) "p"]) (defalias 'smalltalk-comment-indent #[0 "\301\302!\203\303\207\207" [comment-column looking-at "^\"" 0] 2]) (defalias 'smalltalk-indent-line #[0 "\300\212\301 \210\302\303w\210\304 \204\305\306!\203\307 \204\310 \202 \311 )!\207" [smalltalk-indent-to-column beginning-of-line " " nil smalltalk-in-comment looking-at "[[:alpha:]][[:alnum:]_]*:" smalltalk-at-begin-of-defun smalltalk-indent-for-colon smalltalk-calculate-indent] 3]) #@18 (fn FOR-SCOPE) (defalias 'smalltalk-toplevel-indent #[257 "\30112\212\214~\210\302\210\303 \203\304 \210\202\305 \210\306 \210\211\303 U\203)\307 \202-\307 \\\262*0\207\210\310\207" [smalltalk-indent-amount (error) nil line-beginning-position smalltalk-begin-of-scope smalltalk-begin-of-defun smalltalk-forward-whitespace smalltalk-current-column 0] 4 (#$ . 23407)]) (defalias 'smalltalk-statement-indent #[0 "\302\211\211\211\212\214~\210\303 \210\304\305!\262e`}\210\306 \262\3078\2036\212\310 \210ii\311U\203.\311\202/\312\\\262)\202t\3138\314\232\203D\311\262\202t\211\203b\212~\210\315 \210\302u\210\316\312!\210\303 \210\315 \210i\262)\202t\212\317 \210o\204ph\320U\203s\311\262)\204\347\321 \210\303 \210\322 \262\317 \210o\203\255A@\203\245\304\323!\203\236\324 \\\262\202\347\325 \262\202\347\326\302!\262\202\347\327 \203\274\330 \210\325 \262\202\347h\331U\203\321\303 \210\315 \210\325 \\\262\202\347h\332U\203\347\212\303 \210\304\333!\203\346\326\302!\262)\206\377\212\3341\366\330 0\202\371\210\303 \210\325 \\)+\207" [parse-sexp-ignore-comments smalltalk-indent-amount nil beginning-of-line looking-at "[ ]*]" syntax-ppss 4 smalltalk-backward-comment 0 1 3 39 smalltalk-forward-whitespace backward-sexp smalltalk-backward-whitespace 33 smalltalk-narrow-to-method smalltalk-parse-sexp-and-narrow-to-paren "$" smalltalk-current-indent smalltalk-current-column smalltalk-toplevel-indent smalltalk-at-end-of-statement smalltalk-find-statement-begin 58 62 "[ ]*<[ ]*[[:alpha:]]+:" (error)] 6]) (defalias 'smalltalk-at-end-of-statement #[0 "\212h\300U\2064h\301U\2054\302u\210o\204&\303\304\305\"\203&\306\305x\210\307\305x\210\202h\301U\2033\302u\210\306\305x\210o)\207" [46 124 -1 looking-back "[ \na-zA-Z]" nil " \n" "a-zA-Z"] 3]) (defalias 'smalltalk-calculate-indent #[0 "\300 \203 \301\302!\207\303 \203\301\302!\207\304 \207" [smalltalk-at-begin-of-scope smalltalk-toplevel-indent t smalltalk-at-begin-of-defun smalltalk-statement-indent] 2]) #@61 Return non-nil if the current location is inside a comment. (defalias 'smalltalk-in-comment #[0 "\300\301 8\207" [4 syntax-ppss] 2 (#$ . 25449)]) #@108 Skip white space and comments forward, stopping at end of buffer or non-white space, non-comment character (defalias 'smalltalk-forward-whitespace #[0 "\301\302\303Q!\205\304w\210g\305U\203\306\307!\210\202\207" [smalltalk-whitespace looking-at "[" "]" nil 34 forward-comment 1] 4 (#$ . 25602)]) #@69 Like forward whitespace only going towards the start of the buffer. (defalias 'smalltalk-backward-whitespace #[0 "\301x\210h\302U\205\303\304\301\305\306$\210\202\207" [smalltalk-whitespace nil 34 search-backward "\"" t 2] 5 (#$ . 25912)]) #@77 Return the current column of the given line, regardless of narrowed buffer. (defalias 'smalltalk-current-column #[0 "\214~\210i)\207" [] 1 (#$ . 26163)]) #@74 Return the indentation of the given line, regardless of narrowed buffer. (defalias 'smalltalk-current-indent #[0 "\212\214~\210\300 \210\301\302w\210i*\207" [beginning-of-line " " nil] 2 (#$ . 26323)]) #@388 Leaves the point at the first non-blank, non-comment character of a new statement. If begininning of buffer is reached, then the point is left there. This routine only will return with the point pointing at the first non-blank on a line; it won't be fooled by multiple statements on a line into stopping prematurely. Also, goes to start of method if we started in the method selector. (defalias 'smalltalk-find-statement-begin #[0 "\300\211h\301U\203 \302u\210\204ao\204a\303 \210h\211\262\301U\203<\300`\262\304 \210\305 \2031`\262\2028\211b\210\306\307!\210\210\202 \211\310U\203K\302u\210`\262\202 \211\311U\203Z\304 \210`\262\202 \306\307!\210\202 \204neb\210\304 \210`\262\207" [nil 46 -1 smalltalk-backward-whitespace smalltalk-forward-whitespace smalltalk-white-to-bolp smalltalk-backward-sexp 1 94 33] 5 (#$ . 26533)]) #@154 Answer the closest previous open paren. Actually, skips over any block parameters, and skips over the whitespace following on the same line. (fn STATE) (defalias 'smalltalk-match-paren #[257 "\211A@\300\211\205\227\212b\210g\262\301=\204\302=\203!`T\202\226\303=\205\226\304u\210\300\262\211\204^\305\300w\210g\262\306=\203E\307\304!\210\202-\310=\203X\304u\210\305\300w\210\311\262\202-\311\262\202-g\310=\203m\300\262\304u\210\202p\311\262\211\204\225\305\300w\210g\262\310=\203\216\304u\210\305\300w\210\311\262\202p\307\304!\210\202p`)\207" [nil 40 123 91 1 " " 58 smalltalk-forward-sexp 124 t] 6 (#$ . 27391)]) #@175 Narrows the region to between point and the closest previous open paren. Actually, skips over any block parameters, and skips over the whitespace following on the same line. (defalias 'smalltalk-parse-sexp-and-narrow-to-paren #[0 "\301\302 \303!\211\203\211`}\210)\207" [parse-sexp-ignore-comments t syntax-ppss smalltalk-match-paren] 4 (#$ . 28051)]) #@81 Return T if at the beginning of a class or namespace definition, otherwise nil. (defalias 'smalltalk-at-begin-of-scope #[0 "\212\301\210\302 \203\303n\205\304 \210h\305U)\202&\306 \307 \205$\211\306 U\262)\207" [parse-sexp-ignore-comments nil smalltalk-in-bang-syntax t smalltalk-backward-whitespace 33 line-beginning-position smalltalk-begin-of-scope] 3 (#$ . 28414)]) #@69 Return T if at the beginning of a method definition, otherwise nil. (defalias 'smalltalk-at-begin-of-defun #[0 "\212\301\210\302 \203\303n\205\304 \210h\305U)\202&\306 \307 \205$\211\306 U\262)\207" [parse-sexp-ignore-comments nil smalltalk-in-bang-syntax t smalltalk-backward-whitespace 33 line-beginning-position smalltalk-begin-of-defun] 3 (#$ . 28799)]) (defalias 'smalltalk-indent-for-colon #[0 "\303\211\211\211\304\212\214~\210\305 \210\306 \210\307 \210\310 \210e`}\210\311 \210o\203)\312\304!\262\202\223h\211\262\313=\203>\314 \210\315 \\\262\202\223\316=\203N\314 \210\315 \262\202\223\314 \210\315 \\\262\317\n!\204\214\204\214m\204\214\320\321!\210\322 \210g\313=\203{\304\262\211\262\202]\204]\317\n!\203]\315 \262\202]\204\223\211\262*\206\232\323 )\207" [parse-sexp-ignore-comments smalltalk-indent-amount smalltalk-keyword-regexp nil t beginning-of-line smalltalk-end-of-paren smalltalk-narrow-to-method smalltalk-parse-sexp-and-narrow-to-paren smalltalk-backward-whitespace smalltalk-toplevel-indent 59 smalltalk-find-statement-begin smalltalk-current-column 46 looking-at smalltalk-forward-sexp 1 smalltalk-forward-whitespace smalltalk-current-indent] 6]) (defalias 'smalltalk-end-of-paren #[0 "`\300 \210`U?\205`\262\300 \210\202\207" [smalltalk-safe-forward-sexp] 3]) #@12 (fn COL) (defalias 'smalltalk-indent-to-column #[257 "\211\300 U\204\212\301 \210\302 \210\211j\210)n\205\303!\207" [smalltalk-current-indent beginning-of-line delete-horizontal-space move-to-column] 3 (#$ . 30142)]) #@100 Narrow the buffer to the contents of the method, exclusive of the method selector and temporaries. (defalias 'smalltalk-narrow-to-method #[0 "`\303\304\212\305 \210\306\307!\203G\310 \210g\311U\203\"\312\313!\210\314 \210\202p\304\211`\262\304\210`\262b\210\315 \210`W\203?\316 \210\202Bb\210\266\202pg\317U\203_\304\210\320 \210h\317U\203\\\303\262\316 \210\211\204p\321 P\304w\210\315 \210\n\304w\210\322 \204\200\323\304w\210m\204\200\304u\210\315 \210g\317U\203\266\304u\210\315 \210m\204\243\306\324!\203\243\n\304w\210\315 \210\202\217g\317U\205\277`W\205\277`T}\202\277`W\205\277`}*\207" [parse-sexp-ignore-comments smalltalk-whitespace smalltalk-name-chars t nil smalltalk-begin-of-defun looking-at "[[:alpha:]]" forward-sexp 58 backward-sexp 1 smalltalk-forward-keyword-selector smalltalk-forward-whitespace beginning-of-line 124 smalltalk-backward-whitespace "^" smalltalk-in-bang-syntax "^[" "[a-zA-Z_]"] 7 (#$ . 30373)]) #@145 Starting on a keyword, this function skips forward over a keyword selector. It is typically used to skip over the actual selector for a method. (defalias 'smalltalk-forward-keyword-selector #[0 "\301\211?\2053\302\303!\204\304\262\202\301w\210g\305U\203)\301u\210\306\307!\210\310 \210\202\304\262\311\307!\210\202\207" [smalltalk-name-chars nil looking-at "[a-zA-Z_]" t 58 smalltalk-forward-sexp 1 smalltalk-forward-whitespace backward-sexp] 3 (#$ . 31347)]) #@128 Return T if from the current position to beginning of line is whitespace. Whitespace is defined as spaces, tabs, and comments. (defalias 'smalltalk-white-to-bolp #[0 "\300\211\211\212\212\301 \210`\262)\204Bn\204\302\300x\210n\203%\303\262\303\262\202\f`Sf\304U\203<\305 \210`W\203\f\303\262\202\f\303\262\202\f)\207" [nil beginning-of-line " " t 34 backward-sexp] 5 (#$ . 31827)]) (defalias 'smalltalk-backward-comment #[0 "\300\301!\210h\302U\205\303u\210\300\301!\210\202\207" [search-backward "\"" 34 -1] 2]) (defalias 'smalltalk-current-class #[0 "`\300\211\211\211\212\301\302\300\303#\211\262\203\304\224\304\225{\262)\212\301\305\300\303#\211\262\203,\304\224\304\225{\262)\203H\203;V\203H\306\"\203H\262\211\262\212\301\307\300\303#\211\262\203[\304\224\304\225{\262)\203p\203jV\203p\262\211\262\212\301\310\300\303#\211\262\203\203\311\224\311\225{\262)\203\230\203\222V\203\230\262\211\262B\207" [nil search-backward-regexp "^![ ]*\\(\\(\\w+\\.\\)*\\w+\\)[ ]+" t 1 "^[ ]*\\(\\w+\\)[ ]+class[ ]+\\[" smalltalk-in-class-scope-of "^[ ]*\\(\\(\\w+\\.\\)*\\w+\\)[ ]+extend[ ]+\\[" "^[ ]*\\(\\w+\\.\\)*\\w+[ ]+\\(variable\\|variableWord\\|variableByte\\)?subclass:[ ]+#?\\(\\w+\\)" 3] 9]) #@23 (fn CURRENT SEARCH) (defalias 'smalltalk-update-hit-point #[514 "\212\211 \211\203\203\211V\203\211\202\262)\207" [] 5 (#$ . 33108)]) (defalias 'smalltalk-current-scope-point #[0 "\300 \301\302\"\262\301\303\"\262\211\207" [smalltalk-current-class-point smalltalk-update-hit-point #[0 "\300\301\302\303#\207" [search-backward-regexp "^[ ]*Eval[ ]+\\[" nil t] 4] #[0 "\300\301\302\303#\207" [search-backward-regexp "^[ ]*Namespace[ ]+current:[ ]+[A-Za-z0-9_.]+[ ]+\\[" nil t] 4]] 4]) (defalias 'smalltalk-current-class-point #[0 "\300 A\207" [smalltalk-current-class] 1]) (defalias 'smalltalk-current-class-name #[0 "\300 @\207" [smalltalk-current-class] 1]) (defalias 'smalltalk-in-bang-syntax #[0 "\300 \211\205\212\211b\210\301 \210\302\303!)\207" [smalltalk-current-class-point beginning-of-line looking-at "!"] 3]) #@28 (fn ORIG CURR-HIT-POINT) (defalias 'smalltalk-in-class-scope-of #[514 "\212\211b\210\301\302w\210\302w\210\301\302w\210g\303U\205+\3041)\305\302w\210\306\307!\210`V0\202+\210\310)\207" [smalltalk-name-chars " " nil 99 (error) "^[" forward-sexp 1 t] 4 (#$ . 33959)]) (defalias 'smalltalk-in-class-scope #[0 "\300 \211\205\n\301`\"\207" [smalltalk-current-class-point smalltalk-in-class-scope-of] 4]) (defalias 'smalltalk-exit-class-scope #[0 "\300 \205\301 \210\302\303w\210\304 \207" [smalltalk-in-class-scope smalltalk-begin-of-scope "^[" nil smalltalk-end-of-defun] 2 nil nil]) (defalias 'smalltalk-find-message #[0 "\212\300 \210\301 \203#\302 \204\303 \210\303 \210\304 \202-\305`\303 \210`\"\202-\306 \205-\307 \310 P)\207" [smalltalk-goto-beginning-of-statement smalltalk-looking-at-unary-send smalltalk-has-sender smalltalk-safe-forward-sexp smalltalk-find-message buffer-substring-no-properties smalltalk-looking-at-keyword-send smalltalk-find-beginning-of-keyword-send smalltalk-find-end-of-keyword-send] 3]) (defalias 'smalltalk-safe-backward-sexp #[0 "\300\3011`\262\302\303!0\202\210\211b\207" [nil (error) smalltalk-backward-sexp 1] 3]) (defalias 'smalltalk-safe-forward-sexp #[0 "\300\3011`\262\302\303!0\202\210\211b\207" [nil (error) smalltalk-forward-sexp 1] 3]) (defalias 'smalltalk-goto-beginning-of-statement #[0 "\300\301\302\211#?\205 \303 \207" [looking-back "[ \n]" nil smalltalk-safe-backward-sexp] 4]) (defalias 'smalltalk-has-sender #[0 "\212\300 \210\301\302\303\")\207" [smalltalk-backward-whitespace looking-back "[]})A-Za-z0-9']" nil] 3]) (defalias 'smalltalk-looking-at-binary-send #[0 "\300\301!\207" [looking-at "[^]A-Za-z0-9:_(){}[;.'\"]+[ \n]"] 2]) (defalias 'smalltalk-looking-at-unary-send #[0 "\300\301!\207" [looking-at "[A-Za-z][A-Za-z0-9]*[ \n]"] 2]) (defalias 'smalltalk-looking-at-keyword-send #[0 "\300\301!\207" [looking-at "[A-Za-z][A-Za-z0-9_]*:"] 2]) (defalias 'smalltalk-looking-back-keyword-send #[0 "\300\301\302\"\207" [looking-back "[[:alpha:]][[:alnum:]_]*:" nil] 3]) (defalias 'smalltalk-find-end-of-keyword-send #[0 "\212\300 \210\301\302!\204\303 `U\203\304\202$\305 \210\306\212\307 \210`)`\"\310 P)\207" [smalltalk-forward-whitespace looking-at "[.;]" smalltalk-next-keyword "" smalltalk-goto-next-keyword buffer-substring-no-properties smalltalk-safe-backward-sexp smalltalk-find-end-of-keyword-send] 3]) (defalias 'smalltalk-find-beginning-of-keyword-send #[0 "\212\300 \301 \210\211\203\302\303\304\"\202\302\305\304\"\204\306 `U\203#\307\2021\310 \210\311 \312`\313 \210`T\"P\262)\207" [smalltalk-at-begin-of-defun smalltalk-backward-whitespace looking-back "[].;]" nil "[.;]" smalltalk-previous-keyword "" smalltalk-goto-previous-keyword smalltalk-find-beginning-of-keyword-send buffer-substring-no-properties smalltalk-safe-forward-sexp] 5]) #@57 Go to the previous keyword of the current message send. (defalias 'smalltalk-goto-previous-keyword #[0 "\300 b\207" [smalltalk-previous-keyword] 1 (#$ . 36819)]) #@53 Go to the next keyword of the current message send. (defalias 'smalltalk-goto-next-keyword #[0 "\300 b\207" [smalltalk-next-keyword] 1 (#$ . 36987)]) (defalias 'smalltalk-previous-keyword-1 #[0 "\300 \210\301\302\303\"?\205#`\212\304 \210`)U?\205#\304 \210\305 \203!`\207\306 \207" [smalltalk-backward-whitespace looking-back "[>[({.^]" nil smalltalk-safe-backward-sexp smalltalk-looking-at-keyword-send smalltalk-previous-keyword-1] 3]) (defalias 'smalltalk-next-keyword-1 #[0 "\300 \210\301\302!?\205&`\212\303 \210`)U?\205&\303 \210\304\305w\210\306 \203$`\207\307 \207" [smalltalk-forward-whitespace looking-at "[])};.]" smalltalk-safe-forward-sexp ":" nil smalltalk-looking-back-keyword-send smalltalk-next-keyword-1] 2]) (defalias 'smalltalk-previous-keyword #[0 "\212\300 )\206`\207" [smalltalk-previous-keyword-1] 1]) (defalias 'smalltalk-next-keyword #[0 "\212\300 )\206`\207" [smalltalk-next-keyword-1] 1]) (provide 'smalltalk-mode)