;;; 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)
;; If running below the recommended Stretch version
(when (< emacs-major-version 24)
  (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))

(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)
 '(global-linum-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 ultracondensed
			    :foundry "adobe" :family "Source Code Variable"))))
 '(font-lock-comment-face ((t (:background "#343D46" :foreground "#848B97"))))
 '(fringe ((t (:background "#343D46"))))
 '(hl-line ((t (:background "#2C3133"))))
 '(linum ((t (:slant normal :width ultracondensed :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 '(12 . 0))

;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
;; Line number format
;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
(setq linum-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 "linum"
;  '(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
