Skip to content

paudirac/rawemacs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

This is work in progress, based on Emacs Tutorial and UncleDaves’ emacs config.

Emacs reset

Get rid of the default decorations that I am not going to use and try to get the maximum space for working.

Disable toolbar

(tool-bar-mode -1)

Disable menubar

(menu-bar-mode -1)

Disable scroll bar

(scroll-bar-mode -1)

Disable startup screen

(setq inhibit-startup-message t)

Backups and autosaves

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)

Prompt only y/n

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

Match parens

(show-paren-mode 1)

Encoding utf-8 by default

(setq coding-system-for-read 'utf-8
      coding-system-for-write 'utf-8)

Replace buffer with ibuffer

(global-set-key (kbd "C-x C-b") 'ibuffer)
(global-set-key (kbd "C-x b") 'ido-switch-buffer)

Introspection and discoverability

(use-package which-key
  :ensure t
  :init
  (which-key-mode))

Terminal

Setting default shell to bash

(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)

Visual enhancements

Where I am on the file?

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))

Scroll pages smothly

(setq scroll-conservatively 100)

Get rid off the system bell

(setq ring-bell-function 'ignore)

When on not in the terminal

Show current line

(when window-system
  (global-hl-line-mode t))

Pretty lambda

Pretty lambda on demand via `C-c t s`.

(global-set-key (kbd "C-c t s") 'prettify-symbols-mode)

Line numbers

(which-key-add-key-based-replacements
  "C-c t" "toggle prefix")
(define-key global-map (kbd "C-c t n") 'linum-mode)

Font size

(define-key global-map (kbd "C-+") 'text-scale-increase)
(define-key global-map (kbd "C--") 'text-scale-decrease)

Window manager

(when window-system
(use-package exwm
  :ensure t
  :config
  (require 'exwm-config)
  (exwm-config-default)))

Ido

(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)

Mode line

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))

Config

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)

Ivy

(use-package ivy
  :ensure t)

Searching

(use-package swiper
  :ensure t
  :bind ("C-s" . 'swiper))

Projects

(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))))

Evil

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))

Specific modes

R

(use-package ess
  :ensure t)

Haskell

(use-package haskell-mode
  :ensure t)

F#

(use-package fsharp-mode
  :ensure t
  :config
  (setq inferior-fsharp-program "/usr/bin/fsharpi")
  (setq fsharp-compiler "/usr/bin/fsharpc"))

Lisps

(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))

Markdown

(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"))

Makefile

Use makefile-mode when files start with Makefile, like in Makefile.devel,

(add-to-list 'auto-mode-alist '("Makefile\\.*" . makefile-mode))

YAML

(use-package yaml-mode
  :ensure t
  :config
  (add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)))

Elixir

(use-package elixir-mode
 :ensure t)

Menu

(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)) 

Org

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))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published