-(defvar tcl-mode-abbrev-table nil
- "Abbrev table in use in Tcl-mode buffers.")
-(if tcl-mode-abbrev-table
- ()
- (define-abbrev-table 'tcl-mode-abbrev-table ()))
-
-;; I sure wish Emacs had a package that made it easy to extract this
-;; sort of information.
-(defconst tcl-using-emacs-19 (string-match "19\\." emacs-version)
- "Nil unless using Emacs 19 (Lucid or FSF).")
-
-;; FIXME this will break on Emacs 19.100.
-(defconst tcl-using-emacs-19.23
- (string-match "19\\.\\(2[3-9]\\|[3-9][0-9]\\)" emacs-version)
- "Nil unless using Emacs 19.23 or later.")
-
-(defconst tcl-using-lemacs-19 (string-match "Lucid" emacs-version)
- "Nil unless using Lucid Emacs).")
-
-(defvar tcl-mode-map ()
- "Keymap used in Tcl mode.")
-(if tcl-mode-map
- ()
- (setq tcl-mode-map (make-sparse-keymap))
- (define-key tcl-mode-map "{" 'tcl-electric-char)
- (define-key tcl-mode-map "}" 'tcl-electric-brace)
- (define-key tcl-mode-map "[" 'tcl-electric-char)
- (define-key tcl-mode-map "]" 'tcl-electric-char)
- (define-key tcl-mode-map ";" 'tcl-electric-char)
- (define-key tcl-mode-map "#" 'tcl-electric-hash)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-e" 'tcl-end-of-defun)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-h" 'mark-tcl-function)
- (define-key tcl-mode-map "\e\C-q" 'indent-tcl-exp)
- (define-key tcl-mode-map "\177" 'backward-delete-char-untabify)
- (define-key tcl-mode-map "\t" 'tcl-indent-command)
- (define-key tcl-mode-map "\M-\C-x" 'tcl-eval-defun)
- (and (fboundp 'comment-region)
- (define-key tcl-mode-map "\C-c\C-c" 'comment-region))
- (define-key tcl-mode-map "\C-c\C-d" 'tcl-help-on-word)
- (define-key tcl-mode-map "\C-c\C-e" 'tcl-eval-defun)
- (define-key tcl-mode-map "\C-c\C-l" 'tcl-load-file)
- (define-key tcl-mode-map "\C-c\C-p" 'inferior-tcl)
- (define-key tcl-mode-map "\C-c\C-r" 'tcl-eval-region)
- (define-key tcl-mode-map "\C-c\C-z" 'switch-to-tcl))
-
-(defvar tcl-mode-syntax-table nil
- "Syntax table in use in Tcl-mode buffers.")
-(if tcl-mode-syntax-table
- ()
- (setq tcl-mode-syntax-table (make-syntax-table))
- (modify-syntax-entry ?% "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?@ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?& "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?* "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?+ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?- "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?. "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?: "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?! "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?$ "_" tcl-mode-syntax-table) ; FIXME use "'"?
- (modify-syntax-entry ?/ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?~ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?< "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?= "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?> "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?| "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?\( "()" tcl-mode-syntax-table)
- (modify-syntax-entry ?\) ")(" tcl-mode-syntax-table)
- (modify-syntax-entry ?\; "." tcl-mode-syntax-table)
- (modify-syntax-entry ?\n "> " tcl-mode-syntax-table)
- (modify-syntax-entry ?\f "> " tcl-mode-syntax-table)
- (modify-syntax-entry ?# "< " tcl-mode-syntax-table))
-
-(defvar inferior-tcl-mode-map nil
- "Keymap used in Inferior Tcl mode.")
-(if inferior-tcl-mode-map
- ()
- ;; FIXME Use keymap inheritance here? FIXME we override comint
- ;; keybindings here. Maybe someone has a better set?
- (setq inferior-tcl-mode-map (copy-keymap comint-mode-map))
- (define-key inferior-tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun)
- (define-key inferior-tcl-mode-map "\e\C-e" 'tcl-end-of-defun)
- (define-key inferior-tcl-mode-map "\177" 'backward-delete-char-untabify)
- (define-key inferior-tcl-mode-map "\M-\C-x" 'tcl-eval-defun)
- (define-key inferior-tcl-mode-map "\C-c\C-d" 'tcl-help-on-word)
- (define-key inferior-tcl-mode-map "\C-c\C-e" 'tcl-eval-defun)
- (define-key inferior-tcl-mode-map "\C-c\C-l" 'tcl-load-file)
- (define-key inferior-tcl-mode-map "\C-c\C-p" 'inferior-tcl)
- (define-key inferior-tcl-mode-map "\C-c\C-r" 'tcl-eval-region)
- (define-key inferior-tcl-mode-map "\C-c\C-z" 'switch-to-tcl))
-
-;; Lucid Emacs menu.
-(defvar tcl-lucid-menu
+(defvar tcl-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "{" 'tcl-electric-char)
+ (define-key map "}" 'tcl-electric-brace)
+ (define-key map "[" 'tcl-electric-char)
+ (define-key map "]" 'tcl-electric-char)
+ (define-key map ";" 'tcl-electric-char)
+ (define-key map "#" 'tcl-electric-hash) ;Remove? -stef
+ (define-key map "\e\C-q" 'tcl-indent-exp)
+ (define-key map "\177" 'backward-delete-char-untabify)
+ (define-key map "\t" 'tcl-indent-command)
+ (define-key map "\M-\C-x" 'tcl-eval-defun)
+ (define-key map "\C-c\C-i" 'tcl-help-on-word)
+ (define-key map "\C-c\C-v" 'tcl-eval-defun)
+ (define-key map "\C-c\C-f" 'tcl-load-file)
+ (define-key map "\C-c\C-t" 'inferior-tcl)
+ (define-key map "\C-c\C-x" 'tcl-eval-region)
+ (define-key map "\C-c\C-s" 'switch-to-tcl)
+ map)
+ "Keymap used in `tcl-mode'.")
+
+(defvar tcl-mode-syntax-table
+ (let ((st (make-syntax-table)))
+ (modify-syntax-entry ?% "_" st)
+ (modify-syntax-entry ?@ "_" st)
+ (modify-syntax-entry ?& "_" st)
+ (modify-syntax-entry ?* "_" st)
+ (modify-syntax-entry ?+ "_" st)
+ (modify-syntax-entry ?- "_" st)
+ (modify-syntax-entry ?. "_" st)
+ (modify-syntax-entry ?: "_" st)
+ (modify-syntax-entry ?! "_" st)
+ (modify-syntax-entry ?$ "_" st) ; FIXME use "'"?
+ (modify-syntax-entry ?/ "_" st)
+ (modify-syntax-entry ?~ "_" st)
+ (modify-syntax-entry ?< "_" st)
+ (modify-syntax-entry ?= "_" st)
+ (modify-syntax-entry ?> "_" st)
+ (modify-syntax-entry ?| "_" st)
+ (modify-syntax-entry ?\( "()" st)
+ (modify-syntax-entry ?\) ")(" st)
+ (modify-syntax-entry ?\; "." st)
+ (modify-syntax-entry ?\n ">" st)
+ ;; (modify-syntax-entry ?\f ">" st)
+ (modify-syntax-entry ?# "<" st)
+ st)
+ "Syntax table in use in `tcl-mode' buffers.")
+
+(defvar inferior-tcl-mode-map
+ ;; FIXME we override comint keybindings here.
+ ;; Maybe someone has a better set?
+ (let ((map (make-sparse-keymap)))
+ ;; Will inherit from `comint-mode-map' thanks to define-derived-mode.
+ (define-key map "\t" 'comint-dynamic-complete)
+ (define-key map "\M-?" 'comint-dynamic-list-filename-completions)
+ (define-key map "\177" 'backward-delete-char-untabify)
+ (define-key map "\M-\C-x" 'tcl-eval-defun)
+ (define-key map "\C-c\C-i" 'tcl-help-on-word)
+ (define-key map "\C-c\C-v" 'tcl-eval-defun)
+ (define-key map "\C-c\C-f" 'tcl-load-file)
+ (define-key map "\C-c\C-t" 'inferior-tcl)
+ (define-key map "\C-c\C-x" 'tcl-eval-region)
+ (define-key map "\C-c\C-s" 'switch-to-tcl)
+ map)
+ "Keymap used in `inferior-tcl-mode'.")
+
+(easy-menu-define tcl-mode-menu tcl-mode-map "Menu used in `tcl-mode'."