Created
February 4, 2019 21:00
-
-
Save tim-tx/58f3bb8faa4daa40d02cfd0e7c02133b to your computer and use it in GitHub Desktop.
.emacs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;;;;;;;;;;;;;;; | |
;; 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