;; NS3 stuff ;; Customized C/C++ mode stuff (defconst ns3-c-style '((c-tab-always-indent . t) (c-auto-newline . t) (c-indent-level . 4) (c-comment-only-line-offset . 4) (c-hanging-braces-alist . ((substatement-open before after) (brace-list-open))) (c-hanging-colons-alist . ((member-init-intro before) (inher-intro) (case-label after) (label after) (access-label after))) (c-cleanup-list . (scope-operator empty-defun-braces defun-close-semi)) (c-offsets-alist . ((arglist-close . c-lineup-arglist) (substatement . 2) (substatement-open . 2) (topmost-intro . -2) (inline-open . -2) (comment-intro . 0) (case-label . 0) (block-open . 2) (statement-block-intro . 2) (statement-case-intro . 2) (statement-case-open . 2) (defun-block-intro . 2) (knr-argdecl-intro . -))) (c-echo-syntactic-information-p . t)) "Ns3 C++ Programming Style") (defun ns3-c-mode-common-hook () ;; add customized c-mode stuff (c-add-style "Ns3" ns3-c-style t) ;; insure spaces instead of tabs (setq indent-tabs-mode nil) ;; add auto-new-line and hungry delete (setq auto-new-line t) ;; Set hungry delete (enable as desired) ;;(c-toggle-auto-hungry-state 1) ;;(define-key c-mode-base-map "\C-m" 'c-context-line-break) (message "Hello from ns3-c-mode-hook") ) ;;(add-hook 'c-mode-common-hook `ns3-c-mode-common-hook) (defun ns3-mode () "Major mode for editing C++ code for the ns3 project. Borrows heavily from C++ mode." (interactive) (kill-all-local-variables) (c-initialize-cc-mode t) (set-syntax-table c++-mode-syntax-table) (setq major-mode 'c++-mode mode-name "NS3" local-abbrev-table c++-mode-abbrev-table abbrev-mode t) (use-local-map c++-mode-map) (c-init-language-vars-for 'c++-mode) (c-common-init 'c++-mode) (easy-menu-add c-c++-menu) (cc-imenu-init cc-imenu-c++-generic-expression) (ns3-c-mode-common-hook) (message "Hello from NS3 mode") (c-update-modeline))