summaryrefslogtreecommitdiffstats
path: root/emacs.d
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d')
-rw-r--r--emacs.d/init.el493
-rw-r--r--emacs.d/init.elcbin0 -> 12393 bytes
2 files changed, 493 insertions, 0 deletions
diff --git a/emacs.d/init.el b/emacs.d/init.el
new file mode 100644
index 0000000..58bb2ab
--- /dev/null
+++ b/emacs.d/init.el
@@ -0,0 +1,493 @@
+;; -*- self-compile-mode: t; foldingo-close: t -*-
+
+(setq custom-file "~/.emacs.d/emacs-custom.el")
+(load custom-file)
+(setq warning-suppress-types nil)
+
+;;{{{ load-path anpassen
+
+(let* ((my-lisp-dir "~/.emacs.d/lisp")
+ (default-directory my-lisp-dir)
+ (orig-load-path load-path))
+ (setq load-path (cons my-lisp-dir nil))
+ (normal-top-level-add-subdirs-to-load-path)
+ (nconc load-path orig-load-path))
+
+;;}}}
+
+;;{{{ fix scroll bug with emacs 24.1
+
+(when (boundp 'bidi-paragraph-direction)
+ (setq-default bidi-paragraph-direction 'left-to-right))
+
+;;}}}
+
+;;{{{ load own color theme
+(when (require 'color-theme nil 'noerror)
+ (color-theme-initialize)
+ (if (not window-system)
+ (color-theme-alex-console)
+ (color-theme-alex)))
+;;}}}
+
+;;{{{ user settings
+(setq user-full-name "Alexander Sulfrian"
+ user-mail-address "alexander@sulfrian.net")
+;;}}}
+
+;; define F1 to display man page of the current word
+(global-set-key [(f1)] (lambda () (interactive) (manual-entry (current-word))))
+
+(load "/usr/share/emacs/site-lisp/site-gentoo" 'noerror)
+
+(setq text-mode-hook 'turn-on-auto-fill)
+(setq fill-column 72)
+
+(setq semanticdb-default-save-directory "~/.emacs.d/semantic")
+
+(setq locale-coding-system 'latin-1)
+(set-terminal-coding-system 'latin-1)
+(set-keyboard-coding-system 'latin-1)
+(set-selection-coding-system 'latin-1)
+(prefer-coding-system 'latin-1)
+
+(global-set-key [mouse-3] 'imenu)
+
+;;{{{ fix keys for urxvt
+(if (not window-system)
+ (mapc (lambda (map)
+ (define-key function-key-map
+ (read-kbd-macro (cadr map))
+ (read-kbd-macro (car map))))
+ '(("<S-tab>" "M-[ Z")
+ ("<S-up>" "<select>")
+ ("<S-down>" "M-[ b")
+ ("<S-right>" "M-[ c")
+ ("<S-left>" "M-[ d")
+ ("<M-up>" "ESC M-O A")
+ ("<M-down>" "ESC M-O B")
+ ("<M-right>" "ESC M-O C")
+ ("<M-left>" "ESC M-O D")
+ ("<C-up>" "M-O a")
+ ("<C-down>" "M-O b")
+ ("<C-right>" "M-O c")
+ ("<C-left>" "M-O d")
+ ("<C-M-up>" "ESC M-O a")
+ ("<C-M-down>" "ESC M-O b")
+ ("<C-M-right>" "ESC M-O c")
+ ("<C-M-left>" "ESC M-O d")
+ ("<M-S-up>" "ESC M-[ a")
+ ("<M-S-down>" "ESC M-[ b")
+ ("<M-S-right>" "ESC M-[ c")
+ ("<M-S-left>" "ESC M-[ d")
+ )))
+;;}}}
+
+(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))
+(setq compilation-scroll-output t)
+
+;; css-mode
+(setq cssm-indent-level 4)
+(setq cssm-newline-before-closing-bracket t)
+(setq cssm-indent-function #'cssm-c-style-indenter)
+
+;; delphi-mode
+(load "delphi-mode-ench.el")
+
+;: removing annoyances
+(setq inhibit-startup-message t)
+(setq require-final-newline t)
+(fset 'yes-or-no-p 'y-or-n-p)
+(setq next-line-add-newlines nil)
+
+;: general settings
+(require 'paren) (show-paren-mode t)
+(global-font-lock-mode t)
+(setq font-lock-maximum-decoration t)
+(follow-mode t)
+(setq vc-follow-symlinks t)
+
+(require 'uniquify)
+(setq uniquify-buffer-name-style 'reverse)
+
+(defun back-to-indentation-or-beginning () (interactive)
+ (if (= (point) (progn (back-to-indentation) (point)))
+ (beginning-of-line)))
+(global-set-key (kbd "<home>") 'back-to-indentation-or-beginning)
+
+;; c/c++-mode stuff
+(setq indent-tabs-mode t)
+(setq c-default-style "linux")
+(c-set-offset 'arglist-cont-nonempty '(c-lineup-arglist-tabs-only c-lineup-gcc-asm-reg))
+
+(add-hook 'c-mode-common-hook
+ (lambda ()
+ (setq fill-column 80)
+ (turn-on-auto-fill)
+
+ ;; now '_' is not considered a word-delimiter
+ (modify-syntax-entry ?_ "w")
+
+ ;; set indentation style
+ (c-set-style "linux")
+ (local-set-key (kbd "M-m") 'eassist-list-methods)
+ (local-set-key (kbd "C-o") 'semantic-complete-jump-local)
+ (local-set-key (kbd "C-c o") 'ff-find-other-file)))
+
+(global-set-key [C-return] 'dabbrev-expand)
+(define-key esc-map [C-return] 'dabbrev-completion)
+
+(global-set-key [f12] 'indent-region)
+
+;; Enable Doxygen syntax highlighting for C and C++
+(when (require 'doxymacs nil 'noerror)
+ (add-hook 'font-lock-mode-hook
+ '(lambda ()
+ (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
+ (doxymacs-font-lock)))))
+
+;; flyspell (with aspell for Unicode)
+(setq ispell-program-name "aspell"
+ ispell-extra-args '("--sug-mode=ultra"))
+
+;; define variable to store default dictionary for automatic flyspell enabling
+(defvar flyspell-dict nil "Dictionary name, that should be set during find-file for flyspell-mode.
+If this is set during find-file, flyspell mode gets enabled automaticaly.")
+(make-variable-buffer-local 'flyspell-dict)
+
+(when (require 'ispell nil 'noerror)
+ ;; change dictionary
+ (defun switch-dictionary()
+ (interactive)
+ (let* ((dic ispell-current-dictionary)
+ (change (if (string= dic "german") "english" "german")))
+ (ispell-change-dictionary change)
+ (message "Dictionary switched from %s to %s" dic change)
+ (if flyspell-mode (save-excursion (flyspell-buffer)))))
+ (global-set-key (kbd "<f8>") 'switch-dictionary)
+
+ (when (require 'flyspell nil 'noerror)
+ ;; check buffer if enable flyspell
+ (add-hook 'flyspell-mode-hook
+ (lambda ()
+ (when flyspell-mode (flyspell-buffer))))
+
+ ;; ignore all #include stings
+ (add-hook 'flyspell-incorrect-hook
+ (lambda (left right undef)
+ (save-excursion
+ (goto-char left)
+ (beginning-of-line)
+ (if (looking-at "#include") t nil))))
+
+ ;; activate flyspell mode during find-file if flyspell-dict is set
+ (add-hook 'find-file-hook
+ (lambda ()
+ (when flyspell-dict
+ (ispell-change-dictionary flyspell-dict)
+ (flyspell-mode t))))
+
+ ;; update flyspell after changing personal dictionary
+ (defadvice ispell-pdict-save (after advice)
+ (save-excursion (flyspell-buffer)))
+ (ad-activate 'ispell-pdict-save t)))
+
+
+;; auto compile files
+(require 'self-compile-mode nil 'noerror)
+
+;; keine Abfrage wenn ein template existiert
+(when (require 'template nil 'noerror)
+ (setq template-auto-insert t
+ template-message-prompt-format nil)
+
+ (add-to-list 'template-find-file-commands 'ido-exit-minibuffer)
+ (template-initialize))
+
+;; remember last position in file
+(setq save-place-file "~/.emacs.d/saveplace")
+(setq-default save-place t)
+(require 'saveplace)
+
+;; ignore .d files in completion
+(setq completion-ignored-extensions
+ (append (list ".d") completion-ignored-extensions))
+
+;; clever auto complete mode
+(require 'ido)
+(ido-mode t)
+(setq
+ ido-ignore-buffers '("\\` " "^\*Mess" "^\*Back" ".*Completion" "^\*Ido")
+ ido-case-fold t
+ ido-use-filename-at-point nil
+ ido-use-url-at-point nil
+ ido-enable-flex-matching t
+ ido-max-prospects 10
+ ido-enable-tramp-completion nil
+ ido-confirm-unique-completion t)
+
+;; start server if not running (to edit files with emacsclient)
+(when (require 'server nil 'noerror)
+ (if (and (fboundp 'server-running-p)
+ (not (server-running-p)))
+ (server-start))
+
+ (add-hook 'server-switch-hook
+ (lambda ()
+ (when (current-local-map)
+ (use-local-map (copy-keymap (current-local-map))))
+ (when server-buffer-clients
+ (local-set-key (kbd "C-x k") 'server-edit)))))
+
+; emacs code browser
+(when (require 'ecb nil 'noerror)
+ (ecb-activate))
+
+;; smex
+(setq smex-save-file "~/.emacs.d/smex.save")
+(when (require 'smex nil 'noerror)
+ (smex-initialize)
+ (global-set-key (kbd "M-X") 'smex))
+
+;; snippets
+(when (require 'yasnippet nil 'noerror)
+ (yas/initialize)
+ (yas/load-directory "~/.emacs.d/snippets"))
+
+;; html-php-multi-mode
+(when (require 'html-php nil 'noerror)
+ (setq auto-mode-alist (cons '("\\.php" . html-php-mode) auto-mode-alist)))
+
+;; copy/paste enhancements
+;; share clipboard with other X11-Apps
+(when (fboundp 'x-cut-buffer-or-selection-value)
+ (progn
+ (setq x-select-enable-clipboard t)
+ (setq interprogram-paste-function 'x-cut-buffer-or-selection-value)))
+
+;; use cua-mode, but only for rectangle selections
+(setq cua-enable-cua-keys nil)
+(cua-mode t)
+
+;; copy/kill whole line when no region is active
+(defadvice kill-ring-save (before slick-copy activate compile)
+ (interactive (if mark-active (list (region-beginning) (region-end)) (message
+ "Copied line") (list (line-beginning-position) (line-beginning-position
+ 2)))))
+(ad-activate 'kill-ring-save)
+
+(defadvice kill-region (before slick-cut activate compile)
+ (interactive
+ (if mark-active (list (region-beginning) (region-end))
+ (list (line-beginning-position)
+ (line-beginning-position 2)))))
+(ad-activate 'kill-region)
+
+;; rudel (obby/... connection)
+(load "rudel-loaddefs.el")
+
+;; magit
+(when (require 'magit nil 'noerror)
+ ;; magit-status (bind if available on <f5>)
+ (global-set-key (kbd "<f5>") 'magit-status)
+ (add-hook 'magit-log-edit-mode-hook (lambda () (flyspell-mode 1))))
+
+
+;; linum (generic & *scratch*)
+(when (require 'linum-narrow nil 'noerror)
+ (add-hook 'find-file-hook (lambda () (linum-mode 1)))
+ (add-hook 'lisp-interaction-mode-hook (lambda () (linum-mode 1))))
+
+;; bookmarks
+(setq bookmark-default-file "~/.emacs.d/bookmarks")
+(setq bookmark-save-flag 1)
+
+;; winring
+(when (require 'winring nil 'noerror)
+ ;; ecb support if ecb is available
+ (when (fboundp 'ecb-winman-winring-enable-support)
+ (ecb-winman-winring-enable-support))
+
+ (winring-initialize)
+ (global-set-key (kbd "C-x j") 'winring-jump-to-configuration)
+ (global-set-key (kbd "C-x n") 'winring-new-configuration)
+
+ ;; ask before deleting winring configuration
+ (defun winring-ask-delete-configuration ()
+ (interactive)
+ (if (y-or-n-p "Delete winring configuration? ")
+ (winring-delete-configuration)))
+
+ (global-set-key (kbd "C-x K") 'winring-ask-delete-configuration))
+
+;; etags
+(require 'etags-table nil 'noerror)
+
+; autocompletion for etags
+(require 'auto-complete-etags nil 'noerror)
+
+;; change cursor according to the mode (normal, read only, overwrite)
+(when (require 'cursor-chg nil 'noerror)
+ (toggle-cursor-type-when-idle 1)
+ (change-cursor-mode 1))
+
+;; windmove (only if available)
+(when (fboundp 'windmove-default-keybindings) (windmove-default-keybindings))
+
+;; lisp-eassist
+(define-key lisp-mode-shared-map (kbd "M-m") 'eassist-list-methods)
+
+;; dir-locals
+(require 'dir-locals nil 'noerror)
+
+;; use sml-modeline if available
+(when (require 'sml-modeline nil 'noerror)
+ (progn
+ ;; show buffer pos in the mode line
+ ;; and turn off the scrollbar
+ (sml-modeline-mode 1)
+ (when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)))
+ (when (fboundp 'scroll-bar-mode)
+ (progn
+ ;; otherwise, show a scrollbar...
+ ;; ... on the right
+ (scroll-bar-mode 1)
+ (set-scroll-bar-mode 'right))))
+
+;; smooth-scrolling (do not jump to the middle of the screen)
+(require 'smooth-scrolling nil 'noerror)
+
+;; browse-kill-ring
+(when (require 'browse-kill-ring nil 'noerror)
+ (progn (browse-kill-ring-default-keybindings)
+ (global-set-key "\C-cy" '(lambda () (interactive)
+ (popup-menu 'yank-menu)))))
+
+;; fill adapt
+(when (require 'filladapt nil 'noerror)
+ (setq-default filladapt-mode t))
+
+;; jshint-mode
+(when (require 'flymake-jshint nil 'noerror)
+ (add-hook 'js-mode-hook
+ (lambda () (flymake-mode t))))
+
+;;{{{ org-mode
+
+(when (require 'org nil 'noerror)
+ (progn
+ (setq org-todo-keywords
+ '((sequence "TODO(t)" "PROGRESS(p!)" "WAIT(w@/!)" "|"
+ "CANCELED(c@/!)" "DONE(d!)")))
+
+ (setq org-todo-keyword-faces
+ '(("TODO" . org-warning) ("PROGRESS" . "yellow")
+ ("CANCELED" . (:foreground "blue" :weight bold))))
+ (setq org-startup-folded 'content)
+ (setq org-startup-indented t)))
+
+;;}}}
+
+;; promela-mode
+(when (require 'promela-mode nil 'noerror)
+ (setq auto-mode-alist
+ (append (list '("\\.promela\\'" . promela-mode)
+ '("\\.spin\\'" . promela-mode)
+ '("\\.pml\\'" . promela-mode)
+ '("\\.prm\\'" . promela-mode)
+ '("\\.porm\\'" . promela-mode))
+ auto-mode-alist)
+ promela-block-indent 2
+ promela-selection-indent 0
+ promela-selection-option-indent 3))
+
+;; dired+ mode
+(when (require 'dired-x nil 'noerror)
+ (setq dired-omit-files (rx (or (seq bol (? ".") "#")
+ (seq "~" eol)
+ (seq bol "svn" eol)
+ (seq ".pyc" eol)
+ (seq bol ".git" eol)
+ (seq ".d" eol)
+ (seq ".o" eol)))
+
+ dired-omit-extensions (append dired-latex-unclean-extensions
+ dired-bibtex-unclean-extensions
+ dired-texinfo-unclean-extensions))
+
+ (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1))))
+
+;; arduino-mode
+(require 'arduino-mode nil 'noerror)
+
+;;{{{ deft
+(when (require 'deft nil 'noerror)
+ (setq deft-extension "org"
+ deft-directory "~/.org/deft/"
+ deft-text-mode 'org-mode)
+ (global-set-key (kbd "<f9>") 'deft))
+;;}}}
+
+;; edit with emacs
+(when (require 'edit-server nil 'noerror)
+ (setq edit-server-new-frame nil)
+ (edit-server-start))
+
+;;{{{ fix raise-frame
+(defadvice raise-frame (after make-it-work (&optional frame) activate)
+ "Work around some bug? in raise-frame/Emacs/GTK/Metacity/something.
+ Katsumi Yamaoka <yamaoka@jpl.org> posted this in
+ http://article.gmane.org/gmane.emacs.devel:39702"
+ (call-process
+ "wmctrl" nil nil nil "-i" "-R"
+ (frame-parameter (or frame (selected-frame)) 'outer-window-id)))
+;;}}}
+
+;;{{{ quick open shell
+
+(defun dirname (file)
+ (replace-regexp-in-string "[^/]*$" "" file))
+
+(defun open-buffer-shell ()
+ (interactive)
+ (if buffer-file-name
+ (start-process-shell-command
+ "urxvt"
+ nil
+ (concat "DIR=" (dirname buffer-file-name) " urxvt"))
+ (message "Buffer does not contain a file.")))
+
+(global-set-key (kbd "<f12>") 'open-buffer-shell)
+
+;;}}}
+
+;;{{{ foldingo-mode
+(when (require 'foldingo nil 'noerror)
+ (add-hook 'find-file-hooks
+ 'install-fold-mode-if-needed)
+
+ ;; we want never implicit foldings
+ (defun alex-fold-mode-hook ()
+ (setq-default fold-implicit-fold-threshold 1000000))
+ (add-hook 'fold-mode-hook
+ 'alex-fold-mode-hook)
+
+ ;; close all folds when requested with file local variable folding-close
+ (defadvice install-fold-mode-if-needed (after alex-foldingo-fold-all compile activate)
+ (if (and fold-mode foldingo-close)
+ (fold-close-all-folds)))
+
+ ;; shortcut for toggling a fold
+ (defun alex-fold-toggle-current-fold ()
+ (interactive)
+ (fold-toggle (fold-current-fold)))
+ (define-key fold-keymap (kbd "C-c C-f") 'alex-fold-toggle-current-fold)
+
+ ;; refresh the folds after save, but do not change the current status
+ (defun alex-fold-refresh-after-save ()
+ (when fold-mode
+ (if foldingo-close
+ (fold-enter-fold-mode-close-all-folds)
+ (fold-enter-mode))))
+ (add-hook 'after-save-hook 'alex-fold-refresh-after-save))
+;;}}}
diff --git a/emacs.d/init.elc b/emacs.d/init.elc
new file mode 100644
index 0000000..9b47054
--- /dev/null
+++ b/emacs.d/init.elc
Binary files differ