Personalizzazioni per emacs

This commit is contained in:
Fabio Scotto di Santolo
2019-12-07 12:02:37 +01:00
parent 950b3dce24
commit 3a59d8b46a
116 changed files with 1341 additions and 36 deletions

32
.Xresources Normal file
View File

@@ -0,0 +1,32 @@
Xft.dpi: 96
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintmedium
URxvt.termName: rxvt
URxvt.depth: 32
URxvt.transparent: false
URxvt.font: xft:Fire Code:size=12
URxvt.scrollBar: false
## URxvt.iconFile: .rexim/icons/terminal-icon.png
URxvt*depth: 32
URxvt*foreground: #e4e4ef
URxvt*background: #181818
*color0: #2E3436
*color1: #a40000
*color2: #4E9A06
*color3: #C4A000
*color4: #3465A4
*color5: #75507B
*color6: #ce5c00
*color7: #babdb9
*color8: #555753
*color9: #EF2929
*color10: #8AE234
*color11: #FCE94F
*color12: #729FCF
*color13: #AD7FA8
*color14: #fcaf3e
*color15: #EEEEEC

113
.emacs
View File

@@ -1,42 +1,83 @@
(package-initialize) ;;; RCs
;; Aggiunge il repository melpa (package-initialize) ;Package.el won't shut up
(add-to-list 'package-archives ;without this line being
'("melpa" . "https://melpa.org/packages/")) ;specificaly here and not
;anywhere else ~_~
(load "~/.emacs.rc/rc.el")
;; Configurazione di Smex (load "~/.emacs.rc/misc-rc.el")
(global-set-key (kbd "M-x") 'smex) (load "~/.emacs.rc/appearance-rc.el")
(global-set-key (kbd "M-X") 'smex-major-mode-commands) (load "~/.emacs.rc/ido-smex-rc.el")
;; This is you old M-x (load "~/.emacs.rc/ccmode-rc.el")
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command) (load "~/.emacs.rc/paredit-rc.el")
(load "~/.emacs.rc/emacs-lisp-rc.el")
(load "~/.emacs.rc/haskell-mode-rc.el")
;;(load "~/.emacs.rc/whitespace-mode-rc.el")
(load "~/.emacs.rc/magit-rc.el")
(load "~/.emacs.rc/multiple-cursors-rc.el")
(load "~/.emacs.rc/openwith-rc.el")
(load "~/.emacs.rc/dired-rc.el")
(load "~/.emacs.rc/helm-rc.el")
(load "~/.emacs.rc/yasnippet-rc.el")
(load "~/.emacs.rc/rainbow-rc.el")
(load "~/.emacs.rc/word-wrap-rc.el")
(load "~/.emacs.rc/js2-mode-rc.el")
(load "~/.emacs.rc/nxml-mode-rc.el")
(load "~/.emacs.rc/tramp-rc.el")
(load "~/.emacs.rc/org-mode-rc.el")
(load "~/.emacs.rc/org-cliplink-rc.el")
(load "~/.emacs.rc/org-babel-rc.el")
(load "~/.emacs.rc/org-capture-rc.el")
(load "~/.emacs.rc/autocommit-rc.el")
(load "~/.emacs.rc/powershell-rc.el")
(load "~/.emacs.rc/eldoc-mode-rc.el")
(load "~/.emacs.rc/recentf-mode-rc.el")
(load "~/.emacs.rc/company-rc.el")
(load "~/.emacs.rc/tide-rc.el")
(load "~/.emacs.rc/editorconfig-rc.el")
(load "~/.emacs.rc/nasm-mode-rc.el")
(load "~/.emacs.rc/latex-mode-rc.el")
(load "~/.emacs.rc/agda2-mode-rc.el")
(load "~/.emacs.rc/move-text-rc.el")
;; Elimina lo screen allo startup (add-to-list 'auto-mode-alist '("\\.ebi\\'" . lisp-mode))
(setq inhibit-startup-screen t)
;; Elimina la menù bar ;;; Packages that don't require configuration
(menu-bar-mode 0) (rc/require
'scala-mode
;; Elimina la toolbar 'd-mode
(tool-bar-mode 0) 'yaml-mode
'glsl-mode
(ido-mode 1) 'tuareg
'lua-mode
;; Configura il font di default 'less-css-mode
(set-default-font "Fira Code-12") 'graphviz-dot-mode
'clojure-mode
(custom-set-variables 'cmake-mode
;; custom-set-variables was added by Custom. 'rust-mode
;; If you edit it by hand, you could mess it up, so be careful. 'csharp-mode
;; Your init file should contain only one such instance. 'nim-mode
;; If there is more than one, they won't work right. 'jinja2-mode
'(custom-enabled-themes (quote (wombat))) 'markdown-mode
'(package-selected-packages (quote (smex)))) 'purescript-mode
(custom-set-faces 'nix-mode
;; custom-set-faces was added by Custom. 'dockerfile-mode
;; If you edit it by hand, you could mess it up, so be careful. 'love-minor-mode
;; Your init file should contain only one such instance. 'toml-mode
;; If there is more than one, they won't work right. 'nginx-mode
'kotlin-mode
'go-mode
'php-mode
'racket-mode
'qml-mode
'ag
'hindent
'elpy
'typescript-mode
) )
;; Imposta il backup della configurazione (load "~/.emacs.shadow/shadow-rc.el" t)
(setq backup-directory-alist '(("." . "~/.emacs_saves")))
(setq custom-file "~/.emacs-custom.el")
(load custom-file)

64
.emacs-custom.el Normal file
View File

@@ -0,0 +1,64 @@
(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.
'(org-agenda-dim-blocked-tasks nil)
'(org-agenda-exporter-settings (quote ((org-agenda-tag-filter-preset (list "+personal")))))
'(org-cliplink-transport-implementation (quote url-el))
'(org-enforce-todo-dependencies nil)
'(org-modules
(quote
(org-bbdb org-bibtex org-docview org-gnus org-habit org-info org-irc org-mhe org-rmail org-w3m)))
'(org-refile-use-outline-path (quote file))
'(package-selected-packages
(quote
(wombat-theme darcula-theme darcula-theme-theme zeal-at-point yaml-mode xquery-mode uuidgen tuareg tt-mode toml-mode tide smex slime rtags rainbow-mode racket-mode racer qml-mode purescript-mode powershell picolisp-mode php-mode paredit pacmacs package-lint org-pomodoro org-cliplink openwith nsis-mode nodejs-repl nix-mode nim-mode nginx-mode neotree nasm-mode multiple-cursors morganey-mode markdown-mode magit love-minor-mode less-css-mode kotlin-mode js2-mode jira-markup-mode jinja2-mode jade-mode jabber ido-ubiquitous htmlize helm-ls-git helm-git-grep helm-cmd-t haskell-mode handlebars-mode gruber-darker-theme groovy-mode graphviz-dot-mode gradle-mode google-translate go-mode glsl-mode ggtags fsharp-mode flycheck-rust fixmee evil erlang ensime emojify elpy elm-mode elfeed editorconfig dropdown-list dockerfile-mode d-mode csv-nav csharp-mode crux cmake-mode clojure-mode cil-mode buffer-move bnfc batch-mode ag ack)))
'(safe-local-variable-values
(quote
((haskell-process-args-cabal-new-repl "--ghc-option=-ferror-spans" "--ghc-option=-Wno-missing-home-modules" "exe:HyperNerd")
(haskell-process-args-cabal-repl "--ghc-option=-ferror-spans" "--ghc-option=-Wno-missing-home-modules" "exe:poutro")
(haskell-process-args-cabal-repl "--ghc-option=-ferror-spans" "--ghc-option=-Wno-missing-home-modules" "exe:HyperNerd")
(fixmee-mode . t)
(eval progn
(auto-revert-mode 1)
(rc/autopull-changes)
(add-hook
(quote after-save-hook)
(quote rc/autocommit-changes)
nil
(quote make-it-local)))
(eval progn
(rc/autopull-changes)
(add-hook
(quote after-save-hook)
(quote rc/autocommit-changes)
nil
(quote make-it-local)))
(eval when
(eq system-type
(quote gnu/linux))
(rc/autopull-changes)
(add-hook
(quote after-save-hook)
(quote rc/autocommit-changes)
nil
(quote make-it-local)))
(eval rc/autocommit-dir-locals)
(eval when
(fboundp
(quote flymake-mode))
(flymake-mode 1))
(eval when
(fboundp
(quote rainbow-mode))
(rainbow-mode 1)))))
'(whitespace-style
(quote
(face tabs spaces trailing space-before-tab newline indentation empty space-after-tab space-mark tab-mark))))
(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.
)

