X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/266a86bd7fedf743225c2497956b73ecb2245196..c80c6166fbc20ffde6a2b407507226cac37cd9c4:/lisp/simple.el diff --git a/lisp/simple.el b/lisp/simple.el index ca20a57ec9..aa4b9a9718 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1,8 +1,8 @@ ;;; simple.el --- basic editing commands for Emacs -;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -;; Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, +;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +;; 2010 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: internal @@ -512,7 +512,7 @@ With arg N, insert N newlines." (interactive "*p") (let* ((do-fill-prefix (and fill-prefix (bolp))) (do-left-margin (and (bolp) (> (current-left-margin) 0))) - (loc (point)) + (loc (point-marker)) ;; Don't expand an abbrev before point. (abbrev-mode nil)) (newline n) @@ -973,6 +973,21 @@ rather than line counts." (re-search-forward "[\n\C-m]" nil 'end (1- line)) (forward-line (1- line))))) +(defun count-words-region (start end) + "Print the number of words in the region. +When called interactively, the word count is printed in echo area." + (interactive "r") + (let ((count 0)) + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (while (forward-word 1) + (setq count (1+ count))))) + (if (interactive-p) + (message "Region has %d words" count)) + count)) + (defun count-lines-region (start end) "Print number of lines and characters in the region." (interactive "r") @@ -2975,11 +2990,6 @@ If `interprogram-cut-function' is non-nil, apply it to STRING. Optional second argument REPLACE non-nil means that STRING will replace the front of the kill ring, rather than being added to the list. -Optional third arguments YANK-HANDLER controls how the STRING is later -inserted into a buffer; see `insert-for-yank' for details. -When a yank handler is specified, STRING must be non-empty (the yank -handler, if non-nil, is stored as a `yank-handler' text property on STRING). - When `save-interprogram-paste-before-kill' and `interprogram-paste-function' are non-nil, saves the interprogram paste string(s) into `kill-ring' before STRING. @@ -3019,22 +3029,19 @@ argument should still be a \"useful\" string for such uses." (setq kill-ring-yank-pointer kill-ring) (if interprogram-cut-function (funcall interprogram-cut-function string))) +(set-advertised-calling-convention + 'kill-new '(string &optional replace) "23.3") (defun kill-append (string before-p &optional yank-handler) "Append STRING to the end of the latest kill in the kill ring. If BEFORE-P is non-nil, prepend STRING to the kill. -Optional third argument YANK-HANDLER, if non-nil, specifies the -yank-handler text property to be set on the combined kill ring -string. If the specified yank-handler arg differs from the -yank-handler property of the latest kill string, this function -adds the combined string to the kill ring as a new element, -instead of replacing the last kill with it. If `interprogram-cut-function' is set, pass the resulting kill to it." (let* ((cur (car kill-ring))) (kill-new (if before-p (concat string cur) (concat cur string)) (or (= (length cur) 0) (equal yank-handler (get-text-property 0 'yank-handler cur))) yank-handler))) +(set-advertised-calling-convention 'kill-append '(string before-p) "23.3") (defcustom yank-pop-change-selection nil "If non-nil, rotating the kill ring changes the window system selection." @@ -3115,11 +3122,7 @@ Supply two arguments, character positions indicating the stretch of text Any command that calls this function is a \"kill command\". If the previous command was also a kill command, the text killed this time appends to the text killed last time -to make one entry in the kill ring. - -In Lisp code, optional third arg YANK-HANDLER, if non-nil, -specifies the yank-handler text property to be set on the killed -text. See `insert-for-yank'." +to make one entry in the kill ring." ;; Pass point first, then mark, because the order matters ;; when calling kill-append. (interactive (list (point) (mark))) @@ -3151,6 +3154,7 @@ text. See `insert-for-yank'." (barf-if-buffer-read-only) ;; If the buffer isn't read-only, the text is. (signal 'text-read-only (list (current-buffer))))))) +(set-advertised-calling-convention 'kill-region '(beg end) "23.3") ;; copy-region-as-kill no longer sets this-command, because it's confusing ;; to get two copies of the text when the user accidentally types M-w and @@ -3685,8 +3689,6 @@ a mistake; see the documentation of `set-mark'." (marker-position (mark-marker)) (signal 'mark-inactive nil))) -(declare-function x-selection-owner-p "xselect.c" (&optional selection)) - (defsubst deactivate-mark (&optional force) "Deactivate the mark by setting `mark-active' to nil. Unless FORCE is non-nil, this function does nothing if Transient @@ -4053,29 +4055,8 @@ Invoke \\[apropos-documentation] and type \"transient\" or \"mark.*active\" at the prompt, to see the documentation of commands which are sensitive to the Transient Mark mode." :global t - :init-value (not noninteractive) - :initialize 'custom-initialize-delay - :group 'editing-basics) - -;; The variable transient-mark-mode is ugly: it can take on special -;; values. Document these here. -(defvar transient-mark-mode t - "*Non-nil if Transient Mark mode is enabled. -See the command `transient-mark-mode' for a description of this minor mode. - -Non-nil also enables highlighting of the region whenever the mark is active. -The variable `highlight-nonselected-windows' controls whether to highlight -all windows or just the selected window. - -If the value is `lambda', that enables Transient Mark mode temporarily. -After any subsequent action that would normally deactivate the mark -\(such as buffer modification), Transient Mark mode is turned off. - -If the value is (only . OLDVAL), that enables Transient Mark mode -temporarily. After any subsequent point motion command that is not -shift-translated, or any other action that would normally deactivate -the mark (such as buffer modification), the value of -`transient-mark-mode' is set to OLDVAL.") + ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again. + :variable transient-mark-mode) (defvar widen-automatically t "Non-nil means it is ok for commands to call `widen' when they want to. @@ -4410,7 +4391,7 @@ into account variable-width characters and line continuation." (goto-char (next-char-property-change (point)))) ;; Move a line. ;; We don't use `end-of-line', since we want to escape - ;; from field boundaries ocurring exactly at point. + ;; from field boundaries occurring exactly at point. (goto-char (constrain-to-field (let ((inhibit-field-text-motion t)) (line-end-position)) @@ -4497,7 +4478,7 @@ into account variable-width characters and line continuation." (let (new (old (point)) - (line-beg (save-excursion (beginning-of-line) (point))) + (line-beg (line-beginning-position)) (line-end ;; Compute the end of the line ;; ignoring effectively invisible newlines. @@ -4605,7 +4586,7 @@ and `current-column' to be able to ignore invisible text." ;; that will get us to the same place on the screen ;; but with a more reasonable buffer position. (goto-char normal-location) - (let ((line-beg (save-excursion (beginning-of-line) (point)))) + (let ((line-beg (line-beginning-position))) (while (and (not (bolp)) (invisible-p (1- (point)))) (goto-char (previous-char-property-change (point) line-beg)))))))) @@ -5083,16 +5064,12 @@ If optional arg REALLY-WORD is non-nil, it finds just a word." ;; Point is neither within nor adjacent to a word. (not strict)) ;; Look for preceding word in same line. - (skip-syntax-backward not-syntaxes - (save-excursion (beginning-of-line) - (point))) + (skip-syntax-backward not-syntaxes (line-beginning-position)) (if (bolp) ;; No preceding word in same line. ;; Look for following word in same line. (progn - (skip-syntax-forward not-syntaxes - (save-excursion (end-of-line) - (point))) + (skip-syntax-forward not-syntaxes (line-end-position)) (setq start (point)) (skip-syntax-forward syntaxes) (setq end (point))) @@ -6628,7 +6605,7 @@ See also `normal-erase-is-backspace'." (if enabled (progn - (define-key local-function-key-map [delete] [?\C-d]) + (define-key local-function-key-map [delete] [deletechar]) (define-key local-function-key-map [kp-delete] [?\C-d]) (define-key local-function-key-map [backspace] [?\C-?]) (dolist (b bindings) @@ -6764,5 +6741,4 @@ warning using STRING as the message.") (provide 'simple) -;; arch-tag: 24af67c0-2a49-44f6-b3b1-312d8b570dfd ;;; simple.el ends here