     (setq wg-switch-on-load nil) ; don't auto switch to the first workgroup 
    (wg-load "~/.emacs.d/.workgroups")))
 
-;;;_. load settings file
-(defconst settings-file (file-truename "~/.emacs.d/settings.el"))
-(load settings-file)
-
-                                        ; change directory to $PWD or ~
+;;;_. desktop-save-mode
+;(setq desktop-path "~/.emacs.d/.cache/")
+(desktop-save-mode 1)
+
+;;;_. load general settings file
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; the modeline
+(line-number-mode t)                     ; show line numbers
+(column-number-mode t)                   ; show column numbers
+(when (fboundp size-indication-mode)      
+  (size-indication-mode t))              ; show file size (emacs 22+)
+(display-time-mode 1)                    ; don't show the time
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; general settings
+(menu-bar-mode t)                       ; don't show the menu 
+(tool-bar-mode)                       ; don't show the toolbar
+(icomplete-mode t)                       ; completion in minibuffer
+(setq icomplete-prospects-height 2)      ; don't spam my minibuffer
+(scroll-bar-mode nil)              
+(set-scroll-bar-mode 'right)
+(defalias 'yes-or-no-p 'y-or-n-p)        ; allow y for yes, n for no
+
+(when (fboundp 'set-fringe-mode)         ; emacs22+ 
+  (set-fringe-mode 1))                   ; space left of col1 in pixels
+
+(transient-mark-mode t)                  ; make the current 'selection' visible
+(delete-selection-mode t)                ; delete the selection with a keypress
+(setq x-select-enable-clipboard t)       ; copy-paste should work ...
+(setq interprogram-paste-function        ; ...with...
+  'x-cut-buffer-or-selection-value)      ; ...other X clients
+
+(setq search-highlight t                 ; highlight when searching... 
+  query-replace-highlight t)             ; ...and replacing
+(fset 'yes-or-no-p 'y-or-n-p)            ; enable y/n answers to yes/no 
+
+(global-font-lock-mode t)                ; always do syntax highlighting 
+(when (require-maybe 'jit-lock)          ; enable JIT to make font-lock faster
+  (setq jit-lock-stealth-time 1))        ; new with emacs21
+
+(set-language-environment "UTF-8")       ; prefer utf-8 for language settings
+(set-input-method nil)                   ; no funky input for normal editing;
+
+(setq completion-ignore-case t           ; ignore case when completing...
+  read-file-name-completion-ignore-case t) ; ...filenames too
+
+(put 'narrow-to-region 'disabled nil)    ; enable...
+(put 'erase-buffer 'disabled nil)        ; ... useful things
+(when (fboundp file-name-shadow-mode)    ; emacs22+
+  (file-name-shadow-mode 1))             ; be smart about filenames in minbuffer
+
+(setq inhibit-startup-message t         ; don't show ...    
+      inhibit-startup-echo-area-message t) ; ... startup messages
+
+(setq save-place-file "~/.emacs.d/.cache/saveplace") ;; keep my ~/ clean
+(setq-default save-place t)                   ;; activate it for all buffers
+(require 'saveplace)                          ;; get the package
+
+(setq savehist-additional-variables    ;; also save...
+        '(search-ring regexp-search-ring)    ;; ... my search entries
+          savehist-file "~/.emacs.d/.cache/savehist") ;; keep my home clean
+(savehist-mode t)                      ;; do customization before activate
+(setq default-tab-width 4)            ; set tab-width
+(setq-default tab-stop-list (list 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108))
+(setq-default indent-tabs-mode nil)
+
+;; disabled that damm bell !
+(setq bell-volume 0)
+(setq sound-alist nil)
+(setq ring-bell-function 'ignore)
+(setq visible-bell t)
+
+
+(setq auto-save-list-file-prefix "~/.emacs.d/.cache/auto-save-list/")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; cursor
+(blink-cursor-mode 0)           ; don't blink cursor
+
+
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ;; File cache http://www.emacswiki.org/cgi-bin/wiki/FileNameCache
+;; (eval-after-load
+;;   "filecache"
+;;   '(progn
+;;      (message "Loading file cache...")
+;;      (file-cache-add-directory "~/")
+;;      (file-cache-add-directory-list (list "~/src" "~/" "~/work"))))
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; bookmarks
+(setq bookmark-default-file "~/.emacs.d/.cache/bookmarks")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; set default font
+
+(setq font-use-system-font t)
+
+; windows
+(if (string-match "windows" system-configuration)
+ (set-default-font
+   "-outline-Consolas-normal-r-normal-normal-*-*-*-*-*-*-*-*"))
+
+; linux
+(if (string-match "linux" system-configuration)
+    (set-default-font "Anonymous Pro 10"))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; show-paren-mode
+;; show a subtle blinking of the matching paren (the defaults are ugly)
+;; http://www.emacswiki.org/cgi-bin/wiki/ShowParenMode
+(when (fboundp 'show-paren-mode)
+  (show-paren-mode t)
+  (setq show-paren-style 'parenthesis))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;  abbrevs (emacs will automagically expand abbreviations)
+(setq abbrev-file-name                ; tell emacs where to read abbrev
+      "~/.emacs.d/abbrev_defs.el")    ; definitions from...
+(abbrev-mode t)                       ; enable abbrevs (abbreviations) ...
+(setq default-abbrev-mode t
+  save-abbrevs t)                     ; don't ask
+(when (file-exists-p abbrev-file-name)
+  (quietly-read-abbrev-file))         ;  don't tell
+(add-hook 'kill-emacs-hook            ; write when ...
+  'write-abbrev-file)                 ; ... exiting emacs
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; backups  (emacs will write backups and number them)
+(setq make-backup-files t ; do make backups
+  backup-by-copying t ; and copy them ...
+  backup-directory-alist '(("." . "~/.emacs.d/.backup/")) ; ... here
+  version-control t
+  kept-new-versions 2
+  kept-old-versions 5
+  delete-old-versions t)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; time-stamps 
+;; when there is a "Time-stamp: <>" in the first 10 lines of the file,
+;; emacs will write time-stamp information there when saving the file.
+(setq 
+  time-stamp-active t          ; do enable time-stamps
+  time-stamp-line-limit 10     ; check first 10 buffer lines for Time-stamp: <>
+  time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S (%u)") ; date format
+(add-hook 'write-file-hooks 'time-stamp) ; update when saving
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
+;; recent files                                                                  
+(when (require-maybe 'recentf)
+  (setq recentf-save-file "~/.emacs.d/.cache/recent-files"
+    recentf-max-saved-items 500                                            
+    recentf-max-menu-items 60)
+  (recentf-mode t))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; tramp, for remote access
+(setq tramp-default-method "ssh"
+      tramp-persistency-file-name "~/.emacs.d/.cache/tramp"
+      tramp-verbose 10)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; safe locals; we mark these as 'safe', so emacs22+ won't give us annoying 
+;; warnings
+(setq safe-local-variable-values 
+      (quote ((auto-recompile . t) 
+              (outline-minor-mode . t) 
+              auto-recompile outline-minor-mode)))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; misc loading
+(when (require-maybe 'tabber))
+(when (require-maybe 'pair-mode))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; rect-mark 
+(when (require-maybe 'rect-mark)
+  ;; some commands for rectangular selections;
+  ;; http://www.emacswiki.org/cgi-bin/wiki/RectangleMark
+  (define-key ctl-x-map "r\C-@" 'rm-set-mark)
+  (define-key ctl-x-map [?r ?\C-\ ] 'rm-set-mark)
+  (define-key ctl-x-map "r\C-x" 'rm-exchange-point-and-mark)
+  (define-key ctl-x-map "r\C-w" 'rm-kill-region)
+  (define-key ctl-x-map "r\M-w" 'rm-kill-ring-save)
+  (define-key global-map [S-down-mouse-1] 'rm-mouse-drag-region)
+  (autoload 'rm-set-mark "rect-mark"
+    "Set mark for rectangle." t)
+  (autoload 'rm-exchange-point-and-mark "rect-mark"
+    "Exchange point and mark for rectangle." t)
+  (autoload 'rm-kill-region "rect-mark"
+    "Kill a rectangular region and save it in the kill ring." t)
+  (autoload 'rm-kill-ring-save "rect-mark"
+    "Copy a rectangular region to the kill ring." t)
+  (autoload 'rm-mouse-drag-region "rect-mark"
+    "Drag out a rectangular region with the mouse." t))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; redo 
+(when (require-maybe 'redo))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; dtrt-indent minor mode
+;; http://git.savannah.gnu.org/gitweb/?p=dtrt-indent.git;a=blob_plain;f=dtrt-indent.el;hb=HEAD
+(when (require-maybe 'dtrt-indent)
+ (dtrt-indent-mode 1))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacs-fu.blogspot.com/2009/11/making-buffer-names-unique.html
+(require 'uniquify) 
+(setq 
+  uniquify-buffer-name-style 'post-forward
+  uniquify-separator ":")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/AutoInsertMode
+(require 'autoinsert)
+(auto-insert-mode 1)  ;;; Adds hook to find-files-hook
+(add-hook 'find-file-hook 'auto-insert)
+(setq auto-insert-directory "~/.emacs.d/templates/") ;;; Or use custom, *NOTE* Trailing slash important
+(setq auto-insert-query nil) ;;; If you don't want to be prompted before insertion
+(define-auto-insert "\.py" "template.py")
+(define-auto-insert "\.pm" "template.pm")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacs-fu.blogspot.com/2009/11/copying-lines-without-selecting-them.html
+(defadvice kill-ring-save (before slick-copy activate compile) "When called
+  interactively with no active region, copy a single line instead."
+  (interactive (if mark-active (list (region-beginning) (region-end)) (message
+  "Copied line") (list (line-beginning-position) (line-beginning-position
+  2)))))
+
+(defadvice kill-region (before slick-cut activate compile)
+  "When called interactively with no active region, kill a single line instead."
+  (interactive
+    (if mark-active (list (region-beginning) (region-end))
+      (list (line-beginning-position)
+        (line-beginning-position 2)))))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun byte-recompile-emacsd ()
+  "Byte-compilete all files in ~/.emacs.d"
+  (byte-recompile-directory '~/.emacs.d' 0 t))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Highlight mark
+; http://lists.gnu.org/archive/html/help-gnu-emacs/2003-11/msg00328.html
+; nice mark - shows mark as a highlighted 'cursor' so user 'always' 
+; sees where the mark is. Especially nice for killing a region.
+(defvar pg-mark-overlay nil
+  "Overlay to show the position where the mark is") 
+(make-variable-buffer-local 'pg-mark-overlay)
+
+(put 'pg-mark-mark 'face 'secondary-selection)
+
+(defvar pg-mark-old-position nil
+  "The position the mark was at. To be able to compare with the
+current position")
+
+(defun pg-show-mark () 
+  "Display an overlay where the mark is at. Should be hooked into 
+activate-mark-hook" 
+  (unless pg-mark-overlay 
+    (setq pg-mark-overlay (make-overlay 0 0))
+    (overlay-put pg-mark-overlay 'category 'pg-mark-mark))
+  (let ((here (mark t)))
+    (when here
+      (move-overlay pg-mark-overlay here (1+ here)))))
+
+(defadvice  exchange-point-and-mark (after pg-mark-exchange-point-and-mark)
+  "Show visual marker"
+  (pg-show-mark))
+
+(ad-activate 'exchange-point-and-mark)
+(add-hook 'activate-mark-hook 'pg-show-mark)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacs-fu.blogspot.com/2010/03/showing-buffer-position-in-mode-line.html
+(if (require 'sml-modeline nil 'noerror)    ;; use sml-modeline if available
+  (progn 
+    (sml-modeline-mode 1)                   ;; show buffer pos in the mode line
+    (scroll-bar-mode -1))                   ;; turn off the scrollbar
+  (scroll-bar-mode 1)                       ;; otherwise, show a scrollbar...
+  (set-scroll-bar-mode 'right))             ;; ... on the right
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; enable midnight mode
+; (require 'midnight)
+;; kill everything, clean-buffer-list is very intelligent at not killing
+;; unsaved buffer.
+; (setq clean-buffer-list-kill-regexps
+;	  '(".*"))
+
+;;kill buffers if they were last disabled more than this seconds ago
+; (setq clean-buffer-list-delay-special 7200)
+
+; (setq clean-buffer-list-kill-never-buffer-names
+;      '(
+;       "*scratch*"
+;       "*Messages*"
+;       "*server*"
+;       "*Pymacs*"
+;       "trace.log"))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/MultiTerm
+(require 'multi-term)
+(setq multi-term-program "/bin/bash")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/ShellPop 
+(require 'shell-pop)
+(shell-pop-set-internal-mode "multi-term")
+(shell-pop-set-internal-mode-shell "/bin/zsh")
+(global-set-key [f8] 'shell-pop)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/LustyExplorer
+(when (require 'lusty-explorer nil 'noerror)
+  ;; overrride the normal file-opening, buffer switching
+  (global-set-key (kbd "C-x C-f") 'lusty-file-explorer)
+  (global-set-key (kbd "C-x b")   'lusty-buffer-explorer))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun tab-width-two ()
+  (setq default-tab-width 2)            ; set tab-width
+  (setq-default tab-stop-list (list 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108))
+  (setq-default indent-tabs-mode nil))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://floss.zoomquiet.org/data/20110326155829/index.html
+(add-to-list 'load-path "~/.emacs.d/elisp/point-stack")
+(require 'point-stack)
+(global-set-key '[(f5)] 'point-stack-push)
+(global-set-key '[(f6)] 'point-stack-pop)
+(global-set-key '[(f7)] 'point-stack-forward-stack-pop)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacs-fu.blogspot.com/2011/01/setting-frame-title.html
+(setq frame-title-format
+  '("" invocation-name ": "(:eval (if (buffer-file-name)
+                (abbreviate-file-name (buffer-file-name))
+                  "%b"))))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.masteringemacs.org/articles/2011/01/27/find-files-faster-recent-files-package/
+(require 'recentf)
+ 
+;; get rid of `find-file-read-only' and replace it with something
+;; more useful.
+(global-set-key (kbd "C-x C-r") 'ido-recentf-open)
+ 
+;; enable recent files mode.
+(recentf-mode t)
+ 
+; 50 files ought to be enough.
+(setq recentf-max-saved-items 50)
+ 
+(defun ido-recentf-open ()
+  "Use `ido-completing-read' to \\[find-file] a recent file"
+  (interactive)
+  (if (find-file (ido-completing-read "Find recent file: " recentf-list))
+      (message "Opening file...")
+    (message "Aborting")))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/ZenCoding
+(add-to-list 'load-path "~/.emacs.d/elisp/zencoding")
+(require 'zencoding-mode)
+(add-hook 'sgml-mode-hook 'zencoding-mode) ;; Auto-start on any markup modes
+(add-hook 'cperl-mode-hook 'zencoding-mode) ;; Auto-start on any markup modes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(global-set-key (kbd "C-x C-;") 'comment-region)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://code.google.com/p/autopair/
+;(add-to-list 'load-path "~/.emacs.d/elisp/autopair")
+;(require 'autopair)
+;(autopair-global-mode) ;; enable autopair in all buffers 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacs-fu.blogspot.com/2011/05/toward-balanced-and-colorful-delimiters.html
+(when (require 'rainbow-delimiters nil 'noerror) 
+  (add-hook 'cperl-mode-hook  'rainbow-delimiters-mode)
+  (add-hook 'lisp-mode-hook 'rainbow-delimiters-mode)
+  (add-hook 'python-mode-hook 'rainbow-delimiters-mode))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/ImenuMode
+(defun try-to-add-imenu ()
+  (condition-case nil (imenu-add-to-menubar "Imenu") (error nil)))
+
+(add-hook 'cperl-mode-hook 'try-to-add-imenu)
+(add-hook 'python-mode-hook 'try-to-add-imenu)
+(add-hook 'lisp-mode-hook 'try-to-add-imenu)
+(add-hook 'js2-mode-hook 'try-to-add-imenu)
+
+(global-set-key (kbd "C-c =") 'imenu)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://me.in-berlin.de/~myrkr/dictionary/
+(add-to-list 'load-path "~/.emacs.d/elisp/dictionary-1.8.7")
+(load "dictionary-init")
+
+;; key bindings
+(global-set-key "\C-cs" 'dictionary-search)
+(global-set-key "\C-cm" 'dictionary-match-words)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; bookmarks
+; http://www.nongnu.org/bm/
+(setq bm-restore-repository-on-load t)
+(require 'bm)
+(global-set-key (kbd "<M-f2>") 'bm-toggle)
+(global-set-key (kbd "<f2>")   'bm-next)
+(global-set-key (kbd "<S-f2>") 'bm-previous)
+ 
+;; make bookmarks persistent as default
+(setq-default bm-buffer-persistence t)
+ 
+;; Loading the repository from file when on start up.
+(add-hook' after-init-hook 'bm-repository-load)
+ 
+;; Restoring bookmarks when on file find.
+(add-hook 'find-file-hooks 'bm-buffer-restore)
+ 
+;; Saving bookmark data on killing a buffer
+(add-hook 'kill-buffer-hook 'bm-buffer-save)
+
+;; Allow cross-buffer 'next'
+(setq bm-cycle-all-buffers t)
+ 
+;; Saving the repository to file when on exit.
+;; kill-buffer-hook is not called when emacs is killed, so we
+;; must save all bookmarks first.
+(add-hook 'kill-emacs-hook '(lambda nil
+                              (bm-buffer-save-all)
+                              (bm-repository-save)))
+
+; http://www.emacswiki.org/emacs/bm-ext.el
+; (require 'bm-ext)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;http://www.emacswiki.org/emacs/tiling.el
+(require 'tiling)
+;;; Windows related operations
+;; Split & Resize
+(define-key global-map (kbd "C-x |") 'split-window-horizontally)
+(define-key global-map (kbd "C-x _") 'split-window-vertically)
+(define-key global-map (kbd "C-{") 'shrink-window-horizontally)
+(define-key global-map (kbd "C-}") 'enlarge-window-horizontally)
+(define-key global-map (kbd "C-^") 'enlarge-window)
+;; Navgating: Windmove uses C-<up> etc.
+(define-key global-map (kbd "C-<up>"   ) 'windmove-up)
+(define-key global-map (kbd "C-<down>" ) 'windmove-down)
+(define-key global-map (kbd "C-<right>") 'windmove-right)
+(define-key global-map (kbd "C-<left>" ) 'windmove-left)
+;; Swap buffers: M-<up> etc.
+(define-key global-map (kbd "M-<up>"   ) 'buf-move-up)
+(define-key global-map (kbd "M-<down>" ) 'buf-move-down)
+(define-key global-map (kbd "M-<right>") 'buf-move-right)
+(define-key global-map (kbd "M-<left>" ) 'buf-move-left)
+;; Tile
+(define-key global-map (kbd "C-\\") 'tiling-cycle) ; accepts prefix number
+(define-key global-map (kbd "C-M-<up>") 'tiling-tile-up)
+(define-key global-map (kbd "C-M-<down>") 'tiling-tile-down)
+(define-key global-map (kbd "C-M-<right>") 'tiling-tile-right)
+(define-key global-map (kbd "C-M-<left>") 'tiling-tile-left)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/ParEdit
+
+(autoload 'paredit-mode "paredit"
+  "Minor mode for pseudo-structurally editing Lisp code." t)
+(add-hook 'emacs-lisp-mode-hook       (lambda () (paredit-mode +1)))
+(add-hook 'lisp-mode-hook             (lambda () (paredit-mode +1)))
+(add-hook 'lisp-interaction-mode-hook (lambda () (paredit-mode +1)))
+(add-hook 'slime-repl-mode-hook (lambda () (paredit-mode +1)))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ; ELPA
+;; (require 'package)
+;; (add-to-list 'package-archives
+;; 	     '("marmalade" . "http://marmalade-repo.org/packages/"))
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ; http://www.emacswiki.org/emacs/find-file-in-project.el
+;; (require 'project)
+;; (require 'find-file-in-project)
+;; (global-set-key (kbd "C-x C-M-f") 'find-file-in-project)
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ; auctex
+;; (add-to-list 'load-path "~/.emacs.d/elpa/auctex-11.86/")
+;; (require 'auctex-autoloads)
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/MiniMap
+;(require 'minimap)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ; http://www.emacswiki.org/emacs/rebox2
+;; (add-to-list 'load-path "~/.emacs.d/elisp/rebox2/")
+(require 'rebox2)
+(global-set-key [(meta q)] 'rebox-dwim)
+(global-set-key [(shift meta q)] 'rebox-cycle)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; (require 'edit-server)
+;; (edit-server-start)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/
+; CSS and Rainbow modes 
+(defun all-css-modes() (css-mode) (rainbow-mode)) 
+
+;; Load both major and minor modes in one call based on file type 
+(add-to-list 'auto-mode-alist '("\\.css$" . all-css-modes)) 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/ModeCompile
+ ;;mode-compile
+    (autoload 'mode-compile "mode-compile"
+      "Command to compile current buffer file based on the major mode" t)
+    (global-set-key "\C-cc" 'mode-compile)
+    (autoload 'mode-compile-kill "mode-compile"
+      "Command to kill a compilation launched by `mode-compile'" t)
+    (global-set-key "\C-ck" 'mode-compile-kill) 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst show-local-info-path (file-truename "~/local/share/info"))
+(if (file-accessible-directory-p show-local-info-path)
+    (add-to-list 'Info-default-directory-list show-local-info-path))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://www.emacswiki.org/emacs/IyGoToChar
+(require 'jump-char)
+;; iy-go-to-char - like f in Vim
+(global-set-key (kbd "M-m") 'jump-char-forward)
+(global-set-key (kbd "M-M") 'jump-char-backward)
+
+;; Remap old M-m to M-i (better mnemonic for back-to-indentation)
+;; We lose tab-to-tab-stop, which is no big loss in my use cases.
+(global-set-key (kbd "M-i") 'back-to-indentation)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacsrocks.com/e09.html
+;; Expand region (increases selected region by semantic units)
+(require 'expand-region)
+(global-set-key (kbd "M-'") 'er/expand-region)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://emacsrocks.com/e10.html
+
+; http://www.emacswiki.org/emacs/AceJump
+(require 'ace-jump-mode)
+(define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
+
+;; Push mark when using ido-imenu
+
+(defvar push-mark-before-goto-char nil)
+
+(defadvice goto-char (before push-mark-first activate)
+  (when push-mark-before-goto-char
+    (push-mark)))
+
+(defun add-hyper-char-to-ace-jump-word-mode (c)
+  (define-key global-map
+    (read-kbd-macro (concat "H-" (string c)))
+    `(lambda ()
+       (interactive)
+       (setq ace-jump-query-char ,c)
+       (setq ace-jump-current-mode 'ace-jump-word-mode)
+       (ace-jump-do (concat "\\b"
+                            (regexp-quote (make-string 1 ,c)))))))
+
+(loop for c from ?0 to ?9 do (add-hyper-char-to-ace-jump-word-mode c))
+(loop for c from ?A to ?Z do (add-hyper-char-to-ace-jump-word-mode c))
+(loop for c from ?a to ?z do (add-hyper-char-to-ace-jump-word-mode c))
+(loop for c from ?Å to ?ø do (add-hyper-char-to-ace-jump-word-mode c))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; remove emacs' ability to interactive with git.  This was done because accessing remote git repo through sshfs caused major lag. 
+(delete 'Git vc-handled-backends)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; http://blog.printf.net/articles/tag/emacs
+(defun find-tag-at-point ()
+  "*Find tag whose name contains TAGNAME.
+  Identical to `find-tag' but does not prompt for 
+  tag when called interactively;  instead, uses 
+  tag around or before point."
+    (interactive)
+      (find-tag (if current-prefix-arg
+                    (find-tag-tag "Find tag: "))
+                (find-tag (find-tag-default))))
+(global-set-key [f9] 'find-tag-at-point)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; bookmarks http://www.gnu.org/software/emacs/manual/html_node/emacs/Bookmarks.html
+; bookarmks+ http://www.emacswiki.org/emacs/BookmarkPlus
+(require 'bookmark+)
+(bookmark-save-flag 1)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; enable autopair mode
+(autopair-global-mode)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;_. change directory to $PWD or ~
 (if (getenv "PWD")
     (cd (getenv "PWD"))
   (cd "~"))
 
-(custom-set-variables
- ;; custom-set-variables was added by Custom.
- ;; If you edit it by hand, you could mess it up, so be careful.
- ;; Your init file should contain only one such instance.
- ;; If there is more than one, they won't work right.
- '(bookmark-save-flag nil)
- '(tool-bar-mode nil))
-(custom-set-faces
- ;; custom-set-faces was added by Custom.
- ;; If you edit it by hand, you could mess it up, so be careful.
- ;; Your init file should contain only one such instance.
- ;; If there is more than one, they won't work right.
- )
+;;;_. load custom-file
+(setq custom-file "~/.emacs.d/custom.el")
+(load custom-file 'noerror)
+
 ;; Local Variables:
 ;;   mode: emacs-lisp
 ;;   mode: allout

                   (shutdown-hook nil)))

    (project-def "NEC Development"
                 '((basedir "/ssh:lithium.sr.unh.edu:/web/nec")
                   (src-patterns ("*.js *.html *.pm *.css"))
                   (ignore-patterns nil)
                   (file-list-cache "~/.emacs.d/.cache/nec-dev/files")


;;;_. git-emacs
(use-package git-emacs)

;;;_. gitconfig-emacs
(use-package gitconfig-mode)

;;;_. breadcrumb
(use-package breadcrumb
    :init (progn
            (bind-key "M-o"       'bc-set)            ;; Shift-SPACE for set bookmark
            (bind-key "M-j"       'bc-previous)       ;; M-j for jump to previous
            (bind-key "S-M-j"     'bc-next)           ;; Shift-M-j for jump to next
            (bind-key "M-<up>"    'bc-local-previous) ;; M-up-arrow for local previous
            (bind-key "M-<down>"  'bc-local-next)     ;; M-down-arrow for local next
            (bind-key "C-c j"     'bc-goto-current)   ;; C-c j for jump to current bookmark
            (bind-key "C-x M-j"   'bc-list)           ;; C-x M-j for the bookmark menu list
            ))
;;;_. js2
(use-package js2-mode
  :init
