Remove numbered pkgs version
This commit is contained in:
parent
b2318b6ef0
commit
6defe997ae
28 changed files with 85 additions and 84 deletions
168
pkg/base.el
Normal file
168
pkg/base.el
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
;;; pkg/base.el --- summary
|
||||
|
||||
;; Author: Maciej Szlosarczyk
|
||||
;; Maintainer: Maciej Szlosarczyk
|
||||
;; Version: 0.1-snapshot
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; pkg/base defines basic packages and environment.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;;;;;;;; Other optimizations ;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;; Stolen from Doom Emacs. ;;;;;;;;;;;;;
|
||||
|
||||
;; Update emacs less often
|
||||
(setq idle-update-delay 1.0)
|
||||
|
||||
;; Disable bidirectional text rendering for a modest performance boost. I've set
|
||||
;; this to `nil' in the past, but the `bidi-display-reordering's docs say that
|
||||
;; is an undefined state and suggest this to be just as good:
|
||||
(setq-default bidi-display-reordering 'left-to-right
|
||||
bidi-paragraph-direction 'left-to-right)
|
||||
|
||||
;; Reduce rendering/line scan work for Emacs by not rendering cursors or regions
|
||||
;; in non-focused windows.
|
||||
(setq-default cursor-in-non-selected-windows nil)
|
||||
(setq highlight-nonselected-windows nil)
|
||||
|
||||
;; More performant rapid scrolling over unfontified regions. May cause brief
|
||||
;; spells of inaccurate syntax highlighting right after scrolling, which should
|
||||
;; quickly self-correct.
|
||||
(setq fast-but-imprecise-scrolling t)
|
||||
|
||||
;;;;;;;;; TRAMP configuration ;;;;;;;;;;;;;;;;
|
||||
(require 'tramp)
|
||||
(setq tramp-default-method "ssh")
|
||||
|
||||
;;;;;;;;; Emacs bindings ;;;;;;;;;;;;;;;;;;;;;
|
||||
(global-set-key (kbd "RET") 'newline)
|
||||
(define-key global-map [home] 'beginning-of-line)
|
||||
(define-key global-map [end] 'end-of-line)
|
||||
|
||||
;;; Helpful key bindings
|
||||
(global-set-key (kbd "<f1> b") 'describe-bindings) ;; List all key bindings
|
||||
;; there are.
|
||||
(global-set-key (kbd "C-c \\") 'split-window-right) ;; Split window to the right
|
||||
(global-set-key (kbd "C-c /") 'split-window-below) ;; Split window to the bottom
|
||||
|
||||
;; Move between windows key bindings
|
||||
(global-set-key (kbd "C-c <left>") 'windmove-left)
|
||||
(global-set-key (kbd "C-c <right>") 'windmove-right)
|
||||
(global-set-key (kbd "C-c <up>") 'windmove-up)
|
||||
(global-set-key (kbd "C-c <down>") 'windmove-down)
|
||||
|
||||
;; The same, but without using arrow keys
|
||||
(global-set-key (kbd "C-c [") 'windmove-left)
|
||||
(global-set-key (kbd "C-c ]") 'windmove-right)
|
||||
(global-set-key (kbd "C-c {") 'windmove-up)
|
||||
(global-set-key (kbd "C-c }") 'windmove-down)
|
||||
|
||||
;; Switch to previous and next buffer
|
||||
(global-set-key (kbd "C-c s <left>") 'previous-buffer)
|
||||
(global-set-key (kbd "C-c s <right>") 'next-buffer)
|
||||
|
||||
;; The same, but without arrow keys.
|
||||
(global-set-key (kbd "C-c s [") 'previous-buffer)
|
||||
(global-set-key (kbd "C-c s ]") 'next-buffer)
|
||||
|
||||
|
||||
;; Kill current buffer and window
|
||||
(global-set-key (kbd "C-c q") 'kill-buffer-and-window)
|
||||
|
||||
;; List buffers
|
||||
(global-set-key (kbd "C-c b") 'ibuffer)
|
||||
|
||||
;; Move buffers around with buffer keys
|
||||
(use-package buffer-move
|
||||
:ensure t
|
||||
:defer t
|
||||
:bind ("C-c m [" . buf-move-left)
|
||||
("C-c m ]" . buf-move-right)
|
||||
("C-c m {" . buf-move-up)
|
||||
("C-c m }" . buf-move-down))
|
||||
|
||||
|
||||
;; Revert without asking
|
||||
(defun revert-buffer-no-confirm ()
|
||||
"Revert buffer without confirmation."
|
||||
(interactive) (revert-buffer t t))
|
||||
|
||||
(global-set-key (kbd "C-c r") 'revert-buffer-no-confirm)
|
||||
|
||||
;; Create new terminal
|
||||
(global-set-key (kbd "<f12>") (lambda ()
|
||||
(interactive)
|
||||
(ansi-term "/bin/zsh" "ANSI-Term : Zsh")))
|
||||
|
||||
;#====================== Backup config #==============================
|
||||
(setq backup-directory-alist
|
||||
`((".*" . "~/.emacs_backups/auto-save-list")))
|
||||
(setq auto-save-file-name-transforms
|
||||
`((".*", "~/.emacs_backups/auto-save-list" t)))
|
||||
|
||||
(setq backup-by-copying t)
|
||||
(setq delete-old-versions t
|
||||
kept-new-versions 6
|
||||
kept-old-versions 2
|
||||
version-control t)
|
||||
|
||||
; Do not create .#foo.file lock files
|
||||
(setq create-lockfiles nil)
|
||||
|
||||
; Enable line numbers and show cursors position
|
||||
(global-display-line-numbers-mode t)
|
||||
(column-number-mode t)
|
||||
|
||||
;; Turn off sounds
|
||||
(setq ring-bell-function 'ignore)
|
||||
|
||||
;; Enable y/n answers to questions
|
||||
(fset 'yes-or-no-p 'y-or-n-p)
|
||||
|
||||
;; Only warn if a file is bigger than 50 MB when trying to open it
|
||||
(setq large-file-warning-threshold 50000000)
|
||||
|
||||
;; Numbers are arbitrary, but work on a large screen. Default is 160
|
||||
(setq split-width-threshold 180)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
|
||||
|
||||
;; Disable warning related to PATH on startup
|
||||
(defvar exec-path-from-shell-check-startup-files nil)
|
||||
|
||||
;; Allow to execute path from shell
|
||||
(use-package exec-path-from-shell
|
||||
:if (memq window-system '(mac ns))
|
||||
:ensure t
|
||||
:config (add-to-list 'exec-path "/usr/local/bin")
|
||||
(exec-path-from-shell-initialize))
|
||||
|
||||
;; Draw underline lower
|
||||
(setq x-underline-at-descent-line t)
|
||||
|
||||
;;; Get rid of bad parts of the windows
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(setq indicate-buffer-boundaries nil
|
||||
indicate-empty-lines nil)
|
||||
|
||||
;;;;;;;;;;;;;;;;; Record frequency of different commands. Review them later
|
||||
(use-package keyfreq
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
(keyfreq-mode t)
|
||||
(keyfreq-autosave-mode t)
|
||||
|
||||
;;;;;;;;;;;;;;;;; Show hints about key combinations
|
||||
(use-package which-key
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
(which-key-mode t)
|
||||
|
||||
(provide 'pkg/base)
|
||||
;;; base.el ends here
|
||||
75
pkg/company-yasnippet.el
Normal file
75
pkg/company-yasnippet.el
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
;;; pkg/company-yasnippet -- summary
|
||||
;;; Commentary:
|
||||
;;; Company completion framework configuration
|
||||
;;; Code:
|
||||
|
||||
(use-package yasnippet
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(use-package yasnippet-snippets
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(use-package company
|
||||
:commands (company-indent-or-complete-common company-yasnippet)
|
||||
:requires (yasnippet
|
||||
yasnippet-snippets)
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(global-company-mode t)
|
||||
(yas-global-mode t)
|
||||
|
||||
(setq-default
|
||||
company-minimum-prefix-length 2 ;; minimum prefix character number for auto complete.
|
||||
company-idle-delay 0.1
|
||||
company-echo-delay 0 ;;;; company-show-numbers t
|
||||
company-tooltip-align-annotations t ;; align annotations to the right tooltip border.
|
||||
company-tooltip-flip-when-above t
|
||||
company-tooltip-limit 10 ;; tooltip candidates max limit.
|
||||
company-tooltip-minimum 2 ;; minimum candidates limit.
|
||||
company-tooltip-minimum-width 10 ;; The minimum width of the tooltip's inner area.
|
||||
;; This doesn't include the margins and the scroll bar.
|
||||
company-tooltip-margin 2 ;; width of margin columns to show around the tooltip
|
||||
company-tooltip-offset-display 'lines ;; 'lines - how to show tooltip unshown candidates number.
|
||||
company-show-numbers nil ;; t: show quick-access numbers for the first ten candidates.
|
||||
company-selection-wrap-around t ;; loop over candidates
|
||||
company-dabbrev-other-buffers t ;; Only offer dabbrev from the same major mode
|
||||
company-dabbrev-downcase nil ;; Preserve case of candidates
|
||||
;; company-async-wait 0.03
|
||||
;; company-async-timeout 2
|
||||
)
|
||||
|
||||
;; Absolute defaults for company mode
|
||||
(setq company-backends
|
||||
'((company-files ; files & directory
|
||||
company-keywords ; keywords
|
||||
company-capf
|
||||
)
|
||||
(company-dabbrev company-abbrev)
|
||||
))
|
||||
|
||||
;; Use standard emacs next and previous bindings for navigating company
|
||||
;; suggestions
|
||||
(define-key company-active-map (kbd "C-p") 'company-select-previous-or-abort)
|
||||
(define-key company-active-map (kbd "C-n") 'company-select-next-or-abort)
|
||||
|
||||
(defun insert-space-and-complete ()
|
||||
"Insert space before trying to complete a section."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(insert " "))
|
||||
(company-indent-or-complete-common))
|
||||
|
||||
;;; Yasnippet configuration
|
||||
(define-key prog-mode-map (kbd "C-c y") 'company-yasnippet)
|
||||
(define-key prog-mode-map (kbd "<f13>") 'insert-space-and-complete)
|
||||
(define-key prog-mode-map (kbd "TAB") 'company-indent-or-complete-common)
|
||||
|
||||
(define-key text-mode-map (kbd "C-c y") 'company-yasnippet)
|
||||
(define-key text-mode-map (kbd "<f13>") 'insert-space-and-complete)
|
||||
(define-key text-mode-map (kbd "TAB") 'company-indent-or-complete-common)
|
||||
|
||||
(provide 'pkg/company-yasnippet)
|
||||
;;; company-yasnippet.el ends here
|
||||
58
pkg/ctags.el
Normal file
58
pkg/ctags.el
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
;;; pkg/ctags -- summary
|
||||
;;; Commentary:
|
||||
;;; Old and rudimental completion framework.
|
||||
;;; Code:
|
||||
(require 'projectile)
|
||||
|
||||
;; Do not mix ctags between folders
|
||||
(provide 'my-ctags-config)
|
||||
|
||||
(setq tags-add-tables nil)
|
||||
|
||||
(defvar ctags/refresh-command
|
||||
(format "ctags -e -R -f %sTAGS %s."
|
||||
default-directory default-directory))
|
||||
|
||||
;; Sentinel function for capturing ctags
|
||||
(defun ctags/process-callback (process event)
|
||||
"Show status of asynchronous ctags PROCESS after it send finished EVENT."
|
||||
(cond
|
||||
((string-equal event "finished\n")
|
||||
(message "Creating tag files...completed")
|
||||
(kill-buffer (get-buffer "*ctags*"))
|
||||
(visit-tags-table (format "%sTAGS" (projectile-project-root))))
|
||||
(t
|
||||
(message "Creating tags file...failed")
|
||||
(pop-to-buffer (get-buffer "*ctags*"))
|
||||
)))
|
||||
|
||||
(cl-defun ctags/refresh-ctags (&key silent)
|
||||
"Refresh ctags according to currently set command."
|
||||
(interactive)
|
||||
|
||||
;; Print message if not silent
|
||||
(when (not silent) (message "Starting ctags process..."))
|
||||
|
||||
;; Return if a version of the process is already running
|
||||
(when (not (get-process "ctags"))
|
||||
(start-process-shell-command "ctags" "*ctags*" ctags/refresh-command)
|
||||
(set-process-sentinel (get-process "ctags") 'ctags/process-callback)))
|
||||
|
||||
;; Ctags bindings
|
||||
(define-key prog-mode-map (kbd "C-c E") 'ctags/refresh-ctags)
|
||||
|
||||
;; Automatically update tags on save, but be silent about it.
|
||||
(defvar ctags/major-modes-to-update-on-save '())
|
||||
(defun ctags/update-tags-on-save ()
|
||||
"Update tags if current major mode is part of the list."
|
||||
(interactive)
|
||||
(when (member major-mode ctags/major-modes-to-update-on-save)
|
||||
(ctags/refresh-ctags :silent t)))
|
||||
|
||||
(defun ctags/update-this-mode-on-save (mode)
|
||||
"Update MODE on save."
|
||||
(add-to-list (make-local-variable 'ctags/major-modes-to-update-on-save) mode))
|
||||
|
||||
(add-hook 'after-save-hook 'ctags/update-tags-on-save)
|
||||
(provide 'pkg/ctags)
|
||||
;;; ctags.el ends here
|
||||
17
pkg/deft.el
Normal file
17
pkg/deft.el
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
;;; pkg/deft.el -- summary
|
||||
;;; Commentary:
|
||||
;;; Notational velocity, backed by OneDrive.
|
||||
;;; Code:
|
||||
|
||||
(use-package deft
|
||||
:ensure t
|
||||
:defer t
|
||||
:config (setq
|
||||
deft-directory (substitute-in-file-name "$HOME/OneDrive/deft")
|
||||
deft-default-extension "md"
|
||||
deft-auto-save-interval 30.0))
|
||||
|
||||
(global-set-key (kbd "C-c d d") 'deft)
|
||||
|
||||
(provide 'pkg/deft)
|
||||
;;; deft.el ends here
|
||||
13
pkg/flycheck.el
Normal file
13
pkg/flycheck.el
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
;;; pkg/flycheck -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
;; Use flycheck globally to check syntax and compile languages
|
||||
(use-package flycheck
|
||||
:commands flycheck-define-checker
|
||||
:ensure t
|
||||
:defer t
|
||||
:config (global-flycheck-mode t))
|
||||
|
||||
(provide 'pkg/flycheck)
|
||||
;;; flycheck.el ends here
|
||||
107
pkg/hydra.el
Normal file
107
pkg/hydra.el
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
;;; pkg/hydra -- summary
|
||||
;;; Commentary:
|
||||
;;; Global hydra definitions.
|
||||
;;; Code:
|
||||
(use-package hydra
|
||||
:ensure t
|
||||
:defer t
|
||||
:config
|
||||
(defhydra hydra-file-switcher-menu (:color teal :hint nil)
|
||||
"
|
||||
General Actions
|
||||
|
||||
^Ivy^ ^Projectile^ ^Magit^
|
||||
^^^^^^^^------------------------------------------------------------------------
|
||||
_a_: ag _s_: Switch project _m_: Git status
|
||||
_b_: Switch buffer _f_: Find file in project _C_: Git checkout
|
||||
_t_: Find file _g_: ag in current project _M_: Git blame
|
||||
_d_: Deft _c_: Invalidate cache
|
||||
^^ _n_: New project
|
||||
^^ _i_: ielm console
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("a" counsel-rg)
|
||||
("b" ibuffer)
|
||||
("t" counsel-find-file)
|
||||
("d" deft)
|
||||
("s" counsel-projectile-switch-project)
|
||||
("f" counsel-projectile-find-file)
|
||||
("g" counsel-projectile-rg)
|
||||
("c" projectile-invalidate-cache)
|
||||
("n" projectile-add-known-project)
|
||||
("i" ielm)
|
||||
("m" magit-status)
|
||||
("C" magit-checkout)
|
||||
("M" magit-blame))
|
||||
|
||||
(defhydra hydra-programming-menu (:color teal :hint nil)
|
||||
"
|
||||
Programming actions
|
||||
|
||||
^Code Manipulation^ ^Code Completion^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_c_: comment line _y_: yasnippet
|
||||
_r_: regex replace _m_: company
|
||||
_i_: indent region
|
||||
_a_: align regexp
|
||||
_e_: eval region
|
||||
_s_: swiper
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("c" comment-line)
|
||||
("r" vr/replace)
|
||||
("i" indent-region)
|
||||
("a" align-regexp)
|
||||
("e" eval-region)
|
||||
("s" swiper)
|
||||
|
||||
("y" company-yasnippet)
|
||||
("m" company-complete))
|
||||
|
||||
(defhydra hydra-window-menu (:color teal :hint nil)
|
||||
"
|
||||
Window actions
|
||||
|
||||
^Windows^ ^Move around^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_k_: kill buffer and window _<left>_: Move left
|
||||
_h_: split horizontally _<right>_: Move right
|
||||
_v_: split vertically _<up>_: Move up
|
||||
^^ _<down>_: Move down
|
||||
^^ _p_: Previous buffer
|
||||
^^ _n_: Next buffer
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("k" kill-buffer-and-window)
|
||||
("h" split-window-below)
|
||||
("v" split-window-right)
|
||||
|
||||
("<left>" windmove-left)
|
||||
("<right>" windmove-right)
|
||||
("<up>" windmove-up)
|
||||
("<down>" windmove-down)
|
||||
("p" previous-buffer)
|
||||
("n" next-buffer))
|
||||
|
||||
(defhydra hydra-language-context-menu (:color teal :hint nil)
|
||||
"
|
||||
Context actions
|
||||
|
||||
^Context^ ^Actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_r_: reload buffer
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("r" revert-buffer-no-confirm))
|
||||
|
||||
:bind ("C-c p" . hydra-file-switcher-menu/body)
|
||||
("C-c c" . hydra-programming-menu/body)
|
||||
("C-c w" . hydra-window-menu/body)
|
||||
("C-c l" . hydra-language-context-menu/body))
|
||||
|
||||
(provide 'pkg/hydra)
|
||||
;;; hydra.el ends here
|
||||
14
pkg/ispell.el
Normal file
14
pkg/ispell.el
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
;;; pkg/ispell -- summary
|
||||
;;; Commentary:
|
||||
;;; Highlight misspelled words
|
||||
;;; Code:
|
||||
|
||||
(use-package ispell
|
||||
:ensure t
|
||||
:config (setq ispell-program-name "aspell")
|
||||
(setq ispell-extra-args
|
||||
'("--run-together" "--run-together-limit=5" "--run-together-min=2"))
|
||||
:hook ((prog-mode text-mode) . flyspell-mode))
|
||||
|
||||
(provide 'pkg/ispell)
|
||||
;;; ispell.el ends here
|
||||
30
pkg/ivy.el
Normal file
30
pkg/ivy.el
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
;;; pkg/ivy -- summary
|
||||
;;; Commentary:
|
||||
;;; Counsel, Swiper and Ivy.
|
||||
;;; Code:
|
||||
|
||||
(use-package counsel :ensure t :defer t)
|
||||
(use-package swiper :ensure t :defer t)
|
||||
|
||||
(use-package ivy
|
||||
:requires (counsel swiper)
|
||||
:ensure t
|
||||
:defer t
|
||||
:config (setq ivy-use-virtual-buffers t ;; Display recent files in ivy-switch-buffer
|
||||
ivy-count-format "(%d of %d) " ;; Current candidate count style
|
||||
ivy-wrap t ;; Wrap around completions
|
||||
ivy-display-style 'fancy)) ;; Formatting style
|
||||
|
||||
(global-set-key (kbd "C-c a") 'counsel-rg)
|
||||
(global-set-key (kbd "C-c t") 'counsel-find-file)
|
||||
(global-set-key (kbd "C-c C-s") 'swiper) ;; Find things by regexp
|
||||
(global-set-key (kbd "M-x") 'counsel-M-x) ;; M-x on steroids
|
||||
|
||||
(global-set-key (kbd "<f1> f") 'counsel-describe-function)
|
||||
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
|
||||
(global-set-key (kbd "<f1> l") 'counsel-find-library)
|
||||
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
|
||||
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
|
||||
|
||||
(provide 'pkg/ivy)
|
||||
;;; ivy.el ends here
|
||||
32
pkg/lsp.el
Normal file
32
pkg/lsp.el
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
;;; pkg/lsp -- summary
|
||||
;;; Commentary:
|
||||
;;; Global Language Server Protocol Config
|
||||
;;; Code:
|
||||
|
||||
(use-package lsp-mode
|
||||
:ensure t
|
||||
:defer t
|
||||
:requires (company)
|
||||
:config (setq-default lsp-file-watch-threshold 10000
|
||||
lsp-restart 'auto-restart
|
||||
lsp-prefer-capf t
|
||||
lsp-completion-provider :capf
|
||||
lsp-server-trace nil
|
||||
read-process-output-max (* 1024 1024 2)
|
||||
lsp-enable-file-watchers nil)
|
||||
:hook ((typescript-mode . lsp-deferred)
|
||||
(elixir-mode . lsp)
|
||||
(js2-mode . lsp-deferred)))
|
||||
|
||||
(use-package lsp-ui
|
||||
:ensure t
|
||||
:requires (lsp-mode)
|
||||
:defer t)
|
||||
|
||||
(setq lsp-ui-doc-enable t
|
||||
lsp-ui-header t
|
||||
lsp-ui-doc-include-signature t
|
||||
lsp-log-io nil)
|
||||
|
||||
(provide 'pkg/lsp)
|
||||
;;; lsp.el ends here
|
||||
13
pkg/macros.el
Normal file
13
pkg/macros.el
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
;;; macros -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(defmacro -> (&rest body)
|
||||
"Clojure -> macro for BODY."
|
||||
(let ((result (pop body)))
|
||||
(dolist (form body result)
|
||||
(setq result (append (list (car form) result)
|
||||
(cdr form))))))
|
||||
|
||||
(provide 'pkg/macros)
|
||||
;;; macros ends here
|
||||
15
pkg/magit.el
Normal file
15
pkg/magit.el
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
;;; pkg/magit -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(use-package magit
|
||||
:ensure t
|
||||
:defer t
|
||||
:bind ("<f5> c" . magit-checkout)
|
||||
("<f5> b" . magit-blame-addition)
|
||||
("<f5> g" . magit-status)
|
||||
(:map magit-blame-mode-map
|
||||
("<f5> b" . 'magit-blame-quit)))
|
||||
|
||||
(provide 'pkg/magit)
|
||||
;;; magit.el ends here
|
||||
83
pkg/prog-mode.el
Normal file
83
pkg/prog-mode.el
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
;;; pkg/prog-mode -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
;;; Wrap long lines
|
||||
(toggle-truncate-lines t)
|
||||
|
||||
;;; When pasting/writing over a selection, replace it.
|
||||
(delete-selection-mode t)
|
||||
|
||||
;; When possible, show code documentation
|
||||
(global-eldoc-mode t)
|
||||
|
||||
;; Revert tag tables without asking
|
||||
(require 'etags)
|
||||
(setq tags-revert-without-query t)
|
||||
|
||||
;;; Show trailing whitespace and remove whitespace on save
|
||||
(use-package whitespace
|
||||
:commands whitespace-mode
|
||||
:ensure t
|
||||
:defer t
|
||||
:hook (((prog-mode text-mode conf-mode) . whitespace-mode)
|
||||
(before-save . whitespace-cleanup))
|
||||
:config
|
||||
(setq whitespace-style #'(face trailing empty newline)
|
||||
;;; Insert newline on save
|
||||
require-final-newline 't))
|
||||
|
||||
(setq-default indent-tabs-mode nil)
|
||||
|
||||
;; Use colorful, matching parens
|
||||
(use-package rainbow-delimiters
|
||||
:commands rainbow-delimiters-mode
|
||||
:ensure t
|
||||
:defer t
|
||||
:hook (((prog-mode text-mode) . rainbow-delimiters-mode))
|
||||
:init
|
||||
;;; Match parenthasis (left-right)
|
||||
(electric-pair-mode t)
|
||||
(show-paren-mode t))
|
||||
|
||||
;;; Show hex (#aaa) colors as colors
|
||||
(use-package rainbow-mode
|
||||
:commands rainbow-mode
|
||||
:ensure t
|
||||
:hook ((prog-mode text-mode) . rainbow-mode))
|
||||
|
||||
;; Dash integration
|
||||
(use-package dash-at-point
|
||||
:commands dash-at-point
|
||||
:ensure t
|
||||
:defer t
|
||||
:bind (:map prog-mode-map ("C-s C-d" . dash-at-point)
|
||||
:map text-mode-map ("C-s C-d" . dash-at-point))
|
||||
:config
|
||||
(add-to-list 'dash-at-point-mode-alist
|
||||
;; Configure lookup for Ruby mode
|
||||
'(enh-ruby-mode . "ruby,rubygems,rails")))
|
||||
|
||||
;; By default, use 2 spaces for indentation
|
||||
(setq tab-width 2)
|
||||
(setq tab-stop-list (number-sequence tab-width 200 tab-width))
|
||||
|
||||
;; Ensure indentation in steps:
|
||||
(defun set-indent (step)
|
||||
"Set indentation to X STEPs."
|
||||
(interactive "NNumber of columns for one step: ")
|
||||
(setq-local tab-width step)
|
||||
(setq-local tab-stop-list (number-sequence step 200 step)))
|
||||
|
||||
(use-package column-enforce-mode
|
||||
:ensure t
|
||||
:defer t
|
||||
:config (global-column-enforce-mode t))
|
||||
|
||||
;; Vim-like regex replace with preview in buffer.
|
||||
(use-package visual-regexp
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(provide 'pkg/prog-mode)
|
||||
;;; prog-mode ends here
|
||||
24
pkg/projectile.el
Normal file
24
pkg/projectile.el
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
;;; pkg/projectile -- summary
|
||||
;;; Commentary:
|
||||
;;; Project management based on git repos
|
||||
;;; Code:
|
||||
|
||||
(use-package counsel-projectile :ensure t :defer t)
|
||||
|
||||
(use-package projectile
|
||||
:ensure t
|
||||
:requires (counsel counsel-projectile)
|
||||
:config
|
||||
(setq-default projectile-completion-system 'ivy ;; Use ivy as completion system
|
||||
projectile-enable-caching t ;; Cache project files
|
||||
projectile-file-exists-local-cache-expire (* 3 60) ;; keep cache for 3 minutes
|
||||
projectile-sort-order (quote recently-active) ;; Order by recently active projects
|
||||
projectile-globally-ignored-directories
|
||||
(append '("node_modules" ".svn" "_build" "tmp" "log") projectile-globally-ignored-directories)
|
||||
;; Add certain folders to ignored
|
||||
))
|
||||
|
||||
(projectile-mode t)
|
||||
|
||||
(provide 'pkg/projectile)
|
||||
;;; projectile.el ends here
|
||||
66
pkg/sys-specific.el
Normal file
66
pkg/sys-specific.el
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
;;; sys-specific -- summary
|
||||
;;; Commentary:
|
||||
;;; Make Emacs play nicer with specific operating systems
|
||||
;;; Code:
|
||||
|
||||
(defconst IS-MAC (eq system-type 'darwin))
|
||||
(defconst IS-BSD (eq system-type 'berkeley-unix))
|
||||
|
||||
;;;;;;;;; Mac-specific config ;;;;;;;;;;;;;;;;;;;;;
|
||||
(if IS-MAC
|
||||
(progn
|
||||
(setq mac-option-modifier 'meta)
|
||||
(setq mac-command-modifier 'hyper)
|
||||
|
||||
(defun mac-switch-meta nil
|
||||
"Switch meta between Option and Command."
|
||||
(interactive)
|
||||
(if (eq mac-option-modifier nil)
|
||||
(progn
|
||||
(setq mac-option-modifier 'meta)
|
||||
(setq mac-command-modifier 'hyper))
|
||||
(progn
|
||||
(setq mac-option-modifier nil)
|
||||
(setq mac-command-modifier 'meta))))
|
||||
|
||||
;;;;;;;;; Mac binding (fix) ;;;;;;;;;;;;;;;;;;
|
||||
(global-set-key (kbd "H-<right>") 'end-of-line)
|
||||
(global-set-key (kbd "H-<left>") 'beginning-of-line)
|
||||
(global-set-key (kbd "H-<up>") 'scroll-down) ; WTF is this reverse, I dunno
|
||||
(global-set-key (kbd "H-<down>") 'scroll-up)
|
||||
|
||||
(global-set-key [(hyper a)] 'mark-whole-buffer)
|
||||
(global-set-key [(hyper v)] 'yank)
|
||||
(global-set-key [(hyper x)] 'kill-region)
|
||||
(global-set-key [(hyper c)] 'kill-ring-save)
|
||||
(global-set-key [(hyper s)] 'save-buffer)
|
||||
(global-set-key [(hyper l)] 'goto-line)
|
||||
(global-set-key [(hyper w)]
|
||||
(lambda () (interactive) (delete-window)))
|
||||
(global-set-key [(hyper z)] 'undo)
|
||||
(global-set-key [(hyper q)] 'kill-emacs)
|
||||
|
||||
;; Disable meta on right alt (useful for Polish characters)
|
||||
(setq mac-right-option-modifier nil)))
|
||||
|
||||
;;;;;;;;; BSD-specific config ;;;;;;;;;;;;;;;;;;;;;
|
||||
(if IS-BSD
|
||||
(progn
|
||||
(global-set-key (kbd "A-<right>") 'end-of-line)
|
||||
(global-set-key (kbd "A-<left>") 'beginning-of-line)
|
||||
(global-set-key (kbd "A-<up>") 'scroll-down) ; WTF is this reverse, I dunno
|
||||
(global-set-key (kbd "A-<down>") 'scroll-up)
|
||||
|
||||
(global-set-key (kbd "A-a") 'mark-whole-buffer)
|
||||
(global-set-key (kbd "A-v") 'yank)
|
||||
(global-set-key (kbd "A-x") 'kill-region)
|
||||
(global-set-key (kbd "A-c") 'kill-ring-save)
|
||||
(global-set-key (kbd "A-s") 'save-buffer)
|
||||
(global-set-key (kbd "A-l") 'goto-line)
|
||||
(global-set-key (kbd "A-w")
|
||||
(lambda () (interactive) (delete-window)))
|
||||
(global-set-key (kbd "A-z") 'undo)
|
||||
(global-set-key (kbd "A-q") 'kill-emacs)))
|
||||
|
||||
(provide 'pkg/sys-specific)
|
||||
;;; sys-specific.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue