;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\210\312\313\314\315\316DD\317\320\321%\210\322\313\323\324#\210\312\325\314\315\326DD\327\320\321%\210\322\325\323\324#\210\312\330\314\315\331DD\332\320\333%\210\312\334\314\315\335DD\336\320\337%\210\312\340\314\315\341DD\342\320\343%\210\312\344\314\315\345DD\346\320\347%\210\312\350\314\315\351DD\352\320\333%\210\312\353\314\315\354DD\355\320\356%\210\312\357\314\315\360DD\361\320\362%\210\312\363\314\315\364DD\365\320\366%\210\312\367\314\315\370DD\371\320\356%\210\372\373\374\375\376\377%\207" [require comint custom-declare-group tcl nil "Major mode for editing Tcl source in Emacs." :link (custom-group-link :tag "Font Lock Faces group" font-lock-faces) :group languages custom-declare-variable tcl-indent-level funcall function #[0 "\300\207" [4] 1 #1=""] "Indentation of Tcl statements with respect to containing block." :type integer put safe-local-variable integerp tcl-continued-indent-level #[0 "\300\207" [4] 1 #1#] "Indentation of continuation line relative to first line of command." tcl-auto-newline #[0 "\300\207" [nil] 1 #1#] "Non-nil means automatically newline before and after braces you insert." boolean tcl-tab-always-indent #[0 "\207" [tab-always-indent] 1 #1#] "Control effect of TAB key.\nIf t (the default), always indent current line.\nIf nil and point is not in the indentation area at the beginning of\nthe line, a TAB is inserted.\nOther values cause the first possible action from the following list\nto take place:\n\n  1. Move from beginning of line to correct indentation.\n  2. Delete an empty comment.\n  3. Move forward to start of comment, indenting if necessary.\n  4. Move forward to end of line, indenting if necessary.\n  5. Create an empty comment.\n  6. Move backward to start of comment, indenting if necessary." (choice (const :tag "Always" t) (const :tag "Beginning only" nil) (other :tag "Maybe move or make or delete comment" tcl)) tcl-electric-hash-style #[0 "\300\207" [nil] 1 #1#] "Style of electric hash insertion to use.\nPossible values are `backslash', meaning that `\\' quoting should be\ndone; `quote', meaning that `\"' quoting should be done; `smart',\nmeaning that the choice between `backslash' and `quote' should be\nmade depending on the number of hashes inserted; or nil, meaning that\nno quoting should be done.  Any other value for this variable is\ntaken to mean `smart'.  The default is nil." (choice (const backslash) (const quote) (const smart) (const nil)) tcl-help-directory-list #[0 "\300\207" [nil] 1 #1#] "List of topmost directories containing TclX help files." (repeat directory) tcl-use-smart-word-finder #[0 "\300\207" [t] 1 #1#] "If not nil, use smart way to find current word, for Tcl help feature." tcl-application #[0 "\300\207" ["wish"] 1 #1#] "Name of Tcl program to run in inferior Tcl mode." string tcl-command-switches #[0 "\300\207" [nil] 1 #1#] "List of switches to supply to the `tcl-application' program." (repeat string) tcl-prompt-regexp #[0 "\300\207" ["^\\(% \\|\\)"] 1 #1#] "If not nil, a regexp that will match the prompt in the inferior process.\nIf nil, the prompt is the name of the application with \">\" appended.\n\nThe default is \"^\\(% \\|\\)\", which will match the default primary\nand secondary prompts for tclsh and wish." regexp inferior-tcl-source-command #[0 "\300\207" ["source %s\n"] 1 #1#] "Format-string for building a Tcl command to load a file.\nThis format string should use `%s' to substitute a file name\nand should result in a Tcl expression that will command the\ninferior Tcl to load that file.  The filename will be appropriately\nquoted for Tcl." custom-declare-face tcl-escaped-newline ((t :inherit font-lock-string-face)) "Face used for (non-escaped) backslash at end of a line in Tcl mode." :version "22.1"] 8)
#@28 Keymap used in `tcl-mode'.
(defvar tcl-mode-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\303#\210\301\307\303#\210\301\310\303#\210\301\311\312#\210\301\313\314#\210\301\315\316#\210\301\317\320#\210\301\321\322#\210\301\323\324#\210\301\325\322#\210\301\326\327#\210\301\330\331#\210\301\332\333#\210\301\334\335#\210\207" [make-sparse-keymap define-key "{" tcl-electric-char "}" tcl-electric-brace "[" "]" ";" "#" tcl-electric-hash "" tcl-indent-exp "" backward-delete-char-untabify "	" tcl-indent-command "\230" tcl-eval-defun "	" tcl-help-on-word "" "" tcl-load-file "" inferior-tcl "" tcl-eval-region "" switch-to-tcl] 5) (#$ . 3896))
#@44 Syntax table in use in `tcl-mode' buffers.
(defvar tcl-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\303#\210\301\305\303#\210\301\306\303#\210\301\307\303#\210\301\310\303#\210\301\311\303#\210\301\312\303#\210\301\313\303#\210\301\314\303#\210\301\315\303#\210\301\316\303#\210\301\317\303#\210\301\320\303#\210\301\321\303#\210\301\322\303#\210\301\323\324#\210\301\325\326#\210\301\327\330#\210\301\331\332#\210\301\333\334#\210\207" [make-syntax-table modify-syntax-entry 37 "_" 64 38 42 43 45 46 58 33 36 47 126 60 61 62 124 40 "()" 41 ")(" 59 "." 10 ">" 35 "<"] 5) (#$ . 4591))
#@37 Keymap used in `inferior-tcl-mode'.
(defvar inferior-tcl-mode-map (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\311#\210\301\315\316#\210\301\317\320#\210\301\321\322#\210\301\323\324#\210\207" [make-sparse-keymap define-key "	" completion-at-point "\277" comint-dynamic-list-filename-completions "" backward-delete-char-untabify "\230" tcl-eval-defun "	" tcl-help-on-word "" "" tcl-load-file "" inferior-tcl "" tcl-eval-region "" switch-to-tcl] 5) (#$ . 5218))
#@26 Menu used in `tcl-mode'.
(defvar tcl-mode-menu nil (#$ . 5773))
(easy-menu-do-define 'tcl-mode-menu tcl-mode-map "Menu used in `tcl-mode'." '("Tcl" ["Beginning of function" beginning-of-defun t] ["End of function" end-of-defun t] ["Mark function" mark-defun t] ["Indent region" indent-region (mark t)] ["Comment region" comment-region (mark t)] ["Uncomment region" uncomment-region (mark t)] "----" ["Show Tcl process buffer" inferior-tcl t] ["Send function to Tcl process" tcl-eval-defun (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] ["Send region to Tcl process" tcl-eval-region (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] ["Send file to Tcl process" tcl-load-file (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] ["Restart Tcl process with file" tcl-restart-with-file t] "----" ["Tcl help" tcl-help-on-word tcl-help-directory-list]))
#@1647 The current `inferior-tcl' process buffer.

MULTIPLE PROCESS SUPPORT
===========================================================================
To run multiple Tcl processes, you start the first up with
\[inferior-tcl].  It will be in a buffer named `*inferior-tcl*'.
Rename this buffer with \[rename-buffer].  You may now start up a new
process with another \[inferior-tcl].  It will be in a new buffer,
named `*inferior-tcl*'.  You can switch between the different process
buffers with \[switch-to-buffer].

Commands that send text from source buffers to Tcl processes -- like
`tcl-eval-defun' or `tcl-load-file' -- have to choose a process to
send to, when you have more than one Tcl process around.  This is
determined by the global variable `inferior-tcl-buffer'.  Suppose you
have three inferior Lisps running:
    Buffer              Process
    foo                 inferior-tcl
    bar                 inferior-tcl<2>
    *inferior-tcl*      inferior-tcl<3>
If you do a \[tcl-eval-defun] command on some Lisp source code, what
process do you send it to?

- If you're in a process buffer (foo, bar, or *inferior-tcl*),
  you send it to that process.
- If you're in some other buffer (e.g., a source file), you
  send it to the process attached to buffer `inferior-tcl-buffer'.
This process selection is performed by function `inferior-tcl-proc'.

Whenever \[inferior-tcl] fires up a new process, it resets
`inferior-tcl-buffer' to be the new process's buffer.  If you only run
one process, this does the right thing.  If you run multiple
processes, you might need to set `inferior-tcl-buffer' to
whichever process buffer you want to use.
(defvar inferior-tcl-buffer nil (#$ . 6659))
#@567 Hook run on entry to Tcl mode.

Several functions exist which are useful to run from your
`tcl-mode-hook' (see each function's documentation for more
information):

  `tcl-guess-application'
    Guesses a default setting for `tcl-application' based on any
    "#!" line at the top of the file.
  `tcl-hashify-buffer'
    Quotes all "#" characters that don't correspond to actual
    Tcl comments.  (Useful when editing code not originally created
    with this mode).

Add functions to the hook with `add-hook':

   (add-hook 'tcl-mode-hook #'tcl-guess-application)
(defvar tcl-mode-hook nil (#$ . 8357))
#@205 List of commands whose first argument defines something.
This exists because some people (eg, me) use `defvar' et al.
Call `tcl-set-proc-regexp' and `tcl-set-font-lock-keywords'
after changing this list.
(defvar tcl-proc-list '("proc" "method" "itcl_class" "body" "configbody" "class" "namespace") (#$ . 8969))
#@43 Regexp to use when matching proc headers.
(defvar tcl-proc-regexp nil (#$ . 9286))
#@128 List of Tcl keywords denoting "type".  Used only for highlighting.
Call `tcl-set-font-lock-keywords' after changing this list.
(defvar tcl-typeword-list '("global" "upvar" "inherit" "public" "protected" "private" "common" "itk_option" "variable") (#$ . 9376))
#@154 List of Tcl keywords.  Used only for highlighting.
Default list includes some TclX keywords.
Call `tcl-set-font-lock-keywords' after changing this list.
(defvar tcl-keyword-list '("if" "then" "else" "elseif" "for" "foreach" "break" "continue" "while" "eval" "case" "in" "switch" "default" "exit" "error" "proc" "return" "uplevel" "constructor" "destructor" "itcl_class" "loop" "for_array_keys" "for_recursive_glob" "for_file" "method" "body" "configbody" "class" "chain") (#$ . 9643))
#@203 List of Tcl commands.  Used only for highlighting.
Call `tcl-set-font-lock-keywords' after changing this list.
This list excludes those commands already found in `tcl-proc-list' and
`tcl-keyword-list'.
(defvar tcl-builtin-list '("after" "append" "array" "bgerror" "binary" "catch" "cd" "clock" "close" "concat" "console" "dde" "encoding" "eof" "exec" "expr" "fblocked" "fconfigure" "fcopy" "file" "fileevent" "flush" "format" "gets" "glob" "history" "incr" "info" "interp" "join" "lappend" "lindex" "linsert" "list" "llength" "load" "lrange" "lreplace" "lsort" "namespace" "open" "package" "pid" "puts" "pwd" "read" "regexp" "registry" "regsub" "rename" "scan" "seek" "set" "socket" "source" "split" "string" "subst" "tell" "time" "trace" "unknown" "unset" "vwait") (#$ . 10135))
#@213 Keywords to highlight for Tcl.  See variable `font-lock-keywords'.
This variable is generally set from `tcl-proc-regexp',
`tcl-typeword-list', and `tcl-keyword-list' by the function
`tcl-set-font-lock-keywords'.
(defvar tcl-font-lock-keywords nil (#$ . 10922))
(defconst tcl--word-delimiters "[;{ 	\n")
#@64 Decide whether a double quote opens a string or not.

(fn POS)
(defalias 'tcl--syntax-of-quote #[257 "\212\300!\3018\203 \302\202\212 \206 `Sf\302\303B>\204  \304\202\212 \211@\305U\203+ \302\202\212 \302\305\306u\210\204s \307\310\302\311#\203s \305\224f\211\312\267\210\2020 \306u\266\2020 \313\262\210\2020 T\266\202\2020 \305U\203h \314\262\210\2020 T\266\202\2020 \210\2020 \315 V\203\201 \316`\317\311$\210\314=\205\210 \304\266\202\262)\207" [syntax-ppss 8 nil (91 59 123 32 9 10) (1) 0 1 re-search-forward "[\"{}\\]" t #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (92 70 34 77 123 84 125 91)) matched unmatched line-beginning-position put-text-property syntax-multiline] 9 (#$ . 11231)])
#@36 Syntactic keywords for `tcl-mode'.
(defconst tcl-syntax-propertize-function #[514 "b\210`W\205N \300\301\302#\205N \303\224\203\" \304\303\224\303\225\305\306$\210\202 \307\224\203 \310\311!\211A\312\233\241\210\313!\266\314\224\314\225\315\314\224!\211\203I \304\305$\210\266\202 \207" [re-search-forward "[^[;{ 	\n][ 	]*\\(#\\)\\|\\(\"\\)" t 1 put-text-property syntax-table (1) 2 match-data ints 6 set-match-data 0 tcl--syntax-of-quote] 10 "\n\n(fn START END)"] (#$ . 11989))
#@791 Alist that controls indentation.
(Actually, this really only controls what happens on continuation lines).
Each entry looks like `(KEYWORD TYPE ...)'.
Each type entry describes a sexp after the keyword, and can be one of:
* nil, meaning that this sexp has no particular type.
* tcl-expr, meaning that this sexp is an arithmetic expression.
* tcl-commands, meaning that this sexp holds Tcl commands.
* a string, which must exactly match the string at the corresponding
  position for a match to be made.

For example, the entry for the "loop" command is:

   ("loop" nil tcl-expr tcl-commands)

This means that the "loop" command has three arguments.  The first
argument is ignored (for indentation purposes).  The second argument
is a Tcl expression, and the last argument is Tcl commands.
(defvar tcl-type-alist '(("proc" nil tcl-expr tcl-commands) ("method" nil tcl-expr tcl-commands) ("destructor" tcl-commands) ("constructor" tcl-commands) ("expr" tcl-expr) ("catch" tcl-commands) ("if" tcl-expr "then" tcl-commands) ("elseif" tcl-expr "then" tcl-commands) ("elseif" tcl-expr tcl-commands) ("if" tcl-expr tcl-commands) ("while" tcl-expr tcl-commands) ("for" tcl-commands tcl-expr tcl-commands tcl-commands) ("foreach" nil nil tcl-commands) ("for_file" nil nil tcl-commands) ("for_array_keys" nil nil tcl-commands) ("for_recursive_glob" nil nil nil tcl-commands) ("loop" nil tcl-expr tcl-expr tcl-commands) ("loop" nil tcl-expr tcl-commands)) (#$ . 12488))
#@67 If non-nil, debugging message will be printed during indentation.
(defvar tcl-explain-indentation nil (#$ . 13954))
(defconst tcl-omit-ws-regexp "^[^]\" 	\n#}][^\n\"#]+[ 	]+")
#@54 Set `tcl-proc-regexp' from variable `tcl-proc-list'.
(defalias 'tcl-set-proc-regexp #[0 "\302\303\304\"\305Q\211\207" [tcl-proc-list tcl-proc-regexp "^\\s-*" regexp-opt t "[ 	]+"] 4 (#$ . 14136)])
#@88 Set `tcl-font-lock-keywords'.
Uses variables `tcl-proc-regexp' and `tcl-keyword-list'.
(defalias 'tcl-set-font-lock-keywords #[0 "\305P\306\307E\310\311	\312\"\313Q\306\314E\315\311\n\312\"\316Q\317\320E\321\322\323\324\325\315\311\312\"\316Q\317B\257	\211\207" [tcl-proc-regexp tcl-typeword-list tcl-builtin-list tcl-keyword-list tcl-font-lock-keywords "\\([^ 	\n]+\\)" 2 font-lock-function-name-face "\\(\\s-\\|^\\)" regexp-opt t "\\(\\s-\\|$\\)" font-lock-type-face "\\_<" "\\_>" 1 font-lock-builtin-face ("\\${\\([^}]+\\)}" 1 font-lock-variable-name-face) ("\\$\\(\\(?:::\\)?\\(?:[[:alnum:]_]+::\\)*[[:alnum:]_]+\\)" 1 font-lock-variable-name-face) ("\\(?:\\s-\\|^\\|\\[\\)set\\s-+{\\([^}]+\\)}" 1 font-lock-variable-name-face keep) ("\\(?:\\s-\\|^\\|\\[\\)set\\s-+\\(\\(?:::\\)?\\(?:[[:alnum:]_]+::\\)*[[:alnum:]_]+\\)" 1 font-lock-variable-name-face keep) ("\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\)$" 3 'tcl-escaped-newline)] 12 (#$ . 14341)])
(byte-code "\204 \302 \210	\204 \303 \210\302\207" [tcl-proc-regexp tcl-font-lock-keywords tcl-set-proc-regexp tcl-set-font-lock-keywords] 1)
#@75 Imenu generic expression for `tcl-mode'.  See `imenu-generic-expression'.
(defvar tcl-imenu-generic-expression (byte-code "\301\302P\303BBC\207" [tcl-proc-regexp nil "\\([-A-Za-z0-9_:+*]+\\)" (2)] 3) (#$ . 15445))
(defvar tcl-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [tcl-mode-hook variable-documentation put "Hook run after entering Tcl mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp tcl-mode-map definition-name tcl-mode] 4)
(defvar tcl-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" [tcl-mode-abbrev-table tcl-mode-map variable-documentation put purecopy "Keymap for `tcl-mode'." boundp tcl-mode-syntax-table definition-name tcl-mode (lambda (#1=#:def-tmp-var) (defvar tcl-mode-syntax-table #1#)) make-syntax-table "Syntax table for `tcl-mode'." (lambda (#1#) (defvar tcl-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `tcl-mode'." derived-mode-parent prog-mode] 5)
#@1039 Major mode for editing Tcl code.
Expression and list commands understand all Tcl brackets.
Tab indents for Tcl code.
Paragraphs are separated by blank lines only.
Delete converts tabs to spaces as it moves back.

Variables controlling indentation style:
  `tcl-indent-level'
    Indentation of Tcl statements within surrounding block.
  `tcl-continued-indent-level'
    Indentation of continuation line relative to first line of command.

Variables controlling user interaction with mode (see variable
documentation for details):
  `tcl-tab-always-indent'
    Controls action of TAB key.
  `tcl-auto-newline'
    Non-nil means automatically newline before and after braces, brackets,
    and semicolons inserted in Tcl code.
  `tcl-use-smart-word-finder'
    If not nil, use a smarter, Tcl-specific way to find the current
    word when looking up help on a Tcl command.

Turning on Tcl mode runs `tcl-mode-hook'.  Read the documentation for
`tcl-mode-hook' to see what kinds of interesting hook functions
already exist.

\{tcl-mode-map}
(defalias 'tcl-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@\331\332!\203h \204o \306\333!\210\307\306\334!\210\335\306\336!\210\337\306\340!\210\341 \306\342!\210\343\"\306\344!\210\345$\306\346!\210\347&\306\350!\210\351(\306\352!\210\353*\306\354!\210A,\355\356\357\360\361$\210\306\362!\210B2\306\363!\210\3643\306\365!\210\3645\306\366!\210\3676\306\370!\210\3718\306\372!\210\307:\306\373!\210C;\306\374!\210\375<\306\376!\210\377>)\201D \201E !\207" [delay-mode-hooks major-mode mode-name tcl-mode-map tcl-mode-syntax-table tcl-mode-abbrev-table make-local-variable t prog-mode tcl-mode "Tcl" 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 boundp filladapt-mode paragraph-ignore-fill-prefix indent-line-function tcl-indent-line comment-indent-function tcl-comment-indent comment-start "# " comment-start-skip "\\(\\(^\\|[;{[]\\)\\s-*\\)#+ *" comment-end "" outline-regexp "." outline-level tcl-outline-level font-lock-defaults (tcl-font-lock-keywords nil nil nil beginning-of-defun) syntax-propertize-function add-hook syntax-propertize-extend-region-functions syntax-propertize-multiline append local imenu-generic-expression dabbrev-case-fold-search nil dabbrev-case-replace dabbrev-abbrev-skip-leading-regexp "[$!]" dabbrev-abbrev-char-regexp "\\sw\\|\\s_" parse-sexp-ignore-comments defun-prompt-regexp add-log-current-defun-function tcl-add-log-defun end-of-defun-function tcl-end-of-defun-function local-abbrev-table tcl-syntax-propertize-function tcl-imenu-generic-expression tcl-omit-ws-regexp run-mode-hooks tcl-mode-hook] 5 (#$ . 16761) nil])
#@60 Insert character and correct line's indentation.

(fn ARG)
(defalias 'tcl-electric-char #[257 "\302 \210\303!\210\205 	\304U\205 \305 \210\302 \207" [tcl-auto-newline last-command-event tcl-indent-line self-insert-command 59 newline] 3 (#$ . 19752) "p"])
#@60 Insert character and correct line's indentation.

(fn ARG)
(defalias 'tcl-electric-brace #[257 "\203* \212\302\303x\210n)\204 \304 \210\305 \210\211\306V\203. 	c\210\304 \210\305 \210\211S\262\202 \307!\210\304 \207" [tcl-auto-newline last-command-event " 	" nil tcl-indent-line newline 0 self-insert-command] 3 (#$ . 20017) "p"])
#@708 Indent current line as Tcl code, or in some cases insert a tab character.
If `tcl-tab-always-indent' is t (the default), always indent current line.
If `tcl-tab-always-indent' is nil and point is not in the indentation
area at the beginning of the line, a TAB is inserted.
Other values of `tcl-tab-always-indent' cause the first possible action
from the following list to take place:

  1. Move from beginning of line to correct indentation.
  2. Delete an empty comment.
  3. Move forward to start of comment, indenting if necessary.
  4. Move forward to end of line, indenting if necessary.
  5. Create an empty comment.
  6. Move backward to start of comment, indenting if necessary.

(fn &optional ARG)
(defalias 'tcl-indent-command #[256 "\302>\203 \303\304!)\207`\305\210`\306 \307 U\203. \310 \210\311 \210`\307 U\203+ \305\207\312 \207\211\203C \313\314!\203C \315u\210\316\305x\210`|\207\211\203S `W\203S \311 \210\317 \207U\204_ b\210\311 \207\211\204i \311 \210\320 \207\311 \210\317 \207" [tcl-tab-always-indent tab-always-indent (nil t) call-interactively indent-for-tab-command nil tcl-in-comment line-beginning-position beginning-of-line tcl-indent-line back-to-indentation looking-at "[ 	]*$" -1 " 	;" indent-for-comment comment-indent] 6 (#$ . 20360) "p"])
#@80 Indent current line as Tcl code.
Return the amount the indentation changed by.
(defalias 'tcl-indent-line #[0 "\302\303!\303\211\211d`Z\204 \304\202r \305 \210`\262\306\303w\210<\203& @\262g\307U\2034 	Z\262\202> g\310U\203> S\262\306\303w\210iZ\262\311U\203] dZ`V\203q dZb\210\202q `|\210j\210dZ`V\203q dZb\210)\207" [case-fold-search tcl-indent-level tcl-calculate-indent nil noindent beginning-of-line " 	" 125 93 0] 7 (#$ . 21652)])
#@207 Determine type of sexp at point.
This is either `tcl-expr', `tcl-commands', or nil.  Puts point at start
of sexp that indicates types.

See documentation for variable `tcl-type-alist' for more information.
(defalias 'tcl-figure-type #[0 "\302\303\211\304W\203\211 \204\211 \3051\201 \306 \210\307\310!\203v \303\311 B\262\205q ?\205q @\262A\262\302\203\\ \211X\203\\ @;\203Q @8\230\204Q \303\262A\262\211T\262\2024 \211V\203m @;\204m @\262\210\202\" \266\202\202| \303B\211\2620\210\202\202 \210T\262\202 	\203\222 \312\313\"\210\207" [tcl-type-alist tcl-explain-indentation 0 nil 5 (error) backward-sexp looking-at "[a-zA-Z_]+" tcl-word-no-props message "Indentation type %s"] 9 (#$ . 22118)])
#@212 Return appropriate indentation for current line as Tcl code.
In usual case returns an integer: the column to indent to.
Returns nil if line starts inside a string, t if in a comment.

(fn &optional PARSE-START)
(defalias 'tcl-calculate-indent #[256 "\212\303 \210`\304\212o?\205 \305u\210h\306U)\211\203 	\202 \307\304\211\211\203) b\210\310 \210`W\203F `\262\311`\307#\262A@\262\202, \3128\204R \3138\203X \3138\202\352 \204` \202\352 b\210\314 \211\315=\316=`b\210\304u\210`\nW\203\230 \317\320!\203\230 \304y\210`\nW\203\230 \317\320!\203\230 \321\262\304y\210\202\202 \204\250 f\322U\203\250 \203\305 `\nY\203\270 b\210\304u\210\202\274 \323\304w\210i\\\266\204\202\352 `\nW\203\327 \203\327 \324 \266\204\202\352 \203\341 \211b\210\202\344 b\210\324 \n\\\266\204)\266\206)\207" [case-fold-search tcl-continued-indent-level tcl-indent-level beginning-of-line nil -1 92 0 beginning-of-defun parse-partial-sexp 3 4 tcl-figure-type tcl-expr tcl-commands looking-at "[ 	]*\\(#.*\\)?$" t 123 " 	" current-indentation] 13 (#$ . 22854)])
#@55 Indent each line of the Tcl grouping following point.
(defalias 'tcl-indent-exp #[0 "\302C`C\302\211\211\211\211\211\211\303\302\212\304\305!\210)\212\302\262m?\205O?\205O\262\302\262\204k m\203; \306\211\262	\204k \262\307`\302\210`\302\211\n%\262@\262\3108\203X \311 \210\3128\203e \305y\210\202+ \306\262\202+ \303X\203t \306\262\204 \211\3138V\203\223 \nA\262	A\262\n\211S\262\202y \211W\203\254 \302B\262\302\nB\262\n\211T\262\202\223 	@\204\304 	A@\206\302 \212\304\314!\210`)\240\210\305y\210\212\314u\210h\315U)\262\316\302w\210l\204 \n@\203\357 \n@\303Y\203\357 \n@\262\202\317@\205\372 @[!\211\262\240\210\302\262\210\247\203$g\320U\203	Z\262\202$g\321U\203$S\262\203 i\2033	\\\2024U\204 `\322 \210`|\210\203I	\\\202Jj\210\202 *\207" [case-fold-search tcl-indent-level nil 0 forward-sexp 1 t parse-partial-sexp 4 tcl-indent-line 3 6 -1 92 " 	" tcl-calculate-indent 125 93 beginning-of-line] 17 (#$ . 23934) nil])
#@39 `end-of-defun-function' for Tcl mode.
(defalias 'tcl-end-of-defun-function #[0 "\301\302!\210m?\205, \303\304\305!)\262?\205, \3061! \307 0\210\202% \210db\210\310\311w\210\202 \207" [inhibit-changing-match-data skip-syntax-forward "-" "[\n;]" t looking-at (scan-error) forward-sexp " 	" nil] 3 (#$ . 24949)])
#@50 Return name of Tcl function point is in, or nil.
(defalias 'tcl-add-log-defun #[0 "\212`\301 \205 \212\302 \210`Y)\205 \303\304P!\205 \305\306!\262)\207" [tcl-proc-regexp beginning-of-defun end-of-defun looking-at "\\([^ 	\n{]+\\)" match-string 2] 4 (#$ . 25269)])
(defalias 'tcl-outline-level #[0 "\212\300\301w\210i)\207" [" 	" nil] 2])
(defvar inferior-tcl-delete-prompt-marker nil)
#@20 

(fn PROC STRING)
(defalias 'tcl-filter #[514 "\303r\304!q\210\305	!\203 \303\306!	|\210)	\307\211\223\210*\310\"\207" [inhibit-quit inferior-tcl-delete-prompt-marker inhibit-read-only t process-buffer marker-buffer process-mark nil comint-output-filter] 5 (#$ . 25667)])
#@20 

(fn PROC STRING)
(defalias 'tcl-send-string #[514 "r\302!q\210\303!b\210\304y\210\305!\203 	`\306\223\210)\307\"\207" [comint-prompt-regexp inferior-tcl-delete-prompt-marker process-buffer process-mark 0 looking-at nil comint-send-string] 5 (#$ . 25953)])
#@23 

(fn PROC START END)
(defalias 'tcl-send-region #[771 "r\302!q\210\303!b\210\304y\210\305!\203 	`\306\223\210)\307#\207" [comint-prompt-regexp inferior-tcl-delete-prompt-marker process-buffer process-mark 0 looking-at nil comint-send-region] 7 (#$ . 26223)])
#@102 Switch to inferior Tcl process buffer.
With argument, positions cursor at end of buffer.

(fn EOB-P)
(defalias 'switch-to-tcl #[257 "\301!\203 \302!\210\202 \303\304!\210\211\205 \305 \210db\207" [inferior-tcl-buffer get-buffer pop-to-buffer error "No current inferior Tcl buffer" push-mark] 3 (#$ . 26497) "P"])
#@74 Return current inferior Tcl process.
See variable `inferior-tcl-buffer'.
(defalias 'inferior-tcl-proc #[0 "\301\302\303!\203 p\202\f !\211\206 \304\305!\207" [inferior-tcl-buffer get-buffer-process derived-mode-p inferior-tcl-mode error "No Tcl process; see variable `inferior-tcl-buffer'"] 3 (#$ . 26821)])
#@146 Send the current region to the inferior Tcl process.
Prefix argument means switch to the Tcl buffer afterwards.

(fn START END &optional AND-GO)
(defalias 'tcl-eval-region #[770 "\300 \301\212b\210\302\303w\210`)\212b\210\302\303x\210`)#\210\304\305\"\210\205& \306\307!\207" [inferior-tcl-proc tcl-send-region " 	\n" nil tcl-send-string "\n" switch-to-tcl t] 9 (#$ . 27139) "r\nP"])
#@135 Send the current defun to the inferior Tcl process.
Prefix argument means switch to the Tcl buffer afterwards.

(fn &optional AND-GO)
(defalias 'tcl-eval-defun #[256 "\212\300 \210`\301 \210\302`\"\266)\211\205 \303\304!\207" [end-of-defun beginning-of-defun tcl-eval-region switch-to-tcl t] 5 (#$ . 27535) "P"])
(defvar inferior-tcl-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [inferior-tcl-mode-hook variable-documentation put "Hook run after entering Inferior Tcl mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp inferior-tcl-mode-map definition-name inferior-tcl-mode] 4)
(defvar inferior-tcl-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" [inferior-tcl-mode-abbrev-table inferior-tcl-mode-map variable-documentation put purecopy "Keymap for `inferior-tcl-mode'." boundp inferior-tcl-mode-syntax-table definition-name inferior-tcl-mode (lambda (#1=#:def-tmp-var) (defvar inferior-tcl-mode-syntax-table #1#)) make-syntax-table "Syntax table for `inferior-tcl-mode'." (lambda (#1#) (defvar inferior-tcl-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `inferior-tcl-mode'." derived-mode-parent comint-mode] 5)
#@800 Major mode for interacting with Tcl interpreter.

You can start a Tcl process with \[inferior-tcl].

Entry to this mode runs the normal hooks `comint-mode-hook' and
`inferior-tcl-mode-hook', in that order.

You can send text to the inferior Tcl process from other buffers
containing Tcl source.

Variables controlling Inferior Tcl mode:
  `tcl-application'
    Name of program to run.
  `tcl-command-switches'
    Command line arguments to `tcl-application'.
  `tcl-prompt-regexp'
    Matches prompt.
  `inferior-tcl-source-command'
    Command to use to read Tcl file in running application.
  `inferior-tcl-buffer'
    The current inferior Tcl process buffer.  See variable
    documentation for details on multiple-process support.

The following commands are available:
\{inferior-tcl-mode-map}
(defalias 'inferior-tcl-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'\206m \332\333(!\334Q\335)*&\330+!\210\306\336!\210,\306\337!\210\340 \341\342p!\343\"\210)\344\345!\207" [delay-mode-hooks major-mode mode-name inferior-tcl-mode-map inferior-tcl-mode-syntax-table inferior-tcl-mode-abbrev-table make-local-variable t comint-mode inferior-tcl-mode "Inferior Tcl" 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 comint-prompt-regexp "^" regexp-quote ">" (": %s") defun-prompt-regexp inferior-tcl-delete-prompt-marker make-marker set-process-filter get-buffer-process tcl-filter run-mode-hooks inferior-tcl-mode-hook local-abbrev-table tcl-prompt-regexp tcl-application mode-line-process tcl-mode-abbrev-table tcl-mode-syntax-table tcl-omit-ws-regexp] 5 (#$ . 29088) nil])
#@161 Run inferior Tcl process.
Prefix arg means enter program name interactively.
See documentation for function `inferior-tcl-mode' for more information.

(fn CMD)
(defalias 'inferior-tcl #[257 "\303\304!\204 \305\306\307\310%q\210\311 \210\312\313 !\204 \314\313 \315\"\210\316\301!\210\211\304\317\304!\207" [tcl-command-switches tcl-application inferior-tcl-buffer comint-check-proc "*inferior-tcl*" apply make-comint "inferior-tcl" nil inferior-tcl-mode process-tty-name inferior-tcl-proc tcl-send-string "set ::tcl_interactive 1; concat\n" make-local-variable pop-to-buffer] 7 (#$ . 31053) (byte-code "\203 \302\303	\"\202\f 	C\207" [current-prefix-arg tcl-application read-string "Run Tcl: "] 3)])
(defalias 'run-tcl 'inferior-tcl)
#@191 Return nil if point is not at the beginning of a command.
A command is the first word on an otherwise empty line, or the
first word following a semicolon, opening brace, or opening bracket.
(defalias 'tcl-real-command-p #[0 "\212\300\301x\210o\203 \302\202 n\203 \303u\210h\304=?\202 h\305>)\207" [" 	" nil t -1 92 (59 123 91)] 2 (#$ . 31802)])
#@303 Return t if point is just after the `#' beginning a real comment.
Does not check to see if previous char is actually `#'.
A real comment is either at the beginning of the buffer,
preceded only by whitespace on the line, or has a preceding
semicolon, opening brace, or opening bracket on the same line.
(defalias 'tcl-real-comment-p #[0 "\212\300u\210\301 \205\n \302)\207" [-1 tcl-real-command-p t] 1 (#$ . 32158)])
#@260 Determine if point is in a comment.
Returns a list of the form `(FLAG . STATE)'.  STATE can be used
as input to future invocations.  FLAG is nil if not in comment,
t otherwise.  If in comment, leaves point at beginning of comment.

(fn STATE END ALWAYS-STOP)
(defalias 'tcl-hairy-scan-for-comment #[771 "\212b\210\300 )\301\211\211\204P `W\203P \301\262\302`\301\211\n\303&\262\3048\203	 \2031 `\262\305 \262\203F `V\203B `\262\306\307!\210\304\233\301\240\210\202	 \211\203W \211b\210B\207" [line-beginning-position nil parse-partial-sexp t 4 tcl-real-comment-p beginning-of-line 2] 13 (#$ . 32581)])
#@77 Return t if point is in a comment, and leave point at beginning of comment.
(defalias 'tcl-in-comment #[0 "`\300 \210\301\302\302#@\207" [beginning-of-defun tcl-hairy-scan-for-comment nil] 5 (#$ . 33210)])
#@115 Saved help directories.
If `tcl-help-directory-list' changes, this allows `tcl-help-on-word'
to update the alist.
(defvar tcl-help-saved-dirs nil (#$ . 33424))
#@59 Alist with command names as keys and filenames as values.
(defvar tcl-help-alist nil (#$ . 33590))
#@87 Recursively add all pairs (FILE . PATH) under DIR to ALIST.

(fn DIR &optional ALIST)
(defalias 'tcl-files-alist #[513 "\300\301\"\211\2031 \211@\302!\204 \303!BB\262\202* \303!\304\235\204* \305\"\262A\266\202\202 \207" [directory-files t file-directory-p file-name-nondirectory ("." "..") tcl-files-alist] 7 (#$ . 33695)])
#@55 Return alist of commands and filenames.

(fn DIRLIST)
(defalias 'tcl-help-snarf-commands #[257 "\300\211\203 \211@\301!\203 \302\"\262A\266\202\202 \207" [nil file-directory-p tcl-files-alist] 7 (#$ . 34040)])
#@42 Set up to re-read files, and then do it.
(defalias 'tcl-reread-help-files #[0 "\303\304!\210\305!\303\306!\207" [tcl-help-directory-list tcl-help-saved-dirs tcl-help-alist message "Building Tcl help file index..." tcl-help-snarf-commands "Building Tcl help file index...done"] 2 (#$ . 34266) nil])
#@45 Like `current-word', but strips properties.
(defalias 'tcl-word-no-props #[0 "\300 \301\302G\303$\210\207" [current-word set-text-properties 0 nil] 6 (#$ . 34574)])
#@150 Return current command word, or nil.
If FLAG is nil, just uses `current-word'.
Otherwise scans backward for most likely Tcl command word.

(fn FLAG)
(defalias 'tcl-current-word #[257 "\211\2033 \301\302\303\"\2033 \30410 \212o\204# o\204# \305 \204# \306 \210\202 \307\310 \"\205- \310 )0\207\210\311\207\310 \207" [tcl-help-alist derived-mode-p tcl-mode inferior-tcl-mode (error) tcl-real-command-p backward-sexp assoc tcl-word-no-props nil] 4 (#$ . 34748)])
#@148 Get help on Tcl command.  Default is word at point.
Prefix argument means invert sense of `tcl-use-smart-word-finder'.

(fn COMMAND &optional ARG)
(defalias 'tcl-help-on-word #[513 "	\232\204	 \304 \210\305\230\203 \306\203 \n?\202 \n!\262\307\310!\311\"\211\205* \211Aq\210ed|\210\211\203B \312\313\261\210\314!\210\202T \305\230\203N \315c\210\202T \316\317\261\210\320\321!\210eb\210\322!\207" [tcl-help-directory-list tcl-help-saved-dirs tcl-use-smart-word-finder tcl-help-alist tcl-reread-help-files "" tcl-current-word get-buffer-create "*Tcl help*" assoc "*** " "\n\n" insert-file-contents "Magical Pig!" "Tcl command " " not in help\n" set-buffer-modified-p nil display-buffer] 8 (#$ . 35217) (byte-code "	\232\204	 \305 \210\306\n\203 ?\202 !\307\310\311\312\232?\205  \"\f\313\314\313\211&\262\nD\207" [tcl-help-directory-list tcl-help-saved-dirs current-prefix-arg tcl-use-smart-word-finder tcl-help-alist tcl-reread-help-files tcl-current-word completing-read format-prompt "Help on Tcl command: " "" nil t] 9)])
#@150 Record last directory and file used in loading.
This holds a cons cell of the form `(DIRECTORY . FILE)'
describing the last `tcl-load-file' command.
(defvar tcl-previous-dir/file nil (#$ . 36277))
#@135 Load a Tcl file into the inferior Tcl process.
Prefix argument means switch to the Tcl buffer afterwards.

(fn FILE &optional AND-GO)
(defalias 'tcl-load-file #[513 "\302!\210\303!\304!B\305\306 \307	\310!\"\"\210\211\205 \311\312!\207" [tcl-previous-dir/file inferior-tcl-source-command comint-check-source file-name-directory file-name-nondirectory tcl-send-string inferior-tcl-proc format tcl-quote switch-to-tcl t] 8 (#$ . 36481) (byte-code "\302\303\304\305!\203 \306 \206 \307\310$@	D\207" [tcl-previous-dir/file current-prefix-arg comint-get-source "Load Tcl file" derived-mode-p tcl-mode buffer-file-name (tcl-mode) t] 5)])
#@175 Restart inferior Tcl with file.
If an inferior Tcl process exists, it is killed first.
Prefix argument means switch to the Tcl buffer afterwards.

(fn FILE &optional AND-GO)
(defalias 'tcl-restart-with-file #[513 "\304\305!\203\n p\202 \211\205 \306!\203 \307!\204% \310	!\210\311\"\207\312!\2031 \313\314!\205[ \212\315!\210\316!\317!B\320\321!\203L \322!\202M \323	%\210\205Z \324\325!)\207" [inferior-tcl-buffer tcl-application tcl-previous-dir/file tcl-command-switches derived-mode-p inferior-tcl-mode get-process get-buffer inferior-tcl tcl-load-file comint-check-proc yes-or-no-p "A Tcl process is running, are you sure you want to reset it? " comint-check-source file-name-directory file-name-nondirectory comint-exec get-buffer-create process-name "inferior-tcl" switch-to-tcl t] 10 (#$ . 37130) (byte-code "\302\303\304\305!\203 \306 \206 \307\310$@	D\207" [tcl-previous-dir/file current-prefix-arg comint-get-source "Restart with Tcl file" derived-mode-p tcl-mode buffer-file-name (tcl-mode) t] 5)])
#@88 Like `auto-fill-mode', but sets `comment-auto-fill-only-comments'.

(fn &optional ARG)
(defalias 'tcl-auto-fill-mode #[256 "\302!\210\203 \303\301!\210\304\211\207\305\301!\207" [auto-fill-function comment-auto-fill-only-comments auto-fill-mode make-local-variable t kill-local-variable] 3 (#$ . 38171) "P"])
(make-obsolete 'tcl-auto-fill-mode "Use `auto-fill-mode' with `comment-auto-fill-only-comments'." "26.1")
#@197 Insert a `#' and quote if it does not start a real comment.
Prefix arg is number of `#'s to insert.
See variable `tcl-electric-hash-style' for description of quoting
styles.

(fn &optional COUNT)
(defalias 'tcl-electric-hash #[256 "\211\204 \302\262\211\303V\205g \304=\203! \211\305V\203 \306\202\" \307\202\" \310\203a \212\311c\210\312 \262)\313\302!\210	\203= \314\315\"\210\316\267\202a \211\204a \317c\210\202a \211\204a \303V\203a \320c\210S\262\202Q \321\322\"\266\202\207" [tcl-electric-hash-style tcl-explain-indentation 1 0 smart 3 quote backslash nil "#" tcl-in-comment delete-char message "comment: %s" #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (quote 67 backslash 77)) "\"" "\\#" insert-char 35] 6 (#$ . 38597) "p"])
#@60 Quote all `#'s in current buffer that aren't Tcl comments.
(defalias 'tcl-hashify-buffer #[0 "\212eb\210\300\211`dW\2055 \301d\302#\262\211@\203 \303\304!\210\202. \305u\210g\306=\203+ \307c\210\300u\210\211A\262\202 \266\202)\207" [nil tcl-hairy-scan-for-comment t beginning-of-line 2 -1 35 "\\"] 6 (#$ . 39390) nil])
#@72 Return the desired indentation, but be careful to add a `;' if needed.
(defalias 'tcl-comment-indent #[0 "\212\300\301x\210n\204 \302 \204 \303c\210\301f\304>\203 \305\306!\210)\307\310! \207" [" 	" nil tcl-real-command-p ";" (9 32) delete-char 1 default-value comment-indent-function] 2 (#$ . 39720)])
#@120 Attempt to guess Tcl application by looking at first line.
The first line is assumed to look like "#!.../program ...".
(defalias 'tcl-guess-application #[0 "\212eb\210\301\302!\205 \303\300!\210\304\305!\211)\207" [tcl-application looking-at "#![^ 	]*/\\([^ 	\n/]+\\)\\([ 	]\\|$\\)" make-local-variable match-string 1] 2 (#$ . 40033)])
#@30 XEmacs menu support.

(fn E)
(defalias 'tcl-popup-menu #[257 "\301!\207" [tcl-mode-menu popup-menu] 3 (#$ . 40377) "@e"])
(make-obsolete 'tcl-popup-menu nil "27.1")
#@51 Quote STRING according to Tcl rules.

(fn STRING)
(defalias 'tcl-quote #[257 "\300\301\302#\207" [mapconcat #[257 "\211\300>\203\f \301\302!P\207\302!\207" [(91 93 123 125 92 34 36 32 59) "\\" char-to-string] 4 "\n\n(fn CHAR)"] ""] 5 (#$ . 40549)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\210\300\306\307\303#\210\304\306\307\305#\210\300\310\311\303#\210\304\310\311\305#\210\300\312\313\303#\210\304\312\313\305#\210\300\314\315\303#\210\304\314\315\305#\210\300\316\317\303#\210\304\316\317\305#\210\300\320\321\303#\210\304\320\321\305#\210\300\322\323\303#\210\304\322\323\305#\207" [defalias tcl-uncomment-region uncomment-region nil make-obsolete "28.1" tcl-indent-for-comment comment-indent add-log-tcl-defun tcl-add-log-defun indent-tcl-exp tcl-indent-exp calculate-tcl-indent tcl-calculate-indent tcl-beginning-of-defun beginning-of-defun tcl-end-of-defun end-of-defun tcl-mark-defun mark-defun] 4)
(defalias 'tcl-mark #[0 "\300\301!\207" [mark t] 2])
(byte-code "\300\301\302\303#\210\304\305!\207" [make-obsolete tcl-mark nil "28.1" provide tcl] 4)
