Mercurial > hg > xemacs-beta
comparison 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 |
comparison
equal
deleted
inserted
replaced
252:afb15df44434 | 253:157b30c96d03 |
---|---|
396 is 'backward-delete-char, with 'backward-delete-char-untabify being a | 396 is 'backward-delete-char, with 'backward-delete-char-untabify being a |
397 popular alternate setting." | 397 popular alternate setting." |
398 :type 'function | 398 :type 'function |
399 :group 'editing-basics) | 399 :group 'editing-basics) |
400 | 400 |
401 (eval-when-compile | |
402 (defmacro delete-forward-p () | |
403 '(and delete-key-deletes-forward | |
404 (or (eq 'tty (device-type)) | |
405 (x-keysym-on-keyboard-sans-modifiers-p 'backspace))))) | |
406 | |
401 (defun backward-or-forward-delete-char (arg) | 407 (defun backward-or-forward-delete-char (arg) |
402 "Delete either one character backwards or one character forwards. | 408 "Delete either one character backwards or one character forwards. |
403 Controlled by the state of `delete-key-deletes-forward' and whether the | 409 Controlled by the state of `delete-key-deletes-forward' and whether the |
404 BackSpace keysym even exists on your keyboard. If you don't have a | 410 BackSpace keysym even exists on your keyboard. If you don't have a |
405 BackSpace keysym, the delete key should always delete one character | 411 BackSpace keysym, the delete key should always delete one character |
406 backwards." | 412 backwards." |
407 (interactive "*p") | 413 (interactive "*p") |
408 (if (and delete-key-deletes-forward | 414 (if (delete-forward-p) |
409 (or (eq 'tty (device-type)) | |
410 (x-keysym-on-keyboard-p "BackSpace"))) | |
411 (delete-char arg) | 415 (delete-char arg) |
412 (funcall backward-delete-function arg))) | 416 (funcall backward-delete-function arg))) |
413 | 417 |
414 (defun backward-or-forward-kill-word (arg) | 418 (defun backward-or-forward-kill-word (arg) |
415 "Delete either one word backwards or one word forwards. | 419 "Delete either one word backwards or one word forwards. |
416 Controlled by the state of `delete-key-deletes-forward' and whether the | 420 Controlled by the state of `delete-key-deletes-forward' and whether the |
417 BackSpace keysym even exists on your keyboard. If you don't have a | 421 BackSpace keysym even exists on your keyboard. If you don't have a |
418 BackSpace keysym, the delete key should always delete one character | 422 BackSpace keysym, the delete key should always delete one character |
419 backwards." | 423 backwards." |
420 (interactive "*p") | 424 (interactive "*p") |
421 (if (and delete-key-deletes-forward | 425 (if (delete-forward-p) |
422 (or (eq 'tty (device-type)) | |
423 (x-keysym-on-keyboard-p "BackSpace"))) | |
424 (kill-word arg) | 426 (kill-word arg) |
425 (backward-kill-word arg))) | 427 (backward-kill-word arg))) |
426 | 428 |
427 (defun backward-or-forward-kill-sentence (arg) | 429 (defun backward-or-forward-kill-sentence (arg) |
428 "Delete either one sentence backwards or one sentence forwards. | 430 "Delete either one sentence backwards or one sentence forwards. |
429 Controlled by the state of `delete-key-deletes-forward' and whether the | 431 Controlled by the state of `delete-key-deletes-forward' and whether the |
430 BackSpace keysym even exists on your keyboard. If you don't have a | 432 BackSpace keysym even exists on your keyboard. If you don't have a |
431 BackSpace keysym, the delete key should always delete one character | 433 BackSpace keysym, the delete key should always delete one character |
432 backwards." | 434 backwards." |
433 (interactive "*P") | 435 (interactive "*P") |
434 (if (and delete-key-deletes-forward | 436 (if (delete-forward-p) |
435 (or (eq 'tty (device-type)) | |
436 (x-keysym-on-keyboard-p "BackSpace"))) | |
437 (kill-sentence arg) | 437 (kill-sentence arg) |
438 (backward-kill-sentence (prefix-numeric-value arg)))) | 438 (backward-kill-sentence (prefix-numeric-value arg)))) |
439 | 439 |
440 (defun backward-or-forward-kill-sexp (arg) | 440 (defun backward-or-forward-kill-sexp (arg) |
441 "Delete either one sexpr backwards or one sexpr forwards. | 441 "Delete either one sexpr backwards or one sexpr forwards. |
442 Controlled by the state of `delete-key-deletes-forward' and whether the | 442 Controlled by the state of `delete-key-deletes-forward' and whether the |
443 BackSpace keysym even exists on your keyboard. If you don't have a | 443 BackSpace keysym even exists on your keyboard. If you don't have a |
444 BackSpace keysym, the delete key should always delete one character | 444 BackSpace keysym, the delete key should always delete one character |
445 backwards." | 445 backwards." |
446 (interactive "*p") | 446 (interactive "*p") |
447 (if (and delete-key-deletes-forward | 447 (if (delete-forward-p) |
448 (or (eq 'tty (device-type)) | |
449 (x-keysym-on-keyboard-p "BackSpace"))) | |
450 (kill-sexp arg) | 448 (kill-sexp arg) |
451 (backward-kill-sexp arg))) | 449 (backward-kill-sexp arg))) |
452 | 450 |
453 (defun zap-to-char (arg char) | 451 (defun zap-to-char (arg char) |
454 "Kill up to and including ARG'th occurrence of CHAR. | 452 "Kill up to and including ARG'th occurrence of CHAR. |
565 nil means discard it; anything else is stream for print." | 563 nil means discard it; anything else is stream for print." |
566 (interactive) | 564 (interactive) |
567 (eval-buffer (current-buffer) printflag)) | 565 (eval-buffer (current-buffer) printflag)) |
568 | 566 |
569 ;; XEmacs | 567 ;; XEmacs |
570 (defun count-words-buffer (b) | 568 (defun count-words-buffer (buffer) |
571 (interactive "b") | 569 "Print the number of words in BUFFER. |
572 (save-excursion | 570 If called noninteractively, the value is returned rather than printed. |
573 (let ((buf (or b (current-buffer)))) | 571 BUFFER defaults to the current buffer." |
574 (set-buffer buf) | 572 (interactive "bBuffer: ") |
575 (message "Buffer has %d words" | 573 (let ((words (count-words-region (point-min) (point-max) buffer))) |
576 (count-words-region (point-min) (point-max)))))) | 574 (when (interactive-p) |
575 (message "Buffer has %d words" words)) | |
576 words)) | |
577 | 577 |
578 ;; XEmacs | 578 ;; XEmacs |
579 (defun count-words-region (start end) | 579 (defun count-words-region (start end &optional buffer) |
580 "Print the number of words in region between START and END in BUFFER. | |
581 If called noninteractively, the value is returned rather than printed. | |
582 BUFFER defaults to the current buffer." | |
580 (interactive "r") | 583 (interactive "r") |
581 (save-excursion | 584 (save-excursion |
582 (let ((n 0)) | 585 (set-buffer (or buffer (current-buffer))) |
586 (let ((words 0)) | |
583 (goto-char start) | 587 (goto-char start) |
584 (while (< (point) end) | 588 (while (< (point) end) |
585 (if (forward-word 1) | 589 (when (forward-word 1) |
586 (setq n (1+ n)))) | 590 (incf words))) |
587 (message "Region has %d words" n) | 591 (when (interactive-p) |
588 n))) | 592 (message "Region has %d words" words)) |
593 words))) | |
589 | 594 |
590 (defun count-lines-region (start end) | 595 (defun count-lines-region (start end) |
591 "Print number of lines and characters in the region." | 596 "Print number of lines and characters in the region." |
592 ;; XEmacs change | 597 ;; XEmacs change |
593 (interactive "_r") | 598 (interactive "_r") |
594 (message "Region has %d lines, %d characters" | 599 (message "Region has %d lines, %d characters" |
595 (count-lines start end) (- end start))) | 600 (count-lines start end) (- end start))) |
596 | 601 |
597 ;; XEmacs | 602 ;; XEmacs |
598 (defun count-lines-buffer (b) | 603 (defun count-lines-buffer (buffer) |
599 "Print number of lines and characters in the specified buffer." | 604 "Print number of lines and characters in BUFFER." |
600 (interactive "_b") | 605 (interactive "_bBuffer: ") |
601 (save-excursion | 606 (save-excursion |
602 (let ((buf (or b (current-buffer))) | 607 (set-buffer (or buffer (current-buffer))) |
603 cnt) | 608 (let ((cnt (count-lines (point-min) (point-max)))) |
604 (set-buffer buf) | |
605 (setq cnt (count-lines (point-min) (point-max))) | |
606 (message "Buffer has %d lines, %d characters" | 609 (message "Buffer has %d lines, %d characters" |
607 cnt (- (point-max) (point-min))) | 610 cnt (- (point-max) (point-min))) |
608 cnt))) | 611 cnt))) |
609 | 612 |
610 (defun what-line () | 613 (defun what-line () |
619 (beginning-of-line) | 622 (beginning-of-line) |
620 (setq start (point)) | 623 (setq start (point)) |
621 (goto-char opoint) | 624 (goto-char opoint) |
622 (beginning-of-line) | 625 (beginning-of-line) |
623 (if (/= start 1) | 626 (if (/= start 1) |
624 (message "line %d (narrowed line %d)" | 627 (message "Line %d (narrowed line %d)" |
625 (1+ (count-lines 1 (point))) | 628 (1+ (count-lines 1 (point))) |
626 (1+ (count-lines start (point)))) | 629 (1+ (count-lines start (point)))) |
627 (message "Line %d" (1+ (count-lines 1 (point))))))))) | 630 (message "Line %d" (1+ (count-lines 1 (point))))))))) |
628 | 631 |
629 | 632 |