Mercurial > hg > xemacs-beta
diff lisp/simple.el @ 253:157b30c96d03 r20-5b25
Import from CVS: tag r20-5b25
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:20:27 +0200 |
parents | f220cc83d72e |
children | 11cf20601dec |
line wrap: on
line diff
--- a/lisp/simple.el Mon Aug 13 10:20:01 2007 +0200 +++ b/lisp/simple.el Mon Aug 13 10:20:27 2007 +0200 @@ -398,6 +398,12 @@ :type 'function :group 'editing-basics) +(eval-when-compile + (defmacro delete-forward-p () + '(and delete-key-deletes-forward + (or (eq 'tty (device-type)) + (x-keysym-on-keyboard-sans-modifiers-p 'backspace))))) + (defun backward-or-forward-delete-char (arg) "Delete either one character backwards or one character forwards. Controlled by the state of `delete-key-deletes-forward' and whether the @@ -405,9 +411,7 @@ BackSpace keysym, the delete key should always delete one character backwards." (interactive "*p") - (if (and delete-key-deletes-forward - (or (eq 'tty (device-type)) - (x-keysym-on-keyboard-p "BackSpace"))) + (if (delete-forward-p) (delete-char arg) (funcall backward-delete-function arg))) @@ -418,9 +422,7 @@ BackSpace keysym, the delete key should always delete one character backwards." (interactive "*p") - (if (and delete-key-deletes-forward - (or (eq 'tty (device-type)) - (x-keysym-on-keyboard-p "BackSpace"))) + (if (delete-forward-p) (kill-word arg) (backward-kill-word arg))) @@ -431,9 +433,7 @@ BackSpace keysym, the delete key should always delete one character backwards." (interactive "*P") - (if (and delete-key-deletes-forward - (or (eq 'tty (device-type)) - (x-keysym-on-keyboard-p "BackSpace"))) + (if (delete-forward-p) (kill-sentence arg) (backward-kill-sentence (prefix-numeric-value arg)))) @@ -444,9 +444,7 @@ BackSpace keysym, the delete key should always delete one character backwards." (interactive "*p") - (if (and delete-key-deletes-forward - (or (eq 'tty (device-type)) - (x-keysym-on-keyboard-p "BackSpace"))) + (if (delete-forward-p) (kill-sexp arg) (backward-kill-sexp arg))) @@ -567,25 +565,32 @@ (eval-buffer (current-buffer) printflag)) ;; XEmacs -(defun count-words-buffer (b) - (interactive "b") - (save-excursion - (let ((buf (or b (current-buffer)))) - (set-buffer buf) - (message "Buffer has %d words" - (count-words-region (point-min) (point-max)))))) +(defun count-words-buffer (buffer) + "Print the number of words in BUFFER. +If called noninteractively, the value is returned rather than printed. +BUFFER defaults to the current buffer." + (interactive "bBuffer: ") + (let ((words (count-words-region (point-min) (point-max) buffer))) + (when (interactive-p) + (message "Buffer has %d words" words)) + words)) ;; XEmacs -(defun count-words-region (start end) +(defun count-words-region (start end &optional buffer) + "Print the number of words in region between START and END in BUFFER. +If called noninteractively, the value is returned rather than printed. +BUFFER defaults to the current buffer." (interactive "r") (save-excursion - (let ((n 0)) + (set-buffer (or buffer (current-buffer))) + (let ((words 0)) (goto-char start) (while (< (point) end) - (if (forward-word 1) - (setq n (1+ n)))) - (message "Region has %d words" n) - n))) + (when (forward-word 1) + (incf words))) + (when (interactive-p) + (message "Region has %d words" words)) + words))) (defun count-lines-region (start end) "Print number of lines and characters in the region." @@ -595,14 +600,12 @@ (count-lines start end) (- end start))) ;; XEmacs -(defun count-lines-buffer (b) - "Print number of lines and characters in the specified buffer." - (interactive "_b") +(defun count-lines-buffer (buffer) + "Print number of lines and characters in BUFFER." + (interactive "_bBuffer: ") (save-excursion - (let ((buf (or b (current-buffer))) - cnt) - (set-buffer buf) - (setq cnt (count-lines (point-min) (point-max))) + (set-buffer (or buffer (current-buffer))) + (let ((cnt (count-lines (point-min) (point-max)))) (message "Buffer has %d lines, %d characters" cnt (- (point-max) (point-min))) cnt))) @@ -621,7 +624,7 @@ (goto-char opoint) (beginning-of-line) (if (/= start 1) - (message "line %d (narrowed line %d)" + (message "Line %d (narrowed line %d)" (1+ (count-lines 1 (point))) (1+ (count-lines start (point)))) (message "Line %d" (1+ (count-lines 1 (point)))))))))