;;; ycp-editing.el -- My config for editing -*- lexical-binding: t -*- ;; Copyright (C) 2023 Free Software Foundation. ;; Author: Yuchen Pei ;; Package-Requires: ((emacs "28.2")) ;; This file is part of dotfiles. ;; dotfiles is free software: you can redistribute it and/or modify it under ;; the terms of the GNU Affero General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; dotfiles is distributed in the hope that it will be useful, but WITHOUT ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General ;; Public License for more details. ;; You should have received a copy of the GNU Affero General Public ;; License along with dotfiles. If not, see . ;;; Commentary: ;; My config for editing. ;;; Code: ;; line wrap at window edge (set-default 'truncate-lines nil) (setq kill-do-not-save-duplicates t) (setq bidi-inhibit-bpa t) (setq save-interprogram-paste-before-kill t) (setq kill-ring-max 200) (setq sentence-end-double-space nil) (setq show-paren-delay 0) (setq window-divider-default-bottom-width 1) (setq window-divider-default-places 'bottom-only) ;; don't interpret C-m as RET (define-key input-decode-map [?\C-m] [C-m]) (setq save-place-file (locate-user-emacs-file "saveplace")) (my-package my-editing (:delay 5) (my-keybind global-map "C-k" #'my-kill-line "M-k" #'my-kill-line-backward "M-w" #'my-copy-line-or-region "C-o" #'my-new-line-above-or-below "C-<" #'my-escape-url-dwim "M-'" #'my-insert-pair "M-\\" #'my-delete-pair-dwim "M-Z" #'my-zap-back-to-char "C-x C-t" #'my-transpose-lines "M-`" #'my-buffer-create-scratch "C-M-;" #'my-comment-and-copy-selection "M-Q" #'my-unfill-paragraph "C-x M-s" #'my-save-without-formatting "C-x w" #'my-copy-url-at-point "C-" #'my-backward-kill-path-component "C-w" #'my-kill-region-if-active "C-c r " #'my-replace-leading-space "C-c r " #'my-concat-lines "C-M-y" #'my-yank-primary "C-a" #'my-beginning-of-line-or-indentation "M-c" #'my-copy-buffer-file-name ; override capitalize "M-o" #'delete-blank-lines ; alias for C-x C-o "M-SPC" #'cycle-spacing "M-z" #'zap-up-to-char ; NOT `zap-to-char' "" #'backward-kill-sexp ) (electric-pair-mode) ) (setq viper-mode nil) (my-package viper (:delay 60)) (define-key global-map [f2] 'revert-buffer) (define-key global-map (kbd "C-c r r") 'replace-regexp) (define-key global-map (kbd "C-c r s") 'replace-string) (my-package aggressive-indent (:install t) (:delay 15) (add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)) (my-package avy (:install t) (:delay 15) (my-keybind global-map "C-." #'avy-goto-char-timer) (setq avy-keys '(97 115 100 102 103 104 106 107 108))) (my-package pyim (:delay 30) (:install t)) ;;;; Auto revert mode (setq auto-revert-verbose t) (global-auto-revert-mode 1) ;;;; Delete selection (delete-selection-mode 1) ;;;; Tabs, indentation, and the TAB key (setq-default tab-always-indent 'complete tab-first-completion 'word-or-paren-or-punct ; Emacs 27 tab-width 2 indent-tabs-mode nil) (define-key global-map [f12] 'display-line-numbers-mode) ;; show column number (column-number-mode t) (define-key global-map (kbd "C-x F") 'my-sudo-find-file) ;; find file (my-package ffap (ffap-bindings) ;; Stop ffap from pinging things that look like domain names (setq ffap-machine-p-known 'accept)) (put 'narrow-to-region 'disabled nil) (setq large-file-warning-threshold nil) (setq x-stretch-cursor t) (setq delete-old-versions t) (setq version-control t) (add-hook 'text-mode-hook #'turn-on-auto-fill) (my-add-hooks #'my-non-special-modes-setup '(text-mode-hook prog-mode-hook)) (add-to-list 'auto-mode-alist '("\\(README\\|CHANGELOG\\|COPYING\\|LICENSE\\)\\'" . text-mode)) (add-hook 'before-save-hook 'time-stamp) (save-place-mode 1) (provide 'ycp-editing)