settings.org 9.6 KB

Personal Emacs Configuration

User information

(setq user-full-name    "Andrea Miglietta"
      user-mail-address "andrea.miglietta92@gmail.com"
)

Configuration

Emacs initialization

Setup package manager

(require 'package)
(setq package-enable-at-startup nil)

(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/" ))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

Setup use-package

(unless (package-installed-p 'use-package)
        (package-refresh-contents)
        (package-install 'use-package))
Autoupdate
(use-package auto-package-update
   :ensure t
   :init
   (setq auto-package-update-interval 7)
   (setq auto-package-update-delete-old-versions t)
   (add-hook 'auto-package-update-before-hook
       (lambda () (message "I will update packages now")))
   ;; Update at startup
   (auto-package-update-maybe)
)

Startup settings

;; Disable useless screens
(setq use-file-dialog nil)
(setq use-dialog-box nil)
;;(setq inhibit-splash-screen t)
;;(setq inhibit-startup-message t)
(setq inhibit-startup-screen t)
(setq inhibit-startup-echo-area-message t)

(setq indicate-empty-lines t)
(add-hook 'text-mode-hook 'auto-fill-mode)
(setq-default fill-column 80)

(setq default-directory (substitute-in-file-name "$HOME/"))
(setq mouse-yank-at-point t)

;; Show a marker in the left fringe for lines not in the buffer
(setq indicate-empty-lines t)
;; Shrink fringes to 1 pixel
(fringe-mode 1)
Set variables
(custom-set-variables
  '(menu-bar-mode nil)
  '(tool-bar-mode nil)
  '(scroll-bar-mode nil)
  '(blink-cursor nil)
  '(line-number-mode t)
  '(column-number-mode t)
)

General configuration

Backups

(setq
    backup-directory-alist '(("." . "~/.emacs.d/backups"))
    vc-make-backup-files t
    version-control t
    kept-new-version 3
    kept-old-version 1
    delete-old-versions t
    backup-by-copying t
)

Diminish

To not have the modeline full of minor modes I use globally

(use-package diminish
    :ensure t
)

Evil mode

(use-package evil
    :diminish
    :ensure t
    :init (evil-mode t)
)

;; Cursor
(setq
    evil-insert-state-cursor '(box "white")
    evil-normal-state-cursor '(box "white")
    evil-visual-state-cursor '(hollow "white")
)

;;FIXME:
;;(use-package evil-tabs
;;    :ensure t
;;    :config (global-evil-tabs-mode t)
;;)

Font size

(set-face-attribute 'default nil :height 110)
(global-set-key (kbd "C-+") 'text-scale-increase)
(global-set-key (kbd "C--") 'text-scale-decrease)

Git-gutter+

(use-package git-gutter+
    :diminish
    :ensure t
    :init
    (global-git-gutter+-mode)
)
(setq git-gutter+-window-width 1)
(setq git-gutter+-modified-sign "◉")
(setq git-gutter+-added-sign "◉")
(setq git-gutter+-deleted-sign "◉")

(set-face-foreground 'git-gutter+-modified "purple")
(set-face-foreground 'git-gutter+-added "green")
(set-face-foreground 'git-gutter+-deleted "red")

(global-set-key (kbd "C-x g") 'git-gutter+-mode) ; Turn on/off in the current buffer
(global-set-key (kbd "C-x G") 'global-git-gutter+-mode) ; Turn on/off globally

Google Translate

(use-package google-translate
    :ensure t
    :init
    (require 'google-translate)
    (require 'google-translate-smooth-ui)
    :bind
    (("\C-ct" . google-translate-smooth-translate))
    :config
    (setq google-translate-translation-directions-alist
        '(("it" . "en") ("en" . "it")))
)

Highlight

(global-hl-line-mode)
(global-font-lock-mode t) ;; Turn on syntax highlighting whenever possible
Parenthesis
(show-paren-mode)         ; Automatically highlight paren pairs
(setq show-paren-delay 0.0) ; Show paren match immediately

History

(setq savehist-file "~/.emacs.d/savehist")
(savehist-mode t)
(setq history-length t)
(setq history-delete-duplicates t)

Load theme

(use-package color-theme-sanityinc-solarized
    :ensure t
    :init
    (load-theme 'sanityinc-solarized-dark t)
)

Ibuffer

(global-set-key (kbd "C-x C-b") 'ibuffer)
(autoload 'ibuffer "ibuffer" "List buffers." t)

Ido

;;    (require 'ido)
;;    (ido-mode t)

Iflipb

Iflipb to switch buffers

(use-package iflipb
    :ensure t
)

Keybinding

Evil-mode map
(setq evil-toggle-key "")      ;; Remove default evil-toggle-key "C-z"
(global-unset-key (kbd "C-z")) ;; Remove "C-z" default behavior

(define-key evil-insert-state-map (kbd "C-a") 'smarter-move-beginning-of-line)
(define-key evil-insert-state-map (kbd "C-e") 'move-end-of-line)
(define-key evil-normal-state-map (kbd "C-a") 'smarter-move-beginning-of-line)
(define-key evil-normal-state-map (kbd "C-e") 'move-end-of-line)

(define-key evil-insert-state-map (kbd "RET") 'newline-and-indent)

(define-key evil-insert-state-map (kbd "M-k") 'iflipb-next-buffer)
(define-key evil-insert-state-map (kbd "M-j") 'iflipb-previous-buffer)
(define-key evil-normal-state-map (kbd "M-k") 'iflipb-next-buffer)
(define-key evil-normal-state-map (kbd "M-j") 'iflipb-previous-buffer)
Global-set-key
(global-set-key (kbd "<F5>") 'revert-buffer)
(global-set-key (kbd "RET") 'newline-and-indent)

(setq x-select-enable-primary t)
(setq x-select-enable-clipboard t)
(global-set-key (kbd "S-<ins>") 'mouse-yank-primary)
Insert-date
;; Insert date
(defun insert-date ()
    "Insert the current date."
    (interactive)
    (insert (format-time-string "%d.%m.%Y")))

(global-set-key (kbd "C-c d") 'insert-date)
Org-mode map
(define-key org-mode-map (kbd "RET") nil)
(define-key org-mode-map (kbd "C-a") nil)
Smarter-move-beginning-of-line
(defun smarter-move-beginning-of-line (arg)
"Move point back to indentation of beginning of line.

Move point to the first non-whitespace character on this line.
If point is already there, move to the beginning of the line.
Effectively toggle between the first non-whitespace character and
the beginning of the line.

If ARG is not nil or 1, move forward ARG - 1 lines first.  If
point reaches the beginning or end of the buffer, stop there."
    (interactive "^p")
    (setq arg (or arg 1))

    ;; Move lines first
    (when (/= arg 1)
        (let ((line-move-visual nil))
           (forward-line (1- arg))))

    (let ((orig-point (point)))
        (back-to-indentation)
        (when (= orig-point (point))
          (move-beginning-of-line 1))))

;; Remap C-a to `smarter-move-beginning-of-line'
(global-set-key [remap move-beginning-of-line]
                'smarter-move-beginning-of-line)

Org-mode

(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
(add-to-list 'auto-mode-alist '("\\.org_archive\\'" . org-mode))

;; Cuter bullets
(use-package org-bullets
    :ensure t
    :init
    (setq org-bullets-bullet-list '("◉"))
    (add-hook 'org-mode-hook (lambda () (org-bullets-mode t)))
)

(setq org-ellipsis " »")

;; Don't ask for confirmation
(setq org-confirm-babel-evaluate nil)
;; Active Babel Languages
(org-babel-do-load-languages
    'org-babel-load-languages
      '((emacs-lisp . t)
        (latex . t)
        (sh . t)
))

;; Syntax highlighting in source blocks
(setq org-src-fontify-natively t)

;; Hide markers when text is markup
(setq org-hide-emphasis-markers t)

(setq org-log-done 'time)

Symlink

;; This is not enable by default in emacs
(setq vc-follow-symlinks t)

Sync

;; When something changes a file, automatically refresh the
;; buffer containing that file so they can't get out of sync.
(global-auto-revert-mode t)

Whitespaces

Tabs
(setq-default indent-tabs-mode nil)
(setq tab-stop-list (number-sequence 4 120 4))
(setq-default tab-width 4)
Trailing whitespace
;; Delete trailing whitespace automatically on save.
(add-hook 'before-save-hook 'delete-trailing-whitespace)

Use y or n

(fset 'yes-or-no-p 'y-or-n-p)

TEST