dotfiles

My dotfiles.
Log | Files | Refs | LICENSE

config.org (12836B)


      1 #+TITLE: Ryan Jeffrey's Emacs config
      2 #+AUTHOR: Ryan Jeffrey
      3 #+EMAIL: pwishie@gmail.com
      4 #+OPTIONS: num:nil
      5 * Emacs
      6 ** init
      7 #+BEGIN_SRC emacs-lisp
      8 
      9 (eval-when-compile
     10   (require 'use-package))
     11 
     12 (defalias 'yes-or-no-p 'y-or-n-p)
     13 
     14 (set-frame-parameter (selected-frame) 'alpha '(80 . 80))
     15 (add-to-list 'default-frame-alist '(alpha . (80 . 80)))
     16 
     17 #+END_SRC
     18 ** font and theme
     19 #+BEGIN_SRC emacs-lisp
     20 
     21 (add-to-list 'load-path "~/.emacs.d/lisp/")
     22 
     23 (setq x-gtk-use-system-tooltips nil)     
     24 
     25 ;; font
     26 (if (string= system-name "Southpark")
     27     (add-to-list 'default-frame-alist
     28                  '(font . "Hasklig:size=20:antialias=false:autohint=true:family=mono"))
     29   (add-to-list 'default-frame-alist
     30                '(font . "Hasklig:size=16:antialias=false:autohint=true:family=mono")))
     31 
     32 (use-package prettify-symbols-mode
     33   :init 
     34   (defconst lisp--prettify-symbols-alist
     35     '(("lambda"  . ?λ)))
     36   :hook
     37   (lisp-mode))
     38 
     39 
     40 (add-to-list 'load-path "~/.emacs.d/themes/")
     41 
     42 (setq modus-vivendi-theme-slanted-constructs nil
     43       modus-vivendi-theme-bold-constructs nil
     44       modus-vivendi-theme-visible-fringes nil
     45       modus-vivendi-theme-subtle-diffs nil
     46       modus-vivendi-theme-distinct-org-blocks nil
     47       modus-vivendi-theme-proportional-fonts nil
     48       modus-vivendi-theme-scale-headings nil
     49       modus-vivendi-theme-scale-1 1
     50       modus-vivendi-theme-scale-2 1
     51       modus-vivendi-theme-scale-3 1
     52       modus-vivendi-theme-scale-4 1)
     53 
     54 (use-package modus-vivendi-theme
     55   :ensure t)
     56 (use-package modus-operandi-theme
     57   :ensure t)
     58 (load-theme 'modus-vivendi t)
     59 
     60 (global-set-key (kbd "M-S-<up>") 'text-scale-increase)
     61 (global-set-key (kbd "M-S-<down>") 'text-scale-decrease)
     62 (scroll-bar-mode nil)
     63 
     64 (use-package shr
     65   :commands (eww
     66              eww-browse-url)
     67   :config
     68                                         ;(setq browse-url-browser-function 'eww-browse-url)
     69   (setq shr-use-fonts nil)
     70   (setq shr-use-colors nil)
     71   (setq shr-max-image-proportion 0.2)
     72   (setq shr-width (current-fill-column)))
     73 
     74 
     75 #+END_SRC
     76 ** swiper
     77 #+BEGIN_SRC emacs-lisp
     78 (use-package swiper
     79   :init
     80   (global-set-key (kbd "C-s") 'swiper)
     81   :ensure t)
     82 
     83 (use-package counsel
     84   :ensure t)
     85 
     86 #+END_SRC
     87 
     88 ** Misc
     89 #+BEGIN_SRC emacs-lisp
     90 (setq tty-menu-open-use-tmm t)
     91 (global-set-key [f10] 'tmm-menubar)
     92 (put 'upcase-region 'disabled nil)
     93 (electric-pair-mode t)
     94 (show-paren-mode 1)
     95 (setq-default indent-tabs-mode nil)
     96 (setq-default tab-width 4)
     97 (setq column-number-mode t)
     98 (display-time-mode 1)
     99 (tool-bar-mode -1)
    100 (menu-bar-mode -1) 
    101 (scroll-bar-mode -1)
    102 (setq ring-bell-function 'ignore)
    103 (blink-cursor-mode 0)
    104 (set-language-environment "UTF-8")
    105 (setq redisplay-dont-pause t)
    106 (setq vc-follow-symlinks t) ; Otherwise emacs asks
    107 
    108 ;; TODO Smithetsz
    109 (global-set-key (kbd "M-SPC") #'(lambda ()
    110                                   (interactive)
    111                                   (search-forward "<++>")
    112                                   (delete-backward-char 4)))
    113 
    114 
    115 #+END_SRC
    116 
    117 ** Filename-mode associations, modes for specific file types
    118 #+BEGIN_SRC emacs-lisp
    119 
    120 (use-package conf-mode
    121   :init
    122   (add-to-list 'auto-mode-alist '("/sxhkdrc\\'" . conf-unix-mode))
    123   (add-to-list 'auto-mode-alist '("/zshrc\\'" . shell-script-mode))
    124   (add-to-list 'auto-mode-alist '("\\config\\'" . conf-mode))
    125   (add-to-list 'auto-mode-alist '("\\.Xdefaults'" . conf-xdefaults-mode))
    126   (add-to-list 'auto-mode-alist '("\\.Xresources'" conf-xdefaults-mode))
    127   (add-to-list 'auto-mode-alist '("\\.Xdefaults'" . conf-xdefaults-mode)))
    128 
    129 
    130 (use-package systemd
    131   :ensure t
    132   :mode (("\\.service\\'" . systemd-mode)))
    133 
    134 (use-package fish-mode
    135   :ensure t
    136   :mode (("\\.fish\\'" . fish-mode)))
    137 
    138 (use-package rust-mode
    139   :ensure t
    140   :mode (("\\.rs\\'" . rust-mode)))
    141 
    142 #+END_SRC
    143 ** joestar
    144 #+BEGIN_SRC emacs-lisp
    145 (use-package undo-tree
    146   :ensure t)
    147 (use-package highlight
    148   :ensure t)
    149 (use-package joestar
    150   :load-path 
    151   "~/.emacs.d/joestar/"
    152   :init
    153   (progn
    154     (defvar undo-tree-map
    155       (let ((map (make-sparse-keymap)))
    156         ;; remap `undo' and `undo-only' to `undo-tree-undo'
    157         (define-key map [remap undo] 'undo-tree-undo)
    158         (define-key map [remap undo-only] 'undo-tree-undo)
    159         ;; bind standard undo bindings (since these match redo counterparts)
    160         (define-key map (kbd "C-/") 'undo-tree-undo)
    161         (define-key map "\C-_" 'undo-tree-undo)
    162         ;; redo doesn't exist normally, so define our own keybindings
    163         (define-key map (kbd "C-?") 'undo-tree-redo)
    164         (define-key map (kbd "M-_") 'undo-tree-redo)
    165         ;; just in case something has defined `redo'...
    166         (define-key map [remap redo] 'undo-tree-redo)
    167         ;; we use "C-x u" for the undo-tree visualizer
    168         (define-key map (kbd "s-x u") 'undo-tree-visualize)
    169         ;; bind register commands
    170         (define-key map (kbd "s-x r u") 'undo-tree-save-state-to-register)
    171         (define-key map (kbd "s-x r U") 'undo-tree-restore-state-from-register)
    172         ;; set keymap
    173         (setq undo-tree-map map)))))
    174 
    175 (global-joestar-mode)
    176 
    177 ;; global move window keys so non joestar buffers can still have these bindings
    178 (global-set-key (kbd "M-<left>") #'(lambda ()
    179                                      (interactive)
    180                                      (other-window -1)))
    181 
    182 (global-set-key (kbd "M-<right>") #'(lambda ()
    183                                       (interactive)
    184                                       (other-window 1)))
    185 
    186 (global-set-key (kbd "S-<right>") 'joe-nbuf)
    187 (global-set-key (kbd "S-<left>") 'joe-pbuf)
    188 
    189 
    190 #+END_SRC
    191 ** markdown
    192 #+begin_src emacs-lisp
    193 
    194 (use-package markdown-mode
    195   :ensure t
    196   :mode (("README\\.md\\'" . gfm-mode)
    197          ("\\.md\\'" . markdown-mode)
    198          ("\\.markdown\\'" . markdown-mode))
    199   :init (setq markdown-command "multimarkdown"))
    200 
    201 #+end_src
    202 ** org
    203 #+BEGIN_SRC emacs-lisp
    204 
    205 (use-package org
    206   :init 
    207   (setq org-src-preserve-indentation nil 
    208         org-edit-src-content-indentation 0)
    209   (require 'org-tempo)
    210   (add-hook 'org-mode-hook 'toggle-truncate-lines)
    211   (setq org-src-tab-acts-natively t)
    212   :bind (:map org-mode-map
    213               ("M-S-<up>" . 'text-scale-increase)
    214               ("M-S-<down>" . 'text-scale-decrease)))
    215 
    216 (use-package org-indent-mode
    217   :config
    218   (org-indent-mode t)
    219   :hook org-mode)
    220 
    221 (use-package org-bullets
    222   :ensure t)
    223 
    224 (use-package wc-mode
    225   :ensure t
    226   :hook org-mode)
    227 
    228 (use-package display-line-numbers-mode
    229   :hook org-mode)
    230 
    231 (use-package company-auctex
    232   :ensure t)
    233 
    234 ;; Configuring LaTeX must be done like this because of legacy. 
    235 (use-package tex-mode
    236   :ensure auctex
    237   :init
    238   (setq TeX-auto-save t)
    239   (setq TeX-parse-self t)
    240   (setq-default TeX-master nil)
    241   (setq-default TeX-engine 'luatex)
    242   (setq-default TeX-PDF-mode t)
    243   (add-hook 'LaTeX-mode-hook #'flyspell-mode)
    244   (add-hook 'LaTeX-mode-hook #'wc-mode)
    245   (add-hook 'LaTeX-mode-hook #'display-line-numbers-mode)
    246   (add-hook 'LaTeX-mode-hook #'company-auctex-init)
    247   (add-hook 'LaTeX-mode-hook #'company-mode)
    248   (add-hook 'LaTeX-mode-hook #'TeX-source-correlate-mode)
    249   
    250   (use-package auctex-latexmk
    251     :ensure t
    252     :init
    253     ;(add-to-list 'TeX-command-list "-pvc")
    254     (auctex-latexmk-setup)
    255     (add-hook 'LaTeX-mode-hook
    256               (lambda ()
    257                 (add-hook 'after-save-hook #'(lambda ()
    258                                                (TeX-command-master "LaTeX")) nil t)))))
    259 
    260 #+End_src
    261 ** vterm
    262 #+BEGIN_SRC emacs-lisp
    263 (when module-file-suffix
    264   (use-package vterm
    265     :ensure t
    266     :init (setq vterm-always-compile-module t)
    267     :bind (:map vterm-mode-map
    268                 ("M-c" . 'vterm-copy-mode)
    269                 ("M-i" . 'ido-switch-buffer))))
    270 
    271 #+END_SRC
    272 * IDE
    273 ** Clojure 
    274 #+begin_src emacs-lisp
    275  (use-package cider
    276   :ensure t
    277   :bind (:map cider-mode-map
    278               ("M-e" . cider-eval-last-sexp)
    279               ("M-r" . cider-eval-region)
    280               )
    281   :init
    282   (eval-after-load "cider-mode"
    283     '(define-key cider-mode-map (kbd "C-x") 'joe-nextword)))
    284 
    285 (use-package clojure-mode
    286   :ensure t)
    287 #+end_src
    288 ** all programming languages
    289 *** todos
    290 #+BEGIN_SRC emacs-lisp
    291 (use-package fic-mode
    292   :ensure t
    293   :init (add-hook 'prog-mode-hook 'fic-mode)
    294   :config
    295   (fic-mode t))
    296 
    297 #+END_SRC
    298 *** company
    299 #+begin_src emacs-lisp
    300 (use-package company
    301   :ensure t
    302   :init (add-hook 'prog-mode-hook 'company-mode)
    303   :bind (:map company-active-map
    304               ("C-n" . company-select-next)
    305               ("C-p" . company-select-previous))
    306   :config
    307   (setq company-idle-delay 0.3)
    308   (setq company-tooltip-align-annotations t) ; aligns annotation to the right hand side
    309   (setq company-minimum-prefix-length 1))
    310 #+end_src
    311 *** flycheck
    312 #+begin_src emacs-lisp
    313 (use-package flycheck
    314   :ensure t
    315   :init (add-hook 'prog-mode-hook 'flycheck-mode)) ; global 
    316 
    317 #+end_src
    318 
    319 ** magit
    320 #+begin_src emacs-lisp
    321 (use-package magit
    322   :ensure t
    323   :init
    324 ;  (add-hook 'after-init-hook '(lambda ()
    325 ;                                (global-magit-file-mode -1)))
    326 )
    327 #+end_src
    328 ** Misc
    329 #+BEGIN_SRC emacs-lisp
    330 (defun insert-current-date ()
    331   (interactive)
    332   (insert (shell-command-to-string "echo -n $(date +%Y-%m-%d)")))
    333 
    334 (use-package emojify
    335   :ensure t
    336   :init (global-emojify-mode))
    337 
    338 (use-package gitignore-mode
    339   :ensure t
    340   :init
    341   (add-to-list 'auto-mode-alist '("\\.gitignore\\'" . gitignore-mode)) )
    342 
    343 (use-package rainbow-mode
    344   :ensure t
    345   :hook (web-mode emacs-lisp-mode))
    346 
    347 (use-package crontab-mode
    348   :ensure t)
    349 
    350 #+END_SRC
    351 ** html 
    352 #+BEGIN_SRC emacs-lisp
    353 (use-package web-mode
    354   :ensure t
    355   :config
    356   (add-to-list 'auto-mode-alist '("\\.api\\'" . web-mode))
    357   (add-to-list 'auto-mode-alist '("/some/react/path/.*\\.js[x]?\\'" . web-mode))
    358 
    359   (setq web-mode-markup-indent-offset 2)
    360   (setq web-mode-css-indent-offset 2)
    361   (setq web-mode-code-indent-offset 2)
    362   (setq web-mode-engines-alist
    363         '(("php"    . "\\.phtml\\'")
    364           ("blade"  . "\\.blade\\.")
    365           ("handlebars" . "\\.handlebars\\'")))
    366 
    367   (setq web-mode-content-types-alist
    368         '(("json" . "/some/path/.*\\.api\\'")
    369           ("xml"  . "/other/path/.*\\.api\\'")
    370           ("jsx"  . "/some/react/path/.*\\.js[x]?\\'")))
    371   (setq web-mode-markup-indent-offset 2)
    372   (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
    373   (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
    374   (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
    375   (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
    376   (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
    377   (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
    378   (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
    379   (add-to-list 'auto-mode-alist '("\\.css\\'" . web-mode))
    380   (add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
    381   (add-to-list 'auto-mode-alist '("\\.handlebars\\'" . web-mode))
    382   (define-key web-mode-map (kbd "C-n") 'web-mode-tag-match)
    383   (setq web-mode-enable-current-column-highlight t)
    384   (setq web-mode-enable-current-element-highlight t)
    385   (setq web-mode-enable-auto-closing t))
    386 
    387 (use-package impatient-mode
    388   :ensure t
    389   :hook web-mode)
    390 
    391 #+END_SRC
    392 *** Emmet
    393 #+BEGIN_SRC emacs-lisp
    394 
    395 (use-package emmet-mode
    396   :ensure t
    397   :config
    398   (define-key web-mode-map (kbd "C-j") 'emmet-expand-line)
    399   (emmet-mode)
    400                                         ;      (emmet-preview-mode)
    401   :hook web-mode)
    402 
    403 #+END_SRC
    404 
    405 ** C 
    406 #+begin_src emacs-lisp
    407 
    408 (use-package cc-mode
    409   :config
    410   (setq c-default-style "linux"
    411         c-basic-offset 4)
    412   (c-set-offset 'inline-open '0))
    413 
    414 #+end_src
    415 ** JavaScript
    416 #+begin_src emacs-lisp
    417 (setq js-indent-level 2)
    418 (use-package json-mode
    419   :ensure t)
    420 #+end_src
    421 * Text-editor
    422 ** spellcheck
    423 #+BEGIN_SRC emacs-lisp
    424 
    425 (setq ispell-program-name (executable-find "hunspell"))
    426 (setq ispell-local-dictionary "en_US")
    427 (setq ispell-local-dictionary-alist
    428       '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil nil nil utf-8)))
    429 
    430 (add-hook 'org-mode-hook 'flyspell-mode)
    431 
    432 #+END_SRC
    433 ** sudo edit
    434 #+BEGIN_SRC emacs-lisp
    435 
    436 (defun er-sudo-edit (&optional arg)
    437   "Edit currently visited file as root With a prefix ARG prompt for a file to visit.  Will also prompt for a file to visit if current buffer is not visiting a file."
    438   (interactive "P")
    439   (if (or arg (not buffer-file-name))
    440       (find-file (concat "/sudo:root@localhost:"
    441                          (ido-read-file-name "Find file(as root): ")))
    442     (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
    443 
    444 #+END_SRC
    445 ** misc
    446 #+BEGIN_SRC emacs-lisp
    447 
    448 ;; tell emacs not to use the clipboard
    449                                         ;(setq x-select-enable-clipboard nil)
    450 
    451 (global-set-key (kbd "M-i") 'ido-switch-buffer)
    452 
    453 #+END_SRC
    454 ** snippets
    455 #+begin_src emacs-lisp
    456 (use-package yasnippet
    457   :ensure t
    458   :init
    459   (require 'yasnippet)
    460   (yas-reload-all)
    461   (add-hook 'prog-mode-hook #'yas-minor-mode))
    462 
    463 (use-package yasnippet-snippets
    464   :ensure t)
    465 #+end_src
    466 * emacs-os
    467 #+begin_src emacs-lisp
    468 (when 
    469     (or (string= system-name "Southpark") (string= system-name "Springfield"))
    470   (require 'ryan-os))
    471 #+end_src
    472 
    473