Configure emacs to use sgml mode for XML and XSL files
[hvlinux.git] / stage5 / misc / emacs / emacsrc
index 9db7a0e..913dcab 100644 (file)
@@ -7,10 +7,13 @@
 ;; Do not display a splash screen on startup
 (setq inhibit-splash-screen t)
 
+;; Do not open a scratch buffer
+(kill-buffer "*scratch*")
+
 ;; Emacs Load Path
 (setq load-path (cons "/usr/local/share/emacs/site-lisp" load-path))
 
-;; Affichage du numéro de colonne
+;; Affichage du numéro de colonne
 (setq column-number-mode t)
 
 ;; Always end a file with a newline
@@ -22,6 +25,9 @@
 ;; Replaces tabs in files with spaces
 (setq-default indent-tabs-mode nil)
 
+;; Display trailing whitespace
+(setq-default show-trailing-whitespace t)
+
 ;; Makes the compilation buffer always scrolls to follow
 ;; output as it comes in.
 (setq compilation-scroll-output t)
@@ -29,6 +35,9 @@
 ;; Pour avoir les accents
 (set-keyboard-coding-system 'utf-8)
 
+;; Pour que la touche backspace fonctionne aussi en mode console:
+(normal-erase-is-backspace-mode 0)
+
 ;; Set up the keyboard so the delete key on both the regular keyboard
 ;; and the keypad delete the character under the cursor and to the right
 ;; under X, instead of the default, backspace behavior.
   (compile "make clean"))
 
 (defun compile-make ()
-  (interactive) 
+  (interactive)
   (compile "make"))
 
 (defun checkpatch()
   (interactive)
   (compile (concat "checkpatch.pl --no-tree --emacs --strict --file " (buffer-file-name))))
 
-;; buffer-cycle.el
+(setq my-skippable-buffers '("*Messages*" "*scratch*" "*Help*" "*Completions*"))
+
+(defun my-change-buffer (change-buffer)
+  "Call CHANGE-BUFFER until current buffer is not in `my-skippable-buffers'."
+  (let ((initial (current-buffer)))
+    (funcall change-buffer)
+    (let ((first-change (current-buffer)))
+      (catch 'loop
+        (while (member (buffer-name) my-skippable-buffers)
+          (funcall change-buffer)
+          (when (eq (current-buffer) first-change)
+            (switch-to-buffer initial)
+            (throw 'loop t)))))))
+
+(defun my-next-buffer ()
+  "`next-buffer' that skips `my-skippable-buffers'."
+  (interactive)
+  (my-change-buffer 'next-buffer))
+
+(defun my-previous-buffer ()
+  "`previous-buffer' that skips `my-skippable-buffers'."
+  (interactive)
+  (my-change-buffer 'previous-buffer))
+
 ;; F1: Switch to previous buffers
-(autoload 'cycle-buffer-prev "buffer-cycle" t)
-(global-set-key [f1] 'cycle-buffer-prev)
+(global-set-key [f1] 'my-previous-buffer)
 ;; F2: Switch to next buffers
-(autoload 'cycle-buffer-next "buffer-cycle" t)
-(global-set-key [f2] 'cycle-buffer-next)
+(global-set-key [f2] 'my-next-buffer)
 
 ;; F4: make clean
 (global-set-key [f4] 'compile-make-clean)
 ;; Modes
 ;;==================================================
 
+;; Remove all source control hooks:
+(setq vc-handled-backends ())
+
 (defun linux-c-mode ()
   "C mode with adjusted defaults for use with the Linux kernel."
   (interactive)
   (setq indent-tabs-mode t)
 )
 
-;; Default for .h and .d files -> linux mode.
+(defun company-c-mode ()
+  "C mode with adjusted defaults for use with my company source code."
+  (interactive)
+  (c-mode)
+  (c-set-style "K&R")
+  (setq c-basic-offset 4))
+
+;; Default for .h and .c files -> linux mode.
 (add-to-list 'auto-mode-alist '("\.[ch]$" . linux-c-mode))
 
+;; Default for company .h and .c files -> linux mode.
+(add-to-list 'auto-mode-alist '(".*/company.*" . company-c-mode))
+
 ;; Verilog mode
 (autoload 'verilog-mode "verilog-mode" "Verilog mode" t)
 (add-to-list 'auto-mode-alist '("\\.v\\'" . verilog-mode))
 (autoload 'muttrc-mode "muttrc-mode" "Major mode to edit muttrc files" t)
 (add-to-list 'auto-mode-alist '("muttrc\\'" . muttrc-mode))
 
+;; Default for Altium Delphi scripts (.pas) files -> linux mode.
+(add-to-list 'auto-mode-alist '("\\.pas$" . delphi-mode))
+
+;; Default for bitbake configuration files
+(add-to-list 'auto-mode-alist '("\\.bb$" . conf-mode))
+
+;; Add the .mak suffix to the auto-mode-alist:
+(setq auto-mode-alist (cons '("\\.mak$" . makefile-mode) auto-mode-alist))
+
+;; Add the Makefile prefix to the auto-mode-alist:
+(add-to-list 'auto-mode-alist '("Makefile" . makefile-mode))
+
+;; Autoconf mode
+(add-to-list 'auto-mode-alist
+             '("/configure\\.\\(ac\\|in\\)\\'" . autoconf-mode))
+(add-to-list 'auto-mode-alist
+             '("/ac\\(include\\|local\\)\\.m4\\'" . autoconf-mode))
+
+;; Default for XSL and XML files.
+(add-to-list 'auto-mode-alist '("\\.xsl$" . sgml-mode))
+(add-to-list 'auto-mode-alist '("\\.xml$" . sgml-mode))
+
 ;; When an Emacs init file gets large or has a lot of function definitions, you
 ;; should consider compiling it: it will load faster when Emacs starts, and its
 ;; functions will execute faster.
     (add-hook 'after-save-hook 'byte-compile-user-init-file t t)))
 (add-hook 'emacs-lisp-mode-hook 'my-emacs-lisp-mode-hook)
 
+;; To highlight function calls in CC mode.
+(defface font-lock-function-call-face
+  '((t (:foreground "mediumpurple")))
+  "Font Lock mode face used to highlight function calls."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-function-call-face 'font-lock-function-call-face)
+(add-hook 'c-mode-hook
+          (lambda ()
+            (font-lock-add-keywords
+             nil
+             '(("\\<\\(\\sw+\\) ?(" 1 font-lock-function-call-face)) t)))
+
+;; Pour colorer TRUE et FALSE
+(defconst bm-additional-constant-keywords
+  (cons
+   (regexp-opt
+       (list
+        "TRUE" "FALSE"
+        ) 'words)
+   font-lock-constant-face
+   ))
+(font-lock-add-keywords
+ 'c-mode
+ (list
+  bm-additional-constant-keywords
+  ))
+
 (custom-set-variables
   ;; custom-set-variables was added by Custom.
   ;; If you edit it by hand, you could mess it up, so be careful.