Imported sources
[vee.git] / modes.el
blob3674a8776b3b774d23314b63a9273974830c279b
1 (defvar sheebang-modes-alist
2 '(("^#!.*ruby" . ruby-mode)
3 ("^#!.*perl" . perl-mode)
4 ("^#!.*\\(bash\\|sh\\)" . shell-script-mode))
5 "Alist of sheebang (REGEXP . MAJOR-MODE).
6 When a file's major mode cannot be determined using auto-mode-alist, vee tries
7 to guess the correct mode from the sheebang line.")
9 (defun guess-mode-using-sheebang (buffer)
10 (save-excursion
11 (save-match-data
12 (switch-to-buffer buffer)
13 (goto-char 0)
14 (cdr (assoc-if (lambda (s) (looking-at s)) sheebang-modes-alist)))))
16 (defun may-set-mode-using-sheebang nil
17 (when (eq major-mode default-major-mode)
18 (let ((mode (guess-mode-using-sheebang (current-buffer))))
19 (and mode (funcall mode 1)))))
21 (add-hook 'find-file-hook 'may-set-mode-using-sheebang)
23 ;; html / xml => nxml
24 (when (require? '80nxml-mode-gentoo)
25 (add-to-list 'auto-mode-alist
26 (cons (concat "\\." (regexp-opt '("xml" "xsd"
27 "sch" "rng"
28 "xslt" "svg"
29 "rss") t) "\\'")
30 'nxml-mode)))
32 ;; css
33 (when (require? '50css-mode-gentoo)
34 (eval-after-load 'css-mode
35 (setq cssm-indent-function 'cssm-c-style-indenter
36 cssm-indent-level '2)))
38 ;; java / jsp
40 ;; perl5
41 (defalias 'perl-mode 'cperl-mode)
42 (defalias 'cperl-invalid-face 'trailing-whitespace)
44 ;; ruby
45 (when (require? '50ruby-mode-gentoo)
46 (add-to-list 'auto-mode-alist
47 '("\\([rR]ake\\(file\\)?\\|\\.rake\\)\\'" . ruby-mode))
48 (eval-after-load 'ruby-mode
49 ;; check if using el4r, and enable some cool stuff.
50 nil))
52 ;; rails
55 ;; org mode
56 (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
57 (eval-after-load 'org '(require 'vee/org))
59 ;; haskell
60 (and (locate-library "50haskell-mode-gentoo")
61 (load-library "50haskell-mode-gentoo"))
63 (provide 'vee/modes)