;; -*- emacs-lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; $Id: emacs_ecb.el,v 1.8 2006-11-06 21:02:42 rscholz Exp $
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Einstellungen für den Emacs Code Browser (ECB)
;;
;; Die offizielle Quelle dieser Datei ist
;;   <http://www.zonix.de/projects/emacs/config>
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CEDET <http://cedet.sourceforge.net/>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(add-to-list 'load-path (expand-file-name (concat zonix-elisp-dir "cedet/common")))

(add-to-list 'Info-default-directory-list
             (expand-file-name (concat zonix-elisp-dir "cedet/eieio")))
(add-to-list 'Info-default-directory-list
             (expand-file-name (concat zonix-elisp-dir "cedet/semantic")))

(require 'cedet)

(setq semantic-load-turn-everything-on t)

;; (require 'semantic-load)

(global-semantic-show-unmatched-syntax-mode -1)
(setq semanticdb-default-save-directory (expand-file-name "~/.semantic.cache/"))

;; (setq semanticdb-project-roots
;;       '( "~/xxx/src/inndecode/"))

;; (require 'semantic-ia)
;; (require 'semantic-analyze)
;; (require 'semantic-sb)

;; sucks on text terminals
(unless window-system
  (setq global-semantic-show-dirty-mode nil))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ECB <http://home.swipnet.se/mayhem/ecb.html>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;(add-to-list 'load-path (expand-file-name "~/cvs/ecb"))
(add-to-list 'load-path (expand-file-name (concat zonix-elisp-dir "ecb")))

(add-to-list 'Info-default-directory-list
             (expand-file-name (concat zonix-elisp-dir "ecb/info-help")))

;; Toggle command by Dirk Meyer

(defun add-to-frame-width (offset)
  (let ((width (frame-parameter nil 'width))
        (left (frame-parameter nil 'left)))
    
    (modify-frame-parameters 
     frame-initial-frame (list (cons 'width (+ width offset)) 
                               (cons 'left (- left (* 9 offset)))))))


(defun ecb ()
  (interactive)

  (if (not (boundp 'ecb-minor-mode))
      (progn
        (require 'ecb)

        (defun ecb-layout-function-42 ()
          (when ecb-compile-window-height
            (ecb-split-ver (* -1 ecb-compile-window-height) t)
            (setq ecb-compile-window (next-window)))
          (ecb-split-hor ecb-windows-width t)
          (ecb-set-directories-buffer)
          (ecb-split-ver 0.5)
          (ecb-set-methods-buffer)
          (select-window (next-window))
          (setq ecb-edit-window (selected-window)))

;       (setq ecb-show-sources-in-directories-buffer t)

        (defalias 'ecb-delete-window-in-editwindow-42
          'ecb-delete-window-in-editwindow-0)

        (defalias 'ecb-delete-other-windows-in-editwindow-42
          'ecb-delete-other-windows-in-editwindow-0)))

      (if ecb-minor-mode
          (progn
            (add-to-frame-width -20)
            (ecb-deactivate))
        (progn
          (add-to-frame-width 20)
          (ecb-activate))))