0
.emacs.local/.gitkeep Normal file
View File

0
.emacs.rc/-exec Normal file
View File

0
.emacs.rc/-type Normal file
View File

View File

@@ -0,0 +1,3 @@
(when (executable-find "agda-mode")
(load-file (let ((coding-system-for-read 'utf-8))
(shell-command-to-string "agda-mode locate"))))

View File

@@ -0,0 +1,21 @@
;;; Fonts
(defun rc/get-default-font ()
(cond
((eq system-type 'windows-nt) "Consolas-13")
((eq system-type 'gnu/linux) "Fira Code-12")))
(add-to-list 'default-frame-alist `(font . ,(rc/get-default-font)))
(when (display-graphic-p)
(set-face-attribute 'fixed-pitch nil :family (rc/get-default-font)))
;;; GUI
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
(column-number-mode 1)
(show-paren-mode 1)
;;; Themes
(rc/require-theme 'darcula)

149
.emacs.rc/autocommit-rc.el Normal file
View File

@@ -0,0 +1,149 @@
;;; TODO(c3bdae31-4329-4217-98a0-743b9dcbb6d2): extract autocommit into a separate package
;;;
;;; Once e266bfaa-2a01-4881-9e7f-ce2c592f7cdd is done, I think we can do that.
(defvar rc/autocommit-local-locks
(make-hash-table :test 'equal))
(defun rc/file-truename-nilable (filename)
(when filename
(file-truename filename)))
(defun rc/autocommit--id ()
(let ((id (-> default-directory
(locate-dominating-file ".git")
(rc/file-truename-nilable))))
(when (not id)
(error "%s is not inside of a git repository" default-directory))
(unless (gethash id rc/autocommit-local-locks)
(puthash id nil rc/autocommit-local-locks))
id))
(defun rc/autocommit--get-lock (lock)
(-> (rc/autocommit--id)
(gethash rc/autocommit-local-locks)
(plist-get lock)))
(defun rc/autocommit--set-lock (lock value)
(puthash (rc/autocommit--id)
(-> (rc/autocommit--id)
(gethash rc/autocommit-local-locks)
(plist-put lock value))
rc/autocommit-local-locks))
(defun rc/autocommit--toggle-lock (lock)
(-> lock
(rc/autocommit--get-lock)
(not)
(rc/autocommit--set-lock)))
(defun rc/autocommit--create-dir-locals (file-name)
(write-region "((nil . ((eval . (rc/autocommit-dir-locals)))))"
nil file-name))
(defun rc/y-or-n-if (predicate question action)
(when (or (not (funcall predicate))
(y-or-n-p question))
(funcall action)))
;;; TODO(4229cf9a-4768-4f5e-aca1-865256c64a23): rc/autocommit-init-dir should modify dir locals file on AST level
;;;
;;; Right know it just overrides .dir-locals file on text level. I
;;; want it to
;;; - read .dir-locals,
;;; - parse the assoc list,
;;; - check if there is already autocommit stuff
;;; - add autocommit stuff to the assoc list if needed
;;; - and write it back to the file
;;;
;;; That will enable us with modifying dir locals that contains custom
;;; stuff unrelated to autocommit
(defun rc/autocommit-init-dir (&optional dir)
"Initialize autocommit folder."
(interactive "DAutocommit directory: ")
(let* ((autocommit-dir (if dir dir default-directory))
(file-name (concat autocommit-dir
dir-locals-file)))
(rc/y-or-n-if (-partial #'file-exists-p file-name)
(format "%s already exists. Replace it?" file-name)
(-partial #'rc/autocommit--create-dir-locals file-name))))
(defun rc/autocommit-dir-locals ()
"The function that has to be put into the .dir-locals.el file
of the autocommit folder as evaluated for any mode."
(interactive)
(auto-revert-mode 1)
(rc/autopull-changes)
(add-hook 'after-save-hook
'rc/autocommit-changes
nil 'make-it-local))
;;; TODO: rc/toggle-autocommit-offline doesn't work correctly
;;;
;;; It should toggle offline for all of the folders at once
(defun rc/toggle-autocommit-offline ()
"Toggle between OFFLINE and ONLINE modes.
Autocommit can be in two modes: OFFLINE and ONLINE. When ONLINE
rc/autocommit-changes does `git commit && git push'. When OFFLINE
rc/autocommit does only `git commit'."
(interactive)
(rc/autocommit--toggle-lock 'autocommit-offline)
(if (rc/autocommit--get-lock 'autocommit-offline)
(message "[OFFLINE] Autocommit Mode")
(message "[ONLINE] Autocommit Mode")))
(defun rc/autopull-changes ()
"Pull the recent changes.
Should be invoked once before working with the content under
autocommit. Usually put into the dir locals file."
(interactive)
(when (not (rc/autocommit--get-lock 'autopull-lock))
(rc/autocommit--set-lock 'autopull-lock t)
(if (rc/autocommit--get-lock 'autocommit-offline)
(message "[OFFLINE] NOT Syncing the Agenda")
(if (y-or-n-p (format "Sync the Agenda? [%s]" (rc/autocommit--id)))
(progn
(message (format "Syncing the Agenda [%s]" (rc/autocommit--id)))
(shell-command "git pull"))
(progn
(rc/autocommit--set-lock 'autocommit-offline t)
(message (format "[OFFLINE] NOT Syncing the Agenda [%s]"
(rc/autocommit--id))))))))
(defun rc/autocommit-changes ()
"Commit all of the changes under the autocommit folder.
Should be invoked each time a change is made. Usually put into
dir locals file."
(interactive)
(if (rc/autocommit--get-lock 'autocommit-lock)
(rc/autocommit--set-lock 'autocommit-changed t)
(rc/autocommit--set-lock 'autocommit-lock t)
(rc/autocommit--set-lock 'autocommit-changed nil)
(set-process-sentinel (rc/run-commit-process (rc/autocommit--id))
(-partial 'rc/autocommit-beat (rc/autocommit--id)))))
(defun rc/run-commit-process (autocommit-directory)
(let ((default-directory autocommit-directory))
(let ((autocommit-message (format-time-string "Autocommit %s")))
(start-process-shell-command
(format "Autocommit-%s" autocommit-directory)
(format "*Autocommit-%s*" autocommit-directory)
(format (if (rc/autocommit--get-lock 'autocommit-offline)
"git add -A && git commit -m \"%s\""
"git add -A && git commit -m \"%s\" && git push origin master")
autocommit-message)))))
(defun rc/autocommit-beat (autocommit-directory process event)
(let ((default-directory autocommit-directory))
(message (if (rc/autocommit--get-lock 'autocommit-offline)
"[OFFLINE] Autocommit: %s"
"Autocommit: %s")
event)
(if (not (rc/autocommit--get-lock 'autocommit-changed))
(rc/autocommit--set-lock 'autocommit-lock nil)
(rc/autocommit--set-lock 'autocommit-changed nil)
(set-process-sentinel (rc/run-commit-process autocommit-directory)
(-partial 'rc/autocommit-beat autocommit-directory)))))

10
.emacs.rc/ccmode-rc.el Normal file
View File

@@ -0,0 +1,10 @@
(setq-default c-basic-offset 4
c-default-style '((java-mode . "java")
(awk-mode . "awk")
(other . "bsd")))
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
(add-hook 'c-mode-hook (lambda ()
(interactive)
(c-toggle-comment-style -1)))

9
.emacs.rc/company-rc.el Normal file
View File

@@ -0,0 +1,9 @@
(rc/require 'company)
(require 'company)
(global-company-mode)
(add-hook 'tuareg-mode-hook
(lambda ()
(interactive)
(company-mode 0)))

5
.emacs.rc/dired-rc.el Normal file
View File

@@ -0,0 +1,5 @@
(require 'dired-x)
(setq dired-omit-files
(concat dired-omit-files "\\|^\\..+$"))
(setq-default dired-dwim-target t)
(setq dired-listing-switches "-alh")

View File

@@ -0,0 +1,2 @@
(rc/require 'editorconfig)
(editorconfig-mode 1)

View File

@@ -0,0 +1,5 @@
(defun rc/turn-on-eldoc-mode ()
(interactive)
(eldoc-mode 1))
(add-hook 'emacs-lisp-mode-hook 'rc/turn-on-eldoc-mode)

View File

@@ -0,0 +1,5 @@
(add-hook 'emacs-lisp-mode-hook
'(lambda ()
(local-set-key (kbd "C-c C-j")
(quote eval-print-last-sexp))))
(add-to-list 'auto-mode-alist '("Cask" . emacs-lisp-mode))

View File

@@ -0,0 +1,9 @@
(rc/require 'haskell-mode)
(setq haskell-process-type 'cabal-new-repl)
(setq haskell-process-log t)
(add-hook 'haskell-mode-hook 'haskell-indent-mode)
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'haskell-doc-mode)
(add-hook 'haskell-mode-hook 'hindent-mode)

10
.emacs.rc/helm-rc.el Normal file
View File

@@ -0,0 +1,10 @@
(rc/require 'helm 'helm-cmd-t 'helm-git-grep 'helm-ls-git)
(setq helm-ff-transformer-show-only-basename nil)
(global-set-key (kbd "C-c h t") 'helm-cmd-t)
(global-set-key (kbd "C-c h g g") 'helm-git-grep)
(global-set-key (kbd "C-c h g l") 'helm-ls-git-ls)
(global-set-key (kbd "C-c h f") 'helm-find)
(global-set-key (kbd "C-c h a") 'helm-org-agenda-files-headings)
(global-set-key (kbd "C-c h r") 'helm-recentf)

10
.emacs.rc/ido-smex-rc.el Normal file
View File

@@ -0,0 +1,10 @@
(rc/require 'smex 'ido-completing-read+)
(require 'ido-completing-read+)
(ido-mode 1)
(ido-everywhere 1)
(ido-ubiquitous-mode 1)
(global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)

7
.emacs.rc/js2-mode-rc.el Normal file
View File

@@ -0,0 +1,7 @@
(rc/require 'js2-mode)
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(add-to-list 'interpreter-mode-alist '("node" . js2-mode))
(add-to-list 'auto-mode-alist '("\\.jsx\\'" . js2-jsx-mode))
(add-to-list 'interpreter-mode-alist '("node". js2-jsx-mode))

View File

@@ -0,0 +1,4 @@
(add-hook 'tex-mode-hook (lambda ()
(interactive)
(add-to-list 'tex-verbatim-environments "code")))

9
.emacs.rc/magit-rc.el Normal file
View File

@@ -0,0 +1,9 @@
;; magit requres this lib, but it is not installed automatically on
;; Windows.
(rc/require 'cl-lib)
(rc/require 'magit)
(setq magit-auto-revert-mode nil)
(global-set-key (kbd "C-c m s") 'magit-status)
(global-set-key (kbd "C-c m l") 'magit-log)

136
.emacs.rc/misc-rc.el Normal file
View File

@@ -0,0 +1,136 @@
(require 'ansi-color)
(global-set-key (kbd "C-c p") 'find-file-at-point)
(global-set-key (kbd "C-c i m") 'imenu)
(setq-default inhibit-splash-screen t
make-backup-files nil
tab-width 4
indent-tabs-mode nil
compilation-scroll-output t
default-input-method "russian-computer"
visible-bell (equal system-type 'windows-nt))
(defun rc/colorize-compilation-buffer ()
(toggle-read-only)
(ansi-color-apply-on-region compilation-filter-start (point))
(toggle-read-only))
(add-hook 'compilation-filter-hook 'rc/colorize-compilation-buffer)
(defun rc/buffer-file-name ()
(if (equal major-mode 'dired-mode)
default-directory
(buffer-file-name)))
(defun rc/parent-directory (path)
(file-name-directory (directory-file-name path)))
(defun rc/root-anchor (path anchor)
(cond
((string= anchor "") nil)
((file-exists-p (concat (file-name-as-directory path) anchor)) path)
((string-equal path "/") nil)
(t (rc/root-anchor (rc/parent-directory path) anchor))))
(defun rc/clipboard-org-mode-file-link (anchor)
(interactive "sRoot anchor: ")
(let* ((root-dir (rc/root-anchor default-directory anchor))
(org-mode-file-link (format "file:%s::%d"
(if root-dir
(file-relative-name (rc/buffer-file-name) root-dir)
(rc/buffer-file-name))
(line-number-at-pos))))
(kill-new org-mode-file-link)
(message org-mode-file-link)))
;;; Taken from here:
;;; http://stackoverflow.com/questions/2416655/file-path-to-clipboard-in-emacs
(defun rc/put-file-name-on-clipboard ()
"Put the current file name on the clipboard"
(interactive)
(let ((filename (rc/buffer-file-name)))
(when filename
(kill-new filename)
(message filename))))
(defun rc/put-buffer-name-on-clipboard ()
"Put the current buffer name on the clipboard"
(interactive)
(kill-new (buffer-name))
(message (buffer-name)))
(defun rc/kill-autoloads-buffers ()
(interactive)
(dolist (buffer (buffer-list))
(let ((name (buffer-name buffer)))
(when (string-match-p "-autoloads.el" name)
(kill-buffer buffer)
(message "Killed autoloads buffer %s" name)))))
(defun rc/start-python-simple-http-server ()
(interactive)
(shell-command "python -m SimpleHTTPServer 3001 &"
"*Simple Python HTTP Server*"))
(global-set-key (kbd "C-x p s") 'rc/start-python-simple-http-server)
;;; Taken from here:
;;; http://blog.bookworm.at/2007/03/pretty-print-xml-with-emacs.html
(defun bf-pretty-print-xml-region (begin end)
"Pretty format XML markup in region. You need to have nxml-mode
http://www.emacswiki.org/cgi-bin/wiki/NxmlMode installed to do
this. The function inserts linebreaks to separate tags that have
nothing but whitespace between them. It then indents the markup
by using nxml's indentation rules."
(interactive "r")
(save-excursion
(nxml-mode)
(goto-char begin)
(while (search-forward-regexp "\>[ \\t]*\<" nil t)
(backward-char) (insert "\n"))
(indent-region begin end))
(message "Ah, much better!"))
;;; Stolen from http://ergoemacs.org/emacs/emacs_unfill-paragraph.html
(defun rc/unfill-paragraph ()
"Replace newline chars in current paragraph by single spaces.
This command does the inverse of `fill-paragraph'."
(interactive)
(let ((fill-column 90002000)) ; 90002000 is just random. you can use `most-positive-fixnum'
(fill-paragraph nil)))
(global-set-key (kbd "C-c M-q") 'rc/unfill-paragraph)
(defun rc/load-path-here ()
(interactive)
(add-to-list 'load-path default-directory))
(defconst rc/frame-transparency 85)
(defun rc/toggle-transparency ()
(interactive)
(let ((frame-alpha (frame-parameter nil 'alpha)))
(if (or (not frame-alpha)
(= (cadr frame-alpha) 100))
(set-frame-parameter nil 'alpha
`(,rc/frame-transparency
,rc/frame-transparency))
(set-frame-parameter nil 'alpha '(100 100)))))
(defun rc/duplicate-line ()
"Duplicate current line"
(interactive)
(move-beginning-of-line 1)
(kill-line)
(yank)
(newline)
(yank))
(global-set-key (kbd "C-,") 'rc/duplicate-line)
;;; A little hack which fixes a problem with meta key in fluxbox under VNC.
(setq x-alt-keysym 'meta)
(setq confirm-kill-emacs 'y-or-n-p)
(server-start)

View File

@@ -0,0 +1,3 @@
(rc/require 'move-text)
(global-set-key (kbd "M-p") 'move-text-up)
(global-set-key (kbd "M-n") 'move-text-down)

View File

@@ -0,0 +1,8 @@
(rc/require 'multiple-cursors)
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
(global-set-key (kbd "C-\"") 'mc/skip-to-next-like-this)
(global-set-key (kbd "C-:") 'mc/skip-to-previous-like-this)

View File

@@ -0,0 +1,2 @@
(rc/require 'nasm-mode)
(add-to-list 'auto-mode-alist '("\\.asm\\'" . nasm-mode))

View File

@@ -0,0 +1,3 @@
(add-to-list 'auto-mode-alist '("\\.html\\'" . nxml-mode))
(add-to-list 'auto-mode-alist '("\\.xsd\\'" . nxml-mode))
(add-to-list 'auto-mode-alist '("\\.ant\\'" . nxml-mode))

16
.emacs.rc/openwith-rc.el Normal file
View File

@@ -0,0 +1,16 @@
(rc/require 'openwith)
(openwith-mode 1)
(setq openwith-associations
(append
(when (eq system-type 'gnu/linux)
'(("\\.pdf\\'" "evince" (file))
("\\.djvu\\'" "evince" (file))))
'(("\\.docx\\'" "libreoffice" (file))
("\\.xlsx\\'" "libreoffice" (file))
("\\.doc\\'" "libreoffice" (file))
("\\.rtf\\'" "libreoffice" (file))
("\\.ods\\'" "libreoffice" (file))
("\\.mp3\\'" "vlc" (file)))))

View File

@@ -0,0 +1 @@
(require 'ob-python)

View File

@@ -0,0 +1,6 @@
(setq org-capture-templates
'(("p" "Capture task" entry (file "~/Documents/Agenda/Tasks.org")
"* TODO %?\n SCHEDULED: %t\n")
("K" "Cliplink capture task" entry (file "~/Documents/Agenda/Tasks.org")
"* TODO %(org-cliplink-capture) \n SCHEDULED: %t\n" :empty-lines 1)))
(define-key global-map "\C-cc" 'org-capture)

View File

@@ -0,0 +1,19 @@
(rc/require 'org-cliplink)
(when (eq system-type 'gnu/linux)
(custom-set-variables
'(org-cliplink-transport-implementation (quote url-el))))
(global-set-key (kbd "C-x p i") 'org-cliplink)
(defun rc/cliplink-task ()
(interactive)
(org-cliplink-retrieve-title
(substring-no-properties (current-kill 0))
'(lambda (url title)
(insert (if title
(concat "* TODO " title
"\n [[" url "][" title "]]")
(concat "* TODO " url
"\n [[" url "]]"))))))
(global-set-key (kbd "C-x p t") 'rc/cliplink-task)

59
.emacs.rc/org-mode-rc.el Normal file
View File

@@ -0,0 +1,59 @@
(global-set-key (kbd "C-x a") 'org-agenda)
(global-set-key (kbd "C-c C-x j") #'org-clock-jump-to-current-clock)
(setq org-agenda-files (list "~/Documents/Agenda/"))
(setq org-export-backends '(md))
(custom-set-variables
'(org-modules
(quote
(org-bbdb
org-bibtex
org-docview
org-gnus
org-habit
org-info
org-irc
org-mhe
org-rmail
org-w3m)))
'(org-enforce-todo-dependencies nil)
'(org-agenda-dim-blocked-tasks nil)
'(org-agenda-exporter-settings
(quote ((org-agenda-tag-filter-preset (list "+personal")))))
'(org-refile-use-outline-path (quote file)))
(defun rc/org-increment-move-counter ()
(interactive)
(defun default (x d)
(if x x d))
(let* ((point (point))
(move-counter-name "MOVE_COUNTER")
(move-counter-value (-> (org-entry-get point move-counter-name)
(default "0")
(string-to-number)
(1+))))
(org-entry-put point move-counter-name
(number-to-string move-counter-value)))
nil)
(defun rc/org-get-heading-name ()
(nth 4 (org-heading-components)))
(defun rc/org-kill-heading-name-save ()
(interactive)
(let ((heading-name (rc/org-get-heading-name)))
(kill-new heading-name)
(message "Kill \"%s\"" heading-name)))
(global-set-key (kbd "C-x p w") 'rc/org-kill-heading-name-save)
(setq org-agenda-custom-commands
'(("u" "Unscheduled" tags "+personal-SCHEDULED={.+}-DEADLINE={.+}/!+TODO"
((org-agenda-sorting-strategy '(priority-down))))
("p" "Personal" ((agenda "" ((org-agenda-tag-filter-preset (list "+personal"))))))
("w" "Work" ((agenda "" ((org-agenda-tag-filter-preset (list "+work"))))))
))

12
.emacs.rc/paredit-rc.el Normal file
View File

@@ -0,0 +1,12 @@
(rc/require 'paredit)
(defun rc/turn-on-paredit ()
(interactive)
(paredit-mode 1))
(add-hook 'emacs-lisp-mode-hook 'rc/turn-on-paredit)
(add-hook 'clojure-mode-hook 'rc/turn-on-paredit)
(add-hook 'lisp-mode-hook 'rc/turn-on-paredit)
(add-hook 'common-lisp-mode-hook 'rc/turn-on-paredit)
(add-hook 'scheme-mode-hook 'rc/turn-on-paredit)
(add-hook 'racket-mode-hook 'rc/turn-on-paredit)

View File

@@ -0,0 +1,3 @@
(rc/require 'powershell)
(add-to-list 'auto-mode-alist '("\\.ps1\\'" . powershell-mode))
(add-to-list 'auto-mode-alist '("\\.psm1\\'" . powershell-mode))

12
.emacs.rc/rainbow-rc.el Normal file
View File

@@ -0,0 +1,12 @@
(rc/require 'rainbow-mode)
(defun rc/turn-on-rainbow-mode ()
(interactive)
(rainbow-mode 1))
(add-hook 'html-mode-hook 'rc/turn-on-rainbow-mode)
(add-hook 'css-mode-hook 'rc/turn-on-rainbow-mode)
(add-hook 'js-mode-hook 'rc/turn-on-rainbow-mode)
(add-hook 'nxml-mode-hook 'rc/turn-on-rainbow-mode)
(add-hook 'conf-xdefaults-mode-hook 'rc/turn-on-rainbow-mode)
(add-hook 'typescript-mode-hook 'rc/turn-on-rainbow-mode)

68
.emacs.rc/rc.el Normal file
View File

@@ -0,0 +1,68 @@
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
;; (add-to-list 'package-archives
;; '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(defvar rc/package-contents-refreshed nil)
(defvar rc/required-packages nil)
(defun rc/package-refresh-contents-once ()
(when (not rc/package-contents-refreshed)
(setq rc/package-contents-refreshed t)
(package-refresh-contents)))
(defun rc/require-one-package (package)
(push package rc/required-packages)
(when (not (package-installed-p package))
(rc/package-refresh-contents-once)
(package-install package)))
(defun rc/require (&rest packages)
(dolist (package packages)
(rc/require-one-package package)))
(defun rc/require-theme (theme)
(let ((theme-package (->> theme
(symbol-name)
(funcall (-flip #'concat) "-theme")
(intern))))
(rc/require theme-package)
(load-theme theme t)))
(rc/require 'dash)
(require 'dash)
(rc/require 'dash-functional)
(require 'dash-functional)
(defun rc/package-reqs (package)
(let ((package-desc
(->> package-alist
(alist-get package)
(car))))
(when package-desc
(package-desc-reqs package-desc))))
(defun rc/package-dependencies (package)
(->> package
(rc/package-reqs)
(-map #'car)
(cons package)))
(defun rc/package-expand-dependencies (packages)
(->> packages
(-map #'rc/package-dependencies)
(-flatten)
(remove-duplicates)))
(defun rc/unused-packages ()
(let ((all-package (rc/package-expand-dependencies rc/required-packages)))
(->> package-alist
(-map #'car)
(-filter (-lambda (package)
(not (-contains? all-package package)))))))
(defun rc/remove-unused-packages ()
(interactive)
(message "Unused packages: %s" (rc/unused-packages)))

View File

@@ -0,0 +1,3 @@
(require 'recentf)
(recentf-mode 1)
(setq recentf-max-menu-items 25)

7
.emacs.rc/tide-rc.el Normal file
View File

@@ -0,0 +1,7 @@
(rc/require 'tide)
(defun rc/turn-on-tide ()
(interactive)
(tide-setup))
(add-hook 'typescript-mode-hook 'rc/turn-on-tide)

2
.emacs.rc/tramp-rc.el Normal file
View File

@@ -0,0 +1,2 @@
;;; http://stackoverflow.com/questions/13794433/how-to-disable-autosave-for-tramp-buffers-in-emacs
(setq tramp-auto-save-directory "/tmp")

View File

@@ -0,0 +1,32 @@
(defun rc/set-up-whitespace-handling ()
(interactive)
(whitespace-mode 1)
(add-to-list 'write-file-functions 'delete-trailing-whitespace))
(custom-set-variables
'(whitespace-style (quote (face tabs spaces trailing space-before-tab
newline indentation empty space-after-tab
space-mark tab-mark))))
(let ((whitespace-enabled-modes
'(
tuareg-mode-hook
c++-mode-hook
c-mode-hook
emacs-lisp-mode
java-mode-hook
lua-mode-hook
rust-mode-hook
scala-mode-hook
markdown-mode-hook
js2-mode-hook
haskell-mode-hook
python-mode-hook
erlang-mode-hook
asm-mode-hook
nasm-mode-hook
go-mode-hook
nim-mode-hook
)))
(dolist (mode whitespace-enabled-modes)
(add-hook mode 'rc/set-up-whitespace-handling)))

View File

@@ -0,0 +1,6 @@
(defun rc/enable-word-wrap ()
(interactive)
(toggle-word-wrap 1))
(add-hook 'markdown-mode-hook 'rc/enable-word-wrap)

View File

@@ -0,0 +1,8 @@
(rc/require 'yasnippet)
(require 'yasnippet)
(setq yas/triggers-in-field nil)
(setq yas-snippet-dirs '("~/.emacs.snippets/"))
(yas-global-mode 1)

View File

@@ -0,0 +1 @@
c-mode

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: catch (...) { ... }
# key: catch
# --
catch ($1) {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: for (...: ...) { ... }
# key: fore
# --
for ($1: $2) {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: namespace Namespace
# key: ns
# --
namespace ${1:Namespace} {
$0
} // namespace $1

View File

@@ -0,0 +1,10 @@
# -*- mode: snippet -*-
# name: #ifndef XXX; #define XXX; #endif
# key: once
# --
#ifndef ${1:`(upcase (replace-regexp-in-string "\\." "_" (file-name-nondirectory (buffer-file-name))))`_}
#define $1
$0
#endif // $1

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: qdebug
# key: qdebug
# --
qDebug() << "----------------------------------------";
qDebug() << "$0";
qDebug() << "----------------------------------------";

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: try { ... }
# key: try
# --
try {
$0
}

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: using namespace std;
# key: uns
# --
using namespace std;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: std::vector<T>
# key: vec
# --
std::vector<$1> $2;$0

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: { ... }
# key: {
# --
{
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: else if (...) { ... }
# key: elif
# --
else if (${1:condition}) {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: else { ... }
# key: else
# --
else {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: for (...; ...; ...) { ... }
# key: for
# --
for (${1:init}; ${2:condition}; ${3:increment}) {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: if (...) { ... }
# key: if
# --
if (${1:condition}) {
$0
}

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: while (...) { ... }
# key: while
# --
while (${1:condition}) {
$0
}

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: #include <...>
# key: inc
# --
#include <$0>

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: #include "..."
# key: incq
# --
#include "$0"

View File

@@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: int main(argc, argv) { ... }
# key: main
# --
int main(int argc, char *argv[])
{
$0
return 0;
}

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: background-color: ...
# key: bg
# --
background-color: #${1:DDD};

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: background-image: ...
# key: bgi
# --
background-image: url($1);

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: border size style color
# key: bor
# --
border: ${1:1px} ${2:solid} #${3:999};

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: clear: ...
# key: cl
# --
clear: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: display: block
# key: dispb
# --
display: block;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: display: inline
# key: dispi
# --
display: inline;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: display: none
# key: dispn
# --
display: none;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: font-family: ...
# key: ff
# --
font-family: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: font-size: ...
# key: fs
# --
font-size: ${12px};

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: margin: ...
# key: mar
# --
margin: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: margin-bottom: ...
# key: marb
# --
margin-bottom: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: margin-left: ...
# key: marl
# --
margin-left: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: margin-right: ...
# key: marr
# --
margin-right: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: margin-top: ...
# key: mart
# --
margin-top: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: padding: ...
# key: pad
# --
padding: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: padding-bottom: ...
# key: padb
# --
padding-bottom: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: padding-left: ...
# key: padl
# --
padding-left: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: padding-right: ...
# key: padr
# --
padding-right: $1;

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: padding-top: ...
# key: padt
# --
padding-top: $1;

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: immutable
# key: imm
# --
immutable $0

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: import <...>;
# key: imp
# --
import $0;

View File

@@ -0,0 +1,42 @@
# -*- mode: snippet -*-
# name: emacs lisp module skeleton
# key: emacs-lisp-module
# --
;;; ${1:`(file-name-nondirectory (buffer-file-name))`} --- ${2:Package Description} -*- lexical-binding: t -*-
;; Copyright (C) `(format-time-string "%Y" (current-time))` ${3:Alexey Kutepov <reximkut@gmail.com>}
;; Author: $3
;; URL: $4
;; Permission is hereby granted, free of charge, to any person
;; obtaining a copy of this software and associated documentation
;; files (the "Software"), to deal in the Software without
;; restriction, including without limitation the rights to use, copy,
;; modify, merge, publish, distribute, sublicense, and/or sell copies
;; of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:
;; The above copyright notice and this permission notice shall be
;; included in all copies or substantial portions of the Software.
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
;; SOFTWARE.
;;; Commentary:
;; $5
;;; Code:
$0
(provide '${6:`(file-name-sans-extension (file-name-nondirectory (buffer-file-name)))`})
;;; $1 ends here

View File

@@ -0,0 +1,41 @@
# -*- mode: snippet -*-
# name: pacmacs module skeleton
# key: pacmacs-module
# --
;;; ${1:`(file-name-nondirectory (buffer-file-name))`} --- Pacman for Emacs -*- lexical-binding: t -*-
;; Copyright (C) `(format-time-string "%Y" (current-time))` Codingteam
;; Author: Codingteam <codingteam@conference.jabber.ru>
;; Maintainer: Alexey Kutepov <reximkut@gmail.com>
;; URL: http://github.com/rexim/pacmacs.el
;; Permission is hereby granted, free of charge, to any person
;; obtaining a copy of this software and associated documentation
;; files (the "Software"), to deal in the Software without
;; restriction, including without limitation the rights to use, copy,
;; modify, merge, publish, distribute, sublicense, and/or sell copies
;; of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:
;; The above copyright notice and this permission notice shall be
;; included in all copies or substantial portions of the Software.
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
;; SOFTWARE.
;;; Commentary:
;; $2
;;; Code:
$0
;;; $1 ends here

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: public static
# key: ps
# --
public static

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: public static void
# key: psv
# --
public static void

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: item
# key: item
# --
${1:Item} {
$0
} // $1

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: \begin{environment} ... \end{environment}
# key: begin
# --
\begin{${1:environment}}
$0
\end{$1}

View File

@@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: todo
# key: todo
# type: command
# binding: C-x t
# --
(if (region-active-p)
(yas-expand-snippet "<!--TODO:-->`yas-selected-text`<!--$0-->")
(yas-expand-snippet "<!--TODO: $0 -->"))

View File

@@ -0,0 +1 @@
c-like-syntax

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: <body>...</body>
# key: body
# --
<body>
$0
</body>

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: <div class="...">\n...\n</div>
# key: div
# --
<div class="$1">
$0
</div>

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: <head>...</head>
# key: head
# --
<head>
$0
</head>

View File

@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: <html xmlns="...">...</html>
# key: html
# --
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${1:en}" lang="${2:en}">
$0
</html>

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: <link stylesheet="..." />
# key: link
# --
<link rel="${1:stylesheet}" href="${2:url}" type="${3:text/css}" media="${4:screen}" />

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: <meta http-equiv="..." content="..." />
# key: meta
# --
<meta http-equiv="${1:Content-Type}" content="${2:text/html; charset=UTF-8}" />

View File

@@ -0,0 +1,17 @@
# -*- mode: snippet -*-
# name: <project>...</project>
# key: pom
# --
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${1:me.rexim}</groupId>
<artifactId>${2:artifactId}</artifactId>
<version>${3:0.0.1-SNAPSHOT}</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

Some files were not shown because too many files have changed in this diff Show More