|
|
- ;;; init.el --- user-init-file -*- lexical-binding: t -*-
-
- ;; Bootstrap quelpa
- (unless (package-installed-p 'quelpa)
- (with-temp-buffer
- (url-insert-file-contents "https://github.com/quelpa/quelpa/raw/master/quelpa.el")
- (eval-buffer)
- (quelpa-self-upgrade))
- ;; Install all selected packages
- ; Load custom.el to get the list of selected packages
- (let ((custom-file (expand-file-name "custom.el" user-emacs-directory)))
- (when (file-exists-p custom-file)
- (load custom-file))
- (load "custom.el"))
- (mapc #'quelpa package-selected-packages))
-
- (progn ; startup
- (package-initialize)
- (add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
- (defvar before-user-init-time (current-time)
- "Value of `current-time' when Emacs begins loading `user-init-file'.")
- (message "Loading Emacs...done (%.3fs)"
- (float-time (time-subtract before-user-init-time
- before-init-time)))
- (setq user-init-file (or load-file-name buffer-file-name))
- (setq user-emacs-directory (file-name-directory user-init-file))
- (message "Loading %s..." user-init-file)
- (setq inhibit-startup-buffer-menu t)
- (setq inhibit-startup-screen t)
- (setq inhibit-startup-echo-area-message "locutus")
- (setq initial-buffer-choice t)
- (setq initial-scratch-message "")
- (setq load-prefer-newer t)
- (defalias 'yes-or-no-p 'y-or-n-p)
- (scroll-bar-mode 0)
- (tool-bar-mode 0)
- (menu-bar-mode 0)
- (delete-selection-mode 1)
- (column-number-mode 1))
-
- (progn ; `use-package'
- (require 'use-package)
- (setq use-package-verbose t)
- (setq use-package-always-defer t)
- (setq use-package-enable-imenu-support t))
-
- (use-package auto-compile
- :demand t
- :config
- (auto-compile-on-load-mode)
- (auto-compile-on-save-mode)
- (setq auto-compile-display-buffer nil)
- (setq auto-compile-mode-line-counter t)
- (setq auto-compile-source-recreate-deletes-dest t)
- (setq auto-compile-toggle-deletes-nonlib-dest t)
- (setq auto-compile-update-autoloads t)
- (add-hook 'auto-compile-inhibit-compile-hook
- 'auto-compile-inhibit-compile-detached-git-head))
-
- (use-package bash-completion
- :demand t
- :config (progn
- (bash-completion-setup)))
-
- (use-package custom
- :config
- (setq custom-file (expand-file-name "custom.el" user-emacs-directory))
- (when (file-exists-p custom-file)
- (load custom-file)))
-
- (use-package server
- :config (or (server-running-p) (server-mode)))
-
- (progn ; startup
- (message "Loading early birds...done (%.3fs)"
- (float-time (time-subtract (current-time)
- before-user-init-time))))
-
- ;;; Long tail
-
- (use-package abbrev
- :config
- (setq save-abbrevs 'silently)
- (setq-default abbrev-mode t))
-
- (use-package auth-source-pass
- :demand t
- :after auth-source
- :init
- (progn
- (setq auth-sources '(password-store))))
-
- (use-package autorevert
- :config
- (global-auto-revert-mode 1)
-
- ;; auto-update dired buffers
- (setq global-auto-revert-non-file-buffers t
- auto-revert-verbose nil))
-
- (use-package avy
- :bind (("C-c C-j" . avy-goto-char-2)
- ("M-g g" . avy-goto-line))
- :config
- (progn
- ;; Home row
- (setq avy-keys '(?a ?r ?s ?t ?d ?h ?n ?e ?i ?o))
- (setq avy-style 'at-full)
- (setq avy-all-windows t)))
-
- (use-package beginend
- :demand t
- :config
- (beginend-global-mode))
-
- (use-package browse-url
- :config
- (setq browse-url-generic-program (executable-find "nightly")))
-
- (use-package buffer-move
- :bind (("<s-up>" . buf-move-up)
- ("<s-down>" . buf-move-down)
- ("<s-left>" . buf-move-left)
- ("<s-right>" . buf-move-right)))
-
- (use-package buffer-watcher
- :demand t)
-
- (use-package clojure-mode
- :mode "\\.clj\\'")
-
- (use-package cider
- :after clojure-mode
- :init (progn
- (defun setup-clojure-buffer ()
- (eldoc-mode)
- (clj-refactor-mode 1)
- (paredit-mode 1)
- (setq indent-tabs-mode nil))
-
- (add-hook 'clojure-mode-hook #'setup-clojure-buffer)
- (add-hook 'cider-mode-hook #'cider-turn-on-eldoc-mode))
- :config (progn
- (setq cider-repl-use-clojure-font-lock t
- cider-repl-use-pretty-printing t
- cider-repl-wrap-history t
- cider-repl-history-size 3000)))
-
- (use-package clj-refactor
- :after clojure-mode
- :config (cljr-add-keybindings-with-prefix "C-c C-r"))
-
- (use-package company
- :init (progn
- (add-hook 'prog-mode-hook 'company-mode))
- :config (progn
- (setq company-idle-delay 0.5)
- (setq company-tooltip-limit 10)
- (setq company-minimum-prefix-length 2)
- (setq company-tooltip-flip-when-above t)))
-
- (use-package company-dabbrev
- :config (progn
- (setq company-dabbrev-ignore-case t)
- (setq company-dabbrev-downcase nil)))
-
- (use-package company-go
- :after go-mode
- :config (progn
- (add-to-list 'company-backends #'company-go)
- (setq company-go-show-annotation t)))
-
- (use-package company-nixos-options
- :after nix-mode
- :config (progn
- (add-to-list 'company-backends #'company-nixos-options)))
-
- (use-package compile
- :hook (compilation-filter . my/colorize-compilation-buffer)
- :config
- (progn
- ;; http://stackoverflow.com/questions/13397737
- (defun my/colorize-compilation-buffer ()
- (require 'ansi-color)
- (let ((inhibit-read-only t))
- (ansi-color-apply-on-region compilation-filter-start (point))))))
-
- (use-package counsel
- :demand t
- :bind (("M-x" . counsel-M-x)
- ("C-x C-f" . counsel-find-file)
- ("M-i" . counsel-imenu)
- ("M-y" . counsel-yank-pop))
- :init (progn
- (setq counsel-linux-app-format-function
- #'counsel-linux-app-format-function-name-only)))
-
- (use-package dabbrev
- :bind (("S-SPC" . dabbrev-expand)))
-
- (use-package dash
- :config (dash-enable-font-lock))
-
- (use-package diff-hl
- :hook ((prog-mode . diff-hl-mode)
- (magit-post-refresh . diff-hl-magit-post-refresh)))
-
- (use-package dired
- :bind (:map dired-mode-map
- ("M-s" . find-name-dired)
- ("C-k" . dired-kill-subdir))
- :init (progn
- (add-hook 'dired-mode-hook #'dired-hide-details-mode))
- :config (progn
- (setq dired-listing-switches "-alh")
- (setq dired-dwim-target t)
- (put 'dired-find-alternate-file 'disabled nil)))
-
- (use-package dired-du
- :after dired)
-
- (use-package dired-x
- :demand t
- :after dired
- :init (progn
- (add-hook 'dired-mode-hook #'dired-omit-mode))
- :config (progn
- (setq dired-omit-files "^\\...+$")))
-
- (use-package drag-stuff
- :demand t
- :config (progn
- (drag-stuff-global-mode t)
- (drag-stuff-define-keys)
- (add-to-list 'drag-stuff-except-modes 'org-mode)
- (add-to-list 'drag-stuff-except-modes 'rebase-mode)
- (add-to-list 'drag-stuff-except-modes 'emacs-lisp-mode)))
-
- (use-package duplicate-thing
- :bind ("M-D" . duplicate-thing))
-
- (use-package ediff
- :config (progn
- ;; window positioning & frame setup
- (setq ediff-window-setup-function 'ediff-setup-windows-plain
- ediff-split-window-function 'split-window-horizontally)))
-
- ;; (use-package editorconfig
- ;; :demand t
- ;; :init (editorconfig-mode 1))
-
- (use-package elbank)
-
- (use-package eldoc
- :config (global-eldoc-mode))
-
- (use-package elec-pair
- :demand t
- :config (electric-pair-mode t))
-
- (use-package electric
- :demand t
- :config (electric-indent-mode t))
-
- (use-package elisp-mode
- :hook (emacs-lisp-mode . (lambda () (setq indent-tabs-mode nil))))
-
- (use-package embrace
- :bind (("C-c e" . embrace-commander))
- :hook (emacs-lisp-mode . embrace-emacs-lisp-mode-hook))
-
- (use-package erc
- :init (progn
- (setq erc-nick "NicolasPetton"
- erc-autojoin-channels-alist '(("freenode.net" . ("#emacs"))))))
-
- (use-package esh-mode
- :hook (eshell-mode . my/configure-esh-mode)
- :config
- (progn
- ;; We can't use use-package's :bind here as eshell insists on
- ;; recreating a fresh eshell-mode-map for each new eshell buffer.
- (defun my/configure-esh-mode ()
- (bind-key "M-p" #'counsel-esh-history eshell-mode-map))))
-
- (use-package em-cmpl
- :hook (eshell-mode . eshell-cmpl-initialize))
-
- (use-package em-smart
- :hook (eshell-mode . eshell-smart-initialize)
- :config
- (progn
- (add-to-list 'eshell-smart-display-navigate-list #'counsel-esh-history)))
-
- (use-package em-term
- :config
- (progn
- (nconc eshell-visual-subcommands
- '(("docker" "build")
- ("git" "log" "diff" "show")
- ("npm" "init" "install")
- ("yarn" "init" "install")))
- (add-to-list 'eshell-command-completions-alist
- '("gunzip" "gz\\'"))
- (add-to-list 'eshell-command-completions-alist
- '("tar" "\\(\\.tar|\\.tgz\\|\\.tar\\.gz\\)\\'"))
- (setenv "PAGER" "cat")
- (setenv "SUDO_ASKPASS" (executable-find "pass-root-password.sh"))))
-
- (use-package pcomplete
- :config (progn
- (defvar pcomplete-man-user-commands
- (split-string
- (shell-command-to-string
- "apropos -s 1 .|while read -r a b; do echo \" $a\";done;"))
- "p-completion candidates for `man' command")
-
- (defun pcomplete/man ()
- "Completion rules for the `man' command."
- (pcomplete-here pcomplete-man-user-commands))))
-
- (use-package pcmpl-git
- :after pcomplete)
-
- (use-package exec-path-from-shell
- :init (exec-path-from-shell-initialize))
-
- (use-package expand-region
- :bind (("C-=" . er/expand-region)))
-
- (use-package flycheck
- :commands (flycheck-mode)
- :init (add-hook 'prog-mode-hook #'flycheck-mode))
-
- (use-package flyspell
- :bind (:map flyspell-mode-map
- ("C-;" . nil))
- :init (progn
- ;; (add-hook 'prog-mode-hook #'flyspell-prog-mode)
- (dolist (mode-hook '(text-mode-hook org-mode-hook LaTeX-mode-hook))
- (add-hook mode-hook #'flyspell-mode))))
-
- (use-package flyspell-correct-ivy
- :bind* (("C-." . flyspell-correct-word-generic)))
-
- (use-package go-eldoc
- :after go-mode
- :hook (go-mode . setup-go-mode)
- :config (progn
- (defun setup-go-mode ()
- (add-hook 'before-save-hook #'gofmt nil t)
- (go-eldoc-setup))))
-
- (use-package go-mode
- :bind (:map go-mode-map
- ("M-." . godef-jump)
- ("C-c d" . godoc-at-point))
- :init (progn
- (add-to-list 'exec-path (format "%s/.local/share/go/bin" (getenv "HOME")))
- (setenv "GOPATH" (format "%s/.local/share/go" (getenv "HOME")))))
-
- (use-package gnus-dired
- :bind (:map gnus-dired-mode-map
- ("C-x C-a" . gnus-dired-attach))
- :config (add-hook 'dired-mode-hook #'turn-on-gnus-dired-mode))
-
- (use-package help
- :config (temp-buffer-resize-mode))
-
- (use-package helpful
- :bind (("C-h ." . helpful-at-point)
- ("C-h k" . helpful-key)
- ("C-h v" . helpful-variable)
- ("C-h f" . helpful-callable)))
-
- (use-package ibuffer
- :bind (("C-x C-b" . ibuffer)))
-
- ;; Fix dead characters
- (use-package iso-transl
- :demand t)
-
- (use-package ispell
- :config
- (defun ispell-word-then-abbrev (p)
- "Call `ispell-word', then create an abbrev for it.
- With prefix P, create local abbrev. Otherwise it will
- be global."
- (interactive "P")
- (let (bef aft)
- (save-excursion
- (while (progn
- (backward-word)
- (and (setq bef (thing-at-point 'word))
- (not (ispell-word nil 'quiet)))))
- (setq aft (thing-at-point 'word)))
- (when (and aft bef (not (equal aft bef)))
- (setq aft (downcase aft))
- (setq bef (downcase bef))
- (define-abbrev
- (if p local-abbrev-table global-abbrev-table)
- bef aft)
- (write-abbrev-file)
- (message "\"%s\" now expands to \"%s\" %sally"
- bef aft (if p "loc" "glob")))))
-
- (define-key ctl-x-map "\C-i" #'ispell-word-then-abbrev))
-
- (use-package ivy
- :demand t
- ;; :bind (("C-c r" . ivy-resume))
- :config (progn
- (ivy-mode 1)
- (setq ivy-use-virtual-buffers t)
- (setq ivy-count-format "(%d/%d) ")
- (setq ivy-use-selectable-prompt t)))
-
- (progn ; `isearch'
- (setq isearch-allow-scroll t))
-
- (use-package js2-mode
- :mode "\\.js\\'"
- :config (progn
- (define-key js2-mode-map (kbd "C-c C-o") nil))
- :config
- (defun js2-show-node-at-point ()
- (interactive)
- (js2-show-node (js2-node-at-point)))
-
- (defun js2-show-node-parent-at-point ()
- (interactive)
- (js2-show-node (js2-node-parent (js2-node-at-point))))
-
- (defun js2-show-node (node)
- (let* ((buf (get-buffer-create "*js2-node-at-point*"))
- (node-contents (buffer-substring (js2-node-abs-pos node) (js2-node-abs-end node))))
- (with-current-buffer
- (set-buffer buf)
- (delete-region (point-min) (point-max))
- (insert node-contents)))))
-
- (use-package emacs-js
- :commands (setup-js-buffer)
- :init
- (progn
- (add-hook 'js-mode-hook #'setup-js-buffer)))
-
- (use-package finsit-bugref
- :demand t
- :config
- (progn
- (finsit-bugref-setup)))
-
- (use-package finsit-prodigy
- :demand t
- :after prodigy
- :config (progn
- (finsit-prodigy-setup)))
-
- (use-package finsit-elcouch
- :demand t
- :after elcouch
- :config
- (progn
- (finsit-elcouch-setup)))
-
- (use-package finsit-basecamp
- :demand t
- :config
- (progn
- (finsit-basecamp-setup)))
-
- (use-package finsit-magit
- :demand t
- :after magit
- :config
- (progn
- (finsit-magit-setup)))
-
- (use-package finsit-prodigy
- :demand t
- :after prodigy)
-
- (use-package finsit-yasnippet
- :demand t
- :after yasnippet
- :config
- (progn
- (finsit-yasnippet-setup)))
-
- (use-package klassified
- :init (add-hook 'js2-mode-hook #'klassified-interaction-js-mode))
-
- (use-package less-css-mode)
-
- (use-package lisp-mode
- :config
- (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode)
- (defun indent-spaces-mode ()
- (setq indent-tabs-mode nil))
- (add-hook 'lisp-interaction-mode-hook #'indent-spaces-mode))
-
- (use-package magit
- :config (progn
- ;; (magit-add-section-hook 'magit-status-sections-hook
- ;; 'magit-insert-modules
- ;; 'magit-insert-unpulled-from-upstream)
- (magit-define-popup-action 'magit-commit-popup
- ?x "Absorb" #'magit-commit-absorb-popup)
- (setq magit-branch-prefer-remote-upstream '("master"))
- (setq magit-branch-adjust-remote-upstream-alist '(("origin/master" "master")))
- (setq magit-branch-arguments nil)))
-
- (use-package man
- :config (setq Man-width 80))
-
- (use-package multiple-cursors
- :bind (("M-RET" . mc/edit-lines)
- ("C-<" . mc/mark-previous-like-this)
- ("C->" . mc/mark-next-like-this)
- ("C-M-<" . mc/unmark-next-like-this)
- ("C-M->" . mc/unmark-previous-like-this)
- ("C-c C-<" . mc/mark-all-like-this)))
-
- (use-package nix-mode
- :config (progn
- (defun nixfmt-fix ()
- (interactive)
- (when (executable-find "nixfmt")
- (let ((point (point)))
- (unwind-protect
- (call-process-region (point-min) (point-max) "nixfmt" t t)
- (goto-char point)))))
-
- (define-minor-mode nixfmt-fix-mode
- "Use nixfmt to automatically format nix files."
- :lighter " nixfmt"
- (if nixfmt-fix-mode
- (add-hook 'before-save-hook #'nixfmt-fix nil t)
- (remove-hook 'before-save-hook #'nixfmt-fix t))))
- :hook (nix-mode . nixfmt-fix-mode))
-
- (use-package no-littering
- :demand t
- :config (progn
- (require 'recentf)
- (add-to-list 'recentf-exclude no-littering-var-directory)
- (add-to-list 'recentf-exclude no-littering-etc-directory)
- (setq delete-old-versions t
- kept-new-versions 6
- kept-old-versions 2
- version-control t)
- (setq backup-directory-alist
- `((".*" . ,(no-littering-expand-var-file-name "backup/"))))
- (setq auto-save-file-name-transforms
- `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
- (setq create-lockfiles nil)))
-
- (use-package nov
- :mode ("\\.epub\\'" . nov-mode)
- :config (progn
- (defun my-nov-font-setup ()
- (face-remap-add-relative 'variable-pitch
- :family "Gentium Book Basic"
- :height 1.3))
- (add-hook 'nov-mode-hook 'my-nov-font-setup)
-
- (setq nov-text-width 62)))
-
- ;; (use-package omnisharp
- ;; :after csharp-mode
- ;; :bind (:map omnisharp-mode-map
- ;; ("C-c r" . omnisharp-run-code-action-refactoring)
- ;; ("M-." . omnisharp-go-to-definition)
- ;; ;; ("M-." . omnisharp-find-implementations)
- ;; ("M-?" . omnisharp-find-usages))
- ;; :hook ((omnisharp-mode . configure-omnisharp)
- ;; (csharp-mode . omnisharp-mode))
- ;; :config
- ;; (progn
- ;; (add-to-list 'company-backends #'company-omnisharp)
- ;; (setq omnisharp-imenu-support t)
-
- ;; (defun configure-omnisharp ()
- ;; (local-set-key (kbd "C-c C-c") #'recompile))))
-
- ;; (use-package csharp-mode
- ;; :hook ((csharp-mode . configure-csharp))
- ;; :config (progn
- ;; (defun configure-csharp ()
- ;; (setq indent-tabs-mode nil)
- ;; (setq c-syntactic-indentation t)
- ;; (c-set-style "ellemtel")
- ;; (setq c-basic-offset 4)
- ;; (setq truncate-lines t)
- ;; (setq tab-width 4))))
-
- ;; (use-package lsp-mode
- ;; :hook ((csharp-mode . lsp)
- ;; (js2-mode . lsp))
- ;; :config (progn
- ;; (setq lsp-keymap-prefix "C-c l"))
- ;; :commands lsp)
-
- ;; (use-package lsp-ui :commands lsp-ui-mode)
- ;; (use-package lsp-ivy :commands lsp-ivy-workspace-symbol)
-
- ;; (use-package dap-mode)
- ;; (use-package dap-LANGUAGE) ;; to load the dap adapter for your language
-
- ;; optional if you want which-key integration
- (use-package which-key
- :config
- (which-key-mode))
-
- (use-package open-url-at-point
- :bind ("C-c C-o" . open-url-at-point))
-
- (use-package paredit
- :demand t
- :bind (:map paredit-mode-map
- ("M-s" . nil))
- :config
- (add-hook 'emacs-lisp-mode-hook #'paredit-mode)
- (add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode))
-
- (use-package paren
- :demand t
- :config (show-paren-mode))
-
- (use-package pass
- :mode ("org/reference/password-store/" . pass-view-mode)
- :bind ("C-x p" . pass)
- :config (progn
- (add-to-list 'auto-mode-alist '("\\<password-store\\>/.*\\.gpg\\'" . pass-view-mode))))
-
- (use-package pdf-tools
- :demand t
- :bind (:map pdf-view-mode-map
- ("C-s" . isearch-forward))
- :config (progn
- (pdf-tools-install)))
-
- (use-package counsel-projectile
- :demand t
- :after projectile
- :config (progn
- (counsel-projectile-mode)
- (define-key projectile-mode-map
- [remap projectile-ag]
- #'counsel-projectile-rg)))
-
- (use-package projectile
- :demand t
- :bind (:map projectile-mode-map
- ("C-c p" . projectile-command-map))
- :config (progn
- (projectile-mode)
- (projectile-register-project-type
- 'monitor
- '("gulpfile.js")
- :compile "cd ~/work/ftgp/monitor/monitor/Monitor.Web.Ui/Client && gulp lint"
- :test "cd ~/work/ftgp/monitor/monitor/Monitor.Web.Ui/Client && gulp karma"
- :test-suffix "-tests")))
-
- (use-package prog-mode
- :config (progn
- (global-prettify-symbols-mode)
- (defun indicate-buffer-boundaries-left ()
- (setq indicate-buffer-boundaries 'left))
- (add-hook 'prog-mode-hook #'indicate-buffer-boundaries-left)))
-
- (use-package quelpa
- :config (progn
- (setq quelpa-upgrade-p nil)
- (add-to-list 'quelpa-melpa-recipe-stores "~/.emacs.d/etc/quelpa/recipes/")))
-
- (use-package rainbow-mode
- :init (progn
- (add-hook 'css-mode-hook 'rainbow-mode)
- (add-hook 'less-mode-hook 'rainbow-mode)))
-
- (use-package recentf
- :demand t
- :init
- (progn
- (setq recentf-auto-cleanup 300)
- (setq recentf-max-saved-items 4000))
- :config
- (progn
- (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:")
- (recentf-mode)))
-
- (use-package company-restclient
- :after restclient
- :config (progn
- (add-to-list 'company-backend 'company-restclient)
- (add-hook 'restclient-mode-hook #'company-mode-on)))
-
- (use-package savehist
- :config (savehist-mode))
-
- (use-package saveplace
- :config (save-place-mode))
-
- (use-package shell-switcher
- :bind (("C-'" . shell-switcher-switch-buffer)
- ("C-M-'" . shell-switcher-new-shell))
- :config (progn
- (setq shell-switcher-new-shell-function #'eshell)))
-
- (use-package simple
- :config (column-number-mode))
-
- (use-package subword
- :init (global-subword-mode))
-
- (use-package swiper
- :bind (("C-s" . swiper-isearch)))
-
- (use-package tabify
- :config
- (defun tabify-buffer ()
- (interactive)
- (tabify (point-min) (point-max)))
-
- (defun untabify-buffer ()
- (interactive)
- (untabify (point-min) (point-max))))
-
- (use-package term
- :bind (
- :map term-mode-map
- ("C-c C-t" . my/term-toggle-line-mode)
- :map term-raw-map
- ("C-c C-t" . my/term-toggle-line-mode))
- :init (progn
- (defun my/term-toggle-line-mode ()
- "Toggle between char and line modes."
- (interactive)
- (if (term-in-char-mode)
- (term-line-mode)
- (term-char-mode)))))
-
- (progn ; `text-mode'
- (add-hook 'text-mode-hook #'indicate-buffer-boundaries-left))
-
- (use-package time-stamp
- :init (progn
- (defvar-local time-stamp-target nil
- "File in which time-stamps should be written.")
- (put 'time-stamp-target 'safe-local-variable 'string-or-null-p)
- (defun time-stamp-target ()
- "Update the time-stamp in `time-stamp-target' if non-nil."
- (when (and time-stamp-target
- (file-exists-p time-stamp-target))
- (with-current-buffer (find-file-noselect time-stamp-target)
- (time-stamp))))))
-
- (use-package tramp
- :config (progn
- (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
- (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil))
- (add-to-list 'tramp-default-proxies-alist
- (list (regexp-quote (system-name)) nil nil))))
-
- (use-package transmission
- :config (progn
- (defun transmission-add-magnet (url)
- "Like `transmission-add', but with no file completion."
- (interactive "sMagnet url: ")
- (transmission-add url))))
-
- (use-package uniquify
- :config
- (setq uniquify-buffer-name-style 'forward))
-
- (use-package url-vars
- :init
- (progn
- (setq url-privacy-level 'high)))
-
- (use-package web-mode
- :init (progn
- (add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.htm\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode)))
-
- (setq web-mode-css-indent-offset 2))
-
- (use-package whitespace
- :config
- (setq whitespace-display-mappings
- '(
- (space-mark 32 [183] [46]) ; normal space, ·
- (space-mark 160 [164] [95])
- (space-mark 2208 [2212] [95])
- (space-mark 2336 [2340] [95])
- (space-mark 3616 [3620] [95])
- (space-mark 3872 [3876] [95])
- (newline-mark 10 [182 10]) ; newlne, ¶
- (tab-mark 9 [9655 9] [92 9]) ; tab, ▷
- )))
-
- (progn ;; `window'
- (bind-key "C-;" #'other-window))
-
- (use-package winner
- :bind (("C-|". winner-undo)))
-
- (use-package workflow
- :commands (work-clock-out
- work-back-from-lunch
- work-coffee
- work-start
- work-stop
- work-lunch
- work-clock-in
- work-send-weekly-email))
-
- (use-package ws-butler
- :init
- (add-hook 'prog-mode-hook #'ws-butler-mode))
-
- (use-package yasnippet
- :demand t
- :init (progn
- (yas-global-mode)))
-
- (use-package zerodark-theme
- :demand t
- :config
- (progn
- (defun set-selected-frame-dark ()
- (interactive)
- (let ((frame-name (cdr (assq 'name (frame-parameters (selected-frame))))))
- (call-process-shell-command
- (format
- "xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT 'dark' -name '%s'"
- frame-name))))
-
- (when (window-system)
- (load-theme 'zerodark t)
- (zerodark-setup-modeline-format)
- (set-selected-frame-dark)
- (setq frame-title-format '(buffer-file-name "%f" ("%b"))))))
-
- (use-package minions
- :demand t
- :after zerodark-theme
- :config (unless minions-mode
- (minions-mode)))
-
- (use-package zoom-frm
- :bind (("C-+" . zoom-frm-in)
- ("C--" . zoom-frm-out)))
-
- ;; envrc must come late in the init.el file so add-hook adds it first
- ;; in `find-file-hook'.
- ;; (use-package envrc
- ;; :demand t
- ;; :config
- ;; (progn
- ;; (envrc-global-mode)
- ;; ;; ledger needs that for `ledger-toggle-current-transaction':
- ;; (unbind-key "C-c C-e" envrc-mode-map)))
-
- (progn ; startup
- (message "Loading %s...done (%.3fs)" user-init-file
- (float-time (time-subtract (current-time)
- before-user-init-time)))
- (add-hook 'after-init-hook
- (lambda ()
- (message
- "Loading %s...done (%.3fs) [after-init]" user-init-file
- (float-time (time-subtract (current-time)
- before-user-init-time))))
- t))
-
- (progn ; local packages
- (let ((dir (expand-file-name "local" user-emacs-directory)))
- (when (file-exists-p dir)
- (add-to-list 'load-path dir))))
-
- (progn ; personalize
- (let ((file (expand-file-name (concat (user-real-login-name) ".el")
- user-emacs-directory)))
- (when (file-exists-p file)
- (load file))))
-
- (progn ; host-specific setup
- (let* ((host (substring (shell-command-to-string "hostname") 0 -1))
- (host-dir (concat "~/.emacs.d/hosts/" host))
- (host-file (expand-file-name "init.el" host-dir)))
- (when (file-exists-p host-dir)
- (let ((default-directory host-dir))
- (add-to-list 'load-path host-dir)
- (normal-top-level-add-subdirs-to-load-path)))
- (when (file-exists-p host-file)
- (load host-file))))
-
- (progn ; private modules
- (let ((private-dir "~/.priv/elisp"))
- (when (file-exists-p private-dir)
- (add-to-list 'load-path private-dir)
- (require 'private-modules nil t))))
-
- ;; display line numbers in buffers visiting a file
- ;; (dolist (mode-hook '(prog-mode-hook text-mode-hook))
- ;; (add-hook mode-hook (lambda ()
- ;; (when buffer-file-name
- ;; (setq display-line-numbers t)))))
-
- (defun goto-line-with-line-numbers ()
- (interactive)
- (let ((display-line-numbers t))
- (call-interactively #'goto-line)))
-
- (global-set-key [remap goto-line] #'goto-line-with-line-numbers)
-
- ;; Local Variables:
- ;; indent-tabs-mode: nil
- ;; eval: (flycheck-mode -1)
- ;; no-byte-compile: t
- ;; End:
- ;;; init.el ends here
|