Skip to content
Snippets Groups Projects
project.el 3.66 KiB
Newer Older
g0dil's avatar
g0dil committed
;; Configuration file for cc-ide.el (Emacs C++ IDE extension, see http://g0dil.de)

 (defconst senf-c-style
  '((c-basic-offset              . 4)
    (c-backslash-column          . 98)
    (c-cleanup-list              . (empty-defun-braces 
				    defun-close-semi 
				    list-close-comma 
				    scope-operator 
				    compact-empty-funcall))
    (c-hanging-braces-alist      . ((namespace-open after)
                                    (namespace-close before after)
                                    (brace-list-open)
                                    (brace-entry-open)
                                    (substatement-open after)
                                    (block-close . c-snug-do-while)
                                    (extern-lang-open after)
                                    (inexpr-class-open after)
                                    (inexpr-class-close before)))
    (c-offsets-alist             . ((namespace-open . 0)
                                    (namespace-close . -)
                                    (innamespace . +)
                                    (statement-block-intro . +)
                                    (substatement-open . 0)
                                    (label . 0)
                                    (statement-cont . +))) ))

(c-add-style "senf" senf-c-style)

g0dil's avatar
g0dil committed
(set (make-local-variable 'ccide-file-vars)
     '(( fill-column  . 100 )
       ( comment-column . 40 )
g0dil's avatar
g0dil committed
       ( c-file-style . "senf" )
       ( indent-tabs-mode . nil )
       ( ispell-local-dictionary . "american" )
       ( compile-command . "scons -u test") ))
g0dil's avatar
g0dil committed

(set (make-local-variable 'ccide-default-copyright)
     (concat "//\n"
             "// This program is free software; you can redistribute it and/or modify\n"
             "// it under the terms of the GNU General Public License as published by\n"
             "// the Free Software Foundation; either version 2 of the License, or\n"
             "// (at your option) any later version.\n"
             "//\n"
             "// This program is distributed in the hope that it will be useful,\n"
             "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
             "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
             "// GNU General Public License for more details.\n"
             "//\n"
             "// You should have received a copy of the GNU General Public License\n"
             "// along with this program; if not, write to the\n"
             "// Free Software Foundation, Inc.,\n"
             "// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n"))
g0dil's avatar
g0dil committed
(let ((local-conf (ccide-project-search-upwards "project-local.el")))
  (if local-conf
g0dil's avatar
g0dil committed
      (load-file local-conf)))

(defun flyspell-cc-progmode-verify ()
  "Replacement for standard flyspell-generic-progmode-verify which
checks for C/C++ preproc directives. Additionally, anything after ^L
is ignored (Those are the file local variables and local words)."
  (let ((f (get-text-property (point) 'face)))
    (and (memq f flyspell-prog-text-faces)
	 (not (save-excursion 
		(beginning-of-line) 
		(looking-at "\\(//\\)?#")))
	 (not (let ((l (max (point-min) (- (point-max) 4096))))
		(and (< l (point))
		     (save-excursion (search-backward "" l t))))))))

(defun flyspell-cc-mode ()
  "Torn on `flyspell-mode` for comments and strings in C/C++ mode."
  (interactive)
  (setq flyspell-generic-check-word-p 'flyspell-cc-progmode-verify)
  (flyspell-mode 1))

;; Better set this here than in the file variables since the setting
;; is only valid if project.el is loaded ...
(set (make-local-variable 'ispell-personal-dictionary)
     (expand-file-name "senf.dict" ccide-project-root))