ご主人様
not manx 4 years ago
parent 4b7fd0bfd8
commit 4accec9268
Signed by: C-xC-c
GPG Key ID: F52ED472284EF2F4

@ -1,26 +1,139 @@
(use-package benchmark-init
:ensure t
:config
(add-hook 'after-init-hook 'benchmark-init/deactivate))
(defmacro definteractive (name &rest body) (defmacro definteractive (name &rest body)
`(defun ,name ,(car body) `(defun ,name ,(car body)
(interactive) (interactive)
,@(cdr body))) ,@(cdr body)))
(defmacro lambdainteractive (&rest body) (defmacro lambdainteractive (&rest body)
`(lambda ,(car body) (interactive) ,@(cdr body))) `(lambda ,(car body) (interactive) ,@(cdr body)))
(defmacro local-keybind (key value) (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 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))
(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 elixir-mode
: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)))
(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 keychain-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))
(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 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))
(use-package hungry-delete
:diminish 'hungry-delete-mode
:config (global-hungry-delete-mode 1))
(use-package which-key
:diminish 'which-key-mode
:config (which-key-mode))
(use-package avy
:bind ("M-s" . avy-goto-char))
(use-package beacon
:diminish 'beacon-mode
:config (beacon-mode 1))
(use-package popup-kill-ring
:bind ("M-y" . popup-kill-ring))
(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))
(definteractive manx/config-reload () (definteractive manx/config-reload ()
(when (get-buffer "config.org") (when (get-buffer "config.org")
(with-current-buffer "config.org" (save-buffer))) (with-current-buffer "config.org" (save-buffer)))
(org-babel-load-file (expand-file-name "~/.emacs.d/config.org"))) (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 r") 'manx/config-reload)
(global-set-key (kbd "C-c x e") (lambdainteractive ()(find-file "~/.emacs.d/config.org"))) (global-set-key (kbd "C-c x e") (lambdainteractive () (find-file (concat user-emacs-directory "config.org"))))
(setq org-src-window-setup 'current-window) (setq org-src-window-setup 'current-window)
@ -30,71 +143,50 @@
;; Don't indent whole file with org-mode ;; Don't indent whole file with org-mode
(eval-after-load "org-mode" (local-set-key (kbd "s-i") nil)) (eval-after-load "org-mode" (local-set-key (kbd "s-i") nil))
(setq org-structure-template-alist (add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"))
(append
'(("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")
("js" "#+BEGIN_SRC javascript\n?\n#+END_SRC"))
org-structure-template-alist))
(setq org-html-doctype "html5") (setq org-html-doctype "html5")
(definteractive manx/save-org-to-html() (definteractive manx/save-org-to-html()
(when (equal major-mode 'org-mode) (when (equal major-mode 'org-mode)
(save-buffer) (save-buffer)
(org-html-export-to-html))) (org-html-export-to-html)))
(add-hook 'org-mode-hook (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 () (definteractive manx/delete-org-link ()
(if (org-in-regexp org-bracket-link-regexp 1) (if (org-in-regexp org-bracket-link-regexp 1)
(apply 'delete-region (list (match-beginning 0) (match-end 0))))) (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))
(setq org-image-actual-width 150) (setq org-image-actual-width 150)
(definteractive manx/org-insert-link () (definteractive manx/org-insert-link ()
(org-insert-link) (org-insert-link)
(org-redisplay-inline-images)) (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))
(tool-bar-mode -1) (definteractive manx/kill-word ()
(menu-bar-mode -1) (backward-word)
(scroll-bar-mode -1) (kill-word 1))
(line-number-mode 1)
(column-number-mode 1)
(display-battery-mode 1)
(global-unset-key (kbd "C-z"))
(definteractive manx/kill-whole-word () (definteractive manx/kill-line()
(backward-word) (move-beginning-of-line nil)
(kill-word 1)) (kill-whole-line))
(global-set-key (kbd "C-c k w") 'manx/kill-whole-word)
(definteractive manx/kill-whole-line()
(move-beginning-of-line nil)
(kill-whole-line))
(global-set-key (kbd "C-c k l") 'manx/kill-whole-line)
(global-set-key (kbd "C-c r b") 'revert-buffer)
(definteractive manx/format-whole-buffer() (definteractive manx/format-whole-buffer()
(save-excursion (save-excursion
(indent-region (point-min) (point-max) nil))) (indent-region (point-min) (point-max) nil)))
(global-set-key (kbd "<M-right>") '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) (global-set-key (kbd "s-i") 'manx/format-whole-buffer)
(defun what-face (pos)
(interactive "d")
(let ((face (or (get-char-property (pos) 'read-face-name)
(get-char-property (pos) 'face))))
(if face (message "Face: %s" face) (message "No face at %d" pos))))
(global-set-key (kbd "C-x k") (lambdainteractive () (kill-buffer (current-buffer)))) (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-M-s-k") (lambdainteractive () (mapc 'kill-buffer (buffer-list))))
@ -108,143 +200,18 @@
(global-set-key (kbd "C-c f o") 'flop-frame) (global-set-key (kbd "C-c f o") 'flop-frame)
(defmacro manx/split-and-follow (direction) (defmacro manx/split-and-follow (direction)
`(progn `(progn
,direction ,direction
(balance-windows) (balance-windows)
(other-window 1))) (other-window 1)))
(global-set-key (kbd "C-x 3") (lambdainteractive () (manx/split-and-follow (split-window-below)))) (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)))) (global-set-key (kbd "C-x 2") (lambdainteractive () (manx/split-and-follow (split-window-horizontally))))
(setq use-package-always-ensure t
use-package-verbose t)
(use-package diminish)
(use-package keychain-environment
:bind ("C-c r e" . 'keychain-refresh-environment)
:init (keychain-refresh-environment))
(unless (display-graphic-p)
(use-package exwm
:bind ("s-k" . 'exwm-workspace-delete)
:config
(require 'exwm-config)
(require 'exwm-systemtray)
(exwm-systemtray-enable)))
(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 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 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 spaceline
:init
(require 'spaceline-config)
(setq powerline-default-seperator (quote arrow))
(spaceline-spacemacs-theme)
:config (spaceline-toggle-buffer-size-off))
(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 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 switch-window
:custom
(switch-window-input-style 'minibuffer)
(switch-window-increase 4)
(switch-window-threshold 2)
:bind ([remap other-window] . switch-window))
(use-package elixir-mode
:defer t
:config (use-package alchemist))
(use-package yasnippet
:diminish 'yas-minor-mode
:hook ((html-mode
LaTeX-mode
emacs-lisp-mode
lisp-mode)
. yas-minor-mode)
:init
(use-package yasnippet-snippets)
(yas-reload-all))
(use-package hungry-delete
:diminish 'hungry-delete-mode
:config (global-hungry-delete-mode 1))
(use-package which-key
:diminish 'which-key-mode
:config (which-key-mode))
(use-package avy
:bind ("M-s" . avy-goto-char))
(use-package beacon
:diminish 'beacon-mode
:config (beacon-mode 1))
(use-package popup-kill-ring
:bind ("M-y" . popup-kill-ring))
(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))
(defun unix-line-ends () (defun unix-line-ends ()
(let ((coding-str (symbol-name buffer-file-coding-system))) (let ((coding-str (symbol-name buffer-file-coding-system)))
(when (string-match "-\\(?:dos\\|mac\\)$" coding-str) (when (string-match "-\\(?:dos\\|mac\\)$" coding-str)
(set-buffer-file-coding-system 'unix)))) (set-buffer-file-coding-system 'unix))))
(add-hook 'find-file-hooks 'unix-line-ends) (add-hook 'find-file-hooks 'unix-line-ends)
@ -255,32 +222,39 @@
(prefer-coding-system 'utf-8) (prefer-coding-system 'utf-8)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
(defvar my-term-shell "/bin/bash") (line-number-mode 1)
(defadvice ansi-term (before force-bash) (column-number-mode 1)
(interactive (list my-term-shell))) (display-battery-mode 1)
(ad-activate 'ansi-term)
(global-set-key (kbd "<s-return>") 'ansi-term)
(show-paren-mode 1) (show-paren-mode 1)
(electric-pair-mode t) (electric-pair-mode t)
(global-hl-line-mode t) (global-hl-line-mode t)
(global-prettify-symbols-mode t)
(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 (setq scroll-conservatively 100
x-select-enable-clipboard t select-enable-clipboard t
vc-follow-symlinks t) vc-follow-symlinks t)
(setq backup-directory-alist (setq backup-directory-alist
`(("." . ,(concat user-emacs-directory "autosaves")))) `(("." . ,(concat user-emacs-directory "autosaves"))))
(add-hook 'doc-view-mode-hook 'auto-revert-mode) (global-unset-key (kbd "C-z")) ;; Fuck unix
(setq-default tab-width 2 (setq-default tab-width 2
indent-tabs-mode t) indent-tabs-mode t)
(defvaralias 'css-indent-offset 'tab-width) (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)))
(defvar auto-minor-mode-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'
@ -291,47 +265,42 @@ All elements of this alist are checked, meaning you can enable multiple minor mo
the checking happens for all pairs in auto-minor-mode-alist" the checking happens for all pairs in auto-minor-mode-alist"
(when buffer-file-name (when buffer-file-name
(let ((name (file-name-sans-versions buffer-file-name)) (let ((name (file-name-sans-versions buffer-file-name))
(remote-id (file-remote-p buffer-file-name)) (remote-id (file-remote-p buffer-file-name))
(case-fold-search auto-mode-case-fold) (case-fold-search auto-mode-case-fold)
(alist auto-minor-mode-alist)) (alist auto-minor-mode-alist))
;; Remove remote file name identification. ;; Remove remote file name identification.
(when (and (stringp remote-id) (when (and (stringp remote-id)
(string-match-p (regexp-quote remote-id) name)) (string-match-p (regexp-quote remote-id) name))
(setq name (substring name (match-end 0)))) (setq name (substring name (match-end 0))))
(while (and alist (caar alist) (cdar alist)) (while (and alist (caar alist) (cdar alist))
(if (string-match-p (caar alist) name) (if (string-match-p (caar alist) name)
(funcall (cdar alist) 1)) (funcall (cdar alist) 1))
(setq alist (cdr alist)))))) (setq alist (cdr alist))))))
(add-hook 'find-file-hook #'enable-minor-mode-based-on-extension) (add-hook 'find-file-hook #'enable-minor-mode-based-on-extension)
(define-minor-mode sensitive-minor-mode (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. It disables backup creation and auto saving.
With no argument, this command toggles the mode. With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode. Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode." Null prefix argument turns off the mode."
nil ;; Initial :init-value nil
"Sensitive" ;; Modeline :lighter " Sensitive"
nil ;; Bindings :keymap nil
(if (symbol-value sensitive-minor-mode) (if (symbol-value sensitive-minor-mode)
(progn (progn
(setq make-backup-files nil) (setq make-backup-files nil)
(auto-save-mode -1)) (auto-save-mode -1))
(setq-local make-backup-files t) (setq-local make-backup-files t)
(auto-save-mode 1))) (auto-save-mode 1)))
;; Regexps of sensitive files. ;; Regexps of sensitive files.
(setq auto-minor-mode-alist (setq auto-minor-mode-alist
(append (append
'(("stream/manifest/.*\\.json$" . sensitive-minor-mode) '(("stream/manifest/.*\\.json$" . sensitive-minor-mode)
(".emacs.d/snippets/\\*$" . sensitive-minor-mode) (".emacs.d/snippets/\\*$" . sensitive-minor-mode)
("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode))
auto-minor-mode-alist)) auto-minor-mode-alist))
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(push
'("lambdainteractive" . ) prettify-symbols-alist)))

@ -1,14 +1,9 @@
* Benchmark
#+BEGIN_SRC emacs-lisp
(use-package benchmark-init
:ensure t
:config
(add-hook 'after-init-hook 'benchmark-init/deactivate))
#+END_SRC
* macros * macros
** definteractive ** definteractive
Wrappers around functions and lambdas so I don't have to type Wrappers around functions and lambdas so I don't have to type
(interactive) all the damn time (interactive) all the damn time
I have ~prettify-symbols-mode~ set ~lambdainteractive~ to Λ (capital lambda) because it's cute.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defmacro definteractive (name &rest body) (defmacro definteractive (name &rest body)
`(defun ,name ,(car body) `(defun ,name ,(car body)
@ -19,179 +14,53 @@ Wrappers around functions and lambdas so I don't have to type
`(lambda ,(car body) (interactive) ,@(cdr body))) `(lambda ,(car body) (interactive) ,@(cdr body)))
#+END_SRC #+END_SRC
** local-keybind ** local-keybind
Hide unecessary lambda when calling (local-set-key) for Hide unecessary lambda when calling (local-set-key) for org-mode
org-modefunctions functions
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defmacro local-keybind (key value) (defmacro local-keybind (key value)
`(lambda () (local-set-key (kbd ,key) (quote ,value)))) `(lambda () (local-set-key (kbd ,key) (quote ,value))))
#+END_SRC #+END_SRC
* org
** edit/reload config.org
Saves config.org if it's open then reloads the file.
#+BEGIN_SRC emacs-lisp
(definteractive manx/config-reload ()
(when (get-buffer "config.org")
(with-current-buffer "config.org" (save-buffer)))
(org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
(global-set-key (kbd "C-c x r") 'manx/config-reload)
(global-set-key (kbd "C-c x e") (lambdainteractive ()(find-file "~/.emacs.d/config.org")))
#+END_SRC
** misc
#+BEGIN_SRC emacs-lisp
(setq org-src-window-setup 'current-window)
;; 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))
#+END_SRC
** Snippets
#+BEGIN_SRC emacs-lisp
(setq org-structure-template-alist
(append
'(("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")
("js" "#+BEGIN_SRC javascript\n?\n#+END_SRC"))
org-structure-template-alist))
#+END_SRC
** html export
#+BEGIN_SRC emacs-lisp
(setq org-html-doctype "html5")
(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))
#+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)))))
(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)
(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))
#+END_SRC
* emacs gui
#+BEGIN_SRC emacs-lisp
(tool-bar-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(line-number-mode 1)
(column-number-mode 1)
(display-battery-mode 1)
(global-unset-key (kbd "C-z"))
#+END_SRC
* functions
** text
*** forward whitespace
#+BEGIN_SRC emacs-lisp
(global-set-k'ey (kbd "<M-right>") 'forward-whitespace)
#+END_SRC
*** kill whole word
#+BEGIN_SRC emacs-lisp
(definteractive manx/kill-whole-word ()
(backward-word)
(kill-word 1))
(global-set-key (kbd "C-c k w") 'manx/kill-whole-word)
#+END_SRC
*** kill whole line
#+BEGIN_SRC emacs-lisp
(definteractive manx/kill-whole-line()
(move-beginning-of-line nil)
(kill-whole-line))
(global-set-key (kbd "C-c k l") 'manx/kill-whole-line)
#+END_SRC
*** revert buffer
#+BEGIN_SRC emacs-lisp
(global-set-key (kbd "C-c r b") 'revert-buffer)
#+END_SRC
*** Format whole file
#+BEGIN_SRC emacs-lisp
(definteractive manx/format-whole-buffer()
(save-excursion
(indent-region (point-min) (point-max) nil)))
(global-set-key (kbd "s-i") 'manx/format-whole-buffer)
#+END_SRC
*** colour under cursor
#+BEGIN_SRC emacs-lisp
(defun what-face (pos)
(interactive "d")
(let ((face (or (get-char-property (pos) 'read-face-name)
(get-char-property (pos) 'face))))
(if face (message "Face: %s" face) (message "No face at %d" pos))))
#+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))))
#+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)
#+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))))
#+END_SRC
* use-package * use-package
** use-package config
Always ensure packages are installed. Log to ~*Messages*~.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq use-package-always-ensure t (setq use-package-always-ensure t
use-package-verbose t) use-package-verbose t)
#+END_SRC #+END_SRC
** diminish ** diminish
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package diminish) (use-package diminish)
#+END_SRC #+END_SRC
** keychain-environment ** company
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package keychain-environment (use-package company
:bind ("C-c r e" . 'keychain-refresh-environment) :diminish 'company-mode
:init (keychain-refresh-environment)) :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 #+END_SRC
** exwm ** prog
*** c#
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(unless (display-graphic-p) (use-package csharp-mode
(use-package exwm :defer t
:bind ("s-k" . 'exwm-workspace-delete) :config
:config (use-package omnisharp
(require 'exwm-config) :defer t
(require 'exwm-systemtray) :config
(exwm-systemtray-enable))) (add-hook 'csharp-mode-hook 'omnisharp-mode)
(add-to-list 'company-backends 'company-omnisharp)))
#+END_SRC #+END_SRC
** nginx *** elixir
#+BEGIN_SRC emacs-lisp
(use-package elixir-mode
:defer t
:config (use-package alchemist))
#+END_SRC
*** nginx
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package nginx-mode (use-package nginx-mode
:custom :custom
@ -199,35 +68,37 @@ Saves config.org if it's open then reloads the file.
(nginx-indent-level 2) (nginx-indent-level 2)
:config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode))) :config (add-to-list 'auto-mode-alist '("/nginx/sites-\\(?:available\\|enabled\\)/" . nginx-mode)))
#+END_SRC #+END_SRC
** company *** slime
sbcl is in a werid place on Gentoo.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package company (use-package slime
:diminish 'company-mode :defer t
:bind (:map company-mode-map
("C-c /" . 'yas-expand))
:custom :custom
(company-idle-delay 0) (slime-lisp-implementations
(company-minimum-prefix-length 3) '((sbcl ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core")
:init (add-hook 'after-init-hook 'global-company-mode)) :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 #+END_SRC
** c# ** keychain-environment
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package csharp-mode (use-package keychain-environment
:defer t :bind ("C-c r e" . 'keychain-refresh-environment)
:config :init (keychain-refresh-environment))
(use-package omnisharp #+END_SRC
:defer t ** htmlize
:config #+BEGIN_SRC emacs-lisp
(add-hook 'csharp-mode-hook 'omnisharp-mode) (use-package htmlize)
(add-to-list 'company-backends 'company-omnisharp)))
#+END_SRC #+END_SRC
** spaceline ** spaceline
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package spaceline (use-package spaceline
:custom (powerline-default-seperator (quote arrow))
:init :init
(require 'spaceline-config) (require 'spaceline-config)
(setq powerline-default-seperator (quote arrow))
(spaceline-spacemacs-theme) (spaceline-spacemacs-theme)
:config (spaceline-toggle-buffer-size-off)) :config (spaceline-toggle-buffer-size-off))
#+END_SRC #+END_SRC
@ -246,20 +117,6 @@ Saves config.org if it's open then reloads the file.
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
#+END_SRC #+END_SRC
** slime
#+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)))
#+END_SRC
** switch window ** switch window
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package switch-window (use-package switch-window
@ -269,37 +126,31 @@ Saves config.org if it's open then reloads the file.
(switch-window-threshold 2) (switch-window-threshold 2)
:bind ([remap other-window] . switch-window)) :bind ([remap other-window] . switch-window))
#+END_SRC #+END_SRC
** elixir
#+BEGIN_SRC emacs-lisp
(use-package elixir-mode
:defer t
:config (use-package alchemist))
#+END_SRC
** yasnippet ** yasnippet
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package yasnippet (use-package yasnippet
:diminish 'yas-minor-mode :diminish 'yas-minor-mode
:hook ((html-mode :hook ((html-mode
LaTeX-mode LaTeX-mode
emacs-lisp-mode emacs-lisp-mode
lisp-mode) lisp-mode)
. yas-minor-mode) . yas-minor-mode)
:init :init ;; These are computationally expensive, so init.
(use-package yasnippet-snippets) (use-package yasnippet-snippets)
(yas-reload-all)) (yas-reload-all))
#+END_SRC #+END_SRC
** minor modes ** minor modes
*** hungry delete *** hungry delete
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package hungry-delete (use-package hungry-delete
:diminish 'hungry-delete-mode :diminish 'hungry-delete-mode
:config (global-hungry-delete-mode 1)) :config (global-hungry-delete-mode 1))
#+END_SRC #+END_SRC
*** which key *** which key
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package which-key (use-package which-key
:diminish 'which-key-mode :diminish 'which-key-mode
:config (which-key-mode)) :config (which-key-mode))
#+END_SRC #+END_SRC
*** avy *** avy
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -317,20 +168,122 @@ Saves config.org if it's open then reloads the file.
(use-package popup-kill-ring (use-package popup-kill-ring
:bind ("M-y" . popup-kill-ring)) :bind ("M-y" . popup-kill-ring))
#+END_SRC #+END_SRC
* ido ** ido
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq ido-enable-flex-matching t (setq ido-enable-flex-matching t
ido-create-new-buffer 'always ido-create-new-buffer 'always
ido-everywhere 1) ido-everywhere 1)
(use-package ido-vertical-mode (use-package ido-vertical-mode
:bind ("C-l" . 'ido-reread-directory) :bind ("C-l" . 'ido-reread-directory)
:custom :custom (ido-vertical-define-keys 'C-n-and-C-p-only)
(ido-vertical-define-keys 'C-n-and-C-p-only)
:config :config
(ido-vertical-mode 1) (ido-vertical-mode 1)
(ido-mode 1)) (ido-mode 1))
#+END_SRC #+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")))
(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)
;; 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))
(add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"))
#+END_SRC
** html export
#+BEGIN_SRC emacs-lisp
(setq org-html-doctype "html5")
(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))
#+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)))))
(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)
(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))
#+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 "<M-right>") '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))))
#+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)
#+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))))
#+END_SRC
* misc * misc
** unix line endings ** unix line endings
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -350,41 +303,48 @@ Saves config.org if it's open then reloads the file.
(prefer-coding-system 'utf-8) (prefer-coding-system 'utf-8)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
#+END_SRC #+END_SRC
** terminal
*** Make bash implicit terminal
#+BEGIN_SRC emacs-lisp
(defvar my-term-shell "/bin/bash")
(defadvice ansi-term (before force-bash)
(interactive (list my-term-shell)))
(ad-activate 'ansi-term)
(global-set-key (kbd "<s-return>") 'ansi-term)
#+END_SRC
** minor things ** minor things
Things for GUI and basic config, like electric pairs and highlighting
parens.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(line-number-mode 1)
(column-number-mode 1)
(display-battery-mode 1)
(show-paren-mode 1) (show-paren-mode 1)
(electric-pair-mode t) (electric-pair-mode t)
(global-hl-line-mode t) (global-hl-line-mode t)
(global-prettify-symbols-mode t)
(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 (setq scroll-conservatively 100
x-select-enable-clipboard t select-enable-clipboard t
vc-follow-symlinks t) vc-follow-symlinks t)
(setq backup-directory-alist (setq backup-directory-alist
`(("." . ,(concat user-emacs-directory "autosaves")))) `(("." . ,(concat user-emacs-directory "autosaves"))))
#+END_SRC
** docView auto reload (global-unset-key (kbd "C-z")) ;; Fuck unix
#+BEGIN_SRC emacs-lisp
(add-hook 'doc-view-mode-hook 'auto-revert-mode)
#+END_SRC #+END_SRC
** indentation ** indentation
tabs > spaces.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq-default tab-width 2 (setq-default tab-width 2
indent-tabs-mode t) indent-tabs-mode t)
(defvaralias 'css-indent-offset 'tab-width) (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)))
#+END_SRC #+END_SRC
* auto-minor-mode * auto-minor-mode
auto-mode-alist for minor modes. auto-mode-alist for minor modes.
@ -401,52 +361,45 @@ For example, used with sensitive-mode to not create backups
the checking happens for all pairs in auto-minor-mode-alist" the checking happens for all pairs in auto-minor-mode-alist"
(when buffer-file-name (when buffer-file-name
(let ((name (file-name-sans-versions buffer-file-name)) (let ((name (file-name-sans-versions buffer-file-name))
(remote-id (file-remote-p buffer-file-name)) (remote-id (file-remote-p buffer-file-name))
(case-fold-search auto-mode-case-fold) (case-fold-search auto-mode-case-fold)
(alist auto-minor-mode-alist)) (alist auto-minor-mode-alist))
;; Remove remote file name identification. ;; Remove remote file name identification.
(when (and (stringp remote-id) (when (and (stringp remote-id)
(string-match-p (regexp-quote remote-id) name)) (string-match-p (regexp-quote remote-id) name))
(setq name (substring name (match-end 0)))) (setq name (substring name (match-end 0))))
(while (and alist (caar alist) (cdar alist)) (while (and alist (caar alist) (cdar alist))
(if (string-match-p (caar alist) name) (if (string-match-p (caar alist) name)
(funcall (cdar alist) 1)) (funcall (cdar alist) 1))
(setq alist (cdr alist)))))) (setq alist (cdr alist))))))
(add-hook 'find-file-hook #'enable-minor-mode-based-on-extension) (add-hook 'find-file-hook #'enable-minor-mode-based-on-extension)
#+END_SRC #+END_SRC
* sensitive-minor-mode * sensitive-minor-mode
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(define-minor-mode sensitive-minor-mode (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. It disables backup creation and auto saving.
With no argument, this command toggles the mode. With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode. Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode." Null prefix argument turns off the mode."
nil ;; Initial :init-value nil
"Sensitive" ;; Modeline :lighter " Sensitive"
nil ;; Bindings :keymap nil
(if (symbol-value sensitive-minor-mode) (if (symbol-value sensitive-minor-mode)
(progn (progn
(setq make-backup-files nil) (setq make-backup-files nil)
(auto-save-mode -1)) (auto-save-mode -1))
(setq-local make-backup-files t) (setq-local make-backup-files t)
(auto-save-mode 1))) (auto-save-mode 1)))
;; Regexps of sensitive files. ;; Regexps of sensitive files.
(setq auto-minor-mode-alist (setq auto-minor-mode-alist
(append (append
'(("stream/manifest/.*\\.json$" . sensitive-minor-mode) '(("stream/manifest/.*\\.json$" . sensitive-minor-mode)
(".emacs.d/snippets/\\*$" . sensitive-minor-mode) (".emacs.d/snippets/\\*$" . sensitive-minor-mode)
("nginx/sites-(enabled|available)/*" . sensitive-minor-mode)) ("nginx/sites-(enabled|available)/*" . sensitive-minor-mode))
auto-minor-mode-alist)) auto-minor-mode-alist))
#+END_SRC
* Prettify symbols
#+BEGIN_SRC emacs-lisp
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(push
'("lambdainteractive" . ?Λ) prettify-symbols-alist)))
#+END_SRC #+END_SRC

@ -9,8 +9,8 @@
'(company-minimum-prefix-length 3) '(company-minimum-prefix-length 3)
'(custom-enabled-themes (quote (spacemacs-dark))) '(custom-enabled-themes (quote (spacemacs-dark)))
'(custom-safe-themes '(custom-safe-themes
(quote (quote
("bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" default))) ("bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" default)))
'(dashboard-banner-logo-title "Komacs") '(dashboard-banner-logo-title "Komacs")
'(dashboard-center-content t) '(dashboard-center-content t)
'(dashboard-items (quote ((recents . 5)))) '(dashboard-items (quote ((recents . 5))))
@ -21,14 +21,14 @@
'(nginx-indent-level 2) '(nginx-indent-level 2)
'(nginx-indent-tabs-mode t) '(nginx-indent-tabs-mode t)
'(package-selected-packages '(package-selected-packages
(quote (quote
(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))) (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 '(slime-lisp-implementations
(quote (quote
((sbcl ((sbcl
("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core") ("sbcl" "--core" "/usr/lib64/sbcl/sbcl.core")
:env :env
("SBCL_HOME=/usr/lib64/sbcl/")))) t) ("SBCL_HOME=/usr/lib64/sbcl/")))) t)
'(switch-window-increase 4 t) '(switch-window-increase 4 t)
'(switch-window-input-style (quote minibuffer)) '(switch-window-input-style (quote minibuffer))
'(switch-window-threshold 2)) '(switch-window-threshold 2))

@ -23,14 +23,14 @@
;; Files we care about loading ;; Files we care about loading
(setq custom-file (in-emacs-home "custom.el")) (setq custom-file (in-emacs-home "custom.el"))
(defconst emacs-config (in-emacs-home "config.el")) (defconst manx/emacs-el (in-emacs-home "config.el"))
(defconst emacs-org (in-emacs-home "config.org")) (defconst manx/emacs-org (in-emacs-home "config.org"))
(defconst emacs-email (in-emacs-home "email.el")) (defconst manx/emacs-email (in-emacs-home "email.el"))
;; If everything exists then execute files ;; If everything exists then execute files
(unless (member nil '(custom-file emacs-config emacs-org emacs-email)) (unless (member nil '(custom-file manx/emacs-el manx/emacs-org manx/emacs-email))
(if (file-newer-than-file-p emacs-org emacs-config) (if (file-newer-than-file-p manx/emacs-org manx/emacs-el)
(org-babel-load-file emacs-org) (org-babel-load-file manx/emacs-org)
(load emacs-config)) (load manx/emacs-el 'noerror))
(load custom-file 'noerrror) (load custom-file 'noerrror)
(load emacs-email 'noerror)) (load manx/emacs-email 'noerror))

@ -0,0 +1,14 @@
# -*- mode: snippet -*-
# name: defsystem
# key: defs
# contributor: Manx <boku@plum.moe>
# --
(asdf:defsystem #:${1:system-name}
:description "${2:none}"
:author "Manx (boku@plum.moe)"
:license ${3:"X11/MIT"}
:version "0.0.1"
:serial t
:depends-on ${4:}
:Components ${5:})
$0
Loading…
Cancel
Save