| ;;; init.el --- Emacs configuration |
| |
| ;; Copyright (C) 2019 Luigi Santivetti |
| |
| ;; Author: Luigi Santivetti <luigi.santivetti@gmail.com> |
| |
| ;; This program is free software. You can redistribute it and/or modify it under |
| ;; the terms of the GPL, v3. |
| ;; |
| ;; This program is distributed in the hope that it will be useful, but WITHOUT |
| ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| ;; FOR A PARTICULAR PURPOSE. |
| ;; |
| ;; See http://www.wtfpl.net/. |
| |
| ;;; Commentary: |
| |
| ;; Faces are manually edited and vaguely recall SublimeText, I find it balanced. |
| ;; This configuration file works for me, but I DO NOT KNOW lisp, when you find |
| ;; any problem let me know the fix :P - thanks. |
| |
| ;;; Code: |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Debian Stretch Emacs default version |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (when (< (string-to-number (concat |
| (number-to-string emacs-major-version) |
| "." |
| (number-to-string emacs-minor-version))) 24.4) |
| (error "Version >= 24.5 is required.")) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Install packages |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (require 'package) |
| (package-initialize t) |
| |
| (add-to-list 'package-archives |
| '("melpa" . "https://melpa.org/packages/") t) |
| (add-to-list 'package-archives |
| '("gnu" . "https://elpa.gnu.org/packages/")) |
| |
| (package-initialize) |
| |
| (setq package-selected-packages |
| '(diff-hl |
| multiple-cursors |
| smooth-scroll |
| markdown-mode |
| smart-mode-line-powerline-theme |
| rainbow-delimiters |
| nlinum)) |
| |
| (unless package-archive-contents |
| (package-refresh-contents)) |
| |
| (dolist (package package-selected-packages) |
| (unless (package-installed-p package) |
| (message "Missing packages detected, please wait...") |
| (package-install package))) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Custom set variables |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (custom-set-variables |
| '(column-number-mode t) |
| '(cua-mode t nil (cua-base)) |
| '(custom-enabled-themes (quote (smart-mode-line-powerline))) |
| '(custom-safe-themes |
| (quote |
| ("84d2f9eeb3f82d619ca4bfffe5f157282f4779732f48a5ac1484d94d5ff5b279" default))) |
| '(fill-column 80) |
| '(global-hl-line-mode t) |
| '(nlinum-highlight-current-line t) |
| '(global-nlinum-mode t) |
| '(inhibit-startup-screen t) |
| '(show-paren-mode t) |
| '(tool-bar-mode nil)) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Custom set faces |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (custom-set-faces |
| '(default ((t (:background "#343D46" :foreground "#D8DEE9" :slant normal |
| :weight normal :width normal :foundry "adobe" |
| :family "Source Code Variable")))) |
| '(font-lock-comment-face ((t (:background "#343D46" :foreground "#848B97")))) |
| '(fringe ((t (:background "#343D46")))) |
| '(hl-line ((t (:background "#2C3133" :weight bold)))) |
| '(nlinum-current-line ((t (:background "#2C3133" :foreground "white" |
| :weight bold :height 80)))) |
| '(nlinum ((t (:slant normal :width ultra-condensed :foreground "#848B97")))) |
| '(mode-line ((t (:background "#4E5A65" :foreground "#D8DEE9" :box nil)))) |
| '(mode-line-buffer-id-inactive ((t (:inherit mode-line-buffer-id |
| :background "#757B81" |
| :foreground "#D8DEE9")))) |
| '(mode-line-highlight ((t (:box (:line-width 2 :color "#4E5A65" |
| :style released-button))))) |
| '(mode-line-inactive ((t (:background "#4E5A65" :foreground "#4E5A65" |
| :box nil)))) |
| '(powerline-active1 ((t (:inherit sml/global :background "#4E5A65" |
| :foreground "#D8DEE9")))) |
| '(powerline-active2 ((t (:inherit sml/global :background "#757B81" |
| :foreground "#D8DEE9")))) |
| '(powerline-inactive1 ((t (:inherit mode-line-inactive |
| :background "#4E5A65")))) |
| '(powerline-inactive2 ((t (:inherit mode-line-inactive |
| :background "#4E5A65")))) |
| '(rainbow-delimiters-depth-1-face ((t (:foreground "dark orange")))) |
| '(rainbow-delimiters-depth-2-face ((t (:foreground "deep pink")))) |
| '(rainbow-delimiters-depth-3-face ((t (:foreground "chartreuse")))) |
| '(rainbow-delimiters-depth-4-face ((t (:foreground "deep sky blue")))) |
| '(rainbow-delimiters-depth-5-face ((t (:foreground "yellow")))) |
| '(rainbow-delimiters-depth-6-face ((t (:foreground "orchid")))) |
| '(rainbow-delimiters-depth-7-face ((t (:foreground "spring green")))) |
| '(rainbow-delimiters-depth-8-face ((t (:foreground "sienna1")))) |
| '(region ((t (:background "#4E5A65" :foreground "#D8DEE9")))) |
| '(sml/col-number ((t (:inherit sml/global :background "#4E5A65" |
| :foreground "white" :weight bold)))) |
| '(sml/filename ((t (:inherit sml/global :background "#4E5A65" |
| :foreground "black")))) |
| '(sml/global ((t (:background "#4E5A65" :foreground "#D8DEE9")))) |
| '(sml/line-number ((t (:inherit sml/global :background "#4E5A65" |
| :foreground "White" :weight bold)))) |
| '(sml/modes ((t (:inherit sml/global :background "#757B81" |
| :foreground "Black")))) |
| '(sml/mule-info ((t (:inherit sml/global :background "#4E5A65")))) |
| '(sml/name-filling ((t (:inherit sml/prefix :background "#757B81" |
| :weight normal)))) |
| '(sml/not-modified ((t (:inherit sml/global :background "#4E5A65")))) |
| '(sml/numbers-separator ((t (:inherit sml/col-number :background "#4E5A65")))) |
| '(sml/position-percentage ((t (:inherit sml/prefix :background "#757B81" |
| :foreground "orange" :weight normal)))) |
| '(sml/prefix ((t (:inherit sml/global :background "#4E5A65" |
| :foreground "orange")))) |
| '(sml/process ((t (:inherit sml/prefix :background "#757B81")))) |
| '(sml/remote ((t (:inherit sml/global :background "#4E5A65")))) |
| '(sml/time ((t (:inherit sml/global :background "black" |
| :foreground "dark orange")))) |
| '(sml/vc ((t (:inherit sml/git :background "#757B81" :foreground "#0000aa")))) |
| '(sml/vc-edited ((t (:inherit sml/prefix :background "#757B81" |
| :foreground "#330000"))))) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Smoother scroll |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time |
| (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling |
| (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse |
| (setq scroll-step 1) ;; keyboard scroll one line at a time |
| (setq margin 1) ;; keyboard scroll one line at a time |
| (require 'smooth-scroll) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Buffer list cleanup |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (add-hook 'kill-buffer-hook |
| (lambda () |
| (setq buffer-name-history |
| (delete (buffer-name) buffer-name-history)))) |
| (setq history-delete-duplicates t) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Rainbow delimiters |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (add-hook 'prog-mode-hook #'rainbow-delimiters-mode) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Powerline theme |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (setq powerline-default-separator 'arrow) |
| (setq sml/theme 'powerline) |
| (require 'smart-mode-line) |
| (sml/setup) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Fringe |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (fringe-mode '(10 . 0)) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Line number format |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (setq nlinum-format "%5.5s") |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Highlight matching bracket |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (show-paren-mode 1) |
| (setq show-paren-delay 0) |
| (require 'paren) |
| (set-face-background 'show-paren-match (face-background 'default)) |
| (set-face-foreground 'show-paren-match "#def") |
| (set-face-attribute 'show-paren-match nil :weight 'extra-bold) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Custom bash mode, thanks gker |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (defun gker-setup-sh-mode () |
| "My own personal preferences for `sh-mode'. |
| |
| This is a custom function that sets up the parameters I usually |
| prefer for `sh-mode'. It is automatically added to |
| `sh-mode-hook', but is can also be called interactively." |
| (interactive) |
| (setq sh-basic-offset 4 |
| sh-indentation 4 |
| tab-width 4)) |
| (add-hook 'sh-mode-hook 'gker-setup-sh-mode) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Git diff hl |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (require 'diff-hl) |
| (global-diff-hl-mode 1) |
| (diff-hl-flydiff-mode 1) |
| (add-hook 'dired-mode-hook 'diff-hl-dired-mode) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Multiple cursors |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (require 'multiple-cursors) |
| (global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) |
| (global-set-key (kbd "M-<down>") 'mc/mark-next-like-this) |
| (global-set-key (kbd "M-<up>") 'mc/mark-previous-like-this) |
| (global-set-key (kbd "M-C-<down>") 'mc/mark-all-like-this) |
| (global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Disable beep |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (setq ring-bell-function 'ignore) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Stop spamming files |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (setq make-backup-files nil) ; stop creating backup~ files |
| (setq auto-save-default nil) ; stop creating #autosave# files |
| (setq create-lockfiles nil) ; stop hard links |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; No scroll bar in minibuffer |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (set-window-scroll-bars (minibuffer-window) nil nil) |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Furter customization for linum and left margin width |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (eval-after-load "nlinum" |
| '(set-face-attribute 'linum nil :height 80)) |
| (set-default-font "Source Code Variable-12") |
| |
| ;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;; |
| ;; Maximise Emacs |
| ;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';; |
| (add-to-list 'default-frame-alist '(fullscreen . maximized)) |
| |
| ;;; init.el ends here |