Инкрементирую непомогаторов. Либо бери какой-нибудь стартер кит, например spacemacs, либо гугли конкретные хотелки и помаленьку пили свой конфиг. Разве что, вот у этого товарища есть куча полезных всем ништяков. Вот его бложек.
Конфиги состоят чуть менее, чем полностью из подёрганного в интернетах.
init.el
(package-initialize)
(custom-set-variables
'(custom-safe-themes
(quote
("119ba989ec49df3784657b41f3b76a820f3ba13afb0bf33f9b44287deaf1f8d4" default)))
'(erc-nick "debasher")
'(package-selected-packages
(quote
(scala-mode ac-cider debian-changelog-mode github-browse-file nginx-mode erc sql-indent clojure-mode fish-mode lua-mode company-math racer rustfmt cider clojure-mode go-mode rust-mode web-mode python-mode php-mode neotree multiple-cursors markdown-mode jabber gotham-theme dockerfile-mode))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(load "~/.emacs.d/utils.el")
(load "~/.emacs.d/environment.el")
(load "~/.emacs.d/hotkeys.el")
(load-config-by-hostname)
(if window-system (load-theme 'gotham))
(defun load-config-by-hostname ()
(load (concat "~/.emacs.d/" (system-name) ".el")))
(defun my-delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(delete-region
(point)
(progn
(forward-word arg)
(point))))
(defun my-backward-delete-word (arg)
"Delete characters backward until encountering the beginning of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(my-delete-word (- arg)))
(defun my-delete-line ()
"Delete text from current position to end of line char.
This command does not push text to `kill-ring'."
(interactive)
(delete-region
(point)
(progn (end-of-line 1) (point)))
(delete-char 1))
(defun my-delete-line-backward ()
"Delete text between the beginning of the line to the cursor position.
This command does not push text to `kill-ring'."
(interactive)
(let (p1 p2)
(setq p1 (point))
(beginning-of-line 1)
(setq p2 (point))
(delete-region p1 p2)))
(defun comment-or-uncomment-region-or-line ()
"Comments or uncomments the region or the current line if there's no active region."
(interactive)
(let (beg end)
(if (region-active-p)
(setq beg (region-beginning) end (region-end))
(setq beg (line-beginning-position) end (line-end-position)))
(comment-or-uncomment-region beg end)
(next-line)))
(defun volume-up ()
(interactive)
(shell-command-to-string "pactl set-sink-volume 0 +5%"))
(defun volume-down ()
(interactive)
(shell-command-to-string "pactl set-sink-volume 0 -5%"))
(defun cfg:reverse-input-method (input-method)
"Build the reverse mapping of single letters from INPUT-METHOD."
(interactive
(list (read-input-method-name "Use input method (default current): ")))
(if (and input-method (symbolp input-method))
(setq input-method (symbol-name input-method)))
(let ((current current-input-method)
(modifiers '(nil (control) (meta) (control meta))))
(when input-method
(activate-input-method input-method))
(when (and current-input-method quail-keyboard-layout)
(dolist (map (cdr (quail-map)))
(let* ((to (car map))
(from (quail-get-translation
(cadr map) (char-to-string to) 1)))
(when (and (characterp from) (characterp to))
(dolist (mod modifiers)
(define-key local-function-key-map
(vector (append mod (list from)))
(vector (append mod (list to)))))))))
(when input-method
(activate-input-method current))))
(defun cfg:page-up ()
(interactive)
(condition-case nil (scroll-down)
(beginning-of-buffer (goto-char (point-min)))))
(defun cfg:page-down ()
(interactive)
(condition-case nil (scroll-up)
(end-of-buffer (goto-char (point-max)))))
(defun copy-file-name-to-clipboard ()
"Copy the current buffer full file name to the clipboard."
(interactive)
(let ((str (if (stringp buffer-file-name)
buffer-file-name
(buffer-name))))
(when str
(kill-new str)
(message "Copied '%s' to the clipboard." str))))
(defun copy-dir-name-to-clipboard ()
"Copy the current buffer directory name to the clipboard."
(interactive)
(let ((str (if (stringp buffer-file-name)
(file-name-directory buffer-file-name)
default-directory)))
(when str
(kill-new str)
(message "Copied '%s' to the clipboard." str))))