This is work in progress, based on Emacs Tutorial and UncleDaves’ emacs config.
Get rid of the default decorations that I am not going to use and try to get the maximum space for working.
(tool-bar-mode -1)(menu-bar-mode -1)(scroll-bar-mode -1)(setq inhibit-startup-message t)Provided that important work is already under source control, I don’t need Emacs to autosave or to create copies.
(setq make-backup-files nil)
(setq auto-save-default nil)(defalias 'yes-or-no-p 'y-or-n-p)(show-paren-mode 1)(setq coding-system-for-read 'utf-8
coding-system-for-write 'utf-8)(global-set-key (kbd "C-x C-b") 'ibuffer)
(global-set-key (kbd "C-x b") 'ido-switch-buffer)(use-package which-key
:ensure t
:init
(which-key-mode))(defvar my-term-shell "/bin/bash")
(defadvice ansi-term (before force-bash)
(interactive (list my-term-shell)))
(ad-activate 'ansi-term)
(global-set-key (kbd "<s-return>") 'ansi-term)In order to know where I am on a file when switching buffers, use beacon as a visual clue.
(use-package beacon
:ensure t
:init
(beacon-mode 1))(setq scroll-conservatively 100)(setq ring-bell-function 'ignore)(when window-system
(global-hl-line-mode t))Pretty lambda on demand via `C-c t s`.
(global-set-key (kbd "C-c t s") 'prettify-symbols-mode)(which-key-add-key-based-replacements
"C-c t" "toggle prefix")
(define-key global-map (kbd "C-c t n") 'linum-mode)(define-key global-map (kbd "C-+") 'text-scale-increase)
(define-key global-map (kbd "C--") 'text-scale-decrease)(when window-system
(use-package exwm
:ensure t
:config
(require 'exwm-config)
(exwm-config-default)))(setq ido-enable-flex-matching nil)
(setq ido-create-new-buffer 'always)
(setq ido-everywhere t)
(ido-mode 1)
(when window-system
(exwm-config-ido))(use-package ido-vertical-mode
:ensure t
:init
(ido-vertical-mode 1))
(setq ido-vertical-define-keys 'C-n-and-C-p-only)Use the spacemacs modeline
(use-package spaceline
:ensure t
:config
(require 'spaceline-config)
(setq spaceline-buffer-encoding-abbrev-p nil)
(setq spaceline-line-column-p nil)
(setq spaceline-line-p nil)
(setq powerline-default-separator (quote arrow))
(setq line-number-mode 1)
(setq col-number-mode 1)
(spaceline-spacemacs-theme)
(setq display-time-24hr-format t)
(setq display-time-format "%H:%M - %d-%m-%Y")
(display-time-mode 1))To reload the configuration
(defun config-reload ()
"Reloads ~/.emacs.d/config.org at runtime"
(interactive)
(org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
(global-set-key (kbd "C-c r") 'config-reload)Edit the config
(defun config-load-config-file ()
"Loads the config file"
(interactive)
(find-file "~/.rawemacs.d/config.org"))
(global-set-key (kbd "C-c l c") 'config-load-config-file)(use-package ivy
:ensure t)(use-package swiper
:ensure t
:bind ("C-s" . 'swiper))(use-package projectile
:ensure t
:bind-keymap ("C-c p" . projectile-command-map)
:config
(projectile-mode))
Add a tree for the projects
(defun neotree-project-dir ()
"Open NeoTree using the git root."
(interactive)
(let ((project-dir (projectile-project-root))
(file-name (buffer-file-name)))
(neotree-toggle)
(if project-dir
(if (neo-global--window-exists-p)
(progn
(neotree-dir project-dir)
(neotree-find file-name)))
(message "Could not find git project root."))))
(use-package neotree
:ensure t
:config
(global-set-key (kbd "C-c t t") 'neotree-project-dir)
(setq neo-smart-open t)
(setq neo-vc-integration '(face))
(setq neo-theme 'arrow)
(add-hook 'neotree-mode-hook
(lambda ()
(define-key evil-normal-state-local-map (kbd "TAB") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "SPC") 'neotree-quick-look)
(define-key evil-normal-state-local-map (kbd "q") 'neotree-hide)
(define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "g") 'neotree-refresh)
(define-key evil-normal-state-local-map (kbd "n") 'neotree-next-line)
(define-key evil-normal-state-local-map (kbd "p") 'neotree-previous-line)
(define-key evil-normal-state-local-map (kbd "A") 'neotree-stretch-toggle)
(define-key evil-normal-state-local-map (kbd "H") 'neotree-hidden-file-toggle))))Set evil mode from start and unshadow `TAB` for cycling when in org mode.
(use-package evil
:ensure t
:config
(evil-mode 1)
(evil-define-key 'normal org-mode-map
(kbd "TAB") 'org-cycle))(use-package ess
:ensure t)(use-package haskell-mode
:ensure t)(use-package fsharp-mode
:ensure t
:config
(setq inferior-fsharp-program "/usr/bin/fsharpi")
(setq fsharp-compiler "/usr/bin/fsharpc"))(use-package paredit
:ensure t
:init
(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t)
(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode)
(add-hook 'ielm-mode-hook #'enable-paredit-mode)
(add-hook 'lisp-mode-hook #'enable-paredit-mode)
(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode)
(add-hook 'scheme-mode-hook #'enable-paredit-mode))(use-package markdown-mode
:ensure t
:commands (markdown-mode gfm-mode)
:mode (("README\\.md\\'" . gfm-mode)
("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode))
:init (setq markdown-command "multimarkdown"))Use makefile-mode when files start with Makefile, like in Makefile.devel,
(add-to-list 'auto-mode-alist '("Makefile\\.*" . makefile-mode))(use-package yaml-mode
:ensure t
:config
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)))(use-package elixir-mode
:ensure t)(use-package imenu-list
:ensure t
:bind (("C-c t m" . imenu-list-smart-toggle))
:config
(setq imenu-list-focus-after-activation t
imenu-list-auto-resize nil)) Set default refile directory
(use-package org
:ensure t
:config
(setq org-directory "~/org")
(setq org-default-notes-file (concat org-directory "/notes.org"))
(setq org-agenda-files `(,org-directory))
(global-set-key (kbd "C-c o c") 'org-capture)
(global-set-key (kbd "C-c o a") 'org-agenda))Archive entries that are already DONE.
(defun paudirac-org-archive-done-taks ()
(interactive)
(org-map-entries 'org-archive-subtree "/DONE" 'file))