diff --git a/config.el b/config.el index 2bf8ccb..da75d06 100644 --- a/config.el +++ b/config.el @@ -1,136 +1,137 @@ (defmacro definteractive (name &rest body) - `(defun ,name ,(car body) - (interactive) - ,@(cdr body))) + `(defun ,name ,(car body) + (interactive) + ,@(cdr body))) (defmacro lambdainteractive (&rest body) - `(lambda ,(car body) (interactive) ,@(cdr body))) + `(lambda ,(car body) (interactive) ,@(cdr body))) (defmacro local-keybind (key value) - `(lambda () (local-set-key (kbd ,key) (quote ,value)))) + `(lambda () (local-set-key (kbd ,key) (quote ,value)))) (setq use-package-always-ensure t - use-package-verbose t) + use-package-verbose t) (use-package diminish) (use-package company - :diminish 'company-mode - :bind (:map company-mode-map - ("C-c /" . 'yas-expand)) - :custom - (company-idle-delay 0) - (company-minimum-prefix-length 3) - :init (add-hook 'after-init-hook 'global-company-mode)) + :diminish 'company-mode + :bind (:map company-mode-map + ("C-c /" . 'yas-expand)) + :custom + (company-idle-delay 0) + (company-minimum-prefix-length 3) + :init (add-hook 'after-init-hook 'global-company-mode)) (use-package csharp-mode - :defer t - :config - (use-package omnisharp - :defer t - :config - (add-hook 'csharp-mode-hook 'omnisharp-mode) - (add-to-list 'company-backends 'company-omnisharp))) + :defer t + :config + (use-package omnisharp + :defer t + :config + (add-hook 'csharp-mode-hook 'omnisharp-mode) + (add-to-list 'company-backends 'company-omnisharp))) (use-package elixir-mode - :defer t - :config (use-package alchemist)) + :defer t + :config (use-package alchemist)) (use-package nginx-mode - :custom - (nginx-indent-tabs-mode t) - (nginx-indent-level 2) - :config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode))) + :custom + (nginx-indent-tabs-mode t) + (nginx-indent-level 2) + :config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode))) (use-package slime - :defer t - :custom - (slime-lisp-implementations - '((sbcl ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") - :env ("SBCL_HOME=/usr/lib64/sbcl/")))) - :diminish 'slime-mode - :init - (use-package slime-company) - (add-hook 'lisp-mode-hook 'slime-mode) - (slime-setup '(slime-fancy slime-company))) + :defer t + :custom + (slime-lisp-implementations + '((sbcl ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") + :env ("SBCL_HOME=/usr/lib64/sbcl/")))) + :diminish 'slime-mode + :init + (use-package slime-company) + (add-hook 'lisp-mode-hook 'slime-mode) + (slime-setup '(slime-fancy slime-company))) (use-package keychain-environment - :bind ("C-c r e" . 'keychain-refresh-environment) - :init (keychain-refresh-environment)) + :bind ("C-c r e" . 'keychain-refresh-environment) + :init (keychain-refresh-environment)) (use-package htmlize) (use-package spaceline - :custom (powerline-default-seperator (quote arrow)) - :init - (require 'spaceline-config) - (spaceline-spacemacs-theme) - :config (spaceline-toggle-buffer-size-off)) + :init + (require 'spaceline-config) + (spaceline-spacemacs-theme) + :config + (spaceline-toggle-buffer-size-off) + (setq powerline-default-seperator (quote arrow))) (use-package dashboard - :diminish (dashboard-mode page-break-lines-mode) - :custom - (dashboard-center-content t) - (dashboard-banner-logo-title "Komacs") - (dashboard-set-init-info t) - (dashboard-startup-banner "~/.emacs.d/Komacs.png") - (dashboard-show-shortcuts nil) - (dashboard-items '((recents . 5))) - :config (dashboard-setup-startup-hook)) + :diminish (dashboard-mode page-break-lines-mode) + :custom + (dashboard-center-content t) + (dashboard-banner-logo-title "Komacs") + (dashboard-set-init-info t) + (dashboard-startup-banner "~/.emacs.d/Komacs.png") + (dashboard-show-shortcuts nil) + (dashboard-items '((recents . 5))) + :config (dashboard-setup-startup-hook)) (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) (use-package switch-window - :custom - (switch-window-input-style 'minibuffer) - (switch-window-increase 4) - (switch-window-threshold 2) - :bind ([remap other-window] . switch-window)) + :custom + (switch-window-input-style 'minibuffer) + (switch-window-increase 4) + (switch-window-threshold 2) + :bind ([remap other-window] . switch-window)) (use-package yasnippet - :diminish 'yas-minor-mode - :hook ((html-mode - LaTeX-mode - emacs-lisp-mode - lisp-mode) - . yas-minor-mode) - :init ;; These are computationally expensive, so init. - (use-package yasnippet-snippets) - (yas-reload-all)) + :diminish 'yas-minor-mode + :hook ((html-mode + LaTeX-mode + emacs-lisp-mode + lisp-mode) + . yas-minor-mode) + :init ;; These are computationally expensive, so init. + (use-package yasnippet-snippets) + (yas-reload-all)) (use-package hungry-delete - :diminish 'hungry-delete-mode - :config (global-hungry-delete-mode 1)) + :diminish 'hungry-delete-mode + :config (global-hungry-delete-mode 1)) (use-package which-key - :diminish 'which-key-mode - :config (which-key-mode)) + :diminish 'which-key-mode + :config (which-key-mode)) (use-package avy - :bind ("M-s" . avy-goto-char)) + :bind ("M-s" . avy-goto-char)) (use-package beacon - :diminish 'beacon-mode - :config (beacon-mode 1)) + :diminish 'beacon-mode + :config (beacon-mode 1)) (use-package popup-kill-ring - :bind ("M-y" . popup-kill-ring)) + :bind ("M-y" . popup-kill-ring)) (setq ido-enable-flex-matching t - ido-create-new-buffer 'always - ido-everywhere 1) + ido-create-new-buffer 'always + ido-everywhere 1) (use-package ido-vertical-mode - :bind ("C-l" . 'ido-reread-directory) - :custom (ido-vertical-define-keys 'C-n-and-C-p-only) - :config - (ido-vertical-mode 1) - (ido-mode 1)) + :bind ("C-l" . 'ido-reread-directory) + :custom (ido-vertical-define-keys 'C-n-and-C-p-only) + :config + (ido-vertical-mode 1) + (ido-mode 1)) (definteractive manx/config-reload () - (when (get-buffer "config.org") - (with-current-buffer "config.org" (save-buffer))) - (org-babel-load-file (concat user-emacs-directory "config.org"))) + (when (get-buffer "config.org") + (with-current-buffer "config.org" (save-buffer))) + (org-babel-load-file (concat user-emacs-directory "config.org"))) (global-set-key (kbd "C-c x r") 'manx/config-reload) (global-set-key (kbd "C-c x e") (lambdainteractive () (find-file (concat user-emacs-directory "config.org")))) @@ -145,41 +146,44 @@ (add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")) +(setq org-src-tab-acts-natively t + org-edit-src-content-indentation 0) + (setq org-html-doctype "html5") (definteractive manx/save-org-to-html() - (when (equal major-mode 'org-mode) - (save-buffer) - (org-html-export-to-html))) + (when (equal major-mode 'org-mode) + (save-buffer) + (org-html-export-to-html))) (add-hook 'org-mode-hook - (local-keybind "C-c s h" manx/save-org-to-html)) + (local-keybind "C-c s h" manx/save-org-to-html)) (definteractive manx/delete-org-link () - (if (org-in-regexp org-bracket-link-regexp 1) - (apply 'delete-region (list (match-beginning 0) (match-end 0))))) + (when (org-in-regexp org-bracket-link-regexp 1) + (apply 'delete-region (list (match-beginning 0) (match-end 0))))) (add-hook 'org-mode-hook (local-keybind "C-c o l" manx/delete-org-link)) (setq org-image-actual-width 150) (definteractive manx/org-insert-link () - (org-insert-link) - (org-redisplay-inline-images)) + (org-insert-link) + (org-redisplay-inline-images)) (add-hook 'org-mode-hook (local-keybind "C-c C-l" manx/org-insert-link)) (definteractive manx/kill-word () - (backward-word) - (kill-word 1)) + (backward-word) + (kill-word 1)) (definteractive manx/kill-line() - (move-beginning-of-line nil) - (kill-whole-line)) + (move-beginning-of-line nil) + (kill-whole-line)) (definteractive manx/format-whole-buffer() - (save-excursion - (indent-region (point-min) (point-max) nil))) + (save-excursion + (indent-region (point-min) (point-max) nil))) (global-set-key (kbd "") 'forward-whitespace) (global-set-key (kbd "C-c r b") 'revert-buffer) @@ -200,18 +204,19 @@ (global-set-key (kbd "C-c f o") 'flop-frame) (defmacro manx/split-and-follow (direction) - `(progn - ,direction - (balance-windows) - (other-window 1))) + `(progn + ,direction + (balance-windows) + (other-window 1))) (global-set-key (kbd "C-x 3") (lambdainteractive () (manx/split-and-follow (split-window-below)))) (global-set-key (kbd "C-x 2") (lambdainteractive () (manx/split-and-follow (split-window-horizontally)))) (defun unix-line-ends () - (let ((coding-str (symbol-name buffer-file-coding-system))) - (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) - (set-buffer-file-coding-system 'unix)))) + (when (string-match + "-\\(?:dos\\|mac\\)$" + (symbol-name buffer-file-coding-system)) + (set-buffer-file-coding-system 'unix))) (add-hook 'find-file-hooks 'unix-line-ends) @@ -236,71 +241,74 @@ (defalias 'yes-or-no-p 'y-or-n-p) (setq scroll-conservatively 100 - select-enable-clipboard t - vc-follow-symlinks t) + select-enable-clipboard t + vc-follow-symlinks t) (setq backup-directory-alist - `(("." . ,(concat user-emacs-directory "autosaves")))) + `(("." . ,(concat user-emacs-directory "autosaves")))) (global-unset-key (kbd "C-z")) ;; Fuck unix (setq-default tab-width 2 - indent-tabs-mode t) + indent-tabs-mode t) + +(add-hook 'lisp-mode-hook (lambda () (setq indent-tabs-mode nil))) +(add-hook 'emacs-lisp-mode-hook (lambda () (setq indent-tabs-mode nil))) (defvaralias 'css-indent-offset 'tab-width) (defvaralias 'js-indent-level 'tab-width) (global-prettify-symbols-mode t) (add-hook 'emacs-lisp-mode-hook - (lambda () - (push - '("lambdainteractive" . ?Λ) - prettify-symbols-alist))) + (lambda () + (push + '("lambdainteractive" . ?Λ) + prettify-symbols-alist))) (defvar auto-minor-mode-alist () - "Alist of filename patterns vs correpsonding minor mode functions, see `auto-mode-alist' + "Alist of filename patterns vs correpsonding minor mode functions, see `auto-mode-alist' All elements of this alist are checked, meaning you can enable multiple minor modes for the same regexp.") (defun enable-minor-mode-based-on-extension () - "Check file name against `auto-minor-mode-alist' to enable minor modes + "Check file name against `auto-minor-mode-alist' to enable minor modes the checking happens for all pairs in auto-minor-mode-alist" - (when buffer-file-name - (let ((name (file-name-sans-versions buffer-file-name)) - (remote-id (file-remote-p buffer-file-name)) - (case-fold-search auto-mode-case-fold) - (alist auto-minor-mode-alist)) - ;; Remove remote file name identification. - (when (and (stringp remote-id) - (string-match-p (regexp-quote remote-id) name)) - (setq name (substring name (match-end 0)))) - (while (and alist (caar alist) (cdar alist)) - (if (string-match-p (caar alist) name) - (funcall (cdar alist) 1)) - (setq alist (cdr alist)))))) + (when buffer-file-name + (let ((name (file-name-sans-versions buffer-file-name)) + (remote-id (file-remote-p buffer-file-name)) + (case-fold-search auto-mode-case-fold) + (alist auto-minor-mode-alist)) + ;; Remove remote file name identification. + (when (and (stringp remote-id) + (string-match-p (regexp-quote remote-id) name)) + (setq name (substring name (match-end 0)))) + (while (and alist (caar alist) (cdar alist)) + (if (string-match-p (caar alist) name) + (funcall (cdar alist) 1)) + (setq alist (cdr alist)))))) (add-hook 'find-file-hook #'enable-minor-mode-based-on-extension) (define-minor-mode sensitive-minor-mode - "For sensitive files like password lists. + "For sensitive files like password lists. It disables backup creation and auto saving. With no argument, this command toggles the mode. Non-null prefix argument turns on the mode. Null prefix argument turns off the mode." - :init-value nil - :lighter " Sensitive" - :keymap nil - (if (symbol-value sensitive-minor-mode) - (progn - (setq make-backup-files nil) - (auto-save-mode -1)) - (setq-local make-backup-files t) - (auto-save-mode 1))) + :init-value nil + :lighter " Sensitive" + :keymap nil + (if (symbol-value sensitive-minor-mode) + (progn + (setq make-backup-files nil) + (auto-save-mode -1)) + (setq-local make-backup-files t) + (auto-save-mode 1))) ;; Regexps of sensitive files. (setq auto-minor-mode-alist - (append - '(("stream/manifest/.*\\.json$" . sensitive-minor-mode) - (".emacs.d/snippets/\\*$" . sensitive-minor-mode) - ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) - auto-minor-mode-alist)) + (append + '(("stream/manifest/.*\\.json$" . sensitive-minor-mode) + (".emacs.d/snippets/\\*$" . sensitive-minor-mode) + ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) + auto-minor-mode-alist)) diff --git a/config.org b/config.org index dc9da78..0fdd2b0 100644 --- a/config.org +++ b/config.org @@ -5,346 +5,354 @@ Wrappers around functions and lambdas so I don't have to type I have ~prettify-symbols-mode~ set ~lambdainteractive~ to Λ (capital lambda) because it's cute. #+BEGIN_SRC emacs-lisp - (defmacro definteractive (name &rest body) - `(defun ,name ,(car body) - (interactive) - ,@(cdr body))) + (defmacro definteractive (name &rest body) + `(defun ,name ,(car body) + (interactive) + ,@(cdr body))) - (defmacro lambdainteractive (&rest body) - `(lambda ,(car body) (interactive) ,@(cdr body))) + (defmacro lambdainteractive (&rest body) + `(lambda ,(car body) (interactive) ,@(cdr body))) #+END_SRC ** local-keybind Hide unecessary lambda when calling (local-set-key) for org-mode functions #+BEGIN_SRC emacs-lisp - (defmacro local-keybind (key value) - `(lambda () (local-set-key (kbd ,key) (quote ,value)))) + (defmacro local-keybind (key value) + `(lambda () (local-set-key (kbd ,key) (quote ,value)))) #+END_SRC * use-package ** use-package config Always ensure packages are installed. Log to ~*Messages*~. #+BEGIN_SRC emacs-lisp - (setq use-package-always-ensure t - use-package-verbose t) +(setq use-package-always-ensure t + use-package-verbose t) #+END_SRC ** diminish #+BEGIN_SRC emacs-lisp - (use-package diminish) + (use-package diminish) #+END_SRC ** company #+BEGIN_SRC emacs-lisp - (use-package company - :diminish 'company-mode - :bind (:map company-mode-map - ("C-c /" . 'yas-expand)) - :custom - (company-idle-delay 0) - (company-minimum-prefix-length 3) - :init (add-hook 'after-init-hook 'global-company-mode)) + (use-package company + :diminish 'company-mode + :bind (:map company-mode-map + ("C-c /" . 'yas-expand)) + :custom + (company-idle-delay 0) + (company-minimum-prefix-length 3) + :init (add-hook 'after-init-hook 'global-company-mode)) #+END_SRC ** prog *** c# #+BEGIN_SRC emacs-lisp - (use-package csharp-mode - :defer t - :config - (use-package omnisharp - :defer t - :config - (add-hook 'csharp-mode-hook 'omnisharp-mode) - (add-to-list 'company-backends 'company-omnisharp))) + (use-package csharp-mode + :defer t + :config + (use-package omnisharp + :defer t + :config + (add-hook 'csharp-mode-hook 'omnisharp-mode) + (add-to-list 'company-backends 'company-omnisharp))) #+END_SRC *** elixir #+BEGIN_SRC emacs-lisp - (use-package elixir-mode - :defer t - :config (use-package alchemist)) + (use-package elixir-mode + :defer t + :config (use-package alchemist)) #+END_SRC *** nginx #+BEGIN_SRC emacs-lisp - (use-package nginx-mode - :custom - (nginx-indent-tabs-mode t) - (nginx-indent-level 2) - :config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode))) + (use-package nginx-mode + :custom + (nginx-indent-tabs-mode t) + (nginx-indent-level 2) + :config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode))) #+END_SRC *** slime sbcl is in a werid place on Gentoo. #+BEGIN_SRC emacs-lisp - (use-package slime - :defer t - :custom - (slime-lisp-implementations - '((sbcl ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") - :env ("SBCL_HOME=/usr/lib64/sbcl/")))) - :diminish 'slime-mode - :init - (use-package slime-company) - (add-hook 'lisp-mode-hook 'slime-mode) - (slime-setup '(slime-fancy slime-company))) + (use-package slime + :defer t + :custom + (slime-lisp-implementations + '((sbcl ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") + :env ("SBCL_HOME=/usr/lib64/sbcl/")))) + :diminish 'slime-mode + :init + (use-package slime-company) + (add-hook 'lisp-mode-hook 'slime-mode) + (slime-setup '(slime-fancy slime-company))) #+END_SRC ** keychain-environment #+BEGIN_SRC emacs-lisp - (use-package keychain-environment - :bind ("C-c r e" . 'keychain-refresh-environment) - :init (keychain-refresh-environment)) + (use-package keychain-environment + :bind ("C-c r e" . 'keychain-refresh-environment) + :init (keychain-refresh-environment)) #+END_SRC ** htmlize #+BEGIN_SRC emacs-lisp - (use-package htmlize) + (use-package htmlize) #+END_SRC ** spaceline #+BEGIN_SRC emacs-lisp - (use-package spaceline - :custom (powerline-default-seperator (quote arrow)) - :init - (require 'spaceline-config) - (spaceline-spacemacs-theme) - :config (spaceline-toggle-buffer-size-off)) + (use-package spaceline + :init + (require 'spaceline-config) + (spaceline-spacemacs-theme) + :config + (spaceline-toggle-buffer-size-off) + (setq powerline-default-seperator (quote arrow))) #+END_SRC ** dashboard #+BEGIN_SRC emacs-lisp - (use-package dashboard - :diminish (dashboard-mode page-break-lines-mode) - :custom - (dashboard-center-content t) - (dashboard-banner-logo-title "Komacs") - (dashboard-set-init-info t) - (dashboard-startup-banner "~/.emacs.d/Komacs.png") - (dashboard-show-shortcuts nil) - (dashboard-items '((recents . 5))) - :config (dashboard-setup-startup-hook)) - - (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) + (use-package dashboard + :diminish (dashboard-mode page-break-lines-mode) + :custom + (dashboard-center-content t) + (dashboard-banner-logo-title "Komacs") + (dashboard-set-init-info t) + (dashboard-startup-banner "~/.emacs.d/Komacs.png") + (dashboard-show-shortcuts nil) + (dashboard-items '((recents . 5))) + :config (dashboard-setup-startup-hook)) + + (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) #+END_SRC ** switch window #+BEGIN_SRC emacs-lisp - (use-package switch-window - :custom - (switch-window-input-style 'minibuffer) - (switch-window-increase 4) - (switch-window-threshold 2) - :bind ([remap other-window] . switch-window)) + (use-package switch-window + :custom + (switch-window-input-style 'minibuffer) + (switch-window-increase 4) + (switch-window-threshold 2) + :bind ([remap other-window] . switch-window)) #+END_SRC ** yasnippet #+BEGIN_SRC emacs-lisp - (use-package yasnippet - :diminish 'yas-minor-mode - :hook ((html-mode - LaTeX-mode - emacs-lisp-mode - lisp-mode) - . yas-minor-mode) - :init ;; These are computationally expensive, so init. - (use-package yasnippet-snippets) - (yas-reload-all)) + (use-package yasnippet + :diminish 'yas-minor-mode + :hook ((html-mode + LaTeX-mode + emacs-lisp-mode + lisp-mode) + . yas-minor-mode) + :init ;; These are computationally expensive, so init. + (use-package yasnippet-snippets) + (yas-reload-all)) #+END_SRC ** minor modes *** hungry delete #+BEGIN_SRC emacs-lisp - (use-package hungry-delete - :diminish 'hungry-delete-mode - :config (global-hungry-delete-mode 1)) + (use-package hungry-delete + :diminish 'hungry-delete-mode + :config (global-hungry-delete-mode 1)) #+END_SRC *** which key #+BEGIN_SRC emacs-lisp - (use-package which-key - :diminish 'which-key-mode - :config (which-key-mode)) + (use-package which-key + :diminish 'which-key-mode + :config (which-key-mode)) #+END_SRC *** avy #+BEGIN_SRC emacs-lisp - (use-package avy - :bind ("M-s" . avy-goto-char)) + (use-package avy + :bind ("M-s" . avy-goto-char)) #+END_SRC *** beacon #+BEGIN_SRC emacs-lisp - (use-package beacon - :diminish 'beacon-mode - :config (beacon-mode 1)) + (use-package beacon + :diminish 'beacon-mode + :config (beacon-mode 1)) #+END_SRC *** popup kill ring #+BEGIN_SRC emacs-lisp - (use-package popup-kill-ring - :bind ("M-y" . popup-kill-ring)) + (use-package popup-kill-ring + :bind ("M-y" . popup-kill-ring)) #+END_SRC ** ido #+BEGIN_SRC emacs-lisp - (setq ido-enable-flex-matching t - ido-create-new-buffer 'always - ido-everywhere 1) - - (use-package ido-vertical-mode - :bind ("C-l" . 'ido-reread-directory) - :custom (ido-vertical-define-keys 'C-n-and-C-p-only) - :config - (ido-vertical-mode 1) - (ido-mode 1)) + (setq ido-enable-flex-matching t + ido-create-new-buffer 'always + ido-everywhere 1) + + (use-package ido-vertical-mode + :bind ("C-l" . 'ido-reread-directory) + :custom (ido-vertical-define-keys 'C-n-and-C-p-only) + :config + (ido-vertical-mode 1) + (ido-mode 1)) #+END_SRC * org ** edit/reload config Also saves config if open. #+BEGIN_SRC emacs-lisp - (definteractive manx/config-reload () - (when (get-buffer "config.org") - (with-current-buffer "config.org" (save-buffer))) - (org-babel-load-file (concat user-emacs-directory "config.org"))) + (definteractive manx/config-reload () + (when (get-buffer "config.org") + (with-current-buffer "config.org" (save-buffer))) + (org-babel-load-file (concat user-emacs-directory "config.org"))) - (global-set-key (kbd "C-c x r") 'manx/config-reload) - (global-set-key (kbd "C-c x e") (lambdainteractive () (find-file (concat user-emacs-directory "config.org")))) + (global-set-key (kbd "C-c x r") 'manx/config-reload) + (global-set-key (kbd "C-c x e") (lambdainteractive () (find-file (concat user-emacs-directory "config.org")))) #+END_SRC ** misc #+BEGIN_SRC emacs-lisp - (setq org-src-window-setup 'current-window) +(setq org-src-window-setup 'current-window) - ;; I read somewhere that Company breaks things? - (add-hook 'org-mode-hook 'company-mode) +;; I read somewhere that Company breaks things? +(add-hook 'org-mode-hook 'company-mode) - ;; Don't indent whole file with org-mode - (eval-after-load "org-mode" (local-set-key (kbd "s-i") nil)) +;; Don't indent whole file with org-mode +(eval-after-load "org-mode" (local-set-key (kbd "s-i") nil)) - (add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")) +(add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")) + +(setq org-src-tab-acts-natively t + org-edit-src-content-indentation 0) #+END_SRC ** html export #+BEGIN_SRC emacs-lisp - (setq org-html-doctype "html5") + (setq org-html-doctype "html5") - (definteractive manx/save-org-to-html() - (when (equal major-mode 'org-mode) - (save-buffer) - (org-html-export-to-html))) + (definteractive manx/save-org-to-html() + (when (equal major-mode 'org-mode) + (save-buffer) + (org-html-export-to-html))) - (add-hook 'org-mode-hook - (local-keybind "C-c s h" manx/save-org-to-html)) + (add-hook 'org-mode-hook + (local-keybind "C-c s h" manx/save-org-to-html)) #+END_SRC ** Links #+BEGIN_SRC emacs-lisp - (definteractive manx/delete-org-link () - (if (org-in-regexp org-bracket-link-regexp 1) - (apply 'delete-region (list (match-beginning 0) (match-end 0))))) + (definteractive manx/delete-org-link () + (when (org-in-regexp org-bracket-link-regexp 1) + (apply 'delete-region (list (match-beginning 0) (match-end 0))))) - (add-hook 'org-mode-hook (local-keybind "C-c o l" manx/delete-org-link)) + (add-hook 'org-mode-hook (local-keybind "C-c o l" manx/delete-org-link)) #+END_SRC *** Inline Images #+BEGIN_SRC emacs-lisp - (setq org-image-actual-width 150) + (setq org-image-actual-width 150) - (definteractive manx/org-insert-link () - (org-insert-link) - (org-redisplay-inline-images)) + (definteractive manx/org-insert-link () + (org-insert-link) + (org-redisplay-inline-images)) - (add-hook 'org-mode-hook (local-keybind "C-c C-l" manx/org-insert-link)) + (add-hook 'org-mode-hook (local-keybind "C-c C-l" manx/org-insert-link)) #+END_SRC * functions ** text #+BEGIN_SRC emacs-lisp - (definteractive manx/kill-word () - (backward-word) - (kill-word 1)) - - (definteractive manx/kill-line() - (move-beginning-of-line nil) - (kill-whole-line)) - - (definteractive manx/format-whole-buffer() - (save-excursion - (indent-region (point-min) (point-max) nil))) - - (global-set-key (kbd "") 'forward-whitespace) - (global-set-key (kbd "C-c r b") 'revert-buffer) - (global-set-key (kbd "C-c k w") 'manx/kill-word) - (global-set-key (kbd "C-c k l") 'manx/kill-line) - (global-set-key (kbd "s-i") 'manx/format-whole-buffer) + (definteractive manx/kill-word () + (backward-word) + (kill-word 1)) + + (definteractive manx/kill-line() + (move-beginning-of-line nil) + (kill-whole-line)) + + (definteractive manx/format-whole-buffer() + (save-excursion + (indent-region (point-min) (point-max) nil))) + + (global-set-key (kbd "") 'forward-whitespace) + (global-set-key (kbd "C-c r b") 'revert-buffer) + (global-set-key (kbd "C-c k w") 'manx/kill-word) + (global-set-key (kbd "C-c k l") 'manx/kill-line) + (global-set-key (kbd "s-i") 'manx/format-whole-buffer) #+END_SRC ** buffers #+BEGIN_SRC emacs-lisp - (global-set-key (kbd "C-x k") (lambdainteractive () (kill-buffer (current-buffer)))) - (global-set-key (kbd "C-M-s-k") (lambdainteractive () (mapc 'kill-buffer (buffer-list)))) + (global-set-key (kbd "C-x k") (lambdainteractive () (kill-buffer (current-buffer)))) + (global-set-key (kbd "C-M-s-k") (lambdainteractive () (mapc 'kill-buffer (buffer-list)))) #+END_SRC ** frames *** transpose-frame #+BEGIN_SRC emacs-lisp - ;; This is only used here for now but we should still more it some - ;; time - (add-to-list 'load-path "~/.emacs.d/scripts/") - - (require 'transpose-frame) - (global-set-key (kbd "C-c f t") 'transpose-frame) - (global-set-key (kbd "C-c f i") 'flip-frame) - (global-set-key (kbd "C-c f o") 'flop-frame) + ;; This is only used here for now but we should still more it some + ;; time + (add-to-list 'load-path "~/.emacs.d/scripts/") + + (require 'transpose-frame) + (global-set-key (kbd "C-c f t") 'transpose-frame) + (global-set-key (kbd "C-c f i") 'flip-frame) + (global-set-key (kbd "C-c f o") 'flop-frame) #+END_SRC *** split and follow #+BEGIN_SRC emacs-lisp - (defmacro manx/split-and-follow (direction) - `(progn - ,direction - (balance-windows) - (other-window 1))) - - (global-set-key (kbd "C-x 3") (lambdainteractive () (manx/split-and-follow (split-window-below)))) - (global-set-key (kbd "C-x 2") (lambdainteractive () (manx/split-and-follow (split-window-horizontally)))) + (defmacro manx/split-and-follow (direction) + `(progn + ,direction + (balance-windows) + (other-window 1))) + + (global-set-key (kbd "C-x 3") (lambdainteractive () (manx/split-and-follow (split-window-below)))) + (global-set-key (kbd "C-x 2") (lambdainteractive () (manx/split-and-follow (split-window-horizontally)))) #+END_SRC * misc ** unix line endings #+BEGIN_SRC emacs-lisp - (defun unix-line-ends () - (let ((coding-str (symbol-name buffer-file-coding-system))) - (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) - (set-buffer-file-coding-system 'unix)))) + (defun unix-line-ends () + (when (string-match + "-\\(?:dos\\|mac\\)$" + (symbol-name buffer-file-coding-system)) + (set-buffer-file-coding-system 'unix))) - (add-hook 'find-file-hooks 'unix-line-ends) + (add-hook 'find-file-hooks 'unix-line-ends) #+END_SRC ** UTF8 #+BEGIN_SRC emacs-lisp - (setq locale-coding-system 'utf-8) - (set-terminal-coding-system 'utf-8) - (set-keyboard-coding-system 'utf-8) - (set-selection-coding-system 'utf-8) - (prefer-coding-system 'utf-8) - (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) + (setq locale-coding-system 'utf-8) + (set-terminal-coding-system 'utf-8) + (set-keyboard-coding-system 'utf-8) + (set-selection-coding-system 'utf-8) + (prefer-coding-system 'utf-8) + (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) #+END_SRC ** minor things Things for GUI and basic config, like electric pairs and highlighting parens. #+BEGIN_SRC emacs-lisp - (line-number-mode 1) - (column-number-mode 1) - (display-battery-mode 1) - (show-paren-mode 1) - (electric-pair-mode t) - (global-hl-line-mode t) + (line-number-mode 1) + (column-number-mode 1) + (display-battery-mode 1) + (show-paren-mode 1) + (electric-pair-mode t) + (global-hl-line-mode t) - (tool-bar-mode -1) - (menu-bar-mode -1) - (scroll-bar-mode -1) + (tool-bar-mode -1) + (menu-bar-mode -1) + (scroll-bar-mode -1) - (defalias 'yes-or-no-p 'y-or-n-p) + (defalias 'yes-or-no-p 'y-or-n-p) - (setq scroll-conservatively 100 - select-enable-clipboard t - vc-follow-symlinks t) + (setq scroll-conservatively 100 + select-enable-clipboard t + vc-follow-symlinks t) - (setq backup-directory-alist - `(("." . ,(concat user-emacs-directory "autosaves")))) + (setq backup-directory-alist + `(("." . ,(concat user-emacs-directory "autosaves")))) - (global-unset-key (kbd "C-z")) ;; Fuck unix + (global-unset-key (kbd "C-z")) ;; Fuck unix #+END_SRC ** indentation -tabs > spaces. +tabs > spaces. Except in Lisp. #+BEGIN_SRC emacs-lisp - (setq-default tab-width 2 - indent-tabs-mode t) - (defvaralias 'css-indent-offset 'tab-width) - (defvaralias 'js-indent-level 'tab-width) +(setq-default tab-width 2 + indent-tabs-mode t) + +(add-hook 'lisp-mode-hook (lambda () (setq indent-tabs-mode nil))) +(add-hook 'emacs-lisp-mode-hook (lambda () (setq indent-tabs-mode nil))) +(defvaralias 'css-indent-offset 'tab-width) +(defvaralias 'js-indent-level 'tab-width) #+END_SRC ** Prettify symbols #+BEGIN_SRC emacs-lisp - (global-prettify-symbols-mode t) - (add-hook 'emacs-lisp-mode-hook - (lambda () - (push - '("lambdainteractive" . ?Λ) - prettify-symbols-alist))) + (global-prettify-symbols-mode t) + (add-hook 'emacs-lisp-mode-hook + (lambda () + (push + '("lambdainteractive" . ?Λ) + prettify-symbols-alist))) #+END_SRC * auto-minor-mode auto-mode-alist for minor modes. @@ -352,54 +360,54 @@ auto-mode-alist for minor modes. For example, used with sensitive-mode to not create backups (path/to/file~) when creating yasnippets #+BEGIN_SRC emacs-lisp - (defvar auto-minor-mode-alist () - "Alist of filename patterns vs correpsonding minor mode functions, see `auto-mode-alist' - All elements of this alist are checked, meaning you can enable multiple minor modes for the same regexp.") - - (defun enable-minor-mode-based-on-extension () - "Check file name against `auto-minor-mode-alist' to enable minor modes - the checking happens for all pairs in auto-minor-mode-alist" - (when buffer-file-name - (let ((name (file-name-sans-versions buffer-file-name)) - (remote-id (file-remote-p buffer-file-name)) - (case-fold-search auto-mode-case-fold) - (alist auto-minor-mode-alist)) - ;; Remove remote file name identification. - (when (and (stringp remote-id) - (string-match-p (regexp-quote remote-id) name)) - (setq name (substring name (match-end 0)))) - (while (and alist (caar alist) (cdar alist)) - (if (string-match-p (caar alist) name) - (funcall (cdar alist) 1)) - (setq alist (cdr alist)))))) - - (add-hook 'find-file-hook #'enable-minor-mode-based-on-extension) + (defvar auto-minor-mode-alist () + "Alist of filename patterns vs correpsonding minor mode functions, see `auto-mode-alist' + All elements of this alist are checked, meaning you can enable multiple minor modes for the same regexp.") + + (defun enable-minor-mode-based-on-extension () + "Check file name against `auto-minor-mode-alist' to enable minor modes + the checking happens for all pairs in auto-minor-mode-alist" + (when buffer-file-name + (let ((name (file-name-sans-versions buffer-file-name)) + (remote-id (file-remote-p buffer-file-name)) + (case-fold-search auto-mode-case-fold) + (alist auto-minor-mode-alist)) + ;; Remove remote file name identification. + (when (and (stringp remote-id) + (string-match-p (regexp-quote remote-id) name)) + (setq name (substring name (match-end 0)))) + (while (and alist (caar alist) (cdar alist)) + (if (string-match-p (caar alist) name) + (funcall (cdar alist) 1)) + (setq alist (cdr alist)))))) + + (add-hook 'find-file-hook #'enable-minor-mode-based-on-extension) #+END_SRC * sensitive-minor-mode #+BEGIN_SRC emacs-lisp - (define-minor-mode sensitive-minor-mode - "For sensitive files like password lists. - It disables backup creation and auto saving. - - With no argument, this command toggles the mode. - Non-null prefix argument turns on the mode. - Null prefix argument turns off the mode." - :init-value nil - :lighter " Sensitive" - :keymap nil - (if (symbol-value sensitive-minor-mode) - (progn - (setq make-backup-files nil) - (auto-save-mode -1)) - (setq-local make-backup-files t) - (auto-save-mode 1))) - - - ;; Regexps of sensitive files. - (setq auto-minor-mode-alist - (append - '(("stream/manifest/.*\\.json$" . sensitive-minor-mode) - (".emacs.d/snippets/\\*$" . sensitive-minor-mode) - ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) - auto-minor-mode-alist)) + (define-minor-mode sensitive-minor-mode + "For sensitive files like password lists. + It disables backup creation and auto saving. + + With no argument, this command toggles the mode. + Non-null prefix argument turns on the mode. + Null prefix argument turns off the mode." + :init-value nil + :lighter " Sensitive" + :keymap nil + (if (symbol-value sensitive-minor-mode) + (progn + (setq make-backup-files nil) + (auto-save-mode -1)) + (setq-local make-backup-files t) + (auto-save-mode 1))) + + + ;; Regexps of sensitive files. + (setq auto-minor-mode-alist + (append + '(("stream/manifest/.*\\.json$" . sensitive-minor-mode) + (".emacs.d/snippets/\\*$" . sensitive-minor-mode) + ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) + auto-minor-mode-alist)) #+END_SRC diff --git a/custom.el b/custom.el index 4b4c6e3..c60787c 100644 --- a/custom.el +++ b/custom.el @@ -9,8 +9,8 @@ '(company-minimum-prefix-length 3) '(custom-enabled-themes (quote (spacemacs-dark))) '(custom-safe-themes - (quote - ("bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" default))) + (quote + ("bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" default))) '(dashboard-banner-logo-title "Komacs") '(dashboard-center-content t) '(dashboard-items (quote ((recents . 5)))) @@ -21,14 +21,14 @@ '(nginx-indent-level 2) '(nginx-indent-tabs-mode t) '(package-selected-packages - (quote - (htmlize benchmark-init alchemist elixir-mode nginx-mode yasnippet-snippets which-key use-package switch-window spacemacs-theme spaceline slime-company popup-kill-ring omnisharp keychain-environment ido-vertical-mode hungry-delete exwm diminish dashboard company-auctex beacon avy))) + (quote + (htmlize benchmark-init alchemist elixir-mode nginx-mode yasnippet-snippets which-key use-package switch-window spacemacs-theme spaceline slime-company popup-kill-ring omnisharp keychain-environment ido-vertical-mode hungry-delete exwm diminish dashboard company-auctex beacon avy))) '(slime-lisp-implementations - (quote - ((sbcl - ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") - :env - ("SBCL_HOME=/usr/lib64/sbcl/")))) t) + (quote + ((sbcl + ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") + :env + ("SBCL_HOME=/usr/lib64/sbcl/")))) t) '(switch-window-increase 4 t) '(switch-window-input-style (quote minibuffer)) '(switch-window-threshold 2)) diff --git a/init.el b/init.el index 1964c66..1b181ef 100644 --- a/init.el +++ b/init.el @@ -2,24 +2,24 @@ (require 'package) (setq package-enable-at-startup nil) (add-to-list 'package-archives - '("melpa" . "http://melpa.milkbox.net/packages/") t) + '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) (unless (package-installed-p 'use-package) - (package-refresh-contents) - (package-install 'use-package)) + (package-refresh-contents) + (package-install 'use-package)) (unless (package-installed-p 'spacemacs-theme) - (package-refresh-contents) - (package-install 'spacemacs-theme)) + (package-refresh-contents) + (package-install 'spacemacs-theme)) (defun in-emacs-home (file) - "Checks if a file exists in your emacs home" - (when (stringp file) - (let ((file (concat user-emacs-directory file))) - (when (file-exists-p file) - file)))) + "Checks if a file exists in your emacs home" + (when (stringp file) + (let ((file (concat user-emacs-directory file))) + (when (file-exists-p file) + file)))) ;; Files we care about loading (setq custom-file (in-emacs-home "custom.el")) @@ -29,8 +29,8 @@ ;; If everything exists then execute files (unless (member nil '(custom-file manx/emacs-el manx/emacs-org manx/emacs-email)) - (if (file-newer-than-file-p manx/emacs-org manx/emacs-el) - (org-babel-load-file manx/emacs-org) - (load manx/emacs-el 'noerror)) - (load custom-file 'noerrror) - (load manx/emacs-email 'noerror)) + (if (file-newer-than-file-p manx/emacs-org manx/emacs-el) + (org-babel-load-file manx/emacs-org) + (load manx/emacs-el 'noerror)) + (load custom-file 'noerrror) + (load manx/emacs-email 'noerror))