-
;; user information
-
(setq user-full-name "Giuseppe Coviello")
-
(setq user-mail-address "cjg@cruxppc.org")
-
-
;; setting load-path
-
(setq load-path (cons "~/.emacs.d/" load-path))
-
(setq load-path (cons "~/.emacs.d/color-theme/" load-path))
-
-
;; start emacs server
-
(server-start)
-
-
;; interface
-
;; console specific interface customization
-
(defun console-interface()
-
(menu-bar-mode nil)
-
(color-theme-pok-wob)
-
(display-time-mode)
-
(require 'battery)
-
(display-battery-mode)
-
)
-
-
;; X specific interface customization
-
(defun x-interface()
-
(setq x-select-enable-clipboard t)
-
(tool-bar-mode nil)
-
(color-theme-blippblopp)
-
(setq frame-title-format "Emacs: %b %+%+ %f")
-
(setq icon-title-format "Emacs – %b")
-
(pc-bindings-mode)
-
(pc-selection-mode)
-
(set-scroll-bar-mode 'right)
-
-
;; speedbar
-
(autoload 'speedbar-frame-mode "speedbar" "Popup a speedbar frame" t)
-
(autoload 'speedbar-get-focus "speedbar" "Jump to speedbar frame" t)
-
(define-key-after (lookup-key global-map [menu-bar tools])
-
[speedbar] '("Speedbar" . speedbar-frame-mode) [calendar])
-
(setq php-speedbar-config 1)
-
-
;; wheel mouse
-
(defun up-slightly () (interactive) (scroll-up 5))
-
(defun down-slightly () (interactive) (scroll-down 5))
-
(global-set-key [mouse-4] 'down-slightly)
-
(global-set-key [mouse-5] 'up-slightly)
-
-
(defun up-one () (interactive) (scroll-up 1))
-
(defun down-one () (interactive) (scroll-down 1))
-
(global-set-key [S-mouse-4] 'down-one)
-
(global-set-key [S-mouse-5] 'up-one)
-
-
(defun up-a-lot () (interactive) (scroll-up))
-
(defun down-a-lot () (interactive) (scroll-down))
-
(global-set-key [C-mouse-4] 'down-a-lot)
-
(global-set-key [C-mouse-5] 'up-a-lot)
-
-
;; avoid mouse pointer
-
(require 'avoid)
-
(if (display-mouse-p) (mouse-avoidance-mode 'animate))
-
)
-
-
;; MACOSX specific interface customization
-
(defun mac-interface()
-
(setq mac-allow-anti-aliasing t)
-
(x-interface)
-
(custom-set-faces
-
'(hl-line ((t (:background "lightgray")))))
-
)
-
-
;; global interface customization
-
(require 'font-lock)
-
(require 'color-theme)
-
(color-theme-initialize)
-
(setq inhibit-startup-message t)
-
(fset 'yes-or-no-p 'y-or-n-p)
-
(setq-default transient-mark-mode t)
-
(blink-cursor-mode nil)
-
(setq track-eol t)
-
(line-number-mode t)
-
(setq column-number-mode t)
-
(setq scroll-step 1)
-
(setq query-replace-highlight t)
-
(setq search-highlight t)
-
(show-paren-mode t)
-
(global-font-lock-mode t)
-
(setq font-lock-maximum-decoration t
-
font-lock-mode-maximum-decoration t
-
font-lock-maximum-size nil)
-
(setq-default enable-multibyte-characters t)
-
(setq default-input-method "rfc1345")
-
(toggle-uniquify-buffer-names)
-
(setq gdb-many-windows t)
-
(require 'hl-line)
-
(global-hl-line-mode)
-
-
(defun shell-mode-customize()
-
"Customize the shell-mode"
-
(load-library 'ansi-color)
-
(ansi-color-for-comint-mode-on)
-
)
-
(add-hook 'shell-mode-hook 'shell-mode-customize)
-
-
(if (not window-system)
-
(console-interface)
-
)
-
(if (eq window-system 'x)
-
(x-interface)
-
)
-
(if (eq window-system 'mac)
-
(mac-interface)
-
)
-
-
;; editing
-
(require 'completion)
-
(dynamic-completion-mode)
-
(require 'generic-x)
-
(recentf-mode t)
-
(toggle-save-place-globally)
-
(set-input-mode nil nil 1)
-
(set-default 'truncate-lines 1)
-
(setq-default fill-column 80)
-
(setq-default auto-fill-function 'do-auto-fill)
-
(setq next-line-add-newlines nil)
-
(delete-selection-mode t)
-
(setq require-final-newline 't)
-
(require 'htmlize)
-
-
;; key bindings
-
(global-set-key "\C-a" 'mark-whole-buffer)
-
(global-set-key "\C-z" 'undo)
-
(global-set-key "\C-cg" 'goto-line)
-
(global-set-key "\C-b" 'buffer-menu)
-
(global-set-key "\M-a" 'yic-next-buffer)
-
(global-set-key "\M-d" 'yic-prev-buffer)
-
(global-set-key "\M-\S-a" 'previous-multiframe-window)
-
(global-set-key "\M-\S-d" 'next-multiframe-window)
-
(global-set-key "\M-s" 'delete-other-windows)
-
(global-set-key "\M-\S-s" 'kill-buffer-and-window)
-
(global-set-key "\M-c" 'clipboard-kill-ring-save)
-
(global-set-key "\M-v" 'clipboard-yank)
-
(global-set-key "\M-f" 'clipboard-kill-region)
-
(global-set-key "\M-w" 'set-mark-command)
-
(global-set-key "\M-q" 'comment-region)
-
(global-set-key "\M-e" 'uncomment-region)
-
(global-set-key (kbd "(") 'insert-round-brackets)
-
(global-set-key (kbd "[") 'insert-square-brackets)
-
(global-set-key (kbd "{") 'insert-brackets)
-
-
;; mode customization
-
;; latex
-
(defun latex-mode-fix ()
-
(local-unset-key "\M-s")
-
(local-unset-key (kbd "<tab>"))
-
(local-set-key "\M-s" 'delete-other-windows)
-
(local-set-key (kbd "<tab>") 'indent-or-complete)
-
)
-
(add-hook 'LaTeX-mode-hook 'latex-mode-fix)
-
-
;; python
-
(defun python-mode-fix ()
-
(setq py-smart-indentation nil
-
py-indent-offset 4
-
tab-width 4
-
indent-tabs-mode nil
-
current-language-environment "UTF-8"
-
)
-
(global-set-key [f5] 'py-execute-buffer)
-
(local-set-key (kbd "<tab>") 'indent-or-complete)
-
)
-
(add-hook 'python-mode-hook 'python-mode-fix)
-
-
; crux initscripts and Pkgfile
-
(add-to-list 'auto-mode-alist '("/etc/rc.d/*" . sh-mode))
-
(add-to-list 'auto-mode-alist '("Pkgfile" . sh-mode))
-
-
;; asm motorola 68k
-
(add-to-list 'auto-mode-alist '("\\.a68$" . asm-mode))
-
-
; C
-
(defun linux-c-mode ()
-
"C mode with adjusted defaults for use with the Linux kernel."
-
(interactive)
-
(c-mode)
-
(setq c-indent-level 8)
-
(setq c-brace-imaginary-offset 0)
-
(setq c-brace-offset -8)
-
(setq c-argdecl-indent 8)
-
(setq c-label-offset -8)
-
(setq c-continued-statement-offset 8)
-
(setq indent-tabs-mode nil)
-
(setq tab-width 8))
-
-
(setq auto-mode-alist (cons '("*\\.[ch]$" . linux-c-mode)
-
auto-mode-alist))
-
;; Linux C style
-
(defconst linux-c-style
-
'(
-
(c-set-style . "k&r")
-
(c-indent-level 8)
-
(c-brace-imaginary-offset 0)
-
(c-brace-offset -8)
-
(c-argdecl-indent 8)
-
(c-label-offset -8)
-
(c-continued-statement-offset 8)
-
(indent-tabs-mode nil)
-
(c-tab-width . 8)
-
(c-basic-offset . 8)
-
(comment-multi-line t)
-
)
-
"Linux C Style"
-
)
-
-
(defun linux-c-mode-common-hook ()
-
(c-add-style "Linux" linux-c-style t)
-
(cwarn-mode 1)
-
(which-function-mode t)
-
(setq which-func-unknown "TOP LEVEL")
-
(setq compile-command "make CC=gcc")
-
(local-set-key "\C-c\C-c" 'compile)
-
(local-set-key "\C-c\C-d" 'gdb)
-
(local-set-key "\M-m" 'man-follow)
-
(local-set-key (kbd "<tab>") 'indent-or-complete)
-
(local-set-key (kbd "(") 'insert-round-brackets)
-
(local-set-key (kbd "[") 'insert-square-brackets)
-
(local-set-key (kbd "{") 'insert-brackets)
-
(require 'compile)
-
(unless (file-exists-p "Makefile")
-
(set (make-local-variable 'compile-command)
-
(let ((file (file-name-nondirectory buffer-file-name)))
-
(concat "gcc -g -W -Wall -o "
-
(file-name-sans-extension file) " " file))))
-
)
-
(add-hook 'c-mode-common-hook 'linux-c-mode-common-hook)
-
-
(add-hook 'c-mode-hook
-
(lambda ()
-
(font-lock-add-keywords nil
-
'(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
-
("\\<\\(TODO\\):" 1 font-lock-type-face prepend)))
-
)
-
)
-
-
;; c-sharp
-
(autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
-
(setq auto-mode-alist
-
(append '(("\\.cs$" . csharp-mode)) auto-mode-alist))
-
-
;; C# style
-
(defconst csharp-style
-
'(
-
(c-set-style . "java")
-
(c-indent-level 4)
-
(c-brace-imaginary-offset 0)
-
(c-brace-offset -4)
-
(c-argdecl-indent 4)
-
(c-label-offset -4)
-
(c-continued-statement-offset 4)
-
(indent-tabs-mode nil)
-
(c-tab-width . 4)
-
(c-basic-offset . 4)
-
(comment-multi-line t)
-
)
-
"C# Style"
-
)
-
-
(defun csharp-mode-fix ()
-
(interactive)
-
(c-add-style "C#" csharp-style t)
-
(setq tab-width 4
-
current-language-environment "UTF-8"
-
)
-
(local-set-key (kbd "<tab>") 'indent-or-complete)
-
(require 'compile)
-
(unless (file-exists-p "Makefile")
-
(set (make-local-variable 'compile-command)
-
(let ((file (file-name-nondirectory buffer-file-name)))
-
(concat "mcs " file))))
-
)
-
(add-hook 'csharp-mode-hook 'csharp-mode-fix)
-
-
;; skeletons
-
(define-skeleton c-skeleton
-
"Inserts a C file skeleton into current buffer.
-
This only makes sense for empty buffers."\n
-
"/* " (buffer-name) " */"\n
-
"
-
/* <project_name> -- <project_description>
-
*
-
* Copyright (C) 2006 - 2007
-
* "(insert user-full-name)" <"(insert user-mail-address)">
-
*
-
* This program is free software; you can redistribute it and/or modify
-
* it under the terms of the GNU General Public License as published by
-
* the Free Software Foundation; either version 2 of the License, or
-
* (at your option) any later version.
-
*
-
* This program is distributed in the hope that it will be useful,
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-
* GNU General Public License for more details.
-
*
-
* You should have received a copy of the GNU General Public License
-
* along with this program; if not, write to the Free Software
-
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
*/
-
"\n
-
)
-
-
(define-skeleton h-skeleton
-
"Inserts a C include file skeleton into current buffer.
-
This only makes sense for empty buffers."\n
-
"/* " (buffer-name) " */"\n
-
"
-
/* <project_name> -- <project_description>
-
*
-
* Copyright (C) 2006 - 2007
-
* "(insert user-full-name)" <"(insert user-mail-address)">
-
*
-
* This program is free software; you can redistribute it and/or modify
-
* it under the terms of the GNU General Public License as published by
-
* the Free Software Foundation; either version 2 of the License, or
-
* (at your option) any later version.
-
*
-
* This program is distributed in the hope that it will be useful,
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-
* GNU General Public License for more details.
-
*
-
* You should have received a copy of the GNU General Public License
-
* along with this program; if not, write to the Free Software
-
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
*/
-
-
#ifndef _" (upcase (replace-regexp-in-string "\\." "_" (buffer-name))) "
-
#define _" (upcase (replace-regexp-in-string "\\." "_" (buffer-name))) "
-
-
#endif /* _" (upcase (replace-regexp-in-string "\\." "_" (buffer-name))) " */
-
"\n
-
)
-
-
(define-skeleton python-skeleton
-
"Inserts a Python file skeleton into current buffer.
-
This only makes sense for empty buffers."\n
-
"\"\"\"
-
" (buffer-name) "
-
-
<project_name> -- <project_description>
-
-
Copyright (C) 2006 - 2007
-
"(insert user-full-name)" <"(insert user-mail-address)">
-
-
This program is free software; you can redistribute it and/or modify
-
it under the terms of the GNU General Public License as published by
-
the Free Software Foundation; either version 2 of the License, or
-
(at your option) any later version.
-
-
This program is distributed in the hope that it will be useful,
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-
GNU General Public License for more details.
-
-
You should have received a copy of the GNU General Public License
-
along with this program; if not, write to the Free Software
-
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
\"\"\"
-
"\n
-
)
-
-
;; defun(s)()
-
-
(defun yic-ignore (str)
-
(or
-
(string-match "\\*Buffer List\\*" str)
-
(string-match "\\*scratch\\*" str)
-
(string-match "^TAGS" str)
-
(string-match "^\\*Messages\\*$" str)
-
(string-match "^\\*Completions\\*$" str)
-
(string-match "^ " str)
-
(memq str
-
(mapcar
-
(lambda (x)
-
(buffer-name
-
(window-buffer
-
(frame-selected-window x))))
-
(visible-frame-list)))
-
))
-
-
(defun yic-next (ls)
-
"Switch to next buffer in ls skipping unwanted ones."
-
(let* ((ptr ls)
-
bf bn go
-
)
-
(while (and ptr (null go))
-
(setq bf (car ptr) bn (buffer-name bf))
-
(if (null (yic-ignore bn))
-
(setq go bf)
-
(setq ptr (cdr ptr))
-
)
-
)
-
(if go
-
(switch-to-buffer go))))
-
-
(defun yic-prev-buffer ()
-
"Switch to previous buffer in current window."
-
(interactive)
-
(yic-next (reverse (buffer-list))))
-
-
(defun yic-next-buffer ()
-
"Switch to the other buffer (2nd in list-buffer) in current window."
-
(interactive)
-
(bury-buffer (current-buffer))
-
(yic-next (buffer-list)))
-
-
(defun indent-or-complete ()
-
"Complete if point is at end of a word, otherwise indent line."
-
(interactive)
-
(if (looking-at "\\>")
-
(complete-symbol)
-
(indent-for-tab-command)))
-
-
(defun insert-round-brackets ()
-
"Insert round brackets"
-
(interactive)
-
(insert "()")
-
(backward-char)
-
(print (current-word))
-
)
-
-
(defun insert-square-brackets ()
-
"Insert square brackets"
-
(interactive)
-
(insert "[]")
-
(backward-char)
-
)
-
-
(defun insert-brackets ()
-
"Insert brackets"
-
(interactive)
-
(if (and (not (eq (char-before) nil)) (not (= (char-before) ?\ )))
-
(insert " "))
-
(insert "{")
-
(reindent-then-newline-and-indent)
-
(newline)
-
(insert "}")
-
(indent-according-to-mode)
-
(backward-to-indentation)
-
)
-
-
(defun todo-list ()
-
"Find TODOs"
-
(interactive)
-
(grep (concat "grep -nH -e 'TODO:' -e *.[ch] "
-
"| awk '{ sub(/\\/\\//, \"\"); sub(/\\/\\*/, \"\"); "
-
"gsub (/:[\\ \\t]*TODO/, \": TODO\"); print }' 1>&2 | true")
-
)
-
)
-
-
(defun fixme-list ()
-
"Find FIXMEs"
-
(interactive)
-
(grep (concat "grep -nH -e 'FIXME:' *.[ch] "
-
"| awk '{ sub(/\\/\\//, \"\"); sub(/\\/\\*/, \"\"); "
-
"gsub (/:[\\ \\t]*FIXME/, \":\ FIXME\"); print }' 1>&2 | true")
-
)
-
)
-
-
(defun todo-and-fixme-list ()
-
"Find TODOs and FIXMEs"
-
(interactive)
-
(grep (concat "grep -nH -e 'TODO:' -e 'FIXME:' *.[ch] "
-
"| awk '{ sub(/\\/\\//, \"\"); sub(/\\/\\*/, \"\"); "
-
"gsub (/:[\\ \\t]*TODO/, \": TODO\"); "
-
"gsub (/:[\\ \\t]*FIXME/, \":\ FIXME\"); print }' 1>&2 | true")
-
)
-
)