diff options
Diffstat (limited to '')
-rw-r--r-- | init.el-old | 633 |
1 files changed, 633 insertions, 0 deletions
diff --git a/init.el-old b/init.el-old new file mode 100644 index 0000000..4d541e5 --- /dev/null +++ b/init.el-old @@ -0,0 +1,633 @@ +;;; Package --- Summary + +;;; Commentary: + +;;; Code: +(package-initialize) + +;; Make sure `emacs-leuven.el' is in your `load-path'. +;;(add-to-list 'load-path "/home/lemon/code/github/emacs-leuven") +;;(setq leuven-elpa-ignored-packages '(git-commit-mode)) + +;; get zz, zt from vim etc in emacs - from http://www.emacswiki.org/emacs/RecenterLikeVi +(defun line-to-top-of-window () + "Shift current line to the top of the window- i.e. zt in Vim" + (interactive) + (set-window-start (selected-window) (point)) +) + +(defun line-to-bottom-of-window () + "Shift current line to the botom of the window- i.e. zb in Vim" + (interactive) + (line-to-top-of-window) + (scroll-down (- (window-height) 3)) +) + +(defun ctrl-e-in-vi (n) + (interactive "p") + (scroll-up n)) + +(defun ctrl-y-in-vi (n) + (interactive "p") + (scroll-down n)) + +(global-set-key "\M-n" 'ctrl-e-in-vi) +(global-set-key "\M-p" 'ctrl-y-in-vi) +(global-set-key "\C-x\C-a\C-a" 'line-to-top-of-window) +(global-set-key "\C-x\C-r" 'line-to-bottom-of-window) + + ;; Treat undo history as a tree. + (with-eval-after-load "undo-tree-autoloads" + + ;; Enable Global-Undo-Tree mode. + (global-undo-tree-mode 1)) + + (with-eval-after-load "undo-tree" + + (with-eval-after-load "diminish-autoloads" + (diminish 'undo-tree-mode)) + + ;; Display times relative to current time in visualizer. + (setq undo-tree-visualizer-relative-timestamps t) + + ;; Display time-stamps by default in undo-tree visualizer. + (setq undo-tree-visualizer-timestamps t) ; Toggle time-stamps display using `t'. + + ;; Display diff by default in undo-tree visualizer. + (setq undo-tree-visualizer-diff t) ; Toggle the diff display using `d'. + + (define-key undo-tree-map (kbd "C-/") nil) + + ;; (defalias 'redo 'undo-tree-redo) + (global-set-key (kbd "C-S-z") #'undo-tree-redo) + (global-set-key (kbd "<S-f11>") #'undo-tree-redo)) + + +;; Require it as normal. +;;(require 'emacs-leuven) +(load-file "/home/lemon/code/github/emacs-leuven/org-custom-agenda-views.el") + + +;; enable znc (which is sitting on bobbins server 46.101.17.241) +(require 'znc) + +(defun email-buffer () + "Send region as the body of an email." + (interactive) + (let ((content (buffer-string))) + (compose-mail) + (message-goto-body) + (insert content) + (message-goto-to))) + +;;let's switch off global highlight mode - this doesn't switch it off! +(global-hl-line-mode 0) + +;;line number mode-line +(line-number-mode 1) + +;;switch off company mode +(company-mode) + +;;set cursor colour +(set-cursor-color "#ffffff") +(setq-default cursor-type 'box) + +(setq custom-file "~/.emacs.d/lisp/emacs-custom.el") +(load custom-file) + +;; delete region with a keystroke +(global-set-key (kbd "M-a") 'delete-region) + +;; enable encryption of files +;; to enable in org mode, include # -*- mode:org; epa-file-encrypt-to: ("me@mydomain.com") -*- as first line of file +;; where email is id of key. When you open, you'll need your passphrase, and when you save it will encrypt automatically +;; the org file should be saved with a .gpg suffix. +(require 'epa-file) +(epa-file-enable) + +(when (>= emacs-major-version 24) + (require 'package) + (add-to-list + 'package-archives + '("melpa" . "http://melpa.org/packages/") + t) + (package-initialize)) + +(setq ad-redefinition-action 'accept) + + +;; Place your settings here, which can override the settings of Emacs-Leuven. + +;; I needed this to sort out a bad bug when emacs +;; was hanging whilst I tried to launch emacs - fixed on 29 October by +;; checking out https://github.com/emacs-helm/helm/issues/1000 +;; (setq tramp-ssh-controlmaster-options +;; (concat +;; "-o ControlMaster=auto" +;; "-o ControlPath='tramp.%%C -o ControlPersist=no")) + +;; ledger-mode +(autoload 'ledger-mode "ledger-mode" "A major mode for Ledger" t) +(add-to-list 'load-path + (expand-file-name "/path/to/ledger/source/lisp/")) +(add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) +(setq ledger-reconcile-default-commodity "£") + +;; add my own lisp directory to .emacs.d +(add-to-list 'load-path "~/.emacs.d/lisp") + +;; load org settings +(load "orgsettings.el") + +;; load mu4e settings +(load "mu4esettings.el") + +;; for displaying emoji? +;; Symbola is a font I installed on the Debian system on 8 November 2015 +(emoji-fontset-enable "Symbola") + +;; CLOJURE STUFF (from https://github.com/flyingmachine/emacs-for-clojure/blob/master/customizations/elisp-editing.el) +;; Automatically load paredit when editing a lisp file +;; More at http://www.emacswiki.org/emacs/ParEdit +(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) +(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) +(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) +(add-hook 'ielm-mode-hook #'enable-paredit-mode) +(add-hook 'lisp-mode-hook #'enable-paredit-mode) +(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) +(add-hook 'scheme-mode-hook #'enable-paredit-mode) + + +;;;; +;; Clojure (from https://github.com/flyingmachine/emacs-for-clojure/blob/master/customizations/setup-clojure.el) +;; To the next ;;END +;;;; + +;; Enable paredit for Clojure +(add-hook 'clojure-mode-hook 'enable-paredit-mode) + +;; This is useful for working with camel-case tokens, like names of +;; Java classes (e.g. JavaClassName) +(add-hook 'clojure-mode-hook 'subword-mode) + +;; A little more syntax highlighting +(require 'clojure-mode-extra-font-locking) + +;; syntax hilighting for midje +(add-hook 'clojure-mode-hook + (lambda () + (setq inferior-lisp-program "lein repl") + (font-lock-add-keywords + nil + '(("(\\(facts?\\)" + (1 font-lock-keyword-face)) + ("(\\(background?\\)" + (1 font-lock-keyword-face)))) + (define-clojure-indent (fact 1)) + (define-clojure-indent (facts 1)))) + +;;;; +;; Cider +;;;; + +;; provides minibuffer documentation for the code you're typing into the repl +(add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode) + +;; go right to the REPL buffer when it's finished connecting +(setq cider-repl-pop-to-buffer-on-connect t) + +;; When there's a cider error, show its buffer and switch to it +(setq cider-show-error-buffer t) +(setq cider-auto-select-error-buffer t) + +;; Where to store the cider history. +(setq cider-repl-history-file "~/.emacs.d/cider-history") + +;; Wrap when navigating history. +(setq cider-repl-wrap-history t) + +;; enable paredit in your REPL +(add-hook 'cider-repl-mode-hook 'paredit-mode) + +;; Use clojure mode for other extensions +(add-to-list 'auto-mode-alist '("\\.edn$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("\\.boot$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("\\.cljs.*$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("lein-env" . enh-ruby-mode)) + + +;; key bindings +;; these help me out with the way I usually develop web apps +(defun cider-start-http-server () + (interactive) + (cider-load-current-buffer) + (let ((ns (cider-current-ns))) + (cider-repl-set-ns ns) + (cider-interactive-eval (format "(println '(def server (%s/start))) (println 'server)" ns)) + (cider-interactive-eval (format "(def server (%s/start)) (println server)" ns)))) + + +(defun cider-refresh () + (interactive) + (cider-interactive-eval (format "(user/reset)"))) + +(defun cider-user-ns () + (interactive) + (cider-repl-set-ns "user")) + +(eval-after-load 'cider + '(progn + (define-key clojure-mode-map (kbd "C-c C-v") 'cider-start-http-server) + (define-key clojure-mode-map (kbd "C-M-r") 'cider-refresh) + (define-key clojure-mode-map (kbd "C-c u") 'cider-user-ns) + (define-key cider-mode-map (kbd "C-c u") 'cider-user-ns))) + +;; eldoc-mode shows documentation in the minibuffer when writing code +;; http://www.emacswiki.org/emacs/ElDoc +(add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) +(add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode) +(add-hook 'ielm-mode-hook 'turn-on-eldoc-mode) + +;;END OF LOTS OF CLOJURE CONFIG +;; +;; +;; +;; + +;; JAVASCRIPT and COFFEESCRIPT STUFF (from https://github.com/flyingmachine/emacs-for-clojure/blob/master/customizations/setup-js.el) +;; javascript / html +(add-to-list 'auto-mode-alist '("\\.js$" . js-mode)) +(add-hook 'js-mode-hook 'subword-mode) +(add-hook 'html-mode-hook 'subword-mode) +(setq js-indent-level 2) +(eval-after-load "sgml-mode" + '(progn + (require 'tagedit) + (tagedit-add-paredit-like-keybindings) + (add-hook 'html-mode-hook (lambda () (tagedit-mode 1))))) + + +;; coffeescript +(add-to-list 'auto-mode-alist '("\\.coffee.erb$" . coffee-mode)) +(add-hook 'coffee-mode-hook 'subword-mode) +(add-hook 'coffee-mode-hook 'highlight-indentation-current-column-mode) +(add-hook 'coffee-mode-hook + (defun coffee-mode-newline-and-indent () + (define-key coffee-mode-map "\C-j" 'coffee-newline-and-indent) + (setq coffee-cleanup-whitespace nil))) + + +;; END OF JAVASCRIPT AND COFFEESCRIPT STUFF +;; +;; +;; + +;; SHELL INTEGRATION STUFF (from https://github.com/flyingmachine/emacs-for-clojure/blob/master/customizations/shell-integration.el#L1) +;; Sets up exec-path-from shell +;; https://github.com/purcell/exec-path-from-shell +(when (memq window-system '(mac ns)) + (exec-path-from-shell-initialize) + (exec-path-from-shell-copy-envs + '("PATH"))) +;; END + +;; SWITCH OFF CURSOR BLINKING +(blink-cursor-mode 0) + + +;; trying to disable the mouse click which is infuriating me - this doesn't work. Further investigation needed +(global-unset-key [down-mouse-1]) + + + +;; calendar proper Monday start +(setq calendar-week-start-day 1) + +;; autopair +(require 'autopair) + +;; deft +(require 'deft) +(setq deft-directory "~/ownCloud/Textnotes") +(setq deft-use-filename-as-title t) +;; (setq deft-extension "txt") ; if I want default new files to be org files +;; (setq deft-text-mode 'org-mode) ; use org-mode to view the razzers + +;; alternative setup of deft to allow for deft seeing all file extensions from +;; http://emacs.stackexchange.com/questions/3429/how-to-support-multiple-extensions-in-deft +(setq deft-extension "") +(defvar deft-default-extension "txt") +(defun my/deft-default-extension (orig-func &rest args) + (let ((deft-extension deft-default-extension)) + (apply orig-func args))) +(advice-add 'deft-new-file :around #'my/deft-default-extension) + +;; give us a system clipboard +(setq x-select-enable-clipboard t) + +;; I don't want to type yes or no +(defalias 'yes-or-no-p 'y-or-n-p) + +;;gnus sorting the summary buffer and putting the date in the headline +(setq gnus-summary-line-format "%U%d%R%z%I%(%[%4L: %-23,23f%]%) %s\n") +(setq gnus-thread-sort-functions + '(gnus-thread-sort-by-most-recent-date)) +;; how the group buffer looks +(setq gnus-group-line-format "%M%S%p%P%5y:%B%(%g%)\n") + +;; guide-key config - SWITCHED OFF +(require 'guide-key) +(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-c")) +(guide-key-mode 1) ; Enable guide-key-mode + +;; enable flycheck by default (on the fly linting) +;; SWITCH IT OFF FOR A BIT: (add-hook 'after-init-hook #'global-flycheck-mode) + +;; python stuff - go this from a big pacman update on 18 Dec +(autoload 'python-mode "python-mode.el" "Python mode." t) +(setq auto-mode-alist (append '(("/.*\.py\'" . python-mode)) auto-mode-alist)) + +;; TRAMP stuff +;; using sshx as default as it works better than ssh +(setq tramp-default-method "sshx") + +;; use iPython as the python interpreter in emacs +(setq + python-shell-interpreter "ipython" + python-shell-interpreter-args "" + python-shell-prompt-regexp "In \\[[0-9]+\\]: " + python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: " + python-shell-completion-setup-code + "from IPython.core.completerlib import module_completion" + python-shell-completion-module-string-code + "';'.join(module_completion('''%s'''))\n" + python-shell-completion-string-code + "';'.join(get_ipython().Completer.all_completions('''%s'''))\n") + +;; virtualenv config +(require 'virtualenvwrapper) +(venv-initialize-interactive-shells) ;; if you want interactive shell support +(venv-initialize-eshell) ;; if you want eshell support +(setq venv-location "/home/lemon/.envs") + +;; set my virtualenv dir for helm-pydoc +(setq helm-virtualenv ".envs") + +;;w3m config +(require 'w3m) + (setq browse-url-browser-function 'w3m-browse-url) + (autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t) + ;; optional keyboard short-cut +(global-set-key "\C-xm" 'browse-url-at-point) + +;; my keybind to open a link in an external browser +(define-key w3m-mode-map (kbd "\C-c B") 'w3m-external-view-this-url) + +;; open the current document in external browser +(define-key w3m-mode-map (kbd "\C-c b") 'w3m-external-view-current-url) + +;;change w3m user-agent to android +(setq w3m-user-agent "Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.") + +;;quick access reddit +(defun reddit (reddit) + "Opens the REDDIT in w3m-new-session" + (interactive (list + (read-string "Enter the reddit (default: emacs): " nil nil "emacs" nil))) + (browse-url (format "http://m.reddit.com/r/%s" reddit))) + +;; wrap tags in HTML from http://ergoemacs.org/emacs/emacs_html_insert_tags.html +(defun wrap-html-tag (tagName) + "Add a tag to beginning and ending of current word or text selection." + (interactive "sEnter tag name: ") + (let (p1 p2 inputText) + (if (use-region-p) + (progn + (setq p1 (region-beginning) ) + (setq p2 (region-end) ) + ) + (let ((bds (bounds-of-thing-at-point 'symbol))) + (setq p1 (car bds) ) + (setq p2 (cdr bds) ) ) ) + + (goto-char p2) + (insert "</" tagName ">") + (goto-char p1) + (insert "<" tagName ">") + )) + + +;;Use AUCTex +(load "auctex.el" nil t t) +;;(load "preview-latex.el" nil t t) +(setq TeX-auto-save t) +(setq TeX-parse-self t) +(setq-default TeX-master nil) +(setq TeX-PDF-mode t); PDF mode (rather than DVI-mode) + + +;; make sure calendar is using European date format, not the fucking American one +(setq calendar-date-style (quote european)) + +;; global visual line mode +(global-visual-line-mode 1) + +;; mouse avoidance +(mouse-avoidance-mode 'banish) + +;; column numbering +(column-number-mode 1) + +;; paren mode +(show-paren-mode 1) + +;; use recentf to open recent files (from http://www.masteringemacs.org/article/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"))) + +;; fix scrolling +(setq mouse-wheel-follow-mouse 't) +(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) + +;; browser shit - ovrriding what's up there for now +(setq browse-url-browser-function 'browse-url-generic) +(setq browse-url-generic-program "uzbl-browser") + +;; save tonnes of history +(setq savehist-file "~/.emacs.d/savehist") +(savehist-mode +1) +(setq savehist-save-minibuffer-history +1) +(setq savehist-additional-vriables + '(kill-ring + search-ring + regexp-search-ring)) + +;; markdown mode - bits from http://www.wisdomandwonder.com/wordpress/wp-content/uploads/2014/03/C3F.html +(autoload 'markdown-mode "markdown-mode" + "Major mode for editing Markdown files" t) +(add-to-list 'auto-mode-alist '("README\\.md\\.markdown\\'" . gfm-mode)) + +;; stash backups somewhere more convenient (from https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org) +(setq backup-directory-alist '(("." . "~/.emacs.d/backups"))) + +;; save lots of backups (from https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org) +(setq delete-old-versions -1) +(setq version-control t) +(setq vc-make-backup-files t) +(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t))) + +;; if we want line numbers and syntax highlighting from http://www.wisdomandwonder.com/wordpress/wp-content/uploads/2014/03/C3F.html +;; (global-linum-mode 1) +(global-font-lock-mode 1) + +;; use SOLARIZED +;;(load-theme 'solarized-dark t) + +;; other themes +;; (load-theme 'misterioso t) +(load-theme 'tango-dark t) + +;; save history of minibuffer commands +(savehist-mode 1) + + + +;; evil mode is here +;; getting good shit from http://juanjoalvarez.net/es/detail/2014/sep/19/vim-emacsevil-chaotic-migration-guide/ +;; (require 'evil) +;; (evil-mode 1) +;; (setq evil-emacs-state-cursor '("red" box)) +;; (setq evil-normal-state-cursor '("green" box)) +;; (setq evil-visual-state-cursor '("orange" box)) +;; (setq evil-insert-state-cursor '("red" bar)) +;; (setq evil-replace-state-cursor '("red" bar)) +;; (setq evil-operator-state-cursor '("red" hollow)) + +;; my keybindings +(global-set-key (kbd "C-c u") 'browse-url) + + +;; START HELM STUFF (IT IS INSTALLED IN ~/code/github-code +;; [Facultative] Only if you have installed async. +(add-to-list 'load-path "/home/lemon/code/github/helm") +(add-to-list 'load-path "/home/lemon/code/github/emacs-async") +(require 'helm-config) +(helm-mode 1) + +;; The default "C-x c" is quite close to "C-x C-c", which quits Emacs. +;; Changed to "C-c h". Note: We must set "C-c h" globally, because we +;; cannot change `helm-command-prefix-key' once `helm-config' is loaded. +(global-set-key (kbd "C-c h") 'helm-command-prefix) +(global-unset-key (kbd "C-x c")) +;; (define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebind tab to run persistent action +;; (define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal +;; (define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z + +(when (executable-find "curl") + (setq helm-google-suggest-use-curl-p t)) + +(setq helm-split-window-in-side-p t ; open helm buffer inside current window, not occupy whole other window + helm-buffers-fuzzy-matching t ; fuzzy matching buffer names when non--nil + helm-move-to-line-cycle-in-source t ; move to end or beginning of source when reaching top or bottom of source. + helm-ff-search-library-in-sexp t ; search for library in `require' and `declare-function' sexp. + helm-scroll-amount 8 ; scroll 8 lines other window using M-<next>/M-<prior> + helm-ff-file-name-history-use-recentf t) + +(global-set-key (kbd "M-x") 'helm-M-x) +(global-set-key (kbd "C-x b") 'helm-mini) +(global-set-key (kbd "C-x C-f") 'helm-find-files) + +;; use ack-grep when grepping in shit (following a C-x-C-f) +(when (executable-find "ack-grep") + (setq helm-grep-default-command "ack-grep -Hn --no-group --no-color %e %p %f" + helm-grep-default-recurse-command "ack-grep -H --no-group --no-color %e %p %f")) +;; extra shit in code +(semantic-mode 1) +;; find man page of shit at point +(add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages) +;; fucking awsome occur shit in helm +(global-set-key (kbd "C-c h o") 'helm-occur) + + +;; make sure you can delete selected region +(delete-selection-mode 1) + +;; powerline for emacs +(require 'powerline) +(powerline-vim-theme) + +;; enable buffers to auto-update when file on disk changes +(global-auto-revert-mode t) + +(require 'ace-jump-mode) + (define-key global-map (kbd "C-c SPC") 'ace-jump-mode) + +;; +;; enable a more powerful jump back function from ace jump mode +;; +(autoload + 'ace-jump-mode-pop-mark + "ace-jump-mode" + "Ace jump back:-)" + t) +(eval-after-load "ace-jump-mode" + '(ace-jump-mode-enable-mark-sync)) +(define-key global-map (kbd "C-x SPC") 'ace-jump-mode-pop-mark) + +;; ace search +(ace-isearch-mode +1) +(global-ace-isearch-mode +1) + +;; use Projectile - currently not using it +(projectile-global-mode) + + +;; END OF HELM STUFF + +;; python Jedi! +(add-hook 'python-mode-hook 'jedi:setup) +(setq jedi:complete-on-dot t) ; optional +;;(add-to-list 'ac-sources 'ac-source-jedi-direct) + + + +;; config for mutt to use emacs (from emacs wikie mutt in emacs) +(server-start) +(add-to-list 'auto-mode-alist '("/mutt" . mail-mode)) + +;; get rid of annoying buffer key +(global-unset-key "\C-x\C-b") + +;; Start with ido mode by default +(require 'ido) +(setq ido-enable-flex-matching t) +(setq ido-everywhere t) +(setq ido-create-new-buffer 'always) +(setq ido-file-extensions-order '(".org" ".txt" ".py" ".emacs" ".xml" ".html" ".el" ".ini" ".cfg" ".cnf")) +(ido-mode 1) + +;; Get rid of the menu bar and toolbar and scroll bar +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) + +;; start to scratch +(setq inhibit-startup-screen +1) +(put 'narrow-to-region 'disabled nil) |