2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Main options
|
2012-10-12 22:02:52 +02:00
|
|
|
|
|
2017-06-16 21:33:53 +02:00
|
|
|
|
(require 'functions)
|
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Minimal UI. Run early to hide it as soon as possible.
|
2014-03-08 11:48:35 +01:00
|
|
|
|
(setq inhibit-startup-screen t)
|
|
|
|
|
(menu-bar-mode -1)
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; `tool-bar-mode' and `scroll-bar-mode' might not be compiled in.
|
|
|
|
|
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
|
|
|
|
|
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
|
2017-07-28 18:20:50 +02:00
|
|
|
|
;;; In some cases, Emacs can still decide by itself to use graphical boxes.
|
|
|
|
|
;;; Force on using the minibuffer instead.
|
|
|
|
|
(setq use-dialog-box nil)
|
2014-03-08 11:48:35 +01:00
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(setq
|
|
|
|
|
recentf-max-saved-items 100
|
|
|
|
|
disabled-command-function nil ; Enable all disabled commands.
|
|
|
|
|
scroll-error-top-bottom t ; Alternative scrolling
|
|
|
|
|
kill-whole-line t ; Kill whole line including \n.
|
|
|
|
|
scroll-step 1 ; Line by line scrolling
|
|
|
|
|
calendar-week-start-day 1
|
|
|
|
|
calendar-date-style 'iso
|
|
|
|
|
comint-prompt-read-only t
|
2020-05-23 11:29:26 +02:00
|
|
|
|
comint-input-ignoredups t
|
2019-11-02 16:41:17 +01:00
|
|
|
|
woman-fill-column fill-column
|
2020-11-19 11:58:43 +01:00
|
|
|
|
abbrev-file-name (expand-file-name "abbrev_defs" (getenv "PERSONAL"))
|
2019-11-02 16:41:17 +01:00
|
|
|
|
frame-title-format (concat "%b" (unless (daemonp) " [serverless]"))
|
|
|
|
|
delete-by-moving-to-trash t
|
|
|
|
|
uniquify-buffer-name-style 'forward
|
|
|
|
|
vc-follow-symlinks t ; Disable prompt (but leave warning) on git symlink.
|
|
|
|
|
sort-fold-case t
|
|
|
|
|
|
|
|
|
|
;;; Clipboard and primary selection.
|
|
|
|
|
select-enable-primary t
|
|
|
|
|
save-interprogram-paste-before-kill t
|
|
|
|
|
|
|
|
|
|
;;; Save all visited URLs.
|
|
|
|
|
url-history-track t
|
|
|
|
|
url-history-file (expand-file-name "url/history" user-emacs-directory)
|
|
|
|
|
|
2020-11-13 13:04:34 +01:00
|
|
|
|
;; History duplicates are useless (?) and annoying with recent Helm:
|
|
|
|
|
;; https://github.com/syl20bnr/spacemacs/issues/13564
|
|
|
|
|
history-delete-duplicates t
|
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
;; Timeout before echoing the prefix of an unfinished keystroke.
|
|
|
|
|
echo-keystrokes 0.5
|
|
|
|
|
|
|
|
|
|
;; Disable autosave features.
|
|
|
|
|
auto-save-default nil
|
|
|
|
|
auto-save-list-file-prefix nil
|
|
|
|
|
|
|
|
|
|
;; Place backup files in specific directory.
|
|
|
|
|
backup-directory-alist
|
|
|
|
|
`(("." . ,(expand-file-name "backups" user-emacs-directory)))
|
|
|
|
|
|
|
|
|
|
;; Enforce horizontal splitting. 140 means that the window is large enough to
|
|
|
|
|
;; hold 2 other windows of 70 columns.
|
|
|
|
|
split-height-threshold nil
|
|
|
|
|
split-width-threshold 140
|
|
|
|
|
|
|
|
|
|
;; TODO: Ediff does not seem to auto-refine. Bug? Compare daemon and no-daemon.
|
|
|
|
|
ediff-window-setup-function 'ediff-setup-windows-plain
|
|
|
|
|
ediff-split-window-function 'split-window-horizontally)
|
2017-07-28 18:21:06 +02:00
|
|
|
|
|
2021-02-21 17:18:01 +01:00
|
|
|
|
;; Bookmarks
|
|
|
|
|
(setq bookmark-save-flag 1)
|
2021-02-26 20:14:14 +01:00
|
|
|
|
(let ((personal-bookmarks (expand-file-name "bookmarks/emacs-bookmarks.el.gpg"
|
2021-02-21 17:18:01 +01:00
|
|
|
|
(getenv "PERSONAL"))))
|
|
|
|
|
(when (file-exists-p personal-bookmarks)
|
|
|
|
|
(setq bookmark-default-file personal-bookmarks)))
|
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Remember last cursor position.
|
2017-08-03 18:49:33 +02:00
|
|
|
|
(save-place-mode)
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; When the daemon is killed abruptly, places are not saved. Adding this hook
|
|
|
|
|
;;; allows to save places at a strategic moment.
|
2014-03-03 21:05:09 +01:00
|
|
|
|
(add-hook 'before-save-hook 'save-place-kill-emacs-hook)
|
2013-05-31 19:01:32 +02:00
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(savehist-mode) ; Save M-: history.
|
2013-05-31 19:01:32 +02:00
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(setq-default major-mode 'text-mode) ; Default mode.
|
2013-02-28 22:09:31 +01:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Disable suspend key since it is useless on Emacs server.
|
2013-06-12 17:05:10 +02:00
|
|
|
|
(global-unset-key (kbd "C-z"))
|
|
|
|
|
(global-unset-key (kbd "C-x C-z"))
|
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(defalias 'yes-or-no-p 'y-or-n-p) ; Make questions less annoying.
|
2013-10-20 18:19:19 +02:00
|
|
|
|
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(size-indication-mode 1) ; Print buffer size in mode line.
|
2013-06-27 17:06:07 +02:00
|
|
|
|
|
2017-06-19 21:32:54 +02:00
|
|
|
|
;;; Display defun in mode line.
|
2017-06-27 22:14:36 +02:00
|
|
|
|
;; (which-function-mode)
|
2017-06-19 21:32:54 +02:00
|
|
|
|
|
2017-07-31 18:39:21 +02:00
|
|
|
|
;;; No need when we have a status bar.
|
|
|
|
|
;; (display-time)
|
|
|
|
|
;; (setq display-time-day-and-date t
|
|
|
|
|
;; display-time-24hr-format t
|
|
|
|
|
;; display-time-default-load-average nil)
|
|
|
|
|
|
|
|
|
|
;;; Just like time, no need when we have a status bar.
|
|
|
|
|
;; (display-battery-mode)
|
2017-06-19 21:32:54 +02:00
|
|
|
|
;;; TODO: Battery status (%b) does not work properly.
|
2017-07-31 18:39:21 +02:00
|
|
|
|
;; (setq battery-mode-line-format "[%p%%%b %t]")
|
2017-06-19 21:32:54 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Line numbers
|
|
|
|
|
;;; Adding to `find-file-hook' ensures it will work for every file, regardless of
|
|
|
|
|
;;; the mode, but it won't work for buffers without files nor on mode change.
|
2017-06-18 17:55:38 +02:00
|
|
|
|
(dolist (hook '(prog-mode-hook text-mode-hook))
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(add-hook hook 'ambrevar/turn-on-column-number-mode)
|
|
|
|
|
(add-hook hook 'ambrevar/turn-off-line-number-mode)
|
2018-06-01 11:09:36 +02:00
|
|
|
|
(add-hook hook 'display-line-numbers-mode))
|
2018-05-03 07:36:57 +02:00
|
|
|
|
(setq display-line-numbers-type 'visual)
|
2019-04-02 10:49:42 +02:00
|
|
|
|
(defun ambrevar/turn-on-absolute-line-number ()
|
|
|
|
|
(setq display-line-numbers-type t))
|
|
|
|
|
(setq auto-revert-interval 1)
|
|
|
|
|
(add-hook 'auto-revert-tail-mode-hook 'ambrevar/turn-on-absolute-line-number)
|
2017-05-28 12:32:48 +02:00
|
|
|
|
|
|
|
|
|
;;; Indentation
|
2014-10-24 14:58:38 +02:00
|
|
|
|
(setq-default tab-width 2)
|
|
|
|
|
(defvaralias 'standard-indent 'tab-width)
|
|
|
|
|
(setq-default indent-tabs-mode t)
|
2014-10-30 18:18:08 +01:00
|
|
|
|
|
2014-11-12 15:09:14 +01:00
|
|
|
|
(setq
|
|
|
|
|
whitespace-style
|
2016-06-10 18:05:05 +02:00
|
|
|
|
'(face empty indentation space-after-tab space-before-tab tab-mark trailing))
|
2017-06-18 20:52:00 +02:00
|
|
|
|
;;; REVIEW: `whitespace-report' will mistakenly always report empty lines at
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; beginning and end of buffer as long as there is at least one empty line.
|
|
|
|
|
;;; `whitespace-cleanup' works properly however.
|
2017-06-18 20:52:00 +02:00
|
|
|
|
;;; Reported at http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23740.
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;; (setq whitespace-action '(report-on-bogus))
|
|
|
|
|
|
2017-08-30 17:45:48 +02:00
|
|
|
|
;;; Cycle spacing instead of just-one-space. This frees M-\.
|
|
|
|
|
(global-set-key [remap just-one-space] 'cycle-spacing)
|
|
|
|
|
|
2017-06-03 12:47:23 +02:00
|
|
|
|
;;; Hippie expand
|
2017-06-20 20:38:59 +02:00
|
|
|
|
;; (global-set-key (kbd "M-/") 'hippie-expand)
|
2014-02-21 20:41:11 +01:00
|
|
|
|
|
2017-06-30 18:23:37 +02:00
|
|
|
|
;;; Abbreviation is like snippets: annoying at times, especially in
|
|
|
|
|
;;; prog-mode. They are useful in text mode to avoid the sprawling of
|
|
|
|
|
;;; abbreviations.
|
|
|
|
|
(add-hook 'text-mode-hook 'abbrev-mode)
|
2012-10-12 15:23:36 +02:00
|
|
|
|
|
2017-06-03 12:46:09 +02:00
|
|
|
|
;;; Auto-fill
|
|
|
|
|
(when (getenv "MANWIDTH")
|
|
|
|
|
(setq-default fill-column (string-to-number (getenv "MANWIDTH"))))
|
2012-10-12 15:23:36 +02:00
|
|
|
|
(add-hook 'text-mode-hook 'turn-on-auto-fill)
|
2016-07-21 13:37:46 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Windmove mode
|
2017-10-08 20:36:28 +02:00
|
|
|
|
;;; By default, it allows easy window switching with Shift+arrows. I like to
|
|
|
|
|
;;; stick to the home-row, but to avoid shadowing other binding I exceptionaly use
|
|
|
|
|
;;; 'super' (normally reserved to the WM).
|
2012-10-12 15:23:36 +02:00
|
|
|
|
(when (fboundp 'windmove-default-keybindings)
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(ambrevar/global-set-keys
|
2017-07-09 22:47:50 +02:00
|
|
|
|
"s-h" 'windmove-left
|
|
|
|
|
"s-j" 'windmove-down
|
|
|
|
|
"s-k" 'windmove-up
|
|
|
|
|
"s-l" 'windmove-right))
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(ambrevar/global-set-keys
|
2017-07-09 22:47:50 +02:00
|
|
|
|
"s-o" 'delete-other-windows
|
|
|
|
|
;; "s-w" 'other-window
|
|
|
|
|
"s-c" 'delete-window)
|
2012-10-12 15:23:36 +02:00
|
|
|
|
|
2019-11-02 18:08:38 +01:00
|
|
|
|
;; REVIEW: If xdg-open is not found, set Emacs URL browser to the environment browser,
|
|
|
|
|
;; or w3m if BROWSER is not set.
|
|
|
|
|
;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18986.
|
2020-09-27 10:36:21 +02:00
|
|
|
|
;; In Emacs 27, the BROWSER variable is still not checked.
|
2018-07-20 14:46:52 +02:00
|
|
|
|
(require 'browse-url)
|
2019-11-02 18:08:38 +01:00
|
|
|
|
(setq browse-url-generic-program (or
|
|
|
|
|
(executable-find (or (getenv "BROWSER") ""))
|
|
|
|
|
(when (executable-find "xdg-mime")
|
|
|
|
|
(let ((desktop-browser (ambrevar/call-process-to-string "xdg-mime" "query" "default" "text/html")))
|
|
|
|
|
(substring desktop-browser 0 (string-match "\\.desktop" desktop-browser))))
|
|
|
|
|
(executable-find browse-url-mozilla-program)
|
|
|
|
|
(executable-find browse-url-firefox-program)
|
|
|
|
|
(executable-find browse-url-chromium-program)
|
|
|
|
|
(executable-find browse-url-kde-program)
|
|
|
|
|
(executable-find browse-url-conkeror-program)
|
|
|
|
|
(executable-find browse-url-chrome-program)))
|
2018-12-02 12:33:17 +01:00
|
|
|
|
(setq browse-url-browser-function '(;; TODO: Display hyperspec in other window.
|
|
|
|
|
("http://www.lispworks.com/reference/HyperSpec/.*" . eww-browse-url)
|
2018-12-28 19:38:46 +01:00
|
|
|
|
("file:///.*HyperSpec.*" . eww-browse-url)
|
2018-12-02 12:33:17 +01:00
|
|
|
|
("." . browse-url-default-browser)))
|
2017-09-11 19:29:35 +02:00
|
|
|
|
|
2018-02-15 23:42:04 +01:00
|
|
|
|
;; shr
|
2019-03-20 19:11:27 +01:00
|
|
|
|
(setq shr-width (string-to-number (or (getenv "MANWIDTH") "80"))
|
|
|
|
|
;; If you're using a dark theme, and the messages are hard to read, it
|
|
|
|
|
;; can help to change the luminosity, e.g.:
|
2019-11-02 16:41:17 +01:00
|
|
|
|
shr-color-visible-luminance-min 80
|
2020-09-27 10:34:00 +02:00
|
|
|
|
browse-url-secondary-browser-function browse-url-browser-function)
|
2018-02-15 23:42:04 +01:00
|
|
|
|
|
2018-01-31 12:05:27 +01:00
|
|
|
|
;;; Extend MIME-types support for videos.
|
2018-01-12 11:23:37 +01:00
|
|
|
|
(with-eval-after-load 'mailcap
|
2018-11-09 08:35:52 +01:00
|
|
|
|
(dolist (ext '((".webm" . "video/webm")
|
|
|
|
|
(".mp4" . "video/mp4")
|
|
|
|
|
(".flv" . "video/mp4")
|
|
|
|
|
(".ogv" . "video/ogg")
|
2019-03-22 12:39:24 +01:00
|
|
|
|
(".wmv" . "video/x-ms-wmv")
|
2018-11-09 08:35:52 +01:00
|
|
|
|
(".mkv" . "video/x-matroska")))
|
2020-09-27 10:36:21 +02:00
|
|
|
|
(add-to-list 'mailcap-mime-extensions ext)))
|
2012-11-13 18:46:20 +01:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Default ispell dictionary. If not set, Emacs uses the current locale.
|
2015-04-17 15:47:48 +02:00
|
|
|
|
(setq ispell-dictionary "english")
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(ambrevar/define-keys text-mode-map
|
|
|
|
|
"C-<f6>" 'ispell-change-dictionary
|
|
|
|
|
"<f6>" 'ispell-buffer)
|
2012-12-21 21:30:54 +01:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Show matching parenthesis
|
2013-01-10 15:57:07 +01:00
|
|
|
|
(show-paren-mode 1)
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; By default, there’s a small delay before showing a matching parenthesis. Set
|
|
|
|
|
;;; it to 0 to deactivate.
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(setq show-paren-delay 0
|
|
|
|
|
show-paren-when-point-inside-paren t)
|
2013-01-10 15:57:07 +01:00
|
|
|
|
|
2017-06-29 19:06:53 +02:00
|
|
|
|
;;; Electric Pairs to auto-complete () [] {} "" etc. It works on regions.
|
2017-06-03 19:41:19 +02:00
|
|
|
|
;; (electric-pair-mode)
|
2013-02-27 22:35:16 +01:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Compilation bindings and conveniences.
|
2019-11-02 16:41:17 +01:00
|
|
|
|
(setq compilation-ask-about-save nil
|
|
|
|
|
compilation-scroll-output 'first-error)
|
2017-05-22 16:12:30 +02:00
|
|
|
|
(with-eval-after-load 'compile
|
|
|
|
|
;; Making `compilation-directory' local only works with `recompile'
|
|
|
|
|
;; and if `compile' is never used. In such a scenario,
|
|
|
|
|
;; `compile-command' is not saved by `recompile' itself which adds a
|
|
|
|
|
;; lot of bookkeeping.
|
|
|
|
|
;; (make-variable-buffer-local 'compilation-directory)
|
|
|
|
|
;; (make-variable-buffer-local 'compile-history)
|
|
|
|
|
(make-variable-buffer-local 'compile-command))
|
2017-06-12 22:29:30 +02:00
|
|
|
|
;;; Some commands ignore that compilation-mode is a "dumb" terminal and still display colors.
|
|
|
|
|
;;; Thus we render those colors.
|
|
|
|
|
(require 'ansi-color)
|
2018-02-15 13:28:49 +01:00
|
|
|
|
(defun ambrevar/compilation-colorize-buffer ()
|
2017-06-12 22:29:30 +02:00
|
|
|
|
(when (eq major-mode 'compilation-mode)
|
|
|
|
|
(ansi-color-apply-on-region compilation-filter-start (point-max))))
|
2018-02-15 13:28:49 +01:00
|
|
|
|
(add-hook 'compilation-filter-hook 'ambrevar/compilation-colorize-buffer)
|
2017-06-18 17:18:56 +02:00
|
|
|
|
(global-set-key (kbd "<f7>") 'previous-error)
|
|
|
|
|
(global-set-key (kbd "<f8>") 'next-error)
|
2018-02-15 13:28:49 +01:00
|
|
|
|
(defun ambrevar/compile-last-command ()
|
2017-09-14 17:50:34 +02:00
|
|
|
|
(interactive)
|
|
|
|
|
(compile compile-command))
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(ambrevar/define-keys prog-mode-map
|
|
|
|
|
"C-<f6>" 'compile
|
|
|
|
|
;; Do not use `recompile' since we want to change the compilation folder for the current buffer.
|
2018-02-15 13:28:49 +01:00
|
|
|
|
"<f6>" 'ambrevar/compile-last-command)
|
2017-09-14 17:50:34 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Desktop-mode
|
2017-10-23 21:07:25 +02:00
|
|
|
|
;;; REVIEW: `desktop-kill' should not query the user in `kill-emacs-hook'.
|
|
|
|
|
;;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28943
|
2019-04-02 10:50:37 +02:00
|
|
|
|
(defun ambrevar/desktop-setup (&rest _ignored)
|
2020-09-27 12:39:16 +02:00
|
|
|
|
(when (or (not (boundp 'desktop-save-mode))
|
|
|
|
|
(null desktop-save-mode))
|
|
|
|
|
;; (when (< emacs-major-version 27)
|
|
|
|
|
;; ;; TODO: By default, Emacs<27 prompts for unsafe variable when loading desktop
|
|
|
|
|
;; ;; which stucks the daemon. Disable this behaviour.
|
|
|
|
|
;; (defun ambrevar/enable-safe-local-variables ()
|
|
|
|
|
;; (setq enable-local-variables t))
|
|
|
|
|
;; (add-hook 'after-init-hook 'ambrevar/enable-safe-local-variables))
|
|
|
|
|
(require 'desktop) ; This adds a hook to `after-init-hook'.
|
|
|
|
|
;; (when (< emacs-major-version 27)
|
|
|
|
|
;; (defun ambrevar/enable-all-local-variables ()
|
|
|
|
|
;; (setq enable-local-variables :all))
|
|
|
|
|
;; (add-hook 'after-init-hook 'ambrevar/enable-all-local-variables))
|
2019-03-27 19:14:22 +01:00
|
|
|
|
(setq history-length 250
|
|
|
|
|
;; Default timer (30) is way too high: for somebody too frenzy, the timer
|
|
|
|
|
;; might never be saved. See
|
|
|
|
|
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28943.
|
|
|
|
|
desktop-auto-save-timeout 5
|
|
|
|
|
;; desktop-restore-eager 4 ; Can be annoying as you don't have your last-loaded buffers immediately.
|
|
|
|
|
;; desktop-load-locked-desktop 'ask
|
|
|
|
|
desktop-restore-frames nil
|
|
|
|
|
desktop-save t)
|
|
|
|
|
(desktop-save-mode)
|
|
|
|
|
(desktop-read)
|
2019-11-02 16:43:00 +01:00
|
|
|
|
;; Don't save any file, for faster startup and less problems.
|
2019-04-03 10:44:01 +02:00
|
|
|
|
(setq desktop-files-not-to-save ".")
|
2019-03-27 19:14:22 +01:00
|
|
|
|
;; Discarding PDFs and images makes it lighter.
|
|
|
|
|
(add-to-list 'desktop-modes-not-to-save 'pdf-view-mode)
|
|
|
|
|
(add-to-list 'desktop-modes-not-to-save 'image-mode)
|
2019-04-08 10:40:09 +02:00
|
|
|
|
;; Discard Elfeed since it may ask for PGP passphrase.
|
|
|
|
|
(add-to-list 'desktop-modes-not-to-save 'elfeed-search-mode)
|
2019-03-27 19:14:22 +01:00
|
|
|
|
;; TODO: `compile-history' should be buffer local but that does not work.
|
|
|
|
|
;; http://user42.tuxfamily.org/compile-history-local/index.html
|
|
|
|
|
;; http://stackoverflow.com/questions/22995203/one-compile-command-per-buffer-not-directory
|
|
|
|
|
;; (add-to-list 'desktop-locals-to-save 'compile-history)
|
|
|
|
|
(add-to-list 'desktop-locals-to-save 'compile-command)
|
|
|
|
|
(add-to-list 'desktop-locals-to-save 'ispell-local-dictionary)))
|
|
|
|
|
|
|
|
|
|
;; Auto-load/save sessions only when running the daemon. `server-running-p' is
|
|
|
|
|
;; only useful once the daemon is started and cannot be used for initialization.
|
|
|
|
|
;; Use `daemonp' instead if emacs is started with `--daemon', or add to the
|
|
|
|
|
;; server hook otherwise.
|
2017-04-28 07:24:51 +02:00
|
|
|
|
(when (daemonp)
|
2019-03-27 19:14:22 +01:00
|
|
|
|
(ambrevar/desktop-setup))
|
|
|
|
|
;; If started with `server-start' instead of `--daemon'.
|
|
|
|
|
;; server-mode does not seem to have any post-start hook.
|
|
|
|
|
(advice-add 'server-start :after #'ambrevar/desktop-setup)
|
2013-06-16 16:57:23 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Skeleton settings
|
2019-03-03 13:26:09 +01:00
|
|
|
|
(when (require 'patch-skeletons nil 'noerror)
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Do not expand abbrevs in skeletons.
|
2019-03-03 13:26:09 +01:00
|
|
|
|
(setq-default skeleton-further-elements '((abbrev-mode nil)))
|
|
|
|
|
(ambrevar/turn-on-skeleton-markers)
|
|
|
|
|
(ambrevar/global-set-keys
|
|
|
|
|
"C->" 'skeleton-next-position
|
|
|
|
|
"C-<" 'skeleton-previous-position))
|
2014-03-13 16:13:21 +01:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Move mouse away.
|
2020-09-09 11:51:53 +02:00
|
|
|
|
;; (mouse-avoidance-mode 'banish)
|
2017-05-28 18:37:54 +02:00
|
|
|
|
;;; That binding is not very useful and gets in the way of C-<mouse-1>.
|
2020-09-09 11:51:53 +02:00
|
|
|
|
;; (global-unset-key (kbd "C-<down-mouse-1>"))
|
2015-05-09 13:16:10 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Scroll zooming.
|
2015-06-02 10:05:14 +02:00
|
|
|
|
(setq text-scale-mode-step 1.1)
|
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Replace not-so-useful comment-dwim binding.
|
2017-10-17 00:52:50 +02:00
|
|
|
|
(global-set-key (kbd "M-;") 'comment-line)
|
2016-10-05 06:56:16 +02:00
|
|
|
|
|
2017-05-28 12:32:48 +02:00
|
|
|
|
;;; Replace `kill-buffer' binding by `kill-this-buffer'.
|
2017-06-20 20:38:59 +02:00
|
|
|
|
(global-set-key (kbd "C-x k") 'kill-this-buffer)
|
2016-11-06 06:48:41 +01:00
|
|
|
|
|
2017-06-20 16:24:23 +02:00
|
|
|
|
;;; Display Time World
|
2017-06-18 14:26:26 +02:00
|
|
|
|
(setq
|
|
|
|
|
zoneinfo-style-world-list
|
|
|
|
|
'(("UTC" "-")
|
|
|
|
|
("Europe/Paris" "France Germany Sweden")
|
|
|
|
|
("Asia/Calcutta" "India")
|
|
|
|
|
("Indian/Mauritius" "Mauritius")
|
|
|
|
|
("Africa/Tunis" "Tunisia")
|
|
|
|
|
("Asia/Ho_Chi_Minh" "Vietnam")
|
|
|
|
|
("Australia/Melbourne" "Melbourne")
|
2019-09-09 14:35:50 +02:00
|
|
|
|
("Africa/Nairobi" "Uganda")
|
2019-10-06 14:20:06 +02:00
|
|
|
|
("America/New_York" "New York")
|
|
|
|
|
("America/Los_Angeles" "Los Angeles")))
|
2017-06-18 14:26:26 +02:00
|
|
|
|
|
2017-10-08 20:36:28 +02:00
|
|
|
|
;;; Initial scratch buffer message.
|
2018-02-13 13:42:11 +01:00
|
|
|
|
(require 'functions) ; For `ambrevar/fortune-scratch-message'.
|
|
|
|
|
(let ((fortune (ambrevar/fortune-scratch-message)))
|
2017-09-18 16:06:13 +02:00
|
|
|
|
(when fortune
|
|
|
|
|
(setq initial-scratch-message fortune)))
|
|
|
|
|
|
2017-10-25 20:12:52 +02:00
|
|
|
|
;;; Support for Emacs pinentry.
|
|
|
|
|
;;; Required for eshell/sudo and everything relying on GPG queries.
|
|
|
|
|
(setq epa-pinentry-mode 'loopback) ; This will fail if gpg>=2.1 is not available.
|
2018-02-16 12:33:33 +01:00
|
|
|
|
(when (require 'pinentry nil t)
|
|
|
|
|
(pinentry-start))
|
2017-10-25 20:12:52 +02:00
|
|
|
|
|
2018-02-19 21:22:54 +01:00
|
|
|
|
;;; Edebug
|
2019-03-18 10:52:17 +01:00
|
|
|
|
;; (setq
|
|
|
|
|
;; ;; REVIEW: Does not seem necessary, since '=' already displays the coverage.
|
|
|
|
|
;; edebug-test-coverage t
|
|
|
|
|
;; edebug-trace t)
|
|
|
|
|
|
2019-10-31 19:14:39 +01:00
|
|
|
|
(when (require 'so-long nil 'noerror)
|
|
|
|
|
(global-so-long-mode 1))
|
|
|
|
|
|
2019-11-02 13:19:42 +01:00
|
|
|
|
(defun ambrevar/change-log-set-indent-rules ()
|
|
|
|
|
(setq tab-width 2 left-margin 2))
|
|
|
|
|
(add-hook 'change-log-mode-hook 'ambrevar/change-log-set-indent-rules)
|
|
|
|
|
|
2019-11-02 16:16:29 +01:00
|
|
|
|
(when (require 'ws-butler nil 'noerror)
|
2019-11-28 18:36:59 +01:00
|
|
|
|
(ws-butler-global-mode)
|
|
|
|
|
(setq ws-butler-keep-whitespace-before-point nil))
|
2019-11-02 16:16:29 +01:00
|
|
|
|
|
2020-09-27 12:30:18 +02:00
|
|
|
|
(require 'auth-source-pass)
|
2019-11-13 14:43:55 +01:00
|
|
|
|
(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc"))
|
2019-12-06 12:22:09 +01:00
|
|
|
|
(add-to-list 'auth-sources 'password-store 'append)
|
2019-11-13 14:43:55 +01:00
|
|
|
|
|
2020-01-15 11:23:46 +01:00
|
|
|
|
;; Visual
|
|
|
|
|
;;; Font size
|
|
|
|
|
(when (fboundp 'tool-bar-mode)
|
|
|
|
|
;; (set-face-attribute 'default nil :height 100)
|
|
|
|
|
(when (find-font (font-spec :name "DejaVu Sans Mono-12"))
|
|
|
|
|
;; Emacs raises an error if font is not found.
|
|
|
|
|
(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))))
|
|
|
|
|
;;; Cursor type: default (box) is visible and practical.
|
|
|
|
|
;; (setq-default cursor-type 'hollow)
|
|
|
|
|
(setq-default x-stretch-cursor t)
|
|
|
|
|
;;; Blinking cursor is on only when Emacs is not daemonized.
|
|
|
|
|
(blink-cursor-mode 0)
|
|
|
|
|
|
2020-07-08 19:16:41 +02:00
|
|
|
|
;; Add EncFS support (for M-x shell):
|
2020-07-09 12:14:34 +02:00
|
|
|
|
(when (require 'comint nil :noerror)
|
|
|
|
|
(setq comint-password-prompt-regexp
|
|
|
|
|
(concat
|
|
|
|
|
"\\("
|
|
|
|
|
comint-password-prompt-regexp
|
|
|
|
|
"\\|^EncFS\\)")))
|
2020-07-08 19:16:41 +02:00
|
|
|
|
|
2014-03-08 11:48:35 +01:00
|
|
|
|
(provide 'main)
|