Skip to content

Instantly share code, notes, and snippets.

@tim-tx
Created February 4, 2019 21:00
Show Gist options
  • Save tim-tx/58f3bb8faa4daa40d02cfd0e7c02133b to your computer and use it in GitHub Desktop.
Save tim-tx/58f3bb8faa4daa40d02cfd0e7c02133b to your computer and use it in GitHub Desktop.
.emacs
;;;;;;;;;;;;;;;;
;; ELPA setup ;;
;;;;;;;;;;;;;;;;
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(when (< emacs-major-version 24)
;; For important compatibility libraries like cl-lib
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)
;;;;;;;;;;
;; misc ;;
;;;;;;;;;;
(defun unfill-paragraph (&optional region)
"Takes a multi-line paragraph and makes it into a single line of text."
(interactive (progn (barf-if-buffer-read-only) '(t)))
(let ((fill-column (point-max))
;; This would override `fill-column' if it's an integer.
(emacs-lisp-docstring-fill-column t))
(fill-paragraph nil region)))
;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file
(defun rename-file-and-buffer (new-name)
"Renames both current buffer and file it's visiting to NEW-NAME."
(interactive "sNew name: ")
(let ((name (buffer-name))
(filename (buffer-file-name)))
(if (not filename)
(message "Buffer '%s' is not visiting a file!" name)
(if (get-buffer new-name)
(message "A buffer named '%s' already exists!" new-name)
(progn
(rename-file filename new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil))))))
(global-linum-mode 1)
;;(pdf-tools-install)
;;(require 'sudo-edit)
(require 'clojure-mode)
(require 'company)
(add-to-list 'load-path "~/.emacs.d/elpa/")
(add-to-list 'auto-mode-alist '("\\.tikz\\'" . latex-mode))
(require 'neotree)
(defun toggle-window-split ()
(interactive)
(if (= (count-windows) 2)
(let* ((this-win-buffer (window-buffer))
(next-win-buffer (window-buffer (next-window)))
(this-win-edges (window-edges (selected-window)))
(next-win-edges (window-edges (next-window)))
(this-win-2nd (not (and (<= (car this-win-edges)
(car next-win-edges))
(<= (cadr this-win-edges)
(cadr next-win-edges)))))
(splitter
(if (= (car this-win-edges)
(car (window-edges (next-window))))
'split-window-horizontally
'split-window-vertically)))
(delete-other-windows)
(let ((first-win (selected-window)))
(funcall splitter)
(if this-win-2nd (other-window 1))
(set-window-buffer (selected-window) this-win-buffer)
(set-window-buffer (next-window) next-win-buffer)
(select-window first-win)
(if this-win-2nd (other-window 1))))))
;; (define-key ctl-x-4-map "t" 'toggle-window-split)
;;(autoload 'dired-async-mode "dired-async.el" nil t)
;;(dired-async-mode 1)
;;;;;;;;;;
;; helm ;;
;;;;;;;;;;
;; (require 'helm)
(require 'helm-config)
;; (helm-mode 1)
(setq helm-split-window-in-side-p t
helm-always-two-windows nil)
(defun tsj/helm-ff-skip-past-dots ()
(if (and (equal "Find Files" (assoc-default 'name (helm-get-current-source)))
(s-ends-with? "/." (helm-get-selection)))
(with-helm-window
(forward-line 2)
(helm-mark-current-line))))
(with-eval-after-load 'helm-files
(advice-add 'helm--update-move-first-line
:after #'tsj/helm-ff-skip-past-dots))
;; (defun cel/helm-ff-not-hardlink-p (file)
;; (not (s-ends-with? ".." file)))
;; (defun cel/helm-ff-up-one-level (fcn &rest args)
;; (flet ((helm-file-completion-source-p (&rest _) t))
;; (apply fcn args)))
;; (defun cel/helm-ff-dots-at-bottom (ret-val)
;; (if (listp ret-val)
;; (-rotate (- (--count (s-ends-with? "." it) (-take 2 ret-val)))
;; ret-val)
;; ret-val))
;; (with-eval-after-load 'helm-files
;; (advice-add 'helm-ff-filter-candidate-one-by-one
;; :before-while 'cel/helm-ff-not-hardlink-p)
;; (advice-add 'helm-find-files-up-one-level
;; :around 'cel/helm-ff-up-one-level)
;; (advice-add 'helm-find-files-get-candidates
;; :filter-return 'cel/helm-ff-dots-at-bottom))
(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.
'(ansi-color-faces-vector
[default default default italic underline success warning error])
'(compilation-message-face (quote default))
'(cua-global-mark-cursor-color "#2aa198")
'(cua-normal-cursor-color "#839496")
'(cua-overwrite-cursor-color "#b58900")
'(cua-read-only-cursor-color "#859900")
'(custom-enabled-themes (quote (zenburn)))
'(custom-safe-themes
(quote
("4bfced46dcfc40c45b076a1758ca106a947b1b6a6ff79a3281f3accacfb3243c" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "1f3113447a652b8436a9938bbac71ecaf022cc73ecd0d76182eb9713aa781f17" "fa2b58bb98b62c3b8cf3b6f02f058ef7827a8e497125de0254f56e373abee088" "d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879" "2a739405edf418b8581dcd176aaf695d319f99e3488224a3c495cb0f9fd814e3" default)))
'(haskell-mode-hook (quote (turn-on-haskell-indentation)))
'(helm-ff-auto-update-initial-value t)
'(helm-follow-mode-persistent t)
'(highlight-changes-colors (quote ("#d33682" "#6c71c4")))
'(highlight-symbol-colors
(--map
(solarized-color-blend it "#002b36" 0.25)
(quote
("#b58900" "#2aa198" "#dc322f" "#6c71c4" "#859900" "#cb4b16" "#268bd2"))))
'(highlight-symbol-foreground-color "#93a1a1")
'(highlight-tail-colors
(quote
(("#073642" . 0)
("#546E00" . 20)
("#00736F" . 30)
("#00629D" . 50)
("#7B6000" . 60)
("#8B2C02" . 70)
("#93115C" . 85)
("#073642" . 100))))
'(hl-bg-colors
(quote
("#7B6000" "#8B2C02" "#990A1B" "#93115C" "#3F4D91" "#00629D" "#00736F" "#546E00")))
'(hl-fg-colors
(quote
("#002b36" "#002b36" "#002b36" "#002b36" "#002b36" "#002b36" "#002b36" "#002b36")))
'(magit-diff-use-overlays nil)
'(mlint-programs (quote ("/opt/matlab/bin/glnx86/mlint")))
'(neo-window-fixed-size t)
'(neo-window-width 35)
'(org-agenda-files
(quote
("~/notes/life.org" "~/notes/software.org" "~/notes/kiwimagi.org" "~/notes/cello.org" "~/notes/metrics.org")))
'(org-return-follows-link t)
'(org-use-sub-superscripts (quote {}))
'(package-selected-packages
(quote
(smart-tabs-mode xah-fly-keys speed-type scad-mode wttrin markdown-mode json-mode sparql-mode helm-tramp ac-emacs-eclim helm-core ecb eclim ace-window eziam-theme spacemacs-theme solarized-theme helm-projectile projectile zenburn-theme async helm helm-ag neotree sudo-edit highlight sokoban general pdf-tools auctex-latexmk haskell-mode which-key ergoemacs-mode wc-mode sclang-extensions python-environment epc ein)))
'(pos-tip-background-color "#073642")
'(pos-tip-foreground-color "#93a1a1")
'(smartrep-mode-line-active-bg (solarized-color-blend "#859900" "#073642" 0.2))
'(term-default-bg-color "#002b36")
'(term-default-fg-color "#839496")
'(vc-annotate-background-mode nil)
'(weechat-color-list
(quote
(unspecified "#002b36" "#073642" "#990A1B" "#dc322f" "#546E00" "#859900" "#7B6000" "#b58900" "#00629D" "#268bd2" "#93115C" "#d33682" "#00736F" "#2aa198" "#839496" "#657b83")))
'(wttrin-default-accept-language (quote ("Accept-Language" . "en-US,en")))
'(xterm-color-names
["#073642" "#dc322f" "#859900" "#b58900" "#268bd2" "#d33682" "#2aa198" "#eee8d5"])
'(xterm-color-names-bright
["#002b36" "#cb4b16" "#586e75" "#657b83" "#839496" "#6c71c4" "#93a1a1" "#fdf6e3"]))
;;;;;;;;;;;;;;
;; org-mode ;;
;;;;;;;;;;;;;;
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "~/notes/life.org" "Tasks")
"* TODO %?\n %i\n %a")
("j" "Journal" entry (file+datetree "~/notes/life.org")
"* %?\nEntered on %U\n %i\n %a")))
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)))
(setq org-directory "~/notes")
(setq org-confirm-babel-evaluate nil)
(setq org-default-notes-file (concat org-directory "/life.org"))
(define-key global-map "\C-cc" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
;; (setq org-todo-keywords
;; '((sequence "TODO" "|" "DONE")
;; (sequence "|" "CANCELED")))
(setq org-todo-keywords '((sequence "TODO" "WAITING" "SOMEDAY" "|" "DONE" "CANCELLED")))
(setq org-agenda-timegrid-use-ampm 1)
(setq org-log-done 'time)
;; PDFs visited in Org-mode are opened in Evince (and not in the default choice) http://stackoverflow.com/a/8836108/789593
(add-hook 'org-mode-hook
'(lambda ()
(delete '("\\.pdf\\'" . default) org-file-apps)
(add-to-list 'org-file-apps '("\\.pdf\\'" . "zathura %s"))))
(require 'ox-beamer) ; for org-reveal
(add-hook 'org-mode-hook 'turn-on-visual-line-mode) ; with Emacs latex mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; start-up and font tweaks ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq x-select-enable-clipboard t)
(setq initial-major-mode 'text-mode)
(setq initial-scratch-message nil)
(setq inhibit-splash-screen t)
(tool-bar-mode -1)
;; (menu-bar-mode -1)
(scroll-bar-mode -1)
;; (set-background-color "gray")
;; (set-foreground-color "black")
;;;;;;;;;;;;;
;; backups ;;
;;;;;;;;;;;;;
(setq backup-directory-alist `(("." . "~/.saves")))
(setq backup-by-copying t)
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; biblatex citation menu ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; for biblatex; use autocite instead of cite
;; (setq reftex-cite-format "\\autocite{%l}")
(setq reftex-cite-format
'(
(?\C-m . "\\cite[]{%l}")
(?t . "\\textcite{%l}")
(?a . "\\autocite[]{%l}")
(?p . "\\parencite{%l}")
(?f . "\\footcite[][]{%l}")
(?F . "\\fullcite[]{%l}")
(?u . "\\citeauthor[]{%l}")
(?x . "[]{%l}")
(?X . "{%l}")
))
;;;;;;;;;;;;
;; auctex ;;
;;;;;;;;;;;;
(load "auctex.el" nil t t)
(eval-after-load "preview"
'(add-to-list 'preview-default-preamble "\\PreviewEnvironment{tikzpicture}" t)
)
(autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(autoload 'reftex-citation "reftex-cite" "Make citation" nil)
(autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
;; Make RefTeX faster
(setq reftex-enable-partial-scans t)
(setq reftex-save-parse-info t)
(setq reftex-use-multiple-selection-buffers t)
(setq reftex-plug-into-AUCTeX t)
(setq reftex-default-bibliography '("/home/tsj/postdoc/refs/zotero.bib"))
(require 'auctex-latexmk)
(auctex-latexmk-setup)
(setq auctex-latexmk-inherit-TeX-PDF-mode t)
(defun tsj-run-latexmk ()
(interactive)
(TeX-command "LatexMk" 'TeX-master-file))
;;;;;;;;;;;;;;;;;;;;;;;;;
;; postscript printing ;;
;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'ps-print)
(setq ps-left-header ( list 'buffer-name ))
(setq ps-line-number t)
(setq ps-font-info-database
(append
'((Courier12 ; the family key
(fonts (normal . "Courier")
(bold . "Courier-Bold")
(italic . "Courier-Oblique")
(bold-italic . "Courier-BoldOblique"))
(size . 14.0)
(line-height . 14.378)
(space-width . 8.39614)
(avg-char-width . 8.39614)))
ps-font-info-database))
;(setq ps-font-family 'Courier12)
(setq ps-font-size 12)
(defun print-to-pdf ()
(interactive)
(ps-spool-buffer)
(switch-to-buffer "*PostScript*")
(write-file "/tmp/tmp.ps")
(kill-buffer "tmp.ps")
(setq cmd (concat "ps2pdf14 /tmp/tmp.ps " (buffer-name) ".pdf"))
(shell-command cmd)
(shell-command "rm /tmp/tmp.ps")
(message (concat "Saved to: " (buffer-name) ".pdf"))
)
(defun print-files-to-pdf ()
(interactive)
(loop for f in (file-expand-wildcards "*.m") do
(find-file f)
(switch-to-buffer f)
(print-to-pdf)
)
)
(put 'narrow-to-region 'disabled nil)
;;;;;;;;;;;;
;; wttrin ;;
;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;; eclim/java ;;
;;;;;;;;;;;;;;;;
(add-hook 'java-mode-hook (lambda ()
(setq c-basic-offset 4
tab-width 4
indent-tabs-mode t)))
;; this was included for eclim, maybe others will need it (ein?)
(require 'auto-complete)
;; regular auto-complete initialization
(require 'auto-complete-config)
(ac-config-default)
;; add the emacs-eclim source
(require 'ac-emacs-eclim)
(ac-emacs-eclim-config)
(require 'eclim)
(setq eclimd-autostart nil)
(global-eclim-mode)
;; https://stackoverflow.com/questions/39505506/company-emacs-eclim-uses-wrong-path-for-project/41519266#41519266
(defun my-eclim-fix-relative-path (path)
(replace-regexp-in-string "^.*src/" "src/" path))
(advice-add 'eclim--project-current-file :filter-return #'my-eclim-fix-relative-path)
;;;;;;;;;;;;;;;;
;; smart tabs ;;
;;;;;;;;;;;;;;;;
(setq-default tab-width 4) ; or any other preferred value
(setq cua-auto-tabify-rectangles nil)
(defadvice align (around smart-tabs activate)
(let ((indent-tabs-mode nil)) ad-do-it))
(defadvice align-regexp (around smart-tabs activate)
(let ((indent-tabs-mode nil)) ad-do-it))
(defadvice indent-relative (around smart-tabs activate)
(let ((indent-tabs-mode nil)) ad-do-it))
(defadvice indent-according-to-mode (around smart-tabs activate)
(let ((indent-tabs-mode indent-tabs-mode))
(if (memq indent-line-function
'(indent-relative
indent-relative-maybe))
(setq indent-tabs-mode nil))
ad-do-it))
(defmacro smart-tabs-advice (function offset)
`(progn
(defvaralias ',offset 'tab-width)
(defadvice ,function (around smart-tabs activate)
(cond
(indent-tabs-mode
(save-excursion
(beginning-of-line)
(while (looking-at "\t*\\( +\\)\t+")
(replace-match "" nil nil nil 1)))
(setq tab-width tab-width)
(let ((tab-width fill-column)
(,offset fill-column)
(wstart (window-start)))
(unwind-protect
(progn ad-do-it)
(set-window-start (selected-window) wstart))))
(t
ad-do-it)))))
(smart-tabs-advice c-indent-line c-basic-offset)
(smart-tabs-advice c-indent-region c-basic-offset)
;;;;;;;;;;;;;;;;;;;;;
;; emacs generated ;;
;;;;;;;;;;;;;;;;;;;;;
(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.
'(flyspell-incorrect ((t (:background "IndianRed1")))))
;;;;;;;;;;;;;;;;
;; spellcheck ;;
;;;;;;;;;;;;;;;;
(setq ispell-tex-skip-alists
(list
(append
(car ispell-tex-skip-alists)
'(("\\\\autocite" ispell-tex-arg-end)))
(cadr ispell-tex-skip-alists)))
;;;;;;;;;;;;;;;;;;
;; xah fly keys ;;
;;;;;;;;;;;;;;;;;;
(require 'xah-fly-keys)
;; (xah-fly-keys-set-layout "qwerty") ; required if you use qwerty
;; (xah-fly-keys-set-layout "colemak-mod-dh") ; required if you use qwerty
;; (xah-fly-keys-set-layout "workman") ; required if you use qwerty
(xah-fly-keys-set-layout "colemak") ; required if you use qwerty
;; (xah-fly-set-layout "dvorak") ; by default, it's dvorak
(xah-fly-keys 1)
;; make escape act like C-g
(define-key key-translation-map (kbd "ESC") (kbd "C-g"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emacs ipython notebook ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Standard Jedi.el setting
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)
;; Type:
;; M-x package-install RET jedi RET
;; M-x jedi:install-server RET
;; Then open Python file.
;; emacs ipython notebook
(require 'ein)
(setq ein:default-url-or-port "https://128.197.47.203:19999")
;; (add-hook 'ein:notebook-mode-hook
;; (eval-after-load 'ein-notebooklist
;; '(progn
;; (define-key xah-fly-w-keymap (kbd "i") 'ein:worksheet-execute-cell-and-goto-next)
;; ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; custom key definitions ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ideally the keys would have some similar function across modes
;; so the function names would be called, e.g. 'tsj-keys-compile'
;; maybe later
(defun tsj-keys-comma-i ()
(interactive)
(let ()
(cond
((eq major-mode 'latex-mode) (LaTeX-insert-item)))))
(defun tsj-keys-comma-o ()
(interactive)
(let ()
(cond
((eq major-mode 'latex-mode) (tsj-run-latexmk)))))
(defun tsj-keys-comma-u ()
(interactive)
(let ()
(cond
((eq major-mode 'latex-mode) (call-interactively 'LaTeX-environment)))))
(defun tsj-keys-comma-w ()
(interactive)
(let ()
(cond
((eq major-mode 'latex-mode) (call-interactively 'TeX-next-error)))))
(defun tsj-compile-or-execute-cell ()
(interactive)
(let ()
(cond
((eq major-mode 'latex-mode) (tsj-run-latexmk))
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:worksheet-execute-cell))
(t (compile "make -k"))
)))
(defun tsj-keys-d-e ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-time-stamp-inactive))
)))
(defun tsj-keys-insert-date ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-time-stamp))
(t xah-insert-date)
)))
(defun tsj-keys-i-g ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-deadline)))))
(defun tsj-keys-i-h ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-schedule)))))
(defun tsj-keys-i-u ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-set-tags-command)))))
(defun tsj-keys-e-l ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (call-interactively 'org-insert-todo-heading))
((eq major-mode 'latex-mode) (call-interactively 'LaTeX-environment))
)))
(defun tsj-keys-e-k ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (org-meta-return))
((eq major-mode 'latex-mode) (LaTeX-insert-item))
)))
(defun tsj-keys-e-a ()
(interactive)
(let ()
(cond
((eq major-mode 'org-mode) (org-archive-subtree-default)))))
(defun tsj-keys-e-t ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:worksheet-change-cell-type))
((eq major-mode 'org-mode) (call-interactively 'org-shiftright))
((eq major-mode 'org-agenda-mode) (call-interactively 'org-agenda-todo))
)))
(defun tsj-save-buffer-or-notebook ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:notebook-save-notebook-command))
(t (call-interactively 'save-buffer))
)))
(defun tsj-write-buffer-or-notebook ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:notebook-rename-command))
(t (call-interactively 'write-file))
)))
(defun tsj-ein-kill-cell ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:worksheet-kill-cell)))))
(defun tsj-ein-copy-cell ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:worksheet-copy-cell)))))
(defun tsj-ein-yank-cell ()
(interactive)
(let ()
(cond
((eq major-mode 'ein:notebook-multilang-mode) (call-interactively 'ein:worksheet-yank-cell)))))
;; (setq tsj-leader-space-keymap (make-sparse-keymap))
;; (define-key tsj-leader-space-keymap (kbd "i") 'ein:worksheet-goto-prev-input)
;; (define-key tsj-leader-space-keymap (kbd "k") 'ein:worksheet-goto-next-input)
;; (define-key tsj-leader-space-keymap (kbd "a") 'ein:worksheet-insert-cell-above)
;; (define-key tsj-leader-space-keymap (kbd "b") 'ein:worksheet-insert-cell-below)
;; (define-key tsj-leader-space-keymap (kbd "u") 'ein:worksheet-execute-all-cell)
;; (define-key tsj-leader-space-keymap (kbd "j") 'ein:worksheet-execute-cell-and-goto-next)
;; (define-key xah-fly-leader-key-map (kbd "SPC") tsj-leader-space-keymap)
;; ;; o
;; (define-key xah-fly-r-keymap (kbd "x") 'tsj-ein-kill-cell)
;; (define-key xah-fly-r-keymap (kbd "c") 'tsj-ein-copy-cell)
;; (define-key xah-fly-r-keymap (kbd "v") 'tsj-ein-yank-cell)
;; ;; ,
;; (define-key xah-fly-w-keymap (kbd "u") 'tsj-keys-comma-u)
;; (define-key xah-fly-w-keymap (kbd "i") 'tsj-keys-comma-i)
;; (define-key xah-fly-w-keymap (kbd "o") 'tsj-keys-comma-o)
;; (define-key xah-fly-w-keymap (kbd "w") 'tsj-keys-comma-w)
;; ;; j
;; (define-key xah-fly-h-keymap (kbd "k") 'tsj-compile-or-execute-cell)
;; ;; d
;; (define-key xah-fly-e-keymap (kbd "f") 'tsj-keys-insert-date)
;; (define-key xah-fly-e-keymap (kbd "e") 'tsj-keys-d-e)
;; ;; e
;; (define-key xah-fly-dot-keymap (kbd "l") 'tsj-keys-e-l)
;; (define-key xah-fly-dot-keymap (kbd "k") 'tsj-keys-e-k)
;; (define-key xah-fly-dot-keymap (kbd "a") 'tsj-keys-e-a)
;; (define-key xah-fly-dot-keymap (kbd "t") 'tsj-keys-e-t)
;; (define-key xah-fly-dot-keymap (kbd "o") 'org-ctrl-c-ctrl-c)
;; ;; i
;; (define-key xah-fly-c-keymap (kbd "a") 'org-agenda)
;; (define-key xah-fly-c-keymap (kbd "c") 'ein:notebooklist-login)
;; (define-key xah-fly-c-keymap (kbd "k") 'ein:notebooklist-open)
;; (define-key xah-fly-c-keymap (kbd ";") 'tsj-write-buffer-or-notebook)
;; (define-key xah-fly-c-keymap (kbd "u") 'tsj-keys-i-u)
;; (define-key xah-fly-c-keymap (kbd "g") 'tsj-keys-i-g)
;; (define-key xah-fly-c-keymap (kbd "h") 'tsj-keys-i-h)
;; (define-key xah-fly-c-keymap (kbd "i") 'helm-bookmarks)
;; (define-key xah-fly-c-keymap (kbd "e") 'helm-find-files)
;; ;; l
;; (define-key xah-fly-n-keymap (kbd "o") (lambda () (interactive) (load-file "/home/tsj/.emacs")))
;; ;; leader
;; (define-key xah-fly-leader-key-map (kbd ";") 'tsj-save-buffer-or-notebook)
;; (define-key xah-fly-leader-key-map (kbd "r") 'replace-string)
;; ;; overrides for non-leader keys
;; (defun tsj-redefine-xah-command-keys ()
;; (interactive)
;; (define-key xah-fly-key-map (kbd "a") 'helm-M-x)
;; )
;; colemak
(setq tsj-leader-space-keymap (make-sparse-keymap))
(define-key tsj-leader-space-keymap (kbd "u") 'ein:worksheet-goto-prev-input)
(define-key tsj-leader-space-keymap (kbd "e") 'ein:worksheet-goto-next-input)
(define-key tsj-leader-space-keymap (kbd "a") 'ein:worksheet-insert-cell-above)
(define-key tsj-leader-space-keymap (kbd "b") 'ein:worksheet-insert-cell-below)
(define-key tsj-leader-space-keymap (kbd "l") 'ein:worksheet-execute-all-cell)
(define-key tsj-leader-space-keymap (kbd "n") 'ein:worksheet-execute-cell-and-goto-next)
(define-key xah-fly-leader-key-map (kbd "SPC") tsj-leader-space-keymap)
;; o
(define-key xah-fly-r-keymap (kbd "x") 'tsj-ein-kill-cell)
(define-key xah-fly-r-keymap (kbd "c") 'tsj-ein-copy-cell)
(define-key xah-fly-r-keymap (kbd "v") 'tsj-ein-yank-cell)
;; ,
(define-key xah-fly-w-keymap (kbd "l") 'tsj-keys-comma-u)
(define-key xah-fly-w-keymap (kbd "u") 'tsj-keys-comma-i)
(define-key xah-fly-w-keymap (kbd "y") 'tsj-keys-comma-o)
(define-key xah-fly-w-keymap (kbd "w") 'tsj-keys-comma-w)
;; j
(define-key xah-fly-h-keymap (kbd "e") 'tsj-compile-or-execute-cell)
;; d
(define-key xah-fly-e-keymap (kbd "t") 'tsj-keys-insert-date)
(define-key xah-fly-e-keymap (kbd "f") 'tsj-keys-d-e)
;; e
(define-key xah-fly-dot-keymap (kbd "i") 'tsj-keys-e-l)
(define-key xah-fly-dot-keymap (kbd "e") 'tsj-keys-e-k)
(define-key xah-fly-dot-keymap (kbd "a") 'tsj-keys-e-a)
(define-key xah-fly-dot-keymap (kbd "g") 'tsj-keys-e-t)
(define-key xah-fly-dot-keymap (kbd "y") 'org-ctrl-c-ctrl-c)
;; i
(define-key xah-fly-c-keymap (kbd "a") 'org-agenda)
(define-key xah-fly-c-keymap (kbd "c") 'ein:notebooklist-login)
(define-key xah-fly-c-keymap (kbd "e") 'ein:notebooklist-open)
(define-key xah-fly-c-keymap (kbd "o") 'tsj-write-buffer-or-notebook)
(define-key xah-fly-c-keymap (kbd "l") 'tsj-keys-i-u)
(define-key xah-fly-c-keymap (kbd "d") 'tsj-keys-i-g)
(define-key xah-fly-c-keymap (kbd "h") 'tsj-keys-i-h)
(define-key xah-fly-c-keymap (kbd "u") 'helm-bookmarks)
(define-key xah-fly-c-keymap (kbd "f") 'helm-find-files)
;; l
(define-key xah-fly-n-keymap (kbd "y") (lambda () (interactive) (load-file "/home/tsj/.emacs")))
;; leader
(define-key xah-fly-leader-key-map (kbd "o") 'tsj-save-buffer-or-notebook)
(define-key xah-fly-leader-key-map (kbd "p") 'replace-string)
;; overrides for non-leader keys
(defun tsj-redefine-xah-command-keys ()
(interactive)
(define-key xah-fly-key-map (kbd "a") 'helm-M-x)
)
(tsj-redefine-xah-command-keys)
(add-hook 'xah-fly-command-mode-activate-hook 'tsj-redefine-xah-command-keys)
(defvar display-buffer-same-window-commands
'(occur-mode-goto-occurrence compile-goto-error eclim-problems-open-current))
(add-to-list 'display-buffer-alist
'((lambda (&rest _)
(memq this-command display-buffer-same-window-commands))
(display-buffer-reuse-window
display-buffer-same-window)
(inhibit-same-window . nil)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment