Move everything to folders.

* Remove not working function to create files with helm
* Add SQL language file
* Fine-tune emacs lisp completion settings
This commit is contained in:
Maciej Szlosarczyk 2017-10-29 00:52:41 +03:00
parent 5bd7066cde
commit 42ebb1394d
No known key found for this signature in database
GPG key ID: 94798DD7F02D70C1
13 changed files with 45 additions and 39 deletions

View file

@ -0,0 +1,40 @@
;; base16-not-harmonic-theme.el -- A base16 colorscheme
;;; Commentary:
;; Base16: (https://github.com/chriskempson/base16)
;; Based on harmonic-dark theme by Jannik Seibert (https://github.com/janniks)
;;; Code:
(require 'base16-theme)
(defvar base16-not-harmonic-colors
'(:base00 "#0b1c2c"
:base01 "#223b54"
:base02 "#2c3a47"
:base03 "#627e99"
:base04 "#aabcce"
:base05 "#cbd6e2"
:base06 "#e5ebf1"
:base07 "#f7f9fb"
:base08 "#bf8b56"
:base09 "#bfbf56"
:base0A "#8bbf56"
:base0B "#56bf8b"
:base0C "#568bbf"
:base0D "#9b78bc"
:base0E "#bf568b"
:base0F "#bf5656")
"All colors for Base16 Harmonic16 Dark are defined here.")
;; Define the theme
(deftheme base16-not-harmonic)
;; Add all the faces to the theme
(base16-theme-define 'base16-not-harmonic base16-not-harmonic-colors)
;; Mark the theme as provided
(provide-theme 'base16-not-harmonic)
(provide 'base16-not-harmonic-theme)
;;; base16-not-harmonic-theme.el ends here

209
config/behaviour.el Normal file
View file

@ -0,0 +1,209 @@
;;; behaviour.el --- how emacs should behave
;;; Commentary:
;;; Code:
;;;;;;;;;;;;;;;;;;;;;;;; Overall behaviour ;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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)
; Use Shells variables
(when (memq window-system '(mac ns))
(exec-path-from-shell-initialize))
;;; remove menu bar and icons
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; Open files in the existing emacs window
(setq ns-pop-up-frames nil)
; Enable diff highlights (useful for git)
(require 'diff-hl)
(global-diff-hl-mode)
(diff-hl-flydiff-mode)
(diff-hl-margin-mode)
(setq diff-hl-side 'right)
(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
; Add pgp binary
(add-to-list 'exec-path "/usr/local/bin")
; Enable line numbers and show cursors position
(global-linum-mode t)
(column-number-mode 1)
;; (global-hl-line-mode)
;; Turn off sounds
(setq ring-bell-function 'ignore)
;; Enable y/n answers to questions
(fset 'yes-or-no-p 'y-or-n-p)
;;;;;;;;;;;;;;;;;;;;;;;; code behaviour ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Add ruler at 80, do not wrap lines (can be overwritten later)
(require 'column-enforce-mode)
(add-hook 'prog-mode-hook 'column-enforce-mode)
;; (setq whitespace-space 'underline)
(toggle-truncate-lines t)
;; Show trailing whitespace and remove whitespace on save
(require 'whitespace)
(add-hook 'prog-mode-hook 'whitespace-mode)
(setq whitespace-style '(face trailing empty))
(add-hook 'before-save-hook 'delete-trailing-lines)
(add-hook 'before-save-hook 'whitespace-cleanup) ; Cleanup whitespace on save
;; Tabs are spaces and are general at 2. Guide indent with lines
(setq-default indent-tabs-mode nil)
; Insert newline on save
(setq require-final-newline t)
; Add code snippets as in sublime
(yas-global-mode t)
;; Match parenthasis (left-right)
(electric-pair-mode 1)
; Rainbow parenthesis
(require 'rainbow-delimiters)
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
; Show hex colors as colors
(require 'rainbow-mode)
(add-hook 'prog-mode-hook 'rainbow-mode)
;;; When pasting/writing over a selection, replace it.
(delete-selection-mode 1)
;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
;;;;;;;;;;;;;;;;;;;;;; indentation functions ;;;;;;;;;;;;;;;;;;;;;;
;;; NB! This does not work reliably, using the functions below
(defun set-width (columns)
"Set line length to X COLUMNS."
(interactive "NNumber of columns to use: ")
(setq column-enforce-column columns)
(column-enforce-mode -1)
(column-enforce-mode 1))
(defun set-width-99 ()
"Set line length to 99 columns."
(interactive)
(setq column-enforce-column 99)
(column-enforce-mode -1)
(column-enforce-mode 1))
(defun set-width-80 ()
"Set line length to 80 columns."
(interactive)
(setq column-enforce-column 80)
(column-enforce-mode -1)
(column-enforce-mode 1))
(defun set-width-79 ()
"Set line length to 79 columns."
(interactive)
(setq column-enforce-column 79)
(column-enforce-mode -1)
(column-enforce-mode 1))
(defun set-width-120 ()
"Set line length to 120 columns."
(interactive)
(setq column-enforce-column 120)
(column-enforce-mode -1)
(column-enforce-mode 1))
(defun set-indent (step)
"Set indentation to X STEPs."
(interactive "NNumber of columns for one step: ")
(setq tab-width step)
(setq tab-stop-list (number-sequence step 200 step)))
;;;;;;;;;;;;;;;;;;;;;;;; additional features ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Add completion
(require 'company)
(setq company-tooltip-limit 30)
(setq company-tooltip-minimum-width 40)
(setq company-idle-delay .1)
(setq company-begin-commands '(self-insert-command))
(setq company-selection-wrap-around t)
;; Set up default backends (overriden for specific languages)
(setq company-backends
'((company-files ; files & directory
company-keywords ; keywords
company-capf
company-yasnippet
)
(company-abbrev company-dabbrev)
))
;; Test, I do not know what it does yet.
(setq company-tooltip-align-annotations t)
;; Do not required match to continue typing
(setq company-require-match 'never)
; Use VIM mode
(require 'evil)
(require 'evil-leader)
(global-evil-leader-mode)
(evil-mode 1)
;; Add magit for git
(require 'evil-magit)
;; Additional configuration for flycheck.
(require 'flycheck)
(setq flycheck-highlighting-mode 'lines)
;;;;;;;;;;;;;;;;;;;;;;;; Projectile ;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'projectile)
(projectile-mode)
(defun projectile-regenerate-tags-if-exist ()
"Only regenerate tags if a tag file is present in the folder."
(interactive)
(let ((default-directory (projectile-project-root)))
(when (or (file-exists-p (expand-file-name "TAGS"))
(file-exists-p (expand-file-name projectile-tags-file-name)))
(projectile-regenerate-tags))))
(setq projectile-enable-caching t)
;; Always create a new tag table list and reload without asking
(setq tags-revert-without-query t)
(setq tags-add-tables nil)
;; Run the tags if project was changed
(add-hook 'projectile-after-switch-project-hook
'projectile-regenerate-tags-if-exist)
;; Show projectile lists by most recently active
(setq projectile-sort-order (quote recently-active))
(setq projectile-globally-ignored-directories
(append '("node_modules" ".svn") projectile-globally-ignored-directories))
(require 'helm-projectile)
;;; behaviour.el ends here

66
config/emacs Normal file
View file

@ -0,0 +1,66 @@
;; Added by Package.el. This must come before configurations of
;; installed packages. Don't delete this line. If you don't want it,
;; just comment it out by adding a semicolon to the start of the line.
;; You may delete these explanatory comments.
(package-initialize)
(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.
'(ansi-color-names-vector
["#ecf0f1" "#e74c3c" "#2ecc71" "#f1c40f" "#2492db" "#9b59b6" "#1abc9c" "#2c3e50"])
'(ansi-term-color-vector
[unspecified "#0b1c2c" "#bf8b56" "#56bf8b" "#8bbf56" "#9b78bc" "#bf568b" "#9b78bc" "#cbd6e2"] t)
'(background-color "#202020")
'(background-mode dark)
'(column-enforce-column 99)
'(cursor-color "#cccccc")
'(fci-rule-color "#f1c40f")
'(foreground-color "#cccccc")
'(hl-paren-background-colors (quote ("#2492db" "#95a5a6" nil)))
'(hl-paren-colors (quote ("#ecf0f1" "#ecf0f1" "#c0392b")))
'(package-selected-packages
(quote
(flymake-cursor flymake-ruby company-racer yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode pos-tip noctilux-theme neotree monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag)))
'(safe-local-variable-values (quote ((encoding . utf-8))))
'(sml/active-background-color "#34495e")
'(sml/active-foreground-color "#ecf0f1")
'(sml/inactive-background-color "#dfe4ea")
'(sml/inactive-foreground-color "#34495e")
'(vc-annotate-background "#ecf0f1")
'(vc-annotate-color-map
(quote
((30 . "#e74c3c")
(60 . "#c0392b")
(90 . "#e67e22")
(120 . "#d35400")
(150 . "#f1c40f")
(180 . "#d98c10")
(210 . "#2ecc71")
(240 . "#27ae60")
(270 . "#1abc9c")
(300 . "#16a085")
(330 . "#2492db")
(360 . "#0a74b9"))))
'(vc-annotate-very-old-color "#0a74b9"))
'(custom-safe-themes
(quote
("15348febfa2266c4def59a08ef2846f6032c0797f001d7b9148f30ace0d08bcf" default)))
'(package-selected-packages
(quote
(flatui-theme ##)))
'(safe-local-variable-values (quote ((encoding . utf-8))))
(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.
)
;;; Set performance
(setq gc-cons-threshold 8000000)
; load custom config files
(load "~/.emacs.d/init.elc")
;;; emacs ends here

64
config/functions.el Normal file
View file

@ -0,0 +1,64 @@
;;; Functions -- summary
;;; Commentary:
;;; Code:
(defun kill-other-buffers ()
"Kill all buffers except for the current one."
(interactive)
(mapc 'kill-buffer (delq (current-buffer) (buffer-list)))
)
(defun align-to-colon (begin end)
"Align region from BEGIN to END according to colon signs."
(interactive "r")
(align-regexp begin end
(rx ":" (group (zero-or-more (syntax whitespace))) ) 1 1))
;;;; Functions to update font size
(defun set-font-size (size)
"Set font SIZE to X px."
(interactive "NNew font size: ")
(set-face-attribute 'default nil :font (format "Hasklig %d" size))
(set-face-attribute 'mode-line nil :font (format "Hasklig %d" size))
(set-face-attribute 'helm-selection nil :font (format "Hasklig %d" size))
(set-face-attribute 'helm-header nil :font
(format "Hasklig %d"
(+ size 2))))
;;;; Functions related to compilation of files
(defun byte-compile-init-dir ()
"Byte-compile all your dotfiles."
(interactive)
(byte-recompile-directory user-emacs-directory 0))
(defun remove-elc-on-save ()
"If you're saving an elisp file, likely the .elc is no longer valid."
(add-hook 'after-save-hook
(lambda ()
(if (file-exists-p (concat buffer-file-name "c"))
(delete-file (concat buffer-file-name "c"))))
nil
t))
(defun call-in-windowed-mode (callee)
"Call function passed as CALLEE only if run in window mode."
(interactive)
(if (display-graphic-p)
(progn
(funcall callee))))
;; (call-in-windowed-mode 'byte-compile-init-dir)
(add-hook 'kill-emacs-hook 'byte-compile-init-dir)
(add-hook 'emacs-lisp-mode-hook 'remove-elc-on-save)
;; Always start in fullscreen
(defun toggle-fullscreen ()
"Toggle full screen."
(interactive)
(set-frame-parameter
nil 'fullscreen
(when (not (frame-parameter nil 'fullscreen)) 'fullboth)))
(toggle-fullscreen)
;;; functions.el ends here

71
config/key-bindings.el Normal file
View file

@ -0,0 +1,71 @@
;;; keybindings.el -- Summary
;;; Commentary:
;;; Code:
;;;;;;;;; Emacs bindings ;;;;;;;;;;;;;;;;;;;;;
(global-set-key (kbd "RET") 'newline)
;;;;;;;;; Mac binding (fix) ;;;;;;;;;;;;;;;;;;
(define-key global-map [home] 'beginning-of-line)
(define-key global-map [end] 'end-of-line)
(global-set-key (kbd "s-<right>") 'end-of-line)
(global-set-key (kbd "s-<left>") 'beginning-of-line)
(global-set-key (kbd "s-<up>") 'scroll-down) ; WTF is this reverse, I dunno
(global-set-key (kbd "s-<down>") 'scroll-up)
(require 'evil-leader)
;;;;;;;;; EVIL Leader ;;;;;;;;;;;;;;;;;;;;;;;;
(evil-leader/set-leader "<SPC>")
(evil-leader/set-key
"w" 'delete-window
"," 'previous-buffer
"." 'next-buffer
"k" 'kill-buffer-and-window
"rb" 'revert-buffer) ; Reload current file from disk
(evil-leader/set-key "hs" 'split-window-below)
(evil-leader/set-key "vs" 'split-window-right)
(evil-leader/set-key
"gk" 'windmove-up
"gj" 'windmove-down
"gl" 'windmove-right
"gh" 'windmove-left)
(evil-leader/set-key
"gs" 'magit-status
"gL" 'magit-log
"gco" 'magit-checkout)
(evil-leader/set-key "al" 'align-regexp)
(evil-leader/set-key "ir" 'indent-region)
(evil-leader/set-key "ac" 'align-to-colon)
(evil-leader/set-key "cl" 'evilnc-comment-or-uncomment-lines)
(evil-leader/set-key "ps" 'helm-projectile-switch-project)
(evil-leader/set-key "t" 'helm-projectile-find-file)
(evil-leader/set-key "pa" 'helm-projectile-ag)
(evil-leader/set-key "pc" 'projectile-invalidate-cache)
(evil-leader/set-key "b" 'helm-buffers-list)
(evil-leader/set-key "j;" 'dumb-jump-go); Jump to declaration
(evil-leader/set-key "jh" 'dumb-jump-back); Jump back from declaration
;; Dash integration
(require 'dash-at-point)
(evil-leader/set-key "d" 'dash-at-point)
(require 'evil)
;;; VIM insert mode state
(define-key evil-insert-state-map "\C-a" 'company-complete)
(define-key evil-insert-state-map "\C-q" 'company-yasnippet)
;;; The things below are experimental, need to be fixed
(define-key evil-insert-state-map "\M-." 'find-tag)
(define-key evil-insert-state-map "\M-*" 'pop-tag-mark)
;;; VIM browse mode things
(define-key evil-motion-state-map "\M-." 'find-tag)
(define-key evil-motion-state-map "\M-*" 'pop-tag-mark)
;;; key-bindings.el ends here

61
config/languages.el Normal file
View file

@ -0,0 +1,61 @@
;;; Languages -- summary
;;; Commentary:
;;; Code:
;;;; Major languages ;;;;
;;; Intial imports
(require 'company)
;; Imports
(load "~/.emacs.d/languages/ruby.elc")
(load "~/.emacs.d/languages/python.elc")
(load "~/.emacs.d/languages/elisp.elc")
(load "~/.emacs.d/languages/elixir.elc")
(load "~/.emacs.d/languages/rust.elc")
(load "~/.emacs.d/languages/web.elc")
(load "~/.emacs.d/languages/js.elc")
(load "~/.emacs.d/languages/sql.elc")
;;; Haskell
(defun haskell-mode-config ()
"Call haskell mode config."
(remove-hook 'ruby-mode-hook 'ruby-mode-config)
(remove-hook 'rust-mode-hook 'rust-mode-config)
(remove-hook 'emacs-lisp-mode-hook 'elisp-mode-config)
(remove-hook 'html-mode-hook 'web-mode-config)
(remove-hook 'elixir-mode-hook 'elixir-mode-config)
(set-indent 4))
(add-hook 'haskell-mode-hook 'haskell-mode-config)
(add-hook 'haskell-mode-hook 'flycheck-mode)
(add-hook 'haskell-mode-hook 'set-width-80)
;;; Java
(defun java-mode-config ()
"Setup editor for java."
(remove-hook 'ruby-mode-hook 'ruby-mode-config)
(remove-hook 'elixir-mode-hook 'elixir-mode-config)
(remove-hook 'emacs-lisp-mode-hook 'elisp-mode-config)
(remove-hook 'html-mode-hook 'web-mode-config)
(remove-hook 'haskell-mode-hook 'haskell-mode-config)
(remove-hook 'rust-mode-hook 'rust-mode-config)
(set-indent 2))
(add-hook 'rust-mode-hook 'java-mode-config)
(add-hook 'java-mode-hook 'flycheck-mode)
(add-hook 'java-mode-hook 'set-width-120)
;;;; Other things ;;;;;
;;; Javascript
(setq js-indent-level 2)
;; Markdown mode
(defun markdown-mode-config ()
"Setup markdown mode."
(set-indent 2))
(add-hook 'markdown-mode-hook 'markdown-mode-config)
(add-hook 'markdown-mode-hook 'set-width-80)
;;; languages.el ends here.

232
config/packages.el Normal file
View file

@ -0,0 +1,232 @@
;;; melpa.el -- summary
;;; Commentary:
;;; Put all the packages you want to install here.
;;; Code:
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(package-initialize)
(if (display-graphic-p) ; If GUI version
(progn
(package-refresh-contents))) ; Refresh only once, on startup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Behaviour
(unless (package-installed-p 'helm)
(package-install 'helm))
(unless (package-installed-p 'evil)
(package-install 'evil))
(unless (package-installed-p 'evil-leader)
(package-install 'evil-leader))
(unless (package-installed-p 'evil-nerd-commenter)
(package-install 'evil-nerd-commenter))
;; Ctags
(unless (package-installed-p 'etags-select)
(package-install 'etags-select))
;; Rainbow delimiters
(unless (package-installed-p 'rainbow-delimiters)
(package-install 'rainbow-delimiters))
;; Smart mode line
(unless (package-installed-p 'smart-mode-line)
(package-install 'smart-mode-line))
;; Show hex colors in UI
(unless (package-installed-p 'rainbow-mode)
(package-install 'rainbow-mode))
;; Indentation and line length
(unless (package-installed-p 'indent-guide)
(package-install 'indent-guide))
(unless (package-installed-p 'column-enforce-mode)
(package-install 'column-enforce-mode))
(unless (package-installed-p 'aggressive-indent)
(package-install 'aggressive-indent))
;; Window management
(unless (package-installed-p 'window-purpose)
(package-install 'window-purpose))
;; Dash integration
(unless (package-installed-p 'dash-at-point)
(package-install 'dash-at-point))
;; Project management
(unless (package-installed-p 'projectile)
(package-install 'projectile))
(unless (package-installed-p 'ag)
(package-install 'ag))
(unless (package-installed-p 'helm-projectile)
(package-install 'helm-projectile))
(unless (package-installed-p 'helm-ag)
(package-install 'helm-ag))
(unless (package-installed-p 'dumb-jump)
(package-install 'dumb-jump))
; Run stuff directly from shell
(unless (package-installed-p 'exec-path-from-shell)
(package-install 'exec-path-from-shell))
;; Git
(unless (package-installed-p 'magit)
(package-install 'magit))
(unless (package-installed-p 'diff-hl)
(package-install 'diff-hl))
(unless (package-installed-p 'evil-magit)
(package-install 'evil-magit))
;; Code quality and helpers
(unless (package-installed-p 'flycheck)
(package-install 'flycheck))
(unless (package-installed-p 'flymake)
(package-install 'flymake))
(unless (package-installed-p 'flymake-cursor)
(package-install 'flymake-cursor))
(unless (package-installed-p 'projectile)
(package-install 'projectile))
(unless (package-installed-p 'yasnippet)
(package-install 'yasnippet))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Themes
(unless (package-installed-p 'color-theme-approximate)
(package-install 'color-theme-approximate))
(unless (package-installed-p 'monokai-theme)
(package-install 'monokai-theme))
(unless (package-installed-p 'noctilux-theme)
(package-install 'noctilux-theme))
(unless (package-installed-p 'ujelly-theme)
(package-install 'ujelly-theme))
(unless (package-installed-p 'flatui-theme)
(package-install 'flatui-theme))
(unless (package-installed-p 'atom-one-dark-theme)
(package-install 'atom-one-dark-theme))
(unless (package-installed-p 'helm-themes)
(package-install 'helm-themes))
(unless (package-installed-p 'base16-theme)
(package-install 'base16-theme))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Languages and frameworks
;; Elixir
(unless (package-installed-p 'elixir-mode)
(package-install 'elixir-mode))
(unless (package-installed-p 'alchemist)
(package-install 'alchemist))
; Ruby
(unless (package-installed-p 'rvm)
(package-install 'rvm))
(unless (package-installed-p 'ruby-end)
(package-install 'ruby-end))
(unless (package-installed-p 'haml-mode)
(package-install 'haml-mode))
(unless (package-installed-p 'yaml-mode)
(package-install 'yaml-mode))
(unless (package-installed-p 'jade-mode)
(package-install 'jade-mode))
(unless (package-installed-p 'less-css-mode)
(package-install 'less-css-mode))
(unless (package-installed-p 'robe)
(package-install 'robe))
(unless (package-installed-p 'rspec-mode)
(package-install 'rspec-mode))
(unless (package-installed-p 'flymake-ruby)
(package-install 'flymake-ruby))
; Web mode for editing erb
(unless (package-installed-p 'web-mode)
(package-install 'web-mode))
; JSON prettifier
(unless (package-installed-p 'json-reformat)
(package-install 'json-reformat))
; Markdown helper
(unless (package-installed-p 'markdown-mode)
(package-install 'markdown-mode))
;; Docker
(unless (package-installed-p 'dockerfile-mode)
(package-install 'dockerfile-mode))
;; Jenkinsfile
(unless (package-installed-p 'groovy-mode)
(package-install 'groovy-mode))
;; Haskell
(unless (package-installed-p 'haskell-mode)
(package-install 'haskell-mode))
;; Scala
(unless (package-installed-p 'scala-mode)
(package-install 'scala-mode))
;; Rust
(unless (package-installed-p 'rust-mode)
(package-install 'rust-mode))
(unless (package-installed-p 'racer)
(package-install 'racer))
(unless (package-installed-p 'company-racer)
(package-install 'company-racer))
(unless (package-installed-p 'toml-mode)
(package-install 'toml-mode))
;; Python
(unless (package-installed-p 'elpy)
(package-install 'elpy))
(unless (package-installed-p 'company-jedi)
(package-install 'company-jedi))
(unless (package-installed-p 'pyenv-mode)
(package-install 'pyenv-mode))
;; Javascript
(unless (package-installed-p 'company-tern)
(package-install 'company-tern))
(unless (package-installed-p 'tide)
(package-install 'tide))
(unless (package-installed-p 'nvm)
(package-install 'nvm))
;;; packages.el ends here

18
config/spelling.el Normal file
View file

@ -0,0 +1,18 @@
;;; spelling.el -- summary
;;; Commentary:
;;; Code:
;; Disable meta on right alt (useful for Polish characters)
(setq ns-right-alternate-modifier nil)
(require 'ispell)
;; Highlight misspelled words
(setq ispell-program-name "aspell")
(setq ispell-extra-args
'("--run-together" "--run-together-limit=5" "--run-together-min=2"))
(add-hook 'prog-mode-hook 'flyspell-mode)
(provide 'spelling)
;;; spelling.el ends here

65
config/themes.el Normal file
View file

@ -0,0 +1,65 @@
;;; themes.el -- Summary
;;; Commentary:
;;; Code:
;; Use smart-mode-line
(require 'smart-mode-line)
(setq sml/no-confirm-load-theme t)
(sml/setup)
(sml/apply-theme 'respectful)
;; Display time on mode line
(setq display-time-format "%H:%M")
(display-time-mode t)
()
(load-theme 'flatui t t)
(load "~/.emacs.d/config/base16-not-harmonic-theme.el")
(load-theme 'base16-not-harmonic t t)
(load-theme 'base16-mexico-light t t)
(load-theme 'base16-unikitty-light t t)
(load-theme 'base16-summerfruit-light t t)
(defun base16-harmonic-custom ()
"Additional configuration for Base 16 theme."
(set-face-attribute 'linum nil :font "Hasklig 15"
:slant 'normal
:background "#2c3a47")
(set-face-attribute 'font-lock-comment-delimiter-face nil
:foreground "#aabcce")
(set-face-attribute 'mode-line nil :font "Hasklig 15")
(set-face-attribute 'fringe nil :background "#2c3a47"
:slant 'normal))
(defun base16-summerfruit-light-custom ()
"Additional configuration for Base16 theme."
(set-face-attribute 'mode-line nil :font "Hasklig 15")
(set-face-attribute 'linum nil :font "Hasklig 15"
:slant 'normal))
(require 'helm-themes)
(if (display-graphic-p)
(progn
(enable-theme 'base16-not-harmonic)
(base16-harmonic-custom))
(progn
(color-theme-approximate-on)
(enable-theme 'flatui)))
;; Set font face
(set-face-attribute 'default nil :font "Hasklig 15")
(set-face-attribute 'helm-selection nil :font "Hasklig 15")
(set-face-attribute 'helm-header nil :font "Hasklig 17")
;; Remove ugly black line
(set-face-attribute 'vertical-border nil :foreground
(face-attribute 'fringe :background))
;; Set fringe colors to default, so it does not bother you.
(set-face-attribute 'fringe nil
:foreground (face-foreground 'default)
:background (face-background 'default))
(provide 'themes)
;;; themes.el ends here

64
config/windows.el Normal file
View file

@ -0,0 +1,64 @@
;;; windows.el -- summary
;;; Commentary:
;;; Windows management things, mostly with purpose
;;; Code:
(require 'window-purpose)
(purpose-mode t)
;; Set everything to use code window
(add-to-list 'purpose-user-mode-purposes '(fundamental-mode . code))
;; Test
(add-to-list 'purpose-user-regexp-purposes
'("_spec\\.rb\\(<.*>\\)?$" . test)) ;; Rspec
(add-to-list 'purpose-user-regexp-purposes
'("_test\\.exs\\(<.*>\\)?$" . test)) ;; ExUnit
(add-to-list 'purpose-user-regexp-purposes
'("test_.*\\.py\\(<.*>\\)?$" . test)) ;; Pytest
(add-to-list 'purpose-user-regexp-purposes
'("tests.rs\\(<.*>\\)?$" . test)) ;; Rust tests
(add-to-list 'purpose-user-mode-purposes '(shell-mode . test))
(add-to-list 'purpose-user-mode-purposes '(magit-diff-mode . test))
;; Enumerate through all stuff.
;; Git things
(add-to-list 'purpose-user-regexp-purposes
'("COMMIT_EDITMSG\\(<.*>\\)?$" . code))
(add-to-list 'purpose-user-regexp-purposes
'("git-rebase-todo\\(<.*>\\)?$" . code))
(add-to-list 'purpose-user-mode-purposes '(diff-mode . code))
;; Programming files
(add-to-list 'purpose-user-mode-purposes '(ruby-mode . code))
(add-to-list 'purpose-user-mode-purposes '(elixir-mode . code))
(add-to-list 'purpose-user-mode-purposes '(rust-mode . code))
(add-to-list 'purpose-user-mode-purposes '(haskell-mode . code))
(add-to-list 'purpose-user-mode-purposes '(web-mode . code))
(add-to-list 'purpose-user-mode-purposes '(java-mode . code))
(add-to-list 'purpose-user-mode-purposes '(python-mode . code))
(add-to-list 'purpose-user-mode-purposes '(js-mode . code))
(add-to-list 'purpose-user-mode-purposes '(emacs-lisp-mode . code))
(add-to-list 'purpose-user-mode-purposes '(sql-mode . code))
;; Other files that fall into 'code'
(add-to-list 'purpose-user-mode-purposes '(xml-mode . code))
(add-to-list 'purpose-user-mode-purposes '(markdown-mode . code))
;; Tools
(add-to-list 'purpose-user-mode-purposes '(dired-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(magit-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(help-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(helm-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(compilation-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(etags-select-mode . tools))
(add-to-list 'purpose-user-mode-purposes '(reb-mode . tools)) ;; Regexp builder
(setq purpose-use-default-configuration nil)
(purpose-compile-user-configuration)
;; Load configuration by default
(if (display-graphic-p)
(progn
(purpose-load-window-layout "coding_with_magit")))
;;; windows.el ends here