From 5dad74bbe57ae192790f7e57a3befe85c8ca1109 Mon Sep 17 00:00:00 2001 From: not manx Date: Thu, 30 Apr 2020 15:07:06 +0000 Subject: [PATCH] initial commit --- .gitignore | 12 + Komacs.png | Bin 0 -> 67533 bytes bookmarks | 10 + config.el | 342 +++++++++ config.html | 1229 +++++++++++++++++++++++++++++++ config.org | 455 ++++++++++++ games/tetris-scores | 10 + init.el | 63 ++ scripts/lass.el | 21 + scripts/transpose-frame.el | 268 +++++++ scripts/transpose-frame.elc | Bin 0 -> 4209 bytes snippets/csharp-mode/get-set | 5 + snippets/html-mode/css | 5 + snippets/html-mode/html5 | 5 + snippets/latex-mode/figure | 9 + snippets/latex-mode/hline | 5 + snippets/latex-mode/italic | 5 + snippets/latex-mode/item | 5 + snippets/latex-mode/itemize | 7 + snippets/latex-mode/subfigure | 14 + snippets/latex-mode/tabularx | 9 + snippets/lisp-mode/defignore | 7 + snippets/lisp-mode/wah | 5 + snippets/omnisharp-mode/get-set | 5 + 24 files changed, 2496 insertions(+) create mode 100644 .gitignore create mode 100644 Komacs.png create mode 100644 bookmarks create mode 100644 config.el create mode 100644 config.html create mode 100644 config.org create mode 100644 games/tetris-scores create mode 100644 init.el create mode 100644 scripts/lass.el create mode 100644 scripts/transpose-frame.el create mode 100644 scripts/transpose-frame.elc create mode 100644 snippets/csharp-mode/get-set create mode 100644 snippets/html-mode/css create mode 100644 snippets/html-mode/html5 create mode 100644 snippets/latex-mode/figure create mode 100644 snippets/latex-mode/hline create mode 100644 snippets/latex-mode/italic create mode 100644 snippets/latex-mode/item create mode 100644 snippets/latex-mode/itemize create mode 100644 snippets/latex-mode/subfigure create mode 100644 snippets/latex-mode/tabularx create mode 100644 snippets/lisp-mode/defignore create mode 100644 snippets/lisp-mode/wah create mode 100644 snippets/omnisharp-mode/get-set diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d23a099 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +elpa +url +auto-save-list +autosaves +.cache +*~ +\#*# +tramp +network-security.data +ido.last +recentf +email.el \ No newline at end of file diff --git a/Komacs.png b/Komacs.png new file mode 100644 index 0000000000000000000000000000000000000000..791129a6b84f62eb0102cc0167712bedac0cd300 GIT binary patch literal 67533 zcmV*KKxMy)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 P00000NkvXXu0mjfbhZI# literal 0 HcmV?d00001 diff --git a/bookmarks b/bookmarks new file mode 100644 index 0000000..31fc31f --- /dev/null +++ b/bookmarks @@ -0,0 +1,10 @@ +;;;; Emacs Bookmark Format Version 1 ;;;; +;;; This format is meant to be slightly human-readable; +;;; nevertheless, you probably don't want to edit it. +;;; -*- End Of Bookmark File Format Version Stamp -*- +(("org-refile-last-stored" + (filename . "~/todo.org") + (front-context-string) + (rear-context-string . " :prog:\n") + (position . 78)) +) \ No newline at end of file diff --git a/config.el b/config.el new file mode 100644 index 0000000..f35280a --- /dev/null +++ b/config.el @@ -0,0 +1,342 @@ +(defmacro definteractive (name &rest body) + `(defun ,name ,(car body) + (interactive) + ,@(cdr body))) + +(defmacro lambdainteractive (&rest body) + `(lambda ,(car body) (interactive) ,@(cdr body))) + +(defmacro local-keybind (key value) + `(lambda () (local-set-key (kbd ,key) (quote ,value)))) + +(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"))) + +(setq org-src-window-setup 'current-window) + +;; I read somewhere that Company breaks things? +(add-hook 'org-mode-hook 'company-mode) + +(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)) + +(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)) + +(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)) + +(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)) + +(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")) + +(definteractive manx/kill-whole-word () + (backward-word) + (kill-word 1)) + +(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() + (save-excursion + (indent-region (point-min) (point-max) nil))) + +(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-M-s-k") (lambdainteractive () (mapc 'kill-buffer (buffer-list)))) + +;; 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) + +(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)))) + +(setq use-package-always-ensure t + use-package-verbose t) + +(use-package keychain-environment + :bind ("C-c r e" . 'keychain-refresh-environment)) + +(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 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) + +;; (use-package omnisharp +;; :defer t +;; :init (add-hook 'csharp-mode-hook 'omnisharp-mode)) + +;; (eval-after-load 'company +;; '(add-to-list 'company-backends 'company-omnisharp)) + +;; (add-hook 'csharp-mode #'company-mode) + +(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 hungry-delete + :diminish 'hungry-delete-mode + :config (global-hungry-delete-mode 1))2 + +(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)) + +(use-package yasnippet + :diminish 'yas-minor-mode +:bind + :init + (use-package yasnippet-snippets) + (yas-reload-all)) + +(add-hook 'html-mode-hook 'yas-minor-mode) +(add-hook 'LaTeX-mode-hook 'yas-minor-mode) +(add-hook 'emacs-lisp-mode 'yas-minor-mode) + +(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 () + (let ((coding-str (symbol-name buffer-file-coding-system))) + (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) + (set-buffer-file-coding-system 'unix)))) + +(add-hook 'find-file-hooks 'unix-line-ends) + +(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)) + +(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 "") 'ansi-term) + +(show-paren-mode 1) +(electric-pair-mode t) +(global-hl-line-mode t) +(global-prettify-symbols-mode t) + +(defalias 'yes-or-no-p 'y-or-n-p) + +(setq scroll-conservatively 100 + x-select-enable-clipboard t + vc-follow-symlinks t) + +(setq backup-directory-alist + `(("." . ,(concat user-emacs-directory "autosaves")))) + +(add-hook 'doc-view-mode-hook 'auto-revert-mode) + +(setq tab-width 2 + indent-tabs-mode t) + +(defvaralias 'js-indent-level 'tab-width) +(defvaralias 'css-indent-offset 'tab-width) + +(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) + +(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." + ;; The initial value. + nil + ;; The indicator for the mode line. + " Sensitive" + ;; The minor mode bindings. + nil + (if (symbol-value sensitive-minor-mode) + (progn + ;; disable backups + (set (make-local-variable 'backup-inhibited) t) + ;; disable auto-save + (if auto-save-default + (auto-save-mode -1))) + ;resort to default value of backup-inhibited + (kill-local-variable 'backup-inhibited) + ;resort to default auto save setting + (if auto-save-default + (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)) + +(add-hook 'emacs-lisp-mode-hook + (lambda () + (push + '("lambdainteractive" . ?Λ) prettify-symbols-alist))) + +(load "~/.emacs.d/email.el") diff --git a/config.html b/config.html new file mode 100644 index 0000000..cf12d6d --- /dev/null +++ b/config.html @@ -0,0 +1,1229 @@ + + + +config + + + + + + + +

