dotfiles

My dotfiles.
Log | Files | Refs | LICENSE

commit dd5964be9a2bdca3f38c88402dc1533b60459476
parent 51e89c212cc6d651302dca0ab04ff8c319801b68
Author: Ryan Jeffrey <pwishie@gmail.com>
Date:   Fri, 10 May 2019 14:31:54 -0700

update emacs

Diffstat:
M.emacs | 501++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 316 insertions(+), 185 deletions(-)

diff --git a/.emacs b/.emacs @@ -1,4 +1,3 @@ - ;;;; Ryan's Emacs file ;;; package init stuff @@ -6,21 +5,23 @@ (require 'package) -(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) - - +(add-to-list 'package-archives '("melpa" . "https://melpa.milkbox.net/packages/")) (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. + '(comment-style (quote box)) '(package-selected-packages (quote - (evil telephone-line vimrc-mode multi-term spacemacs-theme night-owl-theme php-mode robe hlinum ggtags flycheck-perl6 company-rtags neotree modern-cpp-font-lock magit cmake-mode company-c-headers hydra irony company auto-complete-clang cmake-ide rtags fish-mode flycheck iedit auto-complete-c-headers auto-complete markdown-mode pdf-tools geiser projectile clojure-mode-extra-font-locking cider slime grandshell-theme))) + (cyberpunk-theme rainbow-mode pretty-mode cargo flycheck-rust racer helm rust-mode rebox2 ssh evil telephone-line vimrc-mode multi-term spacemacs-theme night-owl-theme php-mode robe hlinum ggtags flycheck-perl6 company-rtags neotree modern-cpp-font-lock magit cmake-mode company-c-headers hydra irony company auto-complete-clang cmake-ide rtags fish-mode flycheck iedit auto-complete-c-headers auto-complete markdown-mode pdf-tools geiser projectile clojure-mode-extra-font-locking cider slime grandshell-theme))) '(safe-local-variable-values (quote - ((projectile-project-run-cmd . "mkdir -p build; cd build; cmake ..; make run") + ((eval setq flycheck-clang-include-path + (list + (expand-file-name "~/CSProjects/dirw/include/"))) + (projectile-project-run-cmd . "mkdir -p build; cd build; cmake ..; make run") (projectile-project-compilation-cmd . "mkdir -p build; cd build; cmake ..; make") (eval setq flycheck-clang-include-path (list @@ -37,195 +38,325 @@ ;; If there is more than one, they won't work right. ) ;; theme and font stuff -(load-theme 'spacemacs-dark t) ;(load-theme 'night-owl t)https://stackoverflow.com/questions/3297 +(load-theme 'cyberpunk t) ;(load-theme 'night-owl t)https://stackoverflow.com/questions/3297 (add-to-list 'default-frame-alist - '(font . "Menlo:antialias=true:size=16:style=Regular")) + '(font . "Monaco:antialias=true:size=16:style=Regular")) ;;; various emacs settings -(put 'upcase-region 'disabled nil) -(electric-pair-mode t) -(desktop-save-mode 1) -(show-paren-mode 1) -(setq-default indent-tabs-mode nil) -(setq-default tab-width 4) -(setq column-number-mode t) -(display-time-mode 1) -(tool-bar-mode -1) -(scroll-bar-mode -1) -(setq ring-bell-function 'ignore) -(blink-cursor-mode 0) - -;;;; Keybinding settings - -;;; so backspace works with indentation. -;;; big thanks to https://www.reddit.com/user/clemera for this. - -(defun my-backward-delete-char () - (interactive) - (cond ((bolp) - (delete-char -1) - (indent-according-to-mode) - (when (looking-at "\\([ \t]+\\)[^ \t]") - (delete-region (point) (match-end 1)))) - ((<= (point) (save-excursion (back-to-indentation) (point))) - (let ((backward-delete-char-untabify-method 'hungry)) - (call-interactively 'backward-delete-char-untabify) - (delete-char -1)) - (indent-according-to-mode)) - (t - (let ((backward-delete-char-untabify-method 'hungry)) - (call-interactively 'backward-delete-char-untabify))))) - -(global-set-key (kbd "<backspace>") 'my-backward-delete-char) - -;;;; Programmer settings - -;;; Lisp settings - - - -(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) ; for markdown editing - -(add-to-list 'auto-mode-alist '("\\.fish\\'" . fish-mode)) ; for editing fish scripts - -;; auto-complete -(require 'auto-complete) -(ac-config-default) - -;; setting the code style to linux -(setq c-default-style "linux" - c-basic-offset 4) - -(global-flycheck-mode 1) ; flycheck - -;; for betting modern C++ highlighting -(require 'modern-cpp-font-lock) -(modern-c++-font-lock-global-mode t) - -;; for setting up the spellcheck program -(setq ispell-program-name "hunspell") -(setq ispell-local-dictionary "en_US") -(setq ispell-local-dictionary-alist - '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil nil nil utf-8))) - -;; notree -(require 'neotree) -(global-set-key [f8] 'neotree-toggle) - - -;; Set your lisp system and, optionally, some contribs -(setq inferior-lisp-program "/opt/sbcl/bin/sbcl") ;;;; TODO: CHECK -(setq slime-contribs '(slime-fancy)) - -(load (expand-file-name "~/quicklisp/slime-helper.el")) -;; Replace "sbcl" with the path to your implementation -(setq inferior-lisp-program "sbcl") - -(setq geiser-active-implementations '(guile)) - - -;; cperl-mode -(fset 'perl-mode 'cperl-mode) -(setq cperl-indent-level 4) -(setq cperl-extra-newline-before-brace t - cperl-brace-offset -2 - cperl-merge-trailing-else nil) - -;; C/C++ mode stuff -(semantic-mode 1) +(put 'upcase-region 'disabled nil) ;; +(electric-pair-mode t) ;; +(desktop-save-mode 1) ;; +(show-paren-mode 1) ;; +(setq-default indent-tabs-mode nil) ;; +(setq-default tab-width 4) ;; +(setq column-number-mode t) ;; +(display-time-mode 1) ;; +(tool-bar-mode -1) ;; +(scroll-bar-mode -1) ;; +(setq ring-bell-function 'ignore) ;; +(blink-cursor-mode 0) ;; + ;; +;;;; Keybinding settings ;; + ;; +;;; so backspace works with indentation. ;; +;;; big thanks to https://www.reddit.com/user/clemera for this. ;; + ;; +;;;; Programmer settings ;; + ;; +;;; Lisp settings ;; + ;; + ;; + ;; +(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) ; for markdown editing ;; + ;; +(add-to-list 'auto-mode-alist '("\\.fish\\'" . fish-mode)) ; for editing fish scripts ;; +(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode)) ; for editing fish scripts ;; + ;; +;; auto-complete ;; +(require 'auto-complete) ;; +(ac-config-default) ;; + ;; +;; setting the code style to linux ;; +(setq c-default-style "linux" ;; + c-basic-offset 4) ;; + ;; +(global-flycheck-mode 1) ; flycheck ;; + ;; +;; for betting modern C++ highlighting ;; +(require 'modern-cpp-font-lock) ;; +(modern-c++-font-lock-global-mode t) ;; + ;; +;; for setting up the spellcheck program ;; +(setq ispell-program-name "hunspell") ;; +(setq ispell-local-dictionary "en_US") ;; +(setq ispell-local-dictionary-alist ;; + '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil nil nil utf-8))) ;; + ;; +;; notree ;; +(require 'neotree) ;; +(global-set-key [f8] 'neotree-toggle) ;; + ;; + ;; +;; Set your lisp system and, optionally, some contribs ;; +(setq inferior-lisp-program "/opt/sbcl/bin/sbcl") +(setq slime-contribs '(slime-fancy)) ;; + ;; +(load (expand-file-name "~/quicklisp/slime-helper.el")) ;; +;; Replace "sbcl" with the path to your implementation ;; +(setq inferior-lisp-program "sbcl") ;; + ;; +(setq geiser-active-implementations '(guile)) ;; + ;; + ;; +;; cperl-mode ;; +(fset 'perl-mode 'cperl-mode) ;; +(setq cperl-indent-level 4) ;; +(setq cperl-extra-newline-before-brace t ;; + cperl-brace-offset -2 ;; + cperl-merge-trailing-else nil) ;; + ;; +;; C/C++ mode stuff ;;;; + ;; (defun my:add-semantic-to-autocomplete() - (add-to-list 'ac-sources 'ac-source-semantic)) - -(add-hook 'c-mode-hook 'my:add-semantic-to-autocomplete) -(add-hook 'c++-mode-hook 'my:add-semantic-to-autocomplete) - -(defun my:ac-c-headers-init() - (require 'auto-complete-c-headers) - (add-to-list 'achead:include-directories '"/usr/include/") - (add-to-list 'achead:include-directories '"/usr/include/c++/8.2.1/") - (add-to-list 'ac-sources 'ac-source-c-headers)) - -(add-hook 'c-mode-hook 'my:ac-c-headers-init) -(add-hook 'c++-mode-hook 'my:ac-c-headers-init) + (semantic-mode 1) + (add-to-list 'ac-sources 'ac-source-semantic)) ;; + ;; +(add-hook 'c-mode-hook 'my:add-semantic-to-autocomplete) ;; +(add-hook 'c++-mode-hook 'my:add-semantic-to-autocomplete) ;; + ;; + +(defun my:ac-c-headers-init() ;; ;; + (require 'auto-complete-c-headers) ;; ;; + (add-to-list 'achead:include-directories '"/usr/include/") ;; ;; + (add-to-list 'achead:include-directories '"/usr/include/c++/8.2.1/") ;; + ;; CURRENT PROJECT ;; + (add-to-list 'achead:include-directories '"~/CSProjects/dirw/include/") ;; ;; + (add-to-list 'ac-sources 'ac-source-c-headers)) ;; ;; + ;; ;; +(add-hook 'c-mode-hook 'my:ac-c-headers-init) ;; ;; +(add-hook 'c++-mode-hook 'my:ac-c-headers-init) ;; ;; (global-ede-mode 1) + +;; CHANGE THIS EACH TIME ;; +(add-hook 'c++-mode-hook ;; + (lambda () (setq flycheck-clang-include-path ;; + (list (expand-file-name "~/CSProjects/gitdirw/head/"))))) ;; + ;; +(setq ggtags-executable-directory "/usr/bin/") ;; + ;; +(add-hook 'c-mode-common-hook ;; + (lambda () ;; + (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) ;; + (ggtags-mode 1)))) ;; +(setq ggtags-use-idutils t) ;; +(setq ggtags-use-project-gtagsconf nil) ;; + ;; + ;; +(add-hook 'ruby-mode-hook 'robe-mode) ;; +(add-hook 'robe-mode-hook 'ac-robe-setup) ;; + ;; +(setq ruby-indent-level 4) ;; + ;; +(add-to-list 'magic-mode-alist ;; + `(,(lambda () ;; + (and (string= (file-name-extension buffer-file-name) "h") ;; + (re-search-forward "@\\<interface\\>" ;; + magic-mode-regexp-match-limit t))) ;; + . objc-mode)) ;; + ;; + ;; +(add-hook 'term-mode-hook ;; + (defun my-term-mode-hook () ;; + (setq bidi-paragraph-direction 'left-to-right))) ;; + ;; ;; +;; (set-frame-parameter (selected-frame) 'alpha '(95 . 50)) ;; +;; (add-to-list 'default-frame-alist '(alpha . (95 . 50))) ; adds alpha transparency + ;; +(setq-default term-suppress-hard-newline t) ;; + ;; + ;; +;;; terminal emulator ;; +(add-to-list 'load-path "/home/ryan/CSProjects/emacs-libvterm/") ;; +(let (vterm-install) ;; + (require 'vterm)) ;; + ;; + ;; + ;; +(require 'telephone-line) ;; + ;; +;;; telephone-line configuration' ;; + ;; +(setq telephone-line-lhs ;; + '( ;; + (accent . (telephone-line-vc-segment ;; + telephone-line-erc-modified-channels-segment ;; + telephone-line-process-segment)) ;; + (nil . (telephone-line-minor-mode-segment ;; + telephone-line-buffer-segment)))) ;; + ;; +(setq telephone-line-rhs ;; + '((nil . (telephone-line-misc-info-segment)) ;; + (accent . (telephone-line-major-mode-segment)) ;; + (evil . (telephone-line-airline-position-segment)))) ;; + ;; +(telephone-line-mode 1) ;; + ;; +;; evil mode settings ;; +(require 'evil) ;; +(evil-mode 1) ;; + + +;; programmer hooks +(setq my-programmer-hooks '('c-mode-common-hook 'clojure-mode-hook 'scheme-mode-hook 'lisp-mode-hook 'ruby-mode-hook + 'perl-mode-hook)) -(ede-cpp-root-project "dirw" :file "~/CSProjects/gitdirw/src/main.cpp" :include-path '("../head/")) - -;; CHANGE THIS EACH TIME -(add-hook 'c++-mode-hook - (lambda () (setq flycheck-clang-include-path - (list (expand-file-name "~/CSProjects/gitdirw/head/"))))) - -(setq ggtags-executable-directory "/usr/bin/") - -(add-hook 'c-mode-common-hook - (lambda () - (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) - (ggtags-mode 1)))) -(setq ggtags-use-idutils t) -(setq ggtags-use-project-gtagsconf nil) - - -(add-hook 'ruby-mode-hook 'robe-mode) -(add-hook 'robe-mode-hook 'ac-robe-setup) - -(setq ruby-indent-level 4) - -(add-to-list 'magic-mode-alist - `(,(lambda () - (and (string= (file-name-extension buffer-file-name) "h") - (re-search-forward "@\\<interface\\>" - magic-mode-regexp-match-limit t))) - . objc-mode)) - - -(add-hook 'term-mode-hook - (defun my-term-mode-hook () - (setq bidi-paragraph-direction 'left-to-right))) - -(set-frame-parameter (selected-frame) 'alpha '(95 . 50)) -(add-to-list 'default-frame-alist '(alpha . (95 . 50))) - -(setq-default term-suppress-hard-newline t) - - -;;; terminal emulator -(add-to-list 'load-path "/home/ryan/CSProjects/emacs-libvterm/") -(let (vterm-install) - (require 'vterm)) - - - -(require 'telephone-line) - -;;; telephone-line configuration -(setq telephone-line-lhs - '((evil . (telephone-line-evil-tag-segment)) - (accent . (telephone-line-vc-segment - telephone-line-erc-modified-channels-segment - telephone-line-process-segment)) - (nil . (telephone-line-minor-mode-segment - telephone-line-buffer-segment)))) - -(setq telephone-line-rhs - '((nil . (telephone-line-misc-info-segment)) - (accent . (telephone-line-major-mode-segment)) - (evil . (telephone-line-airline-position-segment)))) - -(telephone-line-mode 1) - -;; evil mode settings -(require 'evil) -(evil-mode 1) ;; absolute line numbers -(require 'linum-relative) -(linum-mode) -(linum-relative-global-mode) -(setq linum-relative-current-symbol "") - +(defun my/text-mode-init () + "Initialize basic 'text-mode' features." + (require 'linum-relative) ;; + (linum-mode) ;; + (linum-relative-global-mode) ;; + (setq linum-relative-current-symbol "")) + +(add-hook 'text-mode-hook 'my/text-mode-init) + +(defun my/add-hooks-to-prog-modes (hook-modes func) + "Add FUNC to all of the hooks in HOOK-MODES." + (if (= (car hook-modes) nil) + nil) + (add-hook (car hook-modes) 'my/text-mode-init) + (my/add-hooks-to-prog-modes (cdr hook-modes))) + +(my/add-hooks-to-prog-modes my-programmer-hooks 'my/text-mode-init) + +;;; ssh mode stuff ;; + (require 'ssh) ;; + (add-hook 'ssh-mode-hook ;; + (lambda () ;; + (setq ssh-directory-tracking-mode t) ;; + (shell-dirtrack-mode t) ;; + (setq dirtrackp nil))) ;; + ;; +;;; some wordstar keybindings to make manipulating the editor itself a bit easier ;; +(defvar my-keys-minor-mode-map ;; + (let ((map (make-sparse-keymap))) ;; + (define-key map (kbd "C-k o") 'split-window-vertically) ;; + (define-key map (kbd "C-k C-c") 'delete-window) ;; + (define-key map (kbd "C-k c") 'delete-window) ;; + (define-key map (kbd "C-k C-o") 'split-window-vertically) ;; + (define-key map (kbd "C-k v") 'split-window-horizontally) ;; + (define-key map (kbd "C-k C-v") 'split-window-horizontally) ;; + (define-key map (kbd "C-k b") 'kill-buffer) ;; + (define-key map (kbd "C-k n") 'other-window) ;; + (define-key map (kbd "C-k C-b") 'kill-buffer) ;; + (define-key map (kbd "C-k C-n") 'other-window) ;; + (define-key map (kbd "M-+") 'text-scale-increase) ;; + (define-key map (kbd "M--") 'text-scale-decrease) ;; + ;; + map) ;; + "my-keys-minor-mode keymap.") ;; + ;; + ;; +(define-minor-mode my-keys-minor-mode ;; + "A minor mode so that my key settings override annoying major modes." ;; + :init-value t ;; + :lighter " my-keys") ;; + ;; +(my-keys-minor-mode 1) ;; + ;; +(require 'rebox2) ;; + ;; +(rebox-register-template ;; + 75 ;; + 999 ;; + '("?*************?" ;; + "?* box123456 *?" ;; + "?*************?")) ;; + ;; +(add-hook 'perl-mode-hook (lambda () ;; +; The "style loop" specifies a list of box styles which rebox will cycle ;; +; through if you refill (M-q) a box repeatedly. Having "11" in this loop ;; +; will allow you to easily "unbox" a comment block, e.g. for "uncomment-region" ;; + (set (make-local-variable 'rebox-style-loop) '(75 11)) ;; +; The "min-fill-column" setting ensures that the box is not made narrower ;; +; when the text is short ;; + (set (make-local-variable 'rebox-min-fill-column) 79) ;; + (rebox-mode 1))) ;; + ;; +(add-hook 'objc-mode-hook (lambda () ;; +; The "style loop" specifies a list of box styles which rebox will cycle ;; +; through if you refill (M-q) a box repeatedly. Having "11" in this loop ;; +; will allow you to easily "unbox" a comment block, e.g. for "uncomment-region" ;; + (set (make-local-variable 'rebox-style-loop) '(75 11)) ;; +; The "min-fill-column" setting ensures that the box is not made narrower ;; +; when the text is short ;; + (set (make-local-variable 'rebox-min-fill-column) 78) ;; + (rebox-mode 1))) ;; + ;; + ;; +(defun er-sudo-edit (&optional arg) ;; + "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." ;; + (interactive "P") ;; + (if (or arg (not buffer-file-name)) ;; + (find-file (concat "/sudo:root@localhost:" ;; + (ido-read-file-name "Find file(as root): "))) ;; + (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name)))) ;; + ;; +(defun my-backward-delete-char () ;; + (interactive) ;; + (cond ((bolp) ;; + (delete-char -1) ;; + (indent-according-to-mode) ;; + (when (looking-at "\\([ \t]+\\)[^ \t]") ;; + (delete-region (point) (match-end 1)))) ;; + ((<= (point) (save-excursion (back-to-indentation) (point))) ;; + (let ((backward-delete-char-untabify-method 'hungry)) ;; + (call-interactively 'backward-delete-char-untabify) ;; + (delete-char -1)) ;; + (indent-according-to-mode)) ;; + (t ;; + (let ((backward-delete-char-untabify-method 'hungry)) ;; + (call-interactively 'backward-delete-char-untabify))))) ;; + ;; +(global-set-key (kbd "<backspace>") 'my-backward-delete-char) ;; + +(require 'company) +(require 'racer) +(require 'rust-mode) +(require 'electric) +(require 'eldoc) +(require 'flycheck) +(require 'flycheck-rust) + +(setq racer-cmd "/home/ryan/.cargo/bin/racer") ;; Rustup binaries PATH +(setq racer-rust-src-path "/home/ryan/CSProjects/rust/src") ;; Rust source code PATH + +(add-hook 'rust-mode-hook #'racer-mode) +(add-hook 'racer-mode-hook #'eldoc-mode) +(add-hook 'racer-mode-hook #'company-mode) +(add-hook 'flycheck-mode-hook #'flycheck-rust-setup) + +(add-hook 'rust-mode-hook + (lambda () + (push '(">=" . ?≥) prettify-symbols-alist) + (push '("->" . ?→) prettify-symbols-alist) + (push '("<=" . ?≤) prettify-symbols-alist) + (push '("!=" . ?≠) prettify-symbols-alist) + (push '("<-" . ?←) prettify-symbols-alist))) + + + +(global-prettify-symbols-mode 1) + +(provide '.emacs) +;;; .emacs ends here