+ ["Tcl help" tcl-help-on-word t])
+ "Lucid Emacs menu for Tcl mode.")
+
+;; GNU Emacs does menus via keymaps. Do it in a function in case we
+;; later decide to add it to inferior Tcl mode as well.
+(defun tcl-add-fsf-menu (map)
+ (define-key map [menu-bar] (make-sparse-keymap))
+ (require 'lmenu)
+ (define-key map [menu-bar tcl]
+ (cons "Tcl" (make-lucid-menu-keymap "Tcl" tcl-lucid-menu))))
+
+(defun tcl-fill-mode-map ()
+ (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-;" 'tcl-indent-for-comment)
+ (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)
+
+ ;; Make menus.
+ (if tcl-using-emacs-19
+ (if tcl-using-lemacs-19
+ ;; In Lucid, button 3 seems to be the standard for this.
+ (define-key tcl-mode-map 'button3 'tcl-popup-menu)
+ ;; In FSF 19, there is no standard, so I use shift-button2.
+ (tcl-add-fsf-menu tcl-mode-map)
+ (define-key tcl-mode-map [S-down-mouse-2] 'tcl-popup-menu))))
+
+(defun tcl-fill-inferior-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))
+
+(if tcl-mode-map
+ ()
+ (setq tcl-mode-map (make-sparse-keymap))
+ (tcl-fill-mode-map))
+
+(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))
+ (tcl-fill-inferior-map))
+