Remove numbered pkgs version

This commit is contained in:
Maciej 2020-09-24 19:19:02 +03:00
parent b2318b6ef0
commit 6defe997ae
Signed by: maciej
GPG key ID: 41D62D42D3B0D765
28 changed files with 85 additions and 84 deletions

168
pkg/base.el Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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