From 7804ecde36335710efa8ed6a1a975257d864e174 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 28 Feb 2018 19:36:49 +0000 Subject: Adding dotfiles --- emacs/init.el | 298 +++++++++++++++++++++ emacs/myinit.org | 796 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1094 insertions(+) create mode 100644 emacs/init.el create mode 100644 emacs/myinit.org (limited to 'emacs') diff --git a/emacs/init.el b/emacs/init.el new file mode 100644 index 0000000..291e574 --- /dev/null +++ b/emacs/init.el @@ -0,0 +1,298 @@ +(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. + '(custom-safe-themes + (quote + ("77bddca0879cb3b0ecdf071d9635c818827c57d69164291cb27268ae324efa84" "1b8d67b43ff1723960eb5e0cba512a2c7a2ad544ddb2533a90101fd1852b426e" "628278136f88aa1a151bb2d6c8a86bf2b7631fbea5f0f76cba2a0079cd910f7d" default))) + '(initial-frame-alist (quote ((fullscreen . maximized)))) + '(jdee-server-dir "/home/yannherklotz/.emacs.d/jars/") + '(org-agenda-files nil) + '(package-selected-packages + (quote + (helm-ag edit-indirect ox-twbs request-deferred alert org-gcal plan9-theme monokai-theme material-theme diminish telephone-line monokai smart-tabs-mode zenburn-theme yasnippet use-package undo-tree smartparens pug-mode powerline paredit org-bullets multiple-cursors moe-theme leuven-theme jedi hungry-delete haskell-mode gruvbox-theme glsl-mode ggtags flycheck counsel-projectile company-c-headers color-theme-sanityinc-tomorrow color-theme cider bison-mode base16-theme ace-window))) + '(safe-local-variable-values + (quote + ((projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. && ninja -j4") + (projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. && make -j4") + (projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. && make -j") + (projectile-project-run-cmd . "./build/bin/learn_opengl") + (projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake .. && make -j") + (projectile-project-run-cmd . "./build/bin/simplegame") + (projectile-project-test-cmd . "cd build/tests && ctest") + (projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DYAGE_BUILD_TESTS=ON .. && make -j9") + (company-c-headers-path-user "../include/") + (company-clang-arguments "-I../include/") + (projectile-project-run-cmd . "./bin/simplegame") + (projectile-project-test-cmd . "cd build && ctest") + (projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DUNIT_TESTS=ON .. && make -j9") + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "yage"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/googletest/googletest/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "yage"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root)))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/googletest/googletest/include")))))) + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "include")))))) + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "include")))))) + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "yage")))))) + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "yage"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root)))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/googletest/googletest/include"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/rapidjson/include"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/glfw/include"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/glad/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "yage"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root)))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/googletest/googletest/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/glfw/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/glad/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/rapidjson/include")))))) + (eval progn + (require + (quote projectile)) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "yage"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root)))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/googletest/googletest/include"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/rapidjson/include"))))) + (setq company-clang-arguments + (delete-dups + (append company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/glfw/include"))))) + (setq company-clang-arguments + (delete-dups + ((append) + company-clang-arguments + (list + (concat "-I" + (projectile-project-root) + "lib/glad/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "yage"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root)))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/googletest/googletest/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/glfw/include"))))) + (setq flycheck-clang-include-path + (delete-dups + ((append) + flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/glad/include"))))) + (setq flycheck-clang-include-path + (delete-dups + (append flycheck-clang-include-path + (list + (concat + (projectile-project-root) + "lib/rapidjson/include")))))))))) +(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. + ) + +(require 'package) +(setq package-enable-at-startup nil) +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/")) +(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t) +(package-initialize) + +;; Bootstrap `use-package' +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +(require 'use-package) +(require 'diminish) + +(org-babel-load-file (expand-file-name "~/.emacs.d/myinit.org")) diff --git a/emacs/myinit.org b/emacs/myinit.org new file mode 100644 index 0000000..a754e12 --- /dev/null +++ b/emacs/myinit.org @@ -0,0 +1,796 @@ +#+TITLE: Emacs Settings +#+DATE: <2017-08-11 Fri> +#+AUTHOR: Yann Herklotz +#+EMAIL: ymherklotz@gmail.com + +** Interface +*** Setup + +Server so that a client can connect to it. +#+BEGIN_SRC emacs-lisp + (setq server-socket-file "/tmp/emacs1000/server") + (setq server-socket-dir "/tmp/emacs1000") + (unless (file-exists-p server-socket-file) + (server-start)) +#+END_SRC + +Threshold for faster startup. +#+BEGIN_SRC emacs-lisp + (setq gc-cons-threshold 500000000) +#+END_SRC + +Disable UI that starts when starting emacs and also set the y or n instead of +yes or no. +#+BEGIN_SRC emacs-lisp + (setq inhibit-startup-message t) + (tool-bar-mode -1) + (menu-bar-mode -1) + (fset 'yes-or-no-p 'y-or-n-p) + (diminish 'abbrev-mode) +#+END_SRC + +Move the backup files into the temporaty directory so that they are out of the way. +#+BEGIN_SRC emacs-lisp + (setq backup-directory-alist + `((".*" . ,temporary-file-directory))) + (setq auto-save-file-name-transforms + `((".*" ,temporary-file-directory t))) +#+END_SRC + +** Text edit +*** Editor + +Editor specific options such as adding line numbers and showing +#+BEGIN_SRC emacs-lisp + (show-paren-mode 'expression) + (global-set-key (kbd "") 'revert-buffer) +#+END_SRC + +Revert the buffer automatically when a file changes on disc. This is +useful when monitoring a file such as a log file. It will also do this silently. +#+BEGIN_SRC emacs-lisp + (global-auto-revert-mode 1) + (setq auto-revert-verbose nil) +#+END_SRC + +Disable tabs, I want to move towards only using spaces everywhere as that is my +preferred style. +#+BEGIN_SRC emacs-lisp + (setq-default indent-tabs-mode nil) + (setq-default tab-width 4) + (setq-default python-indent-offset 4) +#+END_SRC + +*** Font + +Set the font to monaco. It has to use the xft syntax, otherwise it doesn't render properly. +#+BEGIN_SRC emacs-lisp + (set-default-font "Monaco-9") ;;; set default font + (setq default-frame-alist '((font . "Monaco-9"))) ;;; set default font for emacs --daemon and emacsclient +#+END_SRC + +** Languages +*** Bison + +Bison mode for bison files. Only used this for my university course when writing a compiler. +#+BEGIN_SRC emacs-lisp +;; (use-package bison-mode +;; :ensure t) +#+END_SRC + +*** C++ + +Setting up CC mode with a hook that uses my settings. +#+BEGIN_SRC emacs-lisp + (use-package cc-mode + :config + (add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) + (setq c-default-style "linux" + c-basic-offset 4 + c-indent-level 4) + (defun my-c++-mode-hook () + (c-set-offset 'inline-open 0) + (c-set-offset 'inline-close 0) + (c-set-offset 'innamespace 0) + (c-set-offset 'arglist-cont-nonempty 8) + (setq indent-tabs-mode nil)) + (add-hook 'c-mode-hook 'my-c++-mode-hook) + (add-hook 'c++-mode-hook 'my-c++-mode-hook) + + (define-key c-mode-map (kbd "C-c C-c") 'comment-or-uncomment-region)) +#+END_SRC + +Adding C headers to company backend for completion. +#+BEGIN_SRC emacs-lisp + (use-package irony + :ensure t + :config + (add-hook 'c++-mode-hook 'irony-mode) + (add-hook 'c-mode-hook 'irony-mode) + (add-hook 'objc-mode-hook 'irony-mode) + + (defun my-irony-mode-hook () + (define-key irony-mode-map [remap completion-at-point] + 'irony-completion-at-point-async) + (define-key irony-mode-map [remap complete-symbol] + 'irony-completion-at-point-async)) + (add-hook 'irony-mode-hook 'my-irony-mode-hook) + (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)) + + (use-package company-irony + :ensure t) + + (use-package flycheck-irony + :ensure t + :config + (add-hook 'c++-mode-hook #'flycheck-irony-setup)) + + (use-package company-c-headers + :ensure t + :config + (add-to-list 'company-backends 'company-c-headers) + (add-to-list 'company-backends 'company-irony) + + (add-hook 'irony-mode-hook 'company-irony-setup-begin-commands)) +#+END_SRC + +Using clang format to format the region that is currently being selected (need to install +clang format script). +#+BEGIN_SRC emacs-lisp + (use-package clang-format + :ensure t + :config + (global-set-key (kbd "C-c i") 'clang-format-region) + (global-set-key (kbd "C-c u") 'clang-format-buffer)) +#+END_SRC + +#+BEGIN_SRC emacs-lisp + (use-package rtags + :ensure t + :config + (rtags-enable-standard-keybindings)) + + ;; (use-package ivy-rtags + ;; :ensure t + ;; :config + ;; (setq rtags-use-ivy t)) +#+END_SRC + +*** Clojure + +Using Cider for clojure environment. +#+BEGIN_SRC emacs-lisp + (use-package cider + :ensure t + :config + (setq cider-repl-display-help-banner nil)) +#+END_SRC + +Adding hook to clojure mode to enable strict parentheses mode. +#+BEGIN_SRC emacs-lisp + (use-package clojure-mode + :ensure t + :init + (add-hook 'clojure-mode-hook 'turn-on-smartparens-strict-mode)) +#+END_SRC + +*** Dot + +#+BEGIN_SRC emacs-lisp + (use-package graphviz-dot-mode + :ensure t + :bind + (("C-c y p" . graphviz-dot-preview))) +#+END_SRC + +*** Emacs Lisp + +Adding strict parentheses to emacs lisp. +#+BEGIN_SRC emacs-lisp + (add-hook 'emacs-lisp-mode-hook 'turn-on-smartparens-strict-mode) +#+END_SRC + +*** F# + +F# mode for uni work. +#+BEGIN_SRC emacs-lisp + (use-package fsharp-mode + :ensure t) +#+END_SRC + +*** GMPL + +#+BEGIN_SRC emacs-lisp + (use-package gmpl-mode + :ensure t + :config + (add-to-list 'auto-mode-alist '("\\.mod\\'" . gmpl-mode))) +#+END_SRC + +*** Haskell + +Haskell mode with company mode completion. +#+BEGIN_SRC emacs-lisp + (use-package haskell-mode + :ensure t + :config + (add-hook 'haskell-mode-hook 'interactive-haskell-mode) + (add-hook 'haskell-mode-hook + (lambda () + (set (make-local-variable 'company-backends) + (append '((company-capf company-dabbrev-code)) + company-backends))))) +#+END_SRC + +*** Matlab + +#+BEGIN_SRC emacs-lisp + ;; (use-package matlab-mode + ;; :ensure t + ;; :config + ;; (add-to-list + ;; 'auto-mode-alist + ;; '("\\.m$" . matlab-mode)) + ;; (setq matlab-indent-function t) + ;; (setq matlab-shell-command "matlab") + ;; (setq matlab-shell-command-switches (list "-nodesktop"))) +#+END_SRC + +*** Org + +Agenda +#+BEGIN_SRC emacs-lisp + (setq org-agenda-files (quote ("~/Dropbox/Org"))) + + (defun y/append-to-list (list-var elements) + "Append ELEMENTS to the end of LIST-VAR. + + The return value is the new value of LIST-VAR." + (unless (consp elements) + (error "ELEMENTS must be a list")) + (let ((list (symbol-value list-var))) + (if list + (setcdr (last list) elements) + (set list-var elements))) + (symbol-value list-var)) + + (setq org-icalendar-store-UID t) + (setq org-icalendar-use-scheduled '(event-if-todo event-if-not-todo todo-start)) + (setq org-icalendar-use-deadline'(even-if-not-todo todo-due event-if-todo)) + + (use-package org-gcal + :ensure t + :config + (setq org-gcal-client-id "56042666758-7tq2364l4glivj0hdsd3p3f2cd9cucq1.apps.googleusercontent.com" + org-gcal-client-secret "Zn47gN5ImfeMsNbmWQbPtv3w" + org-gcal-file-alist '(("ymherklotz@gmail.com" . "~/Dropbox/Org/personal.org") + ("p8po34fuo3vv1ugrjki895aetg@group.calendar.google.com" . "~/Dropbox/Org/project.org")))) +#+END_SRC + +#+RESULTS: +: t + +Publishing to website. +#+BEGIN_SRC emacs-lisp + (use-package ox-twbs + :ensure t + :config + (setq org-publish-project-alist + '(("org-notes" + :base-directory "~/Documents/Org/Website" + :publishing-directory "~/Documents/Website" + :publishing-function org-twbs-publish-to-html + :with-sub-superscript nil + )))) +#+END_SRC + +#+RESULTS: +: t + +Set global keys for org mode to access agenda. +#+BEGIN_SRC emacs-lisp + (global-set-key "\C-cl" 'org-store-link) + (global-set-key "\C-ca" 'org-agenda) + (global-set-key "\C-cc" 'org-capture) + (global-set-key "\C-cb" 'org-iswitchb) +#+END_SRC + +#+RESULTS: +: org-iswitchb + +Set up ob for executing code blocks +#+BEGIN_SRC emacs-lisp + (require 'ob) + ;; Babel settings, enabling languages + (org-babel-do-load-languages + 'org-babel-load-languages + '((emacs-lisp . t) + (js . t) + (java . t) + (haskell . t) + (python . t) + (ruby . t) + (sh . t) + (org . t) + (matlab . t) + (ditaa . t) + (clojure . t) + )) + (setq org-image-actual-width nil) +#+END_SRC + +#+BEGIN_SRC emacs-lisp + (setq org-format-latex-options (plist-put org-format-latex-options :scale 1.5)) +#+END_SRC + +*** Python + +Elpy package for python. +#+BEGIN_SRC emacs-lisp + (use-package elpy + :ensure t + :config + (elpy-enable) + (setq py-python-command "python3") + (setq python-shell-interpreter "python3")) + + (with-eval-after-load 'python + (defun python-shell-completion-native-try () + "Return non-nil if can trigger native completion." + (let ((python-shell-completion-native-enable t) + (python-shell-completion-native-output-timeout + python-shell-completion-native-try-output-timeout)) + (python-shell-completion-native-get-completions + (get-buffer-process (current-buffer)) + nil "_")))) +#+END_SRC + +*** Jekyll + +#+BEGIN_SRC emacs-lisp + ;; (setq org-publish-project-alist + ;; '(("org-yh-portfolio" + ;; ;; Path to your org files. + ;; :base-directory "/home/yannherklotz/Github/yh-portfolio/org/" + ;; :base-extension "org" + + ;; ;; Path to your Jekyll project. + ;; :publishing-directory "/home/yannherklotz/Github/yh-portfolio/" + ;; :recursive t + ;; :publishing-function org-html-publish-to-html + ;; :headline-levels 4 + ;; :html-extension "html" + ;; :body-only t + ;; :with-toc nil) + + ;; ("org-static-yh-portfolio" + ;; :base-directory "/home/yannherklotz/Github/yh-portfolio/org/" + ;; :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|php" + ;; :publishing-directory "/home/yannherklotz/Github/yh-portfolio/" + ;; :recursive t + ;; :publishing-function org-publish-attachment + ;; :with-toc nil) + + ;; ("yh-portfolio" :components ("org-yh-portfolio" "org-static-yh-portfolio")))) +#+END_SRC + +*** JSON + +#+BEGIN_SRC emacs-lisp + (add-to-list 'auto-mode-alist '("\\.json\\'" . js-mode)) +#+END_SRC + +*** Markdown + +#+BEGIN_SRC emacs-lisp + + (use-package markdown-mode + :ensure t + :commands (markdown-mode gfm-mode) + :mode (("README\\.md\\'" . gfm-mode) + ("\\.md\\'" . markdown-mode) + ("\\.markdown\\'" . markdown-mode)) + :init (setq markdown-command "multimarkdown")) + +#+END_SRC + +*** YAML + + #+BEGIN_SRC emacs-lisp + + (use-package yaml-mode + :ensure t) + + #+END_SRC + +** Packages +*** Ace Windows + +#+BEGIN_SRC emacs-lisp + + (use-package ace-window + :ensure t + :bind (("C-x o" . ace-window))) + +#+END_SRC + +*** All the icons + +#+BEGIN_SRC emacs-lisp + (use-package all-the-icons + :ensure t) +#+END_SRC + +*** Avy + +#+BEGIN_SRC emacs-lisp + (use-package avy + :config + (global-set-key (kbd "C-:") 'avy-goto-char) + (global-set-key (kbd "C-'") 'avy-goto-char-2)) +#+END_SRC +*** CMake + +#+BEGIN_SRC emacs-lisp + + (use-package cmake-mode + :config + (setq auto-mode-alist + (append + '(("CMakeLists\\.txt\\'" . cmake-mode)) + '(("\\.cmake\\'" . cmake-mode)) + auto-mode-alist)) + (autoload 'cmake-mode "~/CMake/Auxiliary/cmake-mode.el" t)) + +#+END_SRC + +*** Company + +#+BEGIN_SRC emacs-lisp + (use-package company + :ensure t + :config + (add-hook 'after-init-hook 'global-company-mode) + + (setq company-backends (delete 'company-semantic company-backends)) + + (define-key c-mode-map (kbd "C-c n") 'company-complete) + (define-key c++-mode-map (kbd "C-c n") 'company-complete) + (setq company-dabbrev-downcase 0)) +#+END_SRC + +*** Flycheck + +#+BEGIN_SRC emacs-lisp + + (use-package flycheck + :ensure t + :diminish flycheck-mode + :init (global-flycheck-mode)) + +#+END_SRC + +*** GLSL + +#+BEGIN_SRC emacs-lisp + + (use-package glsl-mode + :ensure t) + +#+END_SRC + +*** Helm + +#+BEGIN_SRC emacs-lisp + (use-package helm + :ensure t + :config + (require 'helm-config) + (helm-mode 1)) + + (use-package helm-projectile + :ensure t + :config + (helm-projectile-on)) + + (use-package helm-ag + :ensure t) + + (global-set-key (kbd "M-x") 'helm-M-x) + (global-set-key (kbd "C-x C-f") 'helm-find-files) + (global-set-key (kbd "C-x b") 'helm-mini) + (global-set-key (kbd "C-c h") 'helm-command-prefix) + (global-set-key (kbd "C-s") 'helm-occur) + (global-unset-key (kbd "C-x c")) + + (define-key helm-map (kbd "") 'helm-execute-persistent-action) ; rebind tab to run persistent action + (define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB work in terminal + (define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z +#+END_SRC + +#+RESULTS: +: helm-select-action + +*** Hungry Delete + +#+BEGIN_SRC emacs-lisp + (use-package hungry-delete + :ensure t + :config + (global-hungry-delete-mode)) +#+END_SRC + +*** Ivy / Swiper / Counsel + +#+BEGIN_SRC emacs-lisp + ;; (use-package counsel + ;; :ensure t + ;; :bind + ;; (("M-y" . counsel-yank-pop) + ;; :map ivy-minibuffer-map + ;; ("M-y" . ivy-next-line))) + + ;; (use-package ivy + ;; :ensure t + ;; :diminish ivy-mode + ;; :bind (("C-x b" . ivy-switch-buffer)) + ;; :config + ;; (ivy-mode 1) + ;; (setq ivy-use-virtual-buffers t) + ;; (setq ivy-display-style 'fancy)) + + ;; (use-package swiper + ;; :ensure t + ;; :bind (("C-s" . swiper) + ;; ("C-r" . swiper) + ;; ("C-c C-r" . ivy-resume) + ;; ("M-x" . counsel-M-x) + ;; ("C-x C-f" . counsel-find-file)) + ;; :config + ;; (progn + ;; (ivy-mode 1) + ;; (setq ivy-use-virtual-buffers t) + ;; (setq ivy-display-style 'fancy) + ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) + ;; )) +#+END_SRC + +*** Magit + +#+BEGIN_SRC emacs-lisp + (use-package magit + :ensure t + :bind (("C-x g" . magit-status))) +#+END_SRC + +*** Multiple Cursors + +#+BEGIN_SRC emacs-lisp + (use-package multiple-cursors + :ensure t + :bind (("C->" . mc/mark-next-like-this) + ("C-<" . mc/mark-previous-like-this) + ("C-c C-<" . mc/mark-all-like-this))) +#+END_SRC + +*** Org Bullets + +#+BEGIN_SRC emacs-lisp + (use-package org-bullets + :ensure t + :config + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) +#+END_SRC + +*** Projectile + +#+BEGIN_SRC emacs-lisp + (use-package projectile + :ensure t + :diminish projectile-mode + :config + (projectile-global-mode 1) + (setq projectile-indexing-method 'alien) + (setq projectile-enable-caching t)) + + (use-package counsel-projectile + :ensure t + :config + (counsel-projectile-mode t)) +#+END_SRC + +*** SmartParens + +#+BEGIN_SRC emacs-lisp + (use-package smartparens + :ensure t + :bind (("M-[" . sp-backward-unwrap-sexp) + ("M-]" . sp-unwrap-sexp) + ("C-M-f" . sp-forward-sexp) + ("C-M-b" . sp-backward-sexp) + ("C-M-d" . sp-down-sexp) + ("C-M-a" . sp-backward-down-sexp) + ("C-M-e" . sp-up-sexp) + ("C-M-u" . sp-backward-up-sexp) + ("C-M-t" . sp-transpose-sexp) + ("C-M-n" . sp-next-sexp) + ("C-M-p" . sp-previous-sexp) + ("C-M-k" . sp-kill-sexp) + ("C-M-w" . sp-copy-sexp) + ("C-" . sp-forward-slurp-sexp) + ("C-" . sp-forward-barf-sexp) + ("C-M-" . sp-backward-slurp-sexp) + ("C-M-" . sp-backward-barf-sexp) + ("M-D" . sp-splice-sexp) + ("C-]" . sp-select-next-thing-exchange) + ("C-" . sp-select-previous-thing) + ("C-M-]" . sp-select-next-thing) + ("M-F" . sp-forward-symbol) + ("M-B" . sp-backward-symbol)) + :init + (require 'smartparens-config) + (show-smartparens-global-mode +1) + (smartparens-global-mode 1) + + (add-hook 'minibuffer-setup-hook 'turn-on-smartparens-strict-mode) + + (sp-with-modes '(c-mode c++-mode) + (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET"))) + (sp-local-pair "/*" "*/" :post-handlers '((" | " "SPC") + ("* ||\n[i]" "RET"))))) +#+END_SRC + +*** Speed Type + +#+BEGIN_SRC emacs-lisp + (use-package speed-type :ensure t) +#+END_SRC +*** Themes + +#+BEGIN_SRC emacs-lisp + (use-package color-theme-sanityinc-tomorrow + :ensure t) + + ;; (use-package leuven-theme + ;; :ensure t) + + ;; (use-package zenburn-theme + ;; :ensure t) + + ;; (use-package gruvbox-theme + ;; :ensure t) + + ;; (use-package material-theme + ;; :ensure t) + + ;; (use-package monokai-theme + ;; :ensure t) + + ;; (use-package plan9-theme + ;; :ensure t) + + ;; (use-package doom-themes + ;; :ensure t) + + (use-package telephone-line + :ensure t + :init + (setq telephone-line-primary-left-separator 'telephone-line-cubed-left + telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left + telephone-line-primary-right-separator 'telephone-line-cubed-right + telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) + (setq telephone-line-height 24 + telephone-line-evil-use-short-tag t)) + + (if (daemonp) + (add-hook 'after-make-frame-functions + (lambda (frame) + (select-frame frame) + (load-theme 'sanityinc-tomorrow-night t) + (telephone-line-mode 1) + (toggle-scroll-bar -1))) + (progn (load-theme 'sanityinc-tomorrow-night t) + (telephone-line-mode 1) + (toggle-scroll-bar -1))) +#+END_SRC + +#+RESULTS: +: t + +*** Undo Tree + +#+BEGIN_SRC emacs-lisp + (use-package undo-tree + :diminish undo-tree-mode + :config + (global-undo-tree-mode)) +#+END_SRC + +*** Whitespace + +#+BEGIN_SRC emacs-lisp + (use-package whitespace + :bind (("C-x w" . whitespace-mode))) +#+END_SRC + +*** Yasnippets + +#+BEGIN_SRC emacs-lisp + (use-package yasnippet + :ensure t + :diminish yas-minor-mode + :init + (yas-global-mode 1)) +#+END_SRC + +** My Code + +#+BEGIN_SRC emacs-lisp + (defun y/swap-windows () + "Swaps two windows and leaves the cursor in the original one" + (interactive) + (ace-swap-window) + (aw-flip-window)) + + (defun y/fsharp-reload-file () + "Reloads the whole file when in fsharp mode." + (interactive) + (fsharp-eval-region (point-min) (point-max))) + + (defun y/exit-emacs-client () + "consistent exit emacsclient. + if not in emacs client, echo a message in minibuffer, don't exit emacs. + if in server mode + and editing file, do C-x # server-edit + else do C-x 5 0 delete-frame" + (interactive) + (if server-buffer-clients + (server-edit) + (delete-frame))) + + (defun y/beautify-json () + (interactive) + (let ((b (if mark-active (min (point) (mark)) (point-min))) + (e (if mark-active (max (point) (mark)) (point-max)))) + (shell-command-on-region b e + "python -m json.tool" (current-buffer) t))) +#+END_SRC + +#+RESULTS: +: y/beautify-json + +Setting up my keybindings +#+BEGIN_SRC emacs-lisp + (define-prefix-command 'y-map) + (global-set-key (kbd "C-c y") 'y-map) + + (define-key y-map (kbd "s") 'y/swap-windows) + (global-set-key (kbd "C-c q") 'y/exit-emacs-client) + (define-key y-map (kbd "j") 'y/beautify-json) + + (add-hook 'fsharp-mode-hook + (lambda () (local-set-key (kbd "C-c C-c") #'y/fsharp-reload-file))) +#+END_SRC + +#+RESULTS: +| lambda | nil | (local-set-key (kbd C-c C-c) (function y/fsharp-reload-file)) | + +Registers +#+BEGIN_SRC emacs-lisp + (set-register ?e (cons 'file "~/.emacs.d/myinit.org")) + (set-register ?n (cons 'file "~/Dropbox/Org/note.org")) + (set-register ?s (cons 'file "~/Dropbox/Org/schedule.org")) + (set-register ?p (cons 'file "~/Dropbox/Org/project.org")) +#+END_SRC + +#+RESULTS: +: (file . ~/Dropbox/Org/project.org) + +** Setting GC value + +#+BEGIN_SRC emacs-lisp + + (setq gc-cons-threshold 10000000) + +#+END_SRC + -- cgit