Function: vhdl-speedbar-initialize

vhdl-speedbar-initialize is a byte-compiled function defined in vhdl-mode.el.gz.

Signature

(vhdl-speedbar-initialize)

Documentation

Initialize speedbar.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-speedbar-initialize ()
  "Initialize speedbar."
  ;; general settings
  ;; VHDL file extensions (extracted from `auto-mode-alist')
  (let ((mode-alist auto-mode-alist))
    (while mode-alist
      (when (eq (cdar mode-alist) 'vhdl-mode)
	(speedbar-add-supported-extension (caar mode-alist)))
      (setq mode-alist (cdr mode-alist))))
  ;; hierarchy browser settings
  (when (boundp 'speedbar-mode-functions-list)
    ;; special functions
    (speedbar-add-mode-functions-list
     '("vhdl directory"
       (speedbar-item-info . vhdl-speedbar-item-info)
       (speedbar-line-directory . speedbar-files-line-directory)))
    (speedbar-add-mode-functions-list
     '("vhdl project"
       (speedbar-item-info . vhdl-speedbar-item-info)
       (speedbar-line-directory . vhdl-speedbar-line-project)))
    ;; keymap
    (unless vhdl-speedbar-mode-map
      (setq vhdl-speedbar-mode-map (speedbar-make-specialized-keymap))
      (define-key vhdl-speedbar-mode-map "e" #'speedbar-edit-line)
      (define-key vhdl-speedbar-mode-map "\C-m" #'speedbar-edit-line)
      (define-key vhdl-speedbar-mode-map "+" #'speedbar-expand-line)
      (define-key vhdl-speedbar-mode-map "=" #'speedbar-expand-line)
      (define-key vhdl-speedbar-mode-map "-" #'vhdl-speedbar-contract-level)
      (define-key vhdl-speedbar-mode-map "_" #'vhdl-speedbar-contract-all)
      (define-key vhdl-speedbar-mode-map "C" #'vhdl-speedbar-port-copy)
      (define-key vhdl-speedbar-mode-map "P" #'vhdl-speedbar-place-component)
      (define-key vhdl-speedbar-mode-map "F" #'vhdl-speedbar-configuration)
      (define-key vhdl-speedbar-mode-map "A" #'vhdl-speedbar-select-mra)
      (define-key vhdl-speedbar-mode-map "K" #'vhdl-speedbar-make-design)
      (define-key vhdl-speedbar-mode-map "R" #'vhdl-speedbar-rescan-hierarchy)
      (define-key vhdl-speedbar-mode-map "S" #'vhdl-save-caches)
      (let ((key 0))
	(while (<= key 9)
	  (define-key vhdl-speedbar-mode-map (int-to-string key)
	    `(lambda () (interactive) (vhdl-speedbar-set-depth ,key)))
	  (setq key (1+ key)))))
    (define-key speedbar-mode-map "h"
      (lambda () (interactive)
	(speedbar-change-initial-expansion-list "vhdl directory")))
    (define-key speedbar-mode-map "H"
      (lambda () (interactive)
	(speedbar-change-initial-expansion-list "vhdl project")))
    ;; menu
    (unless vhdl-speedbar-menu-items
      (setq
       vhdl-speedbar-menu-items
       `(["Edit" speedbar-edit-line t]
	 ["Expand" speedbar-expand-line
	  (save-excursion (beginning-of-line) (looking-at "[0-9]+: *.\\+. "))]
	 ["Contract" vhdl-speedbar-contract-level t]
	 ["Expand All" vhdl-speedbar-expand-all t]
	 ["Contract All" vhdl-speedbar-contract-all t]
	 ,(let ((key 0) (menu-list '("Hierarchy Depth")))
	    (while (<= key 9)
	      (setq menu-list
		    (cons `[,(if (= key 0) "All" (int-to-string key))
			    (vhdl-speedbar-set-depth ,key)
			    :style radio
			    :selected (= vhdl-speedbar-hierarchy-depth ,key)
			    :keys ,(int-to-string key)]
			  menu-list))
	      (setq key (1+ key)))
	    (nreverse menu-list))
	 "--"
	 ["Copy Port/Subprogram" vhdl-speedbar-port-copy
	  (or (vhdl-speedbar-check-unit 'entity)
	      (vhdl-speedbar-check-unit 'subprogram))]
	 ["Place Component" vhdl-speedbar-place-component
	  (vhdl-speedbar-check-unit 'entity)]
	 ["Generate Configuration" vhdl-speedbar-configuration
	  (vhdl-speedbar-check-unit 'architecture)]
	 ["Select as MRA" vhdl-speedbar-select-mra
	  (vhdl-speedbar-check-unit 'architecture)]
	 ["Make" vhdl-speedbar-make-design
	  (save-excursion (beginning-of-line) (looking-at "[0-9]+: *[[<]"))]
	 ["Generate Makefile" vhdl-speedbar-generate-makefile
	  (save-excursion (beginning-of-line) (looking-at "[0-9]+:"))]
	 ["Rescan Directory" vhdl-speedbar-rescan-hierarchy
	  :active (save-excursion (beginning-of-line) (looking-at "[0-9]+:"))
	  ,(if (featurep 'xemacs) :active :visible) (not vhdl-speedbar-show-projects)]
	 ["Rescan Project" vhdl-speedbar-rescan-hierarchy
	  :active (save-excursion (beginning-of-line) (looking-at "[0-9]+:"))
	  ,(if (featurep 'xemacs) :active :visible) vhdl-speedbar-show-projects]
	 ["Save Caches" vhdl-save-caches vhdl-updated-project-list])))
    ;; hook-ups
    (speedbar-add-expansion-list
     '("vhdl directory" vhdl-speedbar-menu-items vhdl-speedbar-mode-map
       vhdl-speedbar-display-directory))
    (speedbar-add-expansion-list
     '("vhdl project" vhdl-speedbar-menu-items vhdl-speedbar-mode-map
       vhdl-speedbar-display-projects))
    (setq speedbar-stealthy-function-list
	  (append
	   '(("vhdl directory" vhdl-speedbar-update-current-unit)
	     ("vhdl project" vhdl-speedbar-update-current-project
	      vhdl-speedbar-update-current-unit))
	   speedbar-stealthy-function-list))
    (when (eq vhdl-speedbar-display-mode 'directory)
      (setq speedbar-initial-expansion-list-name "vhdl directory"))
    (when (eq vhdl-speedbar-display-mode 'project)
      (setq speedbar-initial-expansion-list-name "vhdl project"))
    (add-hook 'speedbar-timer-hook #'vhdl-update-hierarchy)))