+

config

+
+

Table of Contents

+
+ +
+
+
+

1 org

+
+
+

1.1 edit/reload config.org

+
+
+

1.1.1 edit

+
+
+ +
(defun manx/config-open ()
+	(interactive)
+	(find-file "~/.emacs.d/config.org"))
+(global-set-key (kbd "C-c x e") 'manx/config-open)
+
+
+
+
+
+

1.1.2 reload

+
+
+ +
(defun manx/config-reload ()
+	(interactive)
+	;; save buffer if it's been edited
+	(if (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)
+
+
+
+
+
+
+

1.2 src edit in current window

+
+
+ +
(setq org-src-window-setup 'current-window)
+
+
+
+
+
+

1.3 disable company-mode

+
+
+ +
(add-hook 'org-mode-hook 'company-mode)
+
+
+
+
+
+

1.4 Snippets

+
+
+ +
(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))
+
+
+
+
+
+

1.5 html export

+
+
+

1.5.1 html5

+
+
+ +
(setq org-html-doctype "html5")
+
+
+
+
+
+

1.5.2 Save file as HTML

+
+
+ +
(defun manx/save-org-to-html()
+	(interactive)
+	(when (equal major-mode 'org-mode)
+		(save-buffer)
+		(org-html-export-to-html)))
+
+(add-hook 'org-mode-hook
+					(lambda () (local-set-key (kbd "C-c s h") 'manx/save-org-to-html)))
+
+
+
+
+
+
+

1.6 Links

+
+
+ +
(defun manx/delete-org-link ()
+	(interactive)
+	(if (org-in-regexp org-bracket-link-regexp 1)
+			(apply 'delete-region (list (match-beginning 0) (match-end 0)))))
+
+(add-hook 'org-mode-hook
+					(lambda () (local-set-key (kbd "C-c o l") 'manx/delete-org-link)))
+
+
+
+
+

1.6.1 Inline Images

+
+
+ +
(defun manx/org-insert-link()
+	(interactive)
+	(org-insert-link)
+	(org-redisplay-inline-images))
+
+
+(add-hook 'org-mode-hook
+					(lambda () (local-set-key (kbd "C-c C-l") 'manx/org-insert-link)))
+(setq org-image-actual-width 150)
+
+
+
+
+
+
+
+

2 emacs gui

+
+
+ +
(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"))
+
+
+
+
+
+

3 functions

+
+
+

3.1 text

+
+
+

3.1.1 copy whole line

+
+
+ +
(defun copy-whole-line ()
+	(interactive)
+	(save-excursion
+		(kill-new
+					(buffer-substring
+					 (point-at-bol)
+					 (point-at-eol)))))
+(global-set-key (kbd "C-c k l") 'copy-whole-line)
+
+
+
+
+
+

3.1.2 kill whole word

+
+
+ +
(defun kill-whole-word ()
+	(interactive)
+	(backward-word)
+	(kill-word 1))
+(global-set-key (kbd "C-c k w") 'kill-whole-word)
+
+
+
+
+
+

3.1.3 kill whole line

+
+
+ +
(defun manx/kill-whole-line()
+	(interactive)
+	(move-beginning-of-line nil)
+	(kill-whole-line))
+(global-set-key (kbd "C-c k l") 'manx/kill-whole-line)
+
+
+
+
+
+

3.1.4 comment region

+
+
+ +
(defun manx/revert-buffer ()
+	(interactive)
+	(revert-buffer))
+
+(global-set-key (kbd "C-c r b") 'manx/revert-buffer)
+
+
+
+
+
+

3.1.5 yas-expand for when company decides to be shit

+
+
+ +
(global-set-key (kbd "C-c /") 'yas-expand)
+
+
+
+
+
+

3.1.6 Format whole file

+
+
+ +
(defun manx/format-whole-buffer()
+	(interactive)
+	(save-excursion
+		(indent-region (point-min) (point-max) nil)))
+(global-set-key (kbd "s-i") 'manx/format-whole-buffer)
+
+
+
+
+
+
+

3.2 buffers

+
+
+

3.2.1 kill current buffer

+
+
+ +
(defun kill-current-buffer()
+	(interactive)
+	(kill-buffer (current-buffer)))
+(global-set-key (kbd "C-x k") 'kill-current-buffer)
+
+
+
+
+
+

3.2.2 kill all buffers

+
+
+ +
(defun kill-all-buffers()
+	(interactive)
+	(mapc 'kill-buffer (buffer-list)))
+(global-set-key (kbd "C-M-s-k") 'kill-all-buffers)
+
+
+
+
+
+
+

3.3 frames

+
+
+

3.3.1 transpose frame

+
+
+ +
(global-set-key (kbd "C-c f t") 'transpose-frame)
+
+
+
+
+
+

3.3.2 flip frame

+
+
+ +
;; _f_rame fl_i_p
+(global-set-key (kbd "C-c f i") 'flip-frame)
+
+
+
+
+
+

3.3.3 flop frame

+
+
+ +
;; _f_rame fl_o_p
+(global-set-key (kbd "C-c f o") 'flop-frame)
+
+
+
+
+
+

3.3.4 split and follow vertically

+
+
+ +
(defun split-and-follow-vertical ()
+	(interactive)
+	(split-window-right)
+	(balance-windows)
+	(other-window 1))
+(global-set-key (kbd "C-x 3") 'split-and-follow-vertical)
+
+
+
+
+
+

3.3.5 split and follow hoizontally

+
+
+ +
(defun split-and-follow-horizontal ()
+	(interactive)
+	(split-window-below)
+	(balance-windows)
+	(other-window 1))
+(global-set-key (kbd "C-x 2") 'split-and-follow-horizontal)
+
+
+
+
+
+
+

3.4 EXWM workspace

+
+
+ +
(global-set-key (kbd "s-k") 'exwm-workspace-delete)
+
+
+
+
+
+
+

4 use-package

+
+
+

4.1 org-babel-http

+
+
+ +
(use-package ob-http
+	:ensure t)
+
+
+
+
+
+

4.2 exwm

+
+
+

4.2.1 install

+
+
+ +
(use-package exwm
+	:ensure t
+	:config
+	(require 'exwm-config)
+	(exwm-config-default))
+
+
+
+
+
+

4.2.2 system tray

+
+
+ +
(require 'exwm-systemtray)
+(exwm-systemtray-enable)
+
+
+
+
+
+
+

4.3 diminish

+
+

+Packages are diminished individually by use-package key, making +everything a bit more modular +

+
+ +
(use-package diminish
+	:ensure t)
+
+
+
+
+
+

4.4 company

+
+
+

4.4.1 company

+
+
+ +
(use-package company
+	:ensure t
+	:diminish 'company-mode
+	:config
+	(setq company-idle-delay 0)
+	(setq company-minimum-prefix-length 3)
+	:init (add-hook 'after-init-hook 'global-company-mode))
+
+
+
+
+
+

4.4.2 slime

+
+
+ +
(use-package slime-company
+	:ensure t
+	:diminish 'slime-mode)
+(slime-setup '(slime-fancy slime-company))
+
+
+
+
+
+

4.4.3 auctex

+
+
+ +
(use-package company-auctex
+	:ensure t)
+(company-auctex-init)
+
+
+
+
+
+
+

4.5 omnisharp

+
+
+ +
(use-package csharp-mode
+	:ensure t)
+
+(use-package omnisharp
+	:ensure t
+	:init (add-hook 'csharp-mode-hook 'omnisharp-mode))
+
+(eval-after-load 'company
+	'(add-to-list 'company-backends 'company-omnisharp))
+
+(add-hook 'csharp-mode #'company-mode)
+
+
+
+
+
+

4.6 auctex

+
+
+

4.6.1 auctex

+
+
+ +
(use-package tex
+	:ensure auctex)
+
+
+
+
+
+

4.6.2 indent

+
+
+ +
(setq LaTeX-item-indent 0)
+
+
+
+
+
+
+

4.7 spaceline

+
+
+ +
(use-package spaceline
+	:ensure t
+	:config
+	(require 'spaceline-config)
+	(setq powerline-default-seperator (quote arrow))
+	(spaceline-spacemacs-theme))
+
+(spaceline-toggle-buffer-size-off)
+
+
+
+
+
+

4.8 dashboard

+
+
+ +
(use-package dashboard
+	:ensure t
+	:config
+	(dashboard-setup-startup-hook)
+	(setq dashboard-center-content t
+				dashboard-items '((recents . 5))
+				dashboard-banner-logo-title "Okaeri ~"))
+
+
+
+
+
+

4.9 avy

+
+
+ +
(use-package avy
+	:ensure t
+	:bind ("M-s" . avy-goto-char))
+
+
+
+
+
+

4.10 which key

+
+
+ +
(use-package which-key
+	:ensure t
+	:diminish 'which-key-mode
+	:init (which-key-mode))
+
+
+
+
+
+

4.11 slime

+
+
+ +
(use-package slime
+	:ensure t
+	:init
+	(setq inferior-lisp-program "/usr/bin/sbcl")
+	(add-hook 'lisp-mode-hook 'slime-mode))
+
+
+
+
+
+

4.12 switch window

+
+
+ +
(use-package switch-window
+	:ensure t
+	:config
+	(setq switch-window-input-style 'minibuffer)
+	(setq switch-window-increase 4)
+	(setq switch-window-threshold 2)
+	:bind ([remap other-window] . switch-window))
+
+
+
+
+
+

4.13 popup kill ring

+
+
+ +
(use-package popup-kill-ring
+	:ensure t
+	:bind ("M-y" . popup-kill-ring))
+
+
+
+
+
+

4.14 minor modes

+
+
+

4.14.1 hungry delete

+
+
+ +
(use-package hungry-delete
+	:ensure t
+	:diminish 'hungry-delete-mode
+	:config (global-hungry-delete-mode 1))
+
+
+
+
+
+

4.14.2 symon

+
+
+ +
(use-package symon
+	:ensure t
+	:bind ("s-h" . symon-mode))
+
+
+
+
+
+

4.14.3 beacon

+
+
+ +
(use-package beacon
+	:ensure t
+	:diminish 'beacon-mode
+	:init (beacon-mode 1))
+
+
+
+
+
+

4.14.4 yasnippet

+
+
  1. package
    +
    + +
    (use-package yasnippet
    +	:ensure t
    +	:diminish 'yas-minor-mode
    +	:config (use-package yasnippet-snippets
    +						:ensure t)
    +	(yas-reload-all))
    +
    +
    +
    +
  2. +
  3. enable for major modes
    +
    + +
    (add-hook 'html-mode-hook 'yas-minor-mode)
    +(add-hook 'LaTeX-mode-hook 'yas-minor-mode)
    +(add-hook 'emacs-lisp-mode 'yas-minor-mode)
    +
    +
    +
    +
+
+
+
+

4.15 Javascript

+
+
+ +
(use-package js2-mode
+	:ensure t)
+
+
+
+
+
+
+

5 ido

+
+
+

5.1 Enable IDO

+
+
+ +
(setq ido-enable-flex-matching t)
+(setq ido-create-new-buffer 'always)
+(setq ido-everywhere 1)
+(ido-mode 1)
+(global-set-key (kbd "C-l") 'ido-reread-directory)
+
+
+
+
+
+

5.2 IDO vertical

+
+
+ +
(use-package ido-vertical-mode
+	:ensure t
+	:init (ido-vertical-mode 1))
+(setq ido-vertical-define-keys 'C-n-and-C-p-only)
+
+
+
+
+
+
+

6 misc

+
+
+

6.1 UTF8

+
+
+ +
(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)
+
+
+
+
+
+

6.2 terminal

+
+
+

6.2.1 Make bash implicit terminal

+
+
+ +
(defvar my-term-shell "/bin/bash")
+(defadvice ansi-term (before force-bash)
+	(interactive (list my-term-shell)))
+(ad-activate 'ansi-term)
+
+
+
+
+
+

6.2.2 open term with s-return

+
+
+ +
(global-set-key (kbd "<s-return>") 'ansi-term)
+
+
+
+
+
+
+

6.3 parenthesis matching

+
+
+ +
(show-paren-mode 1)
+
+
+
+
+
+

6.4 copy/paste

+
+
+ +
(setq x-select-enable-clipboard t)
+
+
+
+
+
+

6.5 y/n instead of yes/no

+
+
+ +
(defalias 'yes-or-no-p 'y-or-n-p)
+
+
+
+
+
+

6.6 electric pair mode

+
+
+ +
(electric-pair-mode t)
+
+
+
+
+
+

6.7 scroll line by line

+
+
+ +
(setq scroll-conservatively 100)
+
+
+
+
+
+

6.8 highlight line

+
+
+ +
(global-hl-line-mode t)
+
+
+
+
+
+

6.9 prettify symbols

+
+
+ +
(global-prettify-symbols-mode t)
+
+
+
+
+
+

6.10 docView auto reload

+
+
+ +
(add-hook 'doc-view-mode-hook 'auto-revert-mode)
+
+
+
+
+
+

6.11 Indentation

+
+
+ +
(setq-default tab-width 2)
+(setq-default indent-tabs-mode t)
+(defvaralias 'js-indent-level 'tab-width)
+(defvaralias js2-basic-offset 'tab-width)
+(defvaralias 'css-indent-offset 'tab-width)
+
+
+
+
+
+
+

7 auto-minor-mode

+
+

+auto-mode-alist but for minor modes. +

+ +

+For example, used with sensitive-mode to not create backups +(path/to/file~) when creating yasnippets +

+
+ +
(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)
+
+
+
+
+
+

8 sensitive-minor-mode

+
+
+ +
(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."
+	;; The initial value.
+	nil
+	;; The indicator for the mode line.
+	" Sensitive"
+	;; The minor mode bindings.
+	nil
+	(if (symbol-value sensitive-minor-mode)
+			(progn
+				;; disable backups
+				(set (make-local-variable 'backup-inhibited) t) 
+				;; disable auto-save
+				(if auto-save-default
+						(auto-save-mode -1)))
+		;resort to default value of backup-inhibited
+		(kill-local-variable 'backup-inhibited)
+		;resort to default auto save setting
+		(if auto-save-default
+				(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))
+			 auto-minor-mode-alist))
+
+
+
+
+
+

9 unix line endings

+
+
+ +
(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))))
+
+(add-hook 'find-file-hooks 'unix-line-ends)
+
+
+ + +
+ +
new Date().getSeconds();
+
+
+
+
+
+
+

Created: 2020-04-03 Fri 18:59

+

Emacs 24.5.1 (Org mode 8.2.10)

+

Validate

+
+ + diff --git a/config.org b/config.org new file mode 100644 index 0000000..f22c009 --- /dev/null +++ b/config.org @@ -0,0 +1,455 @@ +* macros +** definteractive +Wrappers around functions and lambdas so I don't have to type +(interactive) all the damn time +#+BEGIN_SRC emacs-lisp + (defmacro definteractive (name &rest body) + `(defun ,name ,(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)))) +#+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) +#+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 +*** 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 +#+BEGIN_SRC emacs-lisp + (setq use-package-always-ensure t + use-package-verbose t) +#+END_SRC +** keychain-environment +#+BEGIN_SRC emacs-lisp + (use-package keychain-environment + :bind ("C-c r e" . 'keychain-refresh-environment)) +#+END_SRC +** exwm +#+BEGIN_SRC emacs-lisp + (use-package exwm + :bind ("s-k" . 'exwm-workspace-delete) + :config + (require 'exwm-config) + (require 'exwm-systemtray) + (exwm-systemtray-enable)) +#+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))) +#+END_SRC +** diminish +#+BEGIN_SRC emacs-lisp + (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)) +#+END_SRC +** omnisharp +#+BEGIN_SRC emacs-lisp + ;; (use-package csharp-mode + ;; :defer t) + + ;; (use-package omnisharp + ;; :defer t + ;; :init (add-hook 'csharp-mode-hook 'omnisharp-mode)) + + ;; (eval-after-load 'company + ;; '(add-to-list 'company-backends 'company-omnisharp)) + + ;; (add-hook 'csharp-mode #'company-mode) +#+END_SRC +** spaceline +#+BEGIN_SRC emacs-lisp + (use-package spaceline + :init + (require 'spaceline-config) + (setq powerline-default-seperator (quote arrow)) + (spaceline-spacemacs-theme) + :config (spaceline-toggle-buffer-size-off)) + +#+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*"))) +#+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 +#+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)) +#+END_SRC +** elixir +#+BEGIN_SRC emacs-lisp + (use-package elixir-mode + :defer t + :config (use-package alchemist)) +#+END_SRC +** minor modes +*** hungry delete +#+BEGIN_SRC emacs-lisp + (use-package hungry-delete + :diminish 'hungry-delete-mode + :config (global-hungry-delete-mode 1))2 +#+END_SRC +*** which key +#+BEGIN_SRC emacs-lisp + (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)) +#+END_SRC +*** beacon +#+BEGIN_SRC emacs-lisp + (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)) +#+END_SRC +*** yasnippet +#+BEGIN_SRC emacs-lisp + (use-package yasnippet + :diminish 'yas-minor-mode +:bind + :init + (use-package yasnippet-snippets) + (yas-reload-all)) +#+END_SRC +**** enable for major modes +#+BEGIN_SRC emacs-lisp + (add-hook 'html-mode-hook 'yas-minor-mode) + (add-hook 'LaTeX-mode-hook 'yas-minor-mode) + (add-hook 'emacs-lisp-mode 'yas-minor-mode) +#+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)) +#+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)))) + + (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)) +#+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 "") 'ansi-term) +#+END_SRC +** minor things +#+BEGIN_SRC emacs-lisp + (show-paren-mode 1) + (electric-pair-mode t) + (global-hl-line-mode t) + (global-prettify-symbols-mode t) + + (defalias 'yes-or-no-p 'y-or-n-p) + + (setq scroll-conservatively 100 + x-select-enable-clipboard t + vc-follow-symlinks t) + + (setq backup-directory-alist + `(("." . ,(concat user-emacs-directory "autosaves")))) +#+END_SRC +** docView auto reload +#+BEGIN_SRC emacs-lisp + (add-hook 'doc-view-mode-hook 'auto-revert-mode) +#+END_SRC +** Indentation +#+BEGIN_SRC emacs-lisp + (setq tab-width 2 + indent-tabs-mode t) + + (defvaralias 'js-indent-level 'tab-width) + (defvaralias 'css-indent-offset 'tab-width) +#+END_SRC +* auto-minor-mode +auto-mode-alist but 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) +#+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." + ;; The initial value. + nil + ;; The indicator for the mode line. + " Sensitive" + ;; The minor mode bindings. + nil + (if (symbol-value sensitive-minor-mode) + (progn + ;; disable backups + (set (make-local-variable 'backup-inhibited) t) + ;; disable auto-save + (if auto-save-default + (auto-save-mode -1))) + ;resort to default value of backup-inhibited + (kill-local-variable 'backup-inhibited) + ;resort to default auto save setting + (if auto-save-default + (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 +* Prettify symbols +#+BEGIN_SRC emacs-lisp + (add-hook 'emacs-lisp-mode-hook + (lambda () + (push + '("lambdainteractive" . ?Λ) prettify-symbols-alist))) +#+END_SRC +* Email +#+BEGIN_SRC emacs-lisp + (load "~/.emacs.d/email.el") +#+END_SRC diff --git a/games/tetris-scores b/games/tetris-scores new file mode 100644 index 0000000..529181a --- /dev/null +++ b/games/tetris-scores @@ -0,0 +1,10 @@ +1476 manx Tue Mar 26 12:17:27 2019 +737 manx Mon Mar 25 16:40:54 2019 +529 manx Wed Mar 27 11:19:28 2019 +512 manx Wed Mar 13 15:31:53 2019 +507 manx Wed Mar 13 15:34:55 2019 +459 manx Wed Mar 20 12:35:48 2019 +431 manx Wed Mar 13 15:38:47 2019 +272 manx Thu Mar 21 13:45:44 2019 +269 manx Tue Mar 19 10:51:54 2019 +160 manx Wed Mar 20 12:33:02 2019 diff --git a/init.el b/init.el new file mode 100644 index 0000000..f4ddc7d --- /dev/null +++ b/init.el @@ -0,0 +1,63 @@ +;; required package fluff +(require 'package) +(setq package-enable-at-startup nil) +(add-to-list 'package-archives + '("melpa" . "http://melpa.milkbox.net/packages/") t) + +(package-initialize) + +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +(unless (package-installed-p 'spacemacs-theme) + (package-refresh-contents) + (package-install 'spacemacs-theme)) + + + +;; org-babel won't compile these sometimes? +(if (file-newer-than-file-p "~/.emacs.d/config.org" "~/.emacs.d/config.el") + (org-babel-load-file "~/.emacs.d/config.org") + (load "~/.emacs.d/config.el")) + +;; Stuff generated by emacs +(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. + '(TeX-engine (quote xetex)) + '(company-idle-delay 0) + '(company-minimum-prefix-length 3) + '(custom-enabled-themes (quote (spacemacs-dark))) + '(custom-safe-themes + (quote + ("bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" default))) + '(dashboard-banner-logo-title "Komacs") + '(dashboard-center-content t) + '(dashboard-items (quote ((recents . 5)))) + '(dashboard-set-init-info t) + '(dashboard-show-shortcuts nil) + '(dashboard-startup-banner "~/.emacs.d/Komacs.png") + '(ido-vertical-define-keys (quote C-n-and-C-p-only)) + '(nginx-indent-level 2) + '(nginx-indent-tabs-mode t) + '(package-selected-packages + (quote + (alchemist elixir-mode nginx-mode ac-js2 pdf-tools yasnippet-snippets which-key use-package symon switch-window spacemacs-theme spaceline slime-company popup-kill-ring omnisharp keychain-environment js2-mode 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) + '(switch-window-increase 4 t) + '(switch-window-input-style (quote minibuffer) t) + '(switch-window-threshold 2 t)) +(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. + '(default ((t (:inherit nil :stipple nil :background "#292b2e" :foreground "#b2b2b2" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 110 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))) diff --git a/scripts/lass.el b/scripts/lass.el new file mode 100644 index 0000000..b480667 --- /dev/null +++ b/scripts/lass.el @@ -0,0 +1,21 @@ +;; This file is a part of LASS +;; (c) 2014 TymoonNET/NexT http://tymoon.eu (shinmera@tymoon.eu) +;; Author: Nicolas Hafner + +(defun lass-compile-current () + (interactive) + (or + (when (and (slime-connected-p) + (or (slime-eval '(cl:not (cl:null (cl:find-package :lass)))) + (and (slime-eval '(cl:not (cl:null (cl:find-package :ql)))) + (slime-eval '(ql:quickload :lass))))) + (message "LASS compiled to %s" (slime-eval `(uiop:native-namestring (lass:generate (uiop:parse-native-namestring ,(buffer-file-name))))))) + (message "LASS compiled. %s" (shell-command-to-string (format "lass %s" (shell-quote-argument (buffer-file-name))))))) + +(define-derived-mode lass-mode common-lisp-mode + "LASS" "Mode with auto-compiling for LASS files." + (add-hook 'after-save-hook 'lass-compile-current nil t)) + +(add-to-list 'auto-mode-alist '("\\.lass\\'" . lass-mode)) + +(provide 'lass) diff --git a/scripts/transpose-frame.el b/scripts/transpose-frame.el new file mode 100644 index 0000000..0ba51be --- /dev/null +++ b/scripts/transpose-frame.el @@ -0,0 +1,268 @@ + +;;; transpose-frame.el --- Transpose windows arrangement in a frame + +;; Copyright (c) 2011 S. Irie + +;; Author: S. Irie +;; Maintainer: S. Irie +;; Keywords: window + +(defconst transpose-frame-version "0.1.0") + +;; This program is free software. + +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions +;; are met: + +;; 1. Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; 2. Redistributions in binary form must reproduce the above copyright +;; notice, this list of conditions and the following disclaimer in the +;; documentation and/or other materials provided with the distribution. + +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +;;; Commentary: + +;; This program provides some interactive functions which allows users +;; to transpose windows arrangement in currently selected frame: +;; +;; `transpose-frame' ... Swap x-direction and y-direction +;; +;; +------------+------------+ +----------------+--------+ +;; | | B | | A | | +;; | A +------------+ | | | +;; | | C | => +--------+-------+ D | +;; +------------+------------+ | B | C | | +;; | D | | | | | +;; +-------------------------+ +--------+-------+--------+ +;; +;; `flip-frame' ... Flip vertically +;; +;; +------------+------------+ +------------+------------+ +;; | | B | | D | +;; | A +------------+ +------------+------------+ +;; | | C | => | | C | +;; +------------+------------+ | A +------------+ +;; | D | | | B | +;; +-------------------------+ +------------+------------+ +;; +;; `flop-frame' ... Flop horizontally +;; +;; +------------+------------+ +------------+------------+ +;; | | B | | B | | +;; | A +------------+ +------------+ A | +;; | | C | => | C | | +;; +------------+------------+ +------------+------------+ +;; | D | | D | +;; +-------------------------+ +-------------------------+ +;; +;; `rotate-frame' ... Rotate 180 degrees +;; +;; +------------+------------+ +-------------------------+ +;; | | B | | D | +;; | A +------------+ +------------+------------+ +;; | | C | => | C | | +;; +------------+------------+ +------------+ A | +;; | D | | B | | +;; +-------------------------+ +------------+------------+ +;; +;; `rotate-frame-clockwise' ... Rotate 90 degrees clockwise +;; +;; +------------+------------+ +-------+-----------------+ +;; | | B | | | A | +;; | A +------------+ | | | +;; | | C | => | D +--------+--------+ +;; +------------+------------+ | | B | C | +;; | D | | | | | +;; +-------------------------+ +-------+--------+--------+ +;; +;; `rotate-frame-anticlockwise' ... Rotate 90 degrees anti-clockwise +;; +;; +------------+------------+ +--------+--------+-------+ +;; | | B | | B | C | | +;; | A +------------+ | | | | +;; | | C | => +--------+--------+ D | +;; +------------+------------+ | A | | +;; | D | | | | +;; +-------------------------+ +-----------------+-------+ +;; +;; This program is tested on GNU Emacs 22, 23. + +;; +;; Installation: +;; +;; First, save this file as transpose-frame.el and byte-compile in a directory +;; that is listed in load-path. +;; +;; Put the following in your .emacs file: +;; +;; (require 'transpose-frame) +;; +;; To swap x-direction and y-direction of windows arrangement, for example, +;; just type as: +;; +;; M-x transpose-frame +;; +;; Have fun! +;; + +;;; ChangeLog: + +;; 2011-03-01 S. Irie +;; * Version 0.1.0 +;; * Save more information such as hscroll, margins, fringes, etc. +;; * Bug fix +;; 2011-02-28 S. Irie +;; * Version 0.0.1 +;; * Initial version + +;;; ToDo: + +;;; Code: + +;; Internal functions + +(defun transpose-frame-get-arrangement (&optional frame subtree) + (let ((tree (or subtree + (car (window-tree frame))))) + (if (windowp tree) + (list (window-buffer tree) + (window-start tree) + (window-point tree) + (window-hscroll tree) + (window-margins tree) + (window-fringes tree) + (window-dedicated-p tree) + (window-redisplay-end-trigger tree) + tree + (eq tree (frame-selected-window frame))) + (let* ((vertical (car tree)) + (edges (cadr tree)) + (length (float (if vertical + (- (nth 3 edges) (cadr edges)) + (- (nth 2 edges) (car edges)))))) + (cons vertical + (mapcar (lambda (subtree) + (cons (transpose-frame-get-arrangement frame subtree) + (/ (let ((edges (if (windowp subtree) + (window-edges subtree) + (cadr subtree)))) + (if vertical + (- (nth 3 edges) (cadr edges)) + (- (nth 2 edges) (car edges)))) + length))) + (cddr tree))))))) + +(defun transpose-frame-set-arrangement (config &optional window-or-frame &rest how) + (let ((window (if (windowp window-or-frame) + window-or-frame + (frame-selected-window window-or-frame)))) + (unless (windowp window-or-frame) + (delete-other-windows window)) + (if (bufferp (car config)) + (let ((buffer (pop config))) + (set-window-buffer window buffer) + (set-window-start window (pop config)) + (set-window-point window (pop config)) + (set-window-hscroll window (pop config)) + (set-window-margins window (caar config) (cdr (pop config))) + (apply 'set-window-fringes window (pop config)) + (set-window-dedicated-p window (pop config)) + (set-window-redisplay-end-trigger window (pop config)) + (let ((orig-window (pop config)) + (ol-func (lambda (ol) + (if (eq (overlay-get ol 'window) orig-window) + (overlay-put ol 'window window)))) + (ol-lists (with-current-buffer buffer + (overlay-lists)))) + (mapc ol-func (car ol-lists)) + (mapc ol-func (cdr ol-lists))) + (if (car config) (select-window window))) + (let* ((horizontal (if (memq 'transpose how) + (pop config) + (not (pop config)))) + (edges (window-edges window)) + (length (if horizontal + (- (nth 2 edges) (car edges)) + (- (nth 3 edges) (cadr edges))))) + (if (memq (if horizontal 'flop 'flip) how) + (setq config (reverse config))) + (while (cdr config) + (setq window (prog1 + (split-window window (round (* length (cdar config))) + horizontal) + (apply 'transpose-frame-set-arrangement + (caar config) window how)) + config (cdr config))) + (apply 'transpose-frame-set-arrangement + (caar config) window how))))) + +;; User commands + +;;;###autoload +(defun transpose-frame (&optional frame) + "Transpose windows arrangement at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'transpose) + (if (interactive-p) (recenter))) + +;;;###autoload +(defun flip-frame (&optional frame) + "Flip windows arrangement vertically at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'flip)) + +;;;###autoload +(defun flop-frame (&optional frame) + "Flop windows arrangement horizontally at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'flop)) + +;;;###autoload +(defun rotate-frame (&optional frame) + "Rotate windows arrangement 180 degrees at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'flip 'flop)) + +;;;###autoload +(defun rotate-frame-clockwise (&optional frame) + "Rotate windows arrangement 90 degrees clockwise at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'transpose 'flop) + (if (interactive-p) (recenter))) + +;;;###autoload +(defun rotate-frame-anticlockwise (&optional frame) + "Rotate windows arrangement 90 degrees anti-clockwise at FRAME. +Omitting FRAME means currently selected frame." + (interactive) + (transpose-frame-set-arrangement (transpose-frame-get-arrangement frame) frame + 'transpose 'flip) + (if (interactive-p) (recenter))) + +(provide 'transpose-frame) + +;;; +;;; transpose-frame.el ends here diff --git a/scripts/transpose-frame.elc b/scripts/transpose-frame.elc new file mode 100644 index 0000000000000000000000000000000000000000..6ccb965d93e18f1536a2ce6a80541706b7615fa2 GIT binary patch literal 4209 zcmd5J#RUW(^(PPTv45RT=Q!XYt_z3? z;U#&N=6o0mZ^egICi=$692xyVxzvjzFDKt#Uc2DM&=YX5;47XK^ zl-bPf-+ws3qDh~;&{xnGlDCm`Eg~P6*2~1izvyfVJOLsczPDJ!yyVD4C^=oraX(i*F&BJI7zfv zAgs!4&SMT12Sc@;gkWw#7@=h4Wxgk5`YzIi{MfCw+gJIL2!1YeH)+e1(J%JeGv{Ur ztlQV=n@Ye-WRIlK@uB>@+i6E>d{lg{7C z+WabOQ3_$SAQ$A-2&Y0-1-U0UYGs+8gUAw*R!Lkp*^{iM*Ggnsy|3#j>#GtJ2^N@L zg5jtwlo?>Br0whmaG|#_OWXSZTCHU5=4@@Ywwvwk<}u8U({waD)cz-+xUsQI&roy2 zT1BRGo4IiTSwv$0FXf(EWN`b=0Vqi%El&og3h`bpI*N$bc?mlkQ#IWA;a{dx#^LfYpM8IZhkf zkK{G4ms?B|S(eT%d8|vz?pG3XnQpp5H7&Jxr13D0@**er5v~(o%Ru&)@(xh$1s|rx zk_%n(IZ>`MB5Obg)!rKxB~J~5lBkBElBtHNk}5CD;@3_8m1s5AHifHU-Y#BHr8HJ$ z$681)b^C2-yn0ts#j^81~P@hNKr(?BGvC~UCfC!ug3~oDTO$_ zRLaUntwxpZD!rkQPDm)=kE4tTE*mE&5Z|cYDbh8b3iW>7VdagRU9)*!C=66aL~rC% zWV5}@$ppG~=uD^NdDXM^iE`5P2T_0WZ1(fxQRmlHR1|0#YD`uft)BR6A<(SLB&mj= z2sHZU9j$&#YgZ{j^EGIzC$qq`kQf$`>G@2i$Cf{3UX<*=4~on4mme7QJl=G8kKs`k zz2fM8g8R4<7f2{MK0G2Lytk(IfFw~|Vs>JYCo)Tl4x4aQ%?E(&1UX3u-8HVhhqi*Y zLx5!P1_6cQB;?B@Ag3h7;Rrz%U`t(gM$>tw5Mlg9LnmM;=(R zi$W4*tbafVDQajSJ0?XbRdZtN^1!Qjasi2HjNgUH$ps{Soce#BM-aN5gEPGF{ULRu zVUn*ar80K;J{|vCf>TQU+f=89)oK=;X__AhtCti}$0 \ No newline at end of file diff --git a/snippets/html-mode/html5 b/snippets/html-mode/html5 new file mode 100644 index 0000000..c7b4984 --- /dev/null +++ b/snippets/html-mode/html5 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: DOCTYPE html +# key: 5 +# -- + \ No newline at end of file diff --git a/snippets/latex-mode/figure b/snippets/latex-mode/figure new file mode 100644 index 0000000..447593c --- /dev/null +++ b/snippets/latex-mode/figure @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: figure +# key: fig +# -- +\begin{figure}[H] + \centering + \includegraphics[width=${1:1}\textwidth]{${2:path}} + \caption{\label{fig:${3:label}}$0} +\end{figure} diff --git a/snippets/latex-mode/hline b/snippets/latex-mode/hline new file mode 100644 index 0000000..d175dde --- /dev/null +++ b/snippets/latex-mode/hline @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: hline +# key: hl +# -- +\hline $0 \ No newline at end of file diff --git a/snippets/latex-mode/italic b/snippets/latex-mode/italic new file mode 100644 index 0000000..cf59093 --- /dev/null +++ b/snippets/latex-mode/italic @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: italic +# key: i +# -- +\textit{$1}$0 diff --git a/snippets/latex-mode/item b/snippets/latex-mode/item new file mode 100644 index 0000000..1354eb9 --- /dev/null +++ b/snippets/latex-mode/item @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: item +# key: - +# -- +\item {$0} \ No newline at end of file diff --git a/snippets/latex-mode/itemize b/snippets/latex-mode/itemize new file mode 100644 index 0000000..4c618cf --- /dev/null +++ b/snippets/latex-mode/itemize @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: itemize +# key: it +# -- +\begin{itemize} + \item $0 +\end{itemize} \ No newline at end of file diff --git a/snippets/latex-mode/subfigure b/snippets/latex-mode/subfigure new file mode 100644 index 0000000..02851e9 --- /dev/null +++ b/snippets/latex-mode/subfigure @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: subfigure +# key: sfig2 +# -- +\begin{figure}[H] + \centering + \begin{subfigure}{${1:0.45}\textwidth} + \includegraphics[width=${2:1}\textwidth]{${3:path}} + \end{subfigure} + \begin{subfigure}{$1\textwidth} + \includegraphics[width=$2\textwidth]{${4:path}} + \end{subfigure} +\end{figure} +$0 \ No newline at end of file diff --git a/snippets/latex-mode/tabularx b/snippets/latex-mode/tabularx new file mode 100644 index 0000000..db6190f --- /dev/null +++ b/snippets/latex-mode/tabularx @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: tabularx +# key: tabx +# -- +\begin{tabularx}{\textwidth}{${1:|c|}} + \hline + $0 + \hline +\end{tabularx} \ No newline at end of file diff --git a/snippets/lisp-mode/defignore b/snippets/lisp-mode/defignore new file mode 100644 index 0000000..c39b5d6 --- /dev/null +++ b/snippets/lisp-mode/defignore @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defignore +# key: defignore +# -- +(defignore ${1} (${2}) + ${3}) +$0 \ No newline at end of file diff --git a/snippets/lisp-mode/wah b/snippets/lisp-mode/wah new file mode 100644 index 0000000..437f156 --- /dev/null +++ b/snippets/lisp-mode/wah @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: wah +# key: w +# -- +(wah $0) \ No newline at end of file diff --git a/snippets/omnisharp-mode/get-set b/snippets/omnisharp-mode/get-set new file mode 100644 index 0000000..622786a --- /dev/null +++ b/snippets/omnisharp-mode/get-set @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: get-set +# key: gs +# -- +{ get; set; }$0