text-mode-expansions.el (2204B)
1 ;;; text-mode-expansions.el --- Expansions for expand-region to be used in text -*- lexical-binding: t; -*- 2 3 ;; Copyright (C) 2012-2023 Free Software Foundation, Inc 4 5 ;; Author: Ivan Andrus 6 ;; Based on js-mode-expansions by: Magnar Sveen <magnars@gmail.com> 7 ;; Keywords: marking region 8 9 ;; This program is free software; you can redistribute it and/or modify 10 ;; it under the terms of the GNU General Public License as published by 11 ;; the Free Software Foundation, either version 3 of the License, or 12 ;; (at your option) any later version. 13 14 ;; This program is distributed in the hope that it will be useful, 15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 ;; GNU General Public License for more details. 18 19 ;; You should have received a copy of the GNU General Public License 20 ;; along with this program. If not, see <http://www.gnu.org/licenses/>. 21 22 ;;; Commentary: 23 24 ;; Feel free to contribute any other expansions for normal text at 25 ;; 26 ;; https://github.com/magnars/expand-region.el 27 28 ;;; Code: 29 30 (require 'expand-region-core) 31 32 (defun er/mark-text-sentence () 33 "Marks one sentence." 34 (interactive) 35 ;; The obvious 36 ;; (backward-sentence 1) (mark-end-of-sentence 1) 37 ;; doesn't work here because it's repeated and the selection keeps 38 ;; growing by sentences, which isn't what's wanted. 39 (forward-sentence 1) 40 (set-mark (point)) 41 (backward-sentence 1)) 42 43 (defun er/mark-text-paragraph () 44 "Marks one paragraph." 45 (interactive) 46 (mark-paragraph) 47 (skip-chars-forward er--space-str)) 48 49 (defun er/add-text-mode-expansions () 50 "Adds expansions for buffers in `text-mode' except for `html-mode'. 51 Unfortunately `html-mode' inherits from `text-mode' and 52 text-mode-expansions don't work well in `html-mode'." 53 (unless (member major-mode expand-region-exclude-text-mode-expansions) 54 (set (make-local-variable 'er/try-expand-list) 55 (append 56 er/try-expand-list 57 '(er/mark-text-sentence 58 er/mark-text-paragraph 59 mark-page))))) 60 61 (er/enable-mode-expansions 'text-mode #'er/add-text-mode-expansions) 62 63 (provide 'text-mode-expansions) 64 65 ;; text-mode-expansions.el ends here