Skip to content

Instantly share code, notes, and snippets.

@fmap

fmap/init.el Secret

Created July 5, 2017 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fmap/b0e89549d43c4cc0d90c14579e366eb3 to your computer and use it in GitHub Desktop.
Save fmap/b0e89549d43c4cc0d90c14579e366eb3 to your computer and use it in GitHub Desktop.
(unless (< emacs-major-version 25)
(setenv "PAGER" "cat")
(setenv "LANG" "en_US.UTF-8")
(set-default-file-modes ?\700)
(setq inhibit-startup-screen t)
(setq initial-scratch-message "")
(setq initial-major-mode 'text-mode)
(setq indent-tabs-mode nil)
(setq-default c-basic-offset 2)
(setq-default default-tab-width 2)
(setq visible-bell nil)
(setq ring-bell-function 'ignore)
(global-auto-revert-mode t)
(setq sentence-end-double-space nil)
(put 'narrow-to-region 'disabled nil)
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
(tool-bar-mode -1)
(scroll-bar-mode -1)
(set-fringe-style '(8 . 0))
(setq frame-resize-pixelwise t)
(add-hook 'window-setup-hook (lambda () (toggle-frame-maximized)))
(unless (and
(boundp 'server-process)
(memq (process-status server-process) '(connect listen open run)))
(server-start))
(global-set-key (kbd "M-o") 'other-window)
(if (memq window-system '(mac ns))
(progn
(setq browse-url-mailto-function (lambda (url &rest args) (shell-command (format "/usr/bin/open %s" url))))
(defun suspend ()
(interactive)
(shell-command "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"))
(if (not (getenv "TERM_PROGRAM"))
(progn
(if (find-font (font-spec :family "Apple Color Emoji"))
(set-fontset-font t 'symbol (font-spec :family "Apple Color Emoji")))
(let ((shell-path (shell-command-to-string "bash -rlc 'echo -n $PATH'")))
(setenv "PATH" shell-path)
(setq exec-path (split-string shell-path path-separator))))))
(menu-bar-mode -1))
(require 'package)
(setq package-archives
'(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")
("org" . "http://orgmode.org/elpa/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(setq use-package-always-ensure t)
(use-package moe-theme
:config
(moe-light))
(use-package magit
:config
(global-set-key (kbd "C-x g") 'magit-status))
(use-package tramp
:init
(setq tramp-default-method "ssh")
(add-to-list 'tramp-remote-path 'tramp-own-remote-path))
(use-package ido
:config
(add-to-list 'ido-ignore-files "\\.hi")
(add-to-list 'ido-ignore-files "\\.o")
(add-to-list 'ido-ignore-files "\\.ibc")
(add-to-list 'ido-ignore-files "\\.agdai")
(add-to-list 'ido-ignore-files "\\.gfo")
(ido-mode 't)
(use-package flx-ido
:config
(flx-ido-mode 1)))
(use-package haskell-mode
:mode
(("\\.hs" . haskell-mode)
("\\.lhs" . literate-haskell-mode)
("\\.cabal" . cabal-mode))
:init
(setq haskell-process-type 'stack-ghci)
(setq haskell-process-args-stack-ghci '())
(setq haskell-process-log 't)
(setq haskell-process-suggest-overloaded-strings 't)
(setq haskell-process-suggest-remove-import-lines 'f)
:preface
(defun haskell-interactive-bring ()
(interactive)
(display-buffer (haskell-interactive-buffer (haskell-session))))
:bind (:map haskell-mode-map
("C-c C-l" . haskell-process-load-file)
("C-c C-c" . haskell-compile) ;; Needs Stack support
("C-`" . haskell-interactive-bring)
("C-c C-t" . haskell-process-do-type))
:config
(require 'haskell-mode)
(require 'haskell)
(require 'haskell-interactive-mode)
(require 'haskell-process)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation))
(use-package agda2-mode
:ensure nil
:if (executable-find "agda-mode")
:init
(load-file (let ((coding-system-for-read 'utf-8))
(shell-command-to-string "agda-mode locate")))
(require 'agda2)
;; (require 'agda-input)
;; (set-input-method "Agda")
(add-hook 'prog-mode-hook (lambda () (progn
(require 'agda-input)
(set-input-method "Agda"))))
(require 'agda2-highlight)
(let ((yellow-1 "#fce94f") (yellow-2 "#ffd700") (yellow-3 "#c4a000") (yellow-3-5 "#aaaa11") (yellow-4 "#875f00")
(orange-1 "#ffaf5f") (orange-2 "#ff8700") (orange-3 "#ff5d17") (orange-4 "#d75f00") (orange-5 "#af5f00")
(magenta-1 "#ff7bbb") (magenta-2 "#ff4ea3") (magenta-3 "#ff1f8b")
(green-1 "#afff00") (green-2 "#a1db00") (green-3 "#00af00") (green-4 "#008700") (green-5 "#005f00")
(blue-1 "#5fafd7") (blue-2 "#1f5bff") (blue-3 "#005f87") (blue-4 "#005faf") (blue-5 "#0000af")
(cyan-0 "#d7ffd7") (cyan-1 "#87ffff") (cyan-2 "#87d7af") (cyan-3 "#00d7af") (cyan-4 "#00ac8a")
(cyan-5 "#18b2b2") (cyan-6 "#005f5f") (cyan-7 "#236f73") (cyan-8 "#00af87") (cyan-9 "#005f87")
(purple-1 "#d18aff") (purple-2 "#b218b2") (purple-3 "#6c0099") (purple-4 "#6c0099")
(red-1 "#ef2929") (red-2 "#cc0000") (red-3 "#a40000")
(white-1 "#eeeeee") (white-2 "#dadada") (white-3 "#c6c6c6") (white-4 "#b2b2b2") (black-1 "#9e9e9e")
(black-2 "#8a8a8a") (black-3 "#767676") (black-4 "#626262") (black-5 "#5f5f5f") (black-6 "#3a3a3a")
(LIGHT_BG "#fdfde7") (white-0 "#ffffff")
(green-02 "#5fd700") (green-01 "#d7ff00") (green-0 "#d7ff5f") (green-00 "#d7ff87")
(blue-01 "#c3c9f8") (blue-0 "#afd7ff") (blue-00 "#d7d7ff") (blue-000 "#d4e5ff")
(yellow-0 "#ffff87") (yellow-00 "#ffffaf") (yellow-2-5 "#ffba27")
(purple-0 "#af87ff") (purple-00 "#e6a8df")
(red-0 "#ff4b4b") (red-00 "#ffafaf") (red-000 "#ffd5e5")
(magenta-0 "#ffafd7") (magenta-00 "#ffd7ff")
(orange-0 "#ffaf87") (orange-00 "#ffd787") (orange-000 "#ffd7af")
(linum-dark "#87875f") (linum-light "#d7d7af"))
(mapc (lambda (face-and-attrs)
(agda2-highlight-set-face-attribute
(car face-and-attrs) (cdr face-and-attrs)))
'((agda2-highlight-keyword-face
:foreground green-3)
(agda2-highlight-string-face
:foreground purple-2)
(agda2-highlight-number-face
:foreground purple-2)
(agda2-highlight-function-face
:foreground magenta-3)
(agda2-highlight-module-face
:foreground cyan-5)
(agda2-highlight-inductive-constructor-face
:foreground cyan-5)
;; (agda2-highlight-error-face
;; :foreground black-5 :background LIGHT_BG :underline '(:style wave :color red-3))
(agda2-highlight-datatype-face
:foreground red-1)
(agda2-highlight-record-face
:foreground red-1)
(agda2-highlight-primitive-type-face
:foreground red-1)
;; (agda2-highlight-postulate-face
;; :foreground orange-2 :underline '(:style wave :color green-3))
(agda2-highlight-symbol-face
:foreground black-5))))
:bind (("<s-down-mouse-1>" . agda2-goto-definition-mouse)))
(use-package idris-mode
:mode
(("\\.idr" . idris-mode)
("\\.lidr" . idris-mode))
:init
(setq idris-semantic-source-highlighting 't))
(use-package octave-mode
:ensure nil
:mode "\\.m"
:init
(setq inferior-octave-startup-args '("-i" "--no-line-editing" "--no-gui" "--no-gui-libs")))
(use-package eshell
:init
(setq eshell-banner-message "")
:preface
(defun rename ()
(rename-buffer (generate-new-buffer-name (abbreviate-file-name default-directory))))
:config
(add-hook 'eshell-first-time-mode-hook 'rename)
(add-hook 'eshell-directory-change-hook 'rename)
(defun eshell/find-files (&rest args)
(mapc #'find-file (mapcar #'expand-file-name (eshell-flatten-list (reverse args))))))
(use-package eww
:commands (eww)
:init
(setq shr-use-fonts nil))
;; (add-hook 'eww-mode-hook
;; '(lambda () (add-to-list 'window-size-change-functions
;; '(lambda () (eww-reload t)) nil t))))
(use-package proof-general
;; https://github.com/ProofGeneral/PG
:ensure nil
:if (file-readable-p "~/.emacs.d/vendor/PG/generic/proof-site.el")
:init
(require 'proof-site "~/.emacs.d/vendor/PG/generic/proof-site"))
(use-package auctex
:mode ("\\.tex\\'" . latex-mode))
(use-package tidal
;; https://github.com/tidalcycles/Tidal
:ensure nil
:if (file-readable-p "~/.emacs.d/vendor/tidal.el")
:init
(load "~/.emacs.d/vendor/tidal.el") ;; :config?
(require 'tidal)
(setq tidal-interpreter "/usr/local/bin/stack")
(setq tidal-interpreter-arguments
'("--install-ghc" "repl" "--resolver" "nightly-2017-06-02"
"--package" "tidal" "--ghci-options=-XOverloadedStrings")))
(use-package gf
:ensure nil
:if
(file-readable-p "~/.emacs.d/vendor/grammatical-framework/gf.el")
:mode
("\\(\\.ebnf\\'\\|\\.cf\\'\\|\\.gf\\(\\|e\\|r\\|cm?\\)\\'\\)" . gf-mode)
:init
(load "~/.emacs.d/vendor/grammatical-framework/gf")
(autoload 'run-gf "gf" nil t)
(autoload 'gf-mode "gf" nil t))
(use-package visual-fill-column
:commands (visual-fill-column-mode))
(use-package sml-mode
:mode ("\\.ml" . sml-mode))
(use-package nix-mode
:mode "\\.nix")
(use-package org-plus-contrib
:pin org
:bind (("C-c l" . org-store-link)
("C-c c" . org-capture)
("C-c a" . org-agenda)
("C-c b" . org-iswitchb))
:init
(setq org-image-actual-width 400)
(setq org-return-follows-link 't)
(setq org-startup-indented 't)
(setq org-indent-mode-turns-on-hiding-stars 't)
(require 'org-install)
(require 'ob-haskell)
(require 'ob-sh)
(org-babel-do-load-languages
'org-babel-load-languages
'((sh . t)
(dot . t)
(haskell . t)
(emacs-lisp . t)))
(require 'org-capture)
(setq org-capture-templates '(
("p" "Protocol" entry
(file+headline "~/NOTES.org" "Inbox")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?")
("L" "Protocol Link" entry
(file+headline "~/NOTES.org" "Inbox")
"* %? [[%:link][%:description]] \nCaptured On: %U")))
)
(use-package markdown-mode
:mode "\\.md"
:init
(setq markdown-enable-math 't))
(use-package pandoc-mode
:init
(add-hook 'markdown-mode-hook 'pandoc-mode))
(use-package ssh-config-mode
:mode "sshd_config")
(use-package epg
:init
(setq epg-user-id (concat user-login-name "@" system-name)))
(use-package image-file
:init
(auto-image-file-mode))
(use-package wordnut
:bind
(("C-c d" . wordnut-search)))
(use-package visual-fill-column
:init
(set-display-table-slot standard-display-table 'wrap ?\ ))
(use-package projectile
:init
(setq projectile-use-git-grep t)
:config
(projectile-global-mode)
(setq projectile-mode-line
'(:eval (if (projectile-project-p) (format " Projectile:%s" (projectile-project-name))))))
(use-package pragmata-pro
:ensure nil
:if (find-font (font-spec :family "PragmataPro"))
:init
(set-face-attribute 'default nil :family "PragmataPro" :height 180)
(setq prettify-symbols-unprettify-at-point t)
(defconst pragmatapro-prettify-symbols-alist
(mapcar (lambda (s) `(,(car s) . ,(concat (list ?\C-i) (list (decode-char 'ucs (cadr s))))))
(list '("[ERROR]" #XE380)
'("[DEBUG]" #XE381)
'("[INFO]" #XE382)
'("[WARN]" #XE383)
'("[WARNING]" #XE384)
'("[ERR]" #XE385)
'("[FATAL]" #XE386)
'("[TRACE]" #XE387)
'("!!" #XE720)
'("!=" #XE721)
'("!==" #XE722)
'("!!!" #XE723)
'("!≡" #XE724)
'("!≡≡" #XE725)
'("!>" #XE726)
'("#(" #XE740)
'("#_" #XE741)
'("#{" #XE742)
'("#?" #XE743)
'("#>" #XE744)
'("##" #XE745)
'("%=" #XE750)
'("%>" #XE751)
'("&%" #XE760)
'("&&" #XE761)
'("&*" #XE762)
'("&+" #XE763)
'("&-" #XE764)
'("&/" #XE765)
'("&=" #XE766)
'("&&&" #XE767)
'("&>" #XE768)
'("***" #XE780)
'("*=" #XE781)
'("*/" #XE782)
'("*>" #XE783)
'("++" #XE790)
'("+++" #XE791)
'("+=" #XE792)
'("+>" #XE793)
'("++=" #XE794)
'("--" #XE7A0)
'("-<" #XE7A1)
'("-<<" #XE7A2)
'("-=" #XE7A3)
'("->" #XE7A4)
'("->>" #XE7A5)
'("---" #XE7A6)
'("-->" #XE7A7)
'("-+-" #XE7A8)
'("-\\/" #XE7A9)
'(".." #XE7B0)
'("..." #XE7B1)
'("..<" #XE7B2)
'(".>" #XE7B3)
'(".~" #XE7B4)
'(".=" #XE7B5)
'("/*" #XE7C0)
'("//" #XE7C1)
'("/>" #XE7C2)
'("/=" #XE7C3)
'("/==" #XE7C4)
'("///" #XE7C5)
'("/**" #XE7C6)
'("::" #XE7D0)
'(":=" #XE7D1)
'(":≡" #XE7D2)
'(":>" #XE7D3)
'(":=>" #XE7D4)
'("<$>" #XE7E0)
'("<*" #XE7E1)
'("<*>" #XE7E2)
'("<+>" #XE7E3)
'("<-" #XE7E4)
'("<<" #XE7E5)
'("<<<" #XE7E6)
'("<<=" #XE7E7)
'("<=" #XE7E8)
'("<=>" #XE7E9)
'("<>" #XE7EA)
'("<|>" #XE7EB)
'("<<-" #XE7EC)
'("<|" #XE7ED)
'("<=<" #XE7EE)
'("<~" #XE7EF)
'("<~~" #XE7F0)
'("<<~" #XE7F1)
'("<$" #XE7F2)
'("<+" #XE7F3)
'("<!>" #XE7F4)
'("<@>" #XE7F5)
'("<#>" #XE7F6)
'("<%>" #XE7F7)
'("<^>" #XE7F8)
'("<&>" #XE7F9)
'("<?>" #XE7FA)
'("<.>" #XE7FB)
'("</>" #XE7FC)
'("<\\>" #XE7FD)
'("<\">" #XE7FE)
'("<:>" #XE7FF)
'("<~>" #XE800)
'("<**>" #XE801)
'("<<^" #XE802)
'("<!" #XE803)
'("<@" #XE804)
'("<#" #XE805)
'("<%" #XE806)
'("<^" #XE807)
'("<&" #XE808)
'("<?" #XE809)
'("<." #XE80A)
'("</" #XE80B)
'("<\\" #XE80C)
'("<\"" #XE80D)
'("<:" #XE80E)
'("<->" #XE80F)
'("<!--" #XE810)
'("<--" #XE811)
'("<~<" #XE812)
'("<==>" #XE813)
'("==<" #XE820)
'("==" #XE821)
'("===" #XE822)
'("==>" #XE823)
'("=>" #XE824)
'("=~" #XE825)
'("=>>" #XE826)
'("=/=" #XE827)
'("≡≡" #XE830)
'("≡≡≡" #XE831)
'("≡:≡" #XE832)
'(">-" #XE840)
'(">=" #XE841)
'(">>" #XE842)
'(">>-" #XE843)
'(">==" #XE844)
'(">>>" #XE845)
'(">=>" #XE846)
'(">>^" #XE847)
'("??" #XE860)
'("?~" #XE861)
'("?=" #XE862)
'("?>" #XE863)
'("???" #XE864)
'("^=" #XE868)
'("^." #XE869)
'("^?" #XE86A)
'("^.." #XE86B)
'("^<<" #XE86C)
'("^>>" #XE86D)
'("^>" #XE86E)
'("\\\\" #XE870)
'("\\>" #XE871)
'("\\/-" #XE872)
'("@>" #XE877)
'("|=" #XE880)
'("||" #XE881)
'("|>" #XE882)
'("|||" #XE883)
'("|+|" #XE884)
'("|->" #XE885)
'("|-->" #XE886)
'("|=>" #XE887)
'("|==>" #XE888)
'("~=" #XE890)
'("~>" #XE891)
'("~~>" #XE892)
'("~>>" #XE893)
'("\">" #XE8B0))))
(defun add-pragmatapro-prettify-symbols-alist ()
(dolist (alias pragmatapro-prettify-symbols-alist)
(push alias prettify-symbols-alist))
(prettify-symbols-mode -1)
(prettify-symbols-mode +1))
(add-hook 'prog-mode-hook #'add-pragmatapro-prettify-symbols-alist)
(add-hook 'interactive-haskell-mode-hook #'add-pragmatapro-prettify-symbols-alist)
(global-prettify-symbols-mode +1)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment