; auto completion ;;;;;;;;;;;;;;;;; (require 'dabbrev) (setq dabbrev-always-check-other-buffers t) (setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_") (global-set-key "\C-i" 'my-tab) (defun my-tab (&optional pre-arg) "If preceeding character is part of a word then dabbrev-expand, else if right of non whitespace on line then tab-to-tab-stop or indent-relative, else if last command was a tab or return then dedent one step, else indent 'correctly'" (interactive "*P") (cond ((= (char-syntax (preceding-char)) ?w) (let ((case-fold-search t)) (dabbrev-expand pre-arg))) ((> (current-column) (current-indentation)) (indent-relative)) (t (indent-according-to-mode))) (setq this-command 'my-tab))