diff --git a/core/core-editor.el b/core/core-editor.el index d4ae2ade8..3c461d16a 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -1,103 +1,108 @@ ;;; core-editor.el --- filling the editor shaped hole in the Emacs OS -;; Bookmarks -(setq bookmark-default-file (concat doom-temp-dir "/bookmarks") - bookmark-save-flag t) - -;; Formatting -(setq delete-trailing-lines nil +(setq shift-select-mode t ; activate mark on shift-click + ;; Save clipboard contents into kill-ring before replacing them + save-interprogram-paste-before-kill t + ;; Bookmarks + bookmark-default-file (concat doom-cache-dir "/bookmarks") + bookmark-save-flag t + ;; Formatting + delete-trailing-lines nil fill-column 80 - sentence-end-double-space nil) - -;; Scrolling -(setq hscroll-margin 1 + sentence-end-double-space nil + ;; Scrolling + hscroll-margin 1 hscroll-step 1 scroll-conservatively 1001 scroll-margin 0 - scroll-preserve-screen-position t) - -;; Whitespace (see `editorconfig') -(setq indent-tabs-mode nil + scroll-preserve-screen-position t + ;; Whitespace (see `editorconfig') + indent-tabs-mode nil require-final-newline t tab-always-indent t tab-width 4 tabify-regexp "^\t* [ \t]+" ; for :retab whitespace-line-column fill-column whitespace-style - '(face tabs tab-mark trailing indentation lines-tail) + '(face tabs tab-mark trailing lines-tail) whitespace-display-mappings - '((tab-mark ?\t [?› ?\t]) (newline-mark 10 [36 10]))) - -;; Wrapping -(setq truncate-lines t + '((tab-mark ?\t [?› ?\t]) (newline-mark 10 [36 10])) + ;; Wrapping + truncate-lines t truncate-partial-width-windows 50 visual-fill-column-center-text nil - word-wrap t) + word-wrap t + ;; clipboard + x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING) + ;; Use a shared clipboard + select-enable-clipboard t + select-enable-primary t) -;; Regions -(setq shift-select-mode t) +(unless noninteractive + ;; Save point across sessions + (require 'saveplace) + (setq save-place-file (concat doom-cache-dir "saveplace") + save-place t) + (when (>= emacs-major-version 25) + (save-place-mode +1)) -;; Save point across sessions -(require 'saveplace) -(setq save-place-file (concat doom-temp-dir "saveplace") - save-place t) -(when (>= emacs-major-version 25) - (save-place-mode +1)) + ;; Save history across sessions + (require 'savehist) + (setq savehist-file (concat doom-cache-dir "savehist") + savehist-save-minibuffer-history t + savehist-additional-variables + '(kill-ring search-ring regexp-search-ring)) + (savehist-mode 1) -;; Save history across sessions -(require 'savehist) -(setq savehist-file (concat doom-temp-dir "savehist") - savehist-save-minibuffer-history t - savehist-additional-variables - '(kill-ring search-ring regexp-search-ring)) -(savehist-mode 1) + ;; Remove text-property cruft from history + (defun unpropertize-savehist () + (mapc (lambda (list) + (when (boundp list) + (set list (mapcar 'substring-no-properties (eval list))))) + '(kill-ring minibuffer-history helm-grep-history helm-ff-history + file-name-history read-expression-history extended-command-history + evil-ex-history))) + (add-hook 'kill-emacs-hook 'unpropertize-savehist) + (add-hook 'savehist-save-hook 'unpropertize-savehist) -;; Remove text-property cruft from history -(defun unpropertize-savehist () - (mapc (lambda (list) - (when (boundp list) - (set list (mapcar 'substring-no-properties (eval list))))) - '(kill-ring minibuffer-history helm-grep-history helm-ff-history - file-name-history read-expression-history extended-command-history - evil-ex-history))) -(add-hook 'kill-emacs-hook 'unpropertize-savehist) -(add-hook 'savehist-save-hook 'unpropertize-savehist) + ;; Keep track of recently opened files + (require 'recentf) + (setq recentf-save-file (concat doom-cache-dir "recentf") + recentf-exclude '("/tmp/" "/ssh:" "\\.?ido\\.last$" "\\.revive$" "/TAGS$" + "emacs\\.d/private/cache/.+" "emacs\\.d/workgroups/.+$" + "wg-default" "/company-statistics-cache.el$" + "^/var/folders/.+$" "^/tmp/.+") + recentf-max-menu-items 0 + recentf-max-saved-items 250 + recentf-auto-cleanup 600 + recentf-filename-handlers '(abbreviate-file-name)) + (recentf-mode 1) -;; Keep track of recently opened files -(require 'recentf) -(setq recentf-save-file (concat doom-temp-dir "recentf") - recentf-exclude '("/tmp/" "/ssh:" "\\.?ido\\.last$" "\\.revive$" "/TAGS$" - "emacs\\.d/private/cache/.+" "emacs\\.d/workgroups/.+$" - "wg-default" "/company-statistics-cache.el$" - "^/var/folders/.+$" "^/tmp/.+") - recentf-max-menu-items 0 - recentf-max-saved-items 250 - recentf-auto-cleanup 600 - recentf-filename-handlers '(abbreviate-file-name)) -(recentf-mode 1) + ;; Ediff + (add-hook! ediff-load + (setq ediff-diff-options "-w" + ediff-split-window-function 'split-window-horizontally + ediff-window-setup-function 'ediff-setup-windows-plain)) ; no extra frames -;; Ediff -(add-hook! ediff-load - (setq ediff-diff-options "-w" - ediff-split-window-function 'split-window-horizontally - ediff-window-setup-function 'ediff-setup-windows-plain)) ; no extra frames - -;; revert buffers for changed files -(global-auto-revert-mode +1) + ;; revert buffers for changed files + (global-auto-revert-mode 1) + (setq auto-revert-verbose nil)) ;; -;; Plugins +;; Core Plugins ;; +;; Handles whitespace (tabs/spaces) settings externally. This way projects can +;; specify their own formatting rules. (package! editorconfig :demand t :mode ("\\.?editorconfig$" . editorconfig-conf-mode) :config (editorconfig-mode +1) - (push 'doom-mode editorconfig-exclude-modes) ;; Show whitespace in tabs indentation mode (add-hook! 'editorconfig-custom-hooks (if indent-tabs-mode (whitespace-mode +1)))) +;; Auto-close delimiters and blocks as you type (package! smartparens :demand t :init (setq sp-autowrap-region nil ; let evil-surround handle this @@ -153,8 +158,7 @@ (package! emr :commands (emr-show-refactor-menu emr-declare-command) - :config - (emr-initialize) + :config (emr-initialize) (define-key popup-menu-keymap [escape] 'keyboard-quit)) (package! expand-region :commands (er/expand-region er/contract-region er/mark-symbol er/mark-word)) @@ -187,7 +191,7 @@ ) (package! rotate-text - :quelpa (rotate-text :fetcher github :repo "debug-ito/rotate-text.el") + :quelpa (:fetcher github :repo "debug-ito/rotate-text.el") :commands (rotate-text rotate-text-backward) :config (push '("true" "false") rotate-text-words)) @@ -199,7 +203,7 @@ (package! wgrep :commands (wgrep-setup wgrep-change-to-wgrep-mode) :config - (def-popup! "^\\*ivy-occur counsel-ag" :align below :size 25 :select t :regexp t) + (defpopup! ("^\\*ivy-occur counsel-ag" :size 25 :select t :regexp t)) (setq wgrep-auto-save-buffer t) (advice-add 'wgrep-abort-changes :after 'doom/popup-close) (advice-add 'wgrep-finish-edit :after 'doom/popup-close))