comparison lisp/simple.el @ 613:023b83f4e54b

[xemacs-hg @ 2001-06-10 10:42:16 by ben] ------ signal-code changes ------ data.c, device-tty.c, emacs.c, floatfns.c, linuxplay.c, nas.c, process-unix.c, signal.c, sunplay.c, sysdep.c, syssignal.h: use EMACS_SIGNAL everywhere instead of playing preprocessing games with signal(). s\windowsnt.h, s\mingw32.h, syssignal.h: Remove mswindows signal code from s+m headers and move to syssignal.h as one of the five ways of signal handling, instead of playing preprocessing games. fileio.c, sysdep.c: Rename sys_do_signal to qxe_reliable_signal. signal.c, process-unix.c, profile.c: Create set_timeout_signal(); use instead of just EMACS_SIGNAL to establish a signal handler on a timeout signal; this does special things under Cygwin. nt.c: Eliminate term_ntproc(), which is blank; used as a SIGABRT handler, which was wrong anyway. nt.c, win32.c: Move signal code from nt.c to win32.c, since Cygwin needs it too when dealing with timeout signals. s\cygwin32.h: Define CYGWIN_BROKEN_SIGNALS. ------ other changes ------ s\mingw32.h: Fix problems with NOT_C_CODE being in the wrong place and excluding defines needed when building Makefile.in.in. filelock.c, mule-canna.c, mule-ccl.c, mule-ccl.h, ralloc.c, unexalpha.c, unexapollo.c, unexcw.c, unexelfsgi.c, unexnt.c, unexsni.c, s\aix3-1.h, s\bsd4-1.h, s\bsd4-2.h, s\bsd4-3.h, s\cxux.h, s\cygwin32.h, s\dgux.h, s\dgux5-4r2.h, s\dgux5-4r3.h, s\dgux5-4r4.h, s\ewsux5r4.h, s\gnu.h, s\hpux.h, s\iris3-5.h, s\iris3-6.h, s\irix3-3.h, s\linux.h, s\mingw32.h, s\newsos5.h, s\nextstep.h, s\ptx.h, s\riscix1-1.h, s\riscix1-2.h, s\rtu.h, s\sco4.h, s\sco5.h, s\template.h, s\ultrix.h, s\umax.h, s\umips.h, s\unipl5-0.h, s\unipl5-2.h, s\usg5-0.h, s\usg5-2-2.h, s\usg5-2.h, s\usg5-3.h, s\usg5-4.h, s\windowsnt.h, s\xenix.h: Rename 'GNU Emacs' to XEmacs in the copyright and comments. nas.c: Stylistic cleanup. Avoid preprocessing games with names such as play_sound_file. ------ signal-code changes ------ data.c, device-tty.c, emacs.c, floatfns.c, linuxplay.c, nas.c, process-unix.c, signal.c, sunplay.c, sysdep.c, syssignal.h: use EMACS_SIGNAL everywhere instead of playing preprocessing games with signal(). s\windowsnt.h, s\mingw32.h, syssignal.h: Remove mswindows signal code from s+m headers and move to syssignal.h as one of the five ways of signal handling, instead of playing preprocessing games. fileio.c, sysdep.c: Rename sys_do_signal to qxe_reliable_signal. signal.c, process-unix.c, profile.c: Create set_timeout_signal(); use instead of just EMACS_SIGNAL to establish a signal handler on a timeout signal; this does special things under Cygwin. nt.c: Eliminate term_ntproc(), which is blank; used as a SIGABRT handler, which was wrong anyway. nt.c, win32.c: Move signal code from nt.c to win32.c, since Cygwin needs it too when dealing with timeout signals. s\cygwin32.h: Define CYGWIN_BROKEN_SIGNALS. ------ other changes ------ s\mingw32.h: Fix problems with NOT_C_CODE being in the wrong place and excluding defines needed when building Makefile.in.in. filelock.c, mule-canna.c, mule-ccl.c, mule-ccl.h, ralloc.c, unexalpha.c, unexapollo.c, unexcw.c, unexelfsgi.c, unexnt.c, unexsni.c, s\aix3-1.h, s\bsd4-1.h, s\bsd4-2.h, s\bsd4-3.h, s\cxux.h, s\cygwin32.h, s\dgux.h, s\dgux5-4r2.h, s\dgux5-4r3.h, s\dgux5-4r4.h, s\ewsux5r4.h, s\gnu.h, s\hpux.h, s\iris3-5.h, s\iris3-6.h, s\irix3-3.h, s\linux.h, s\mingw32.h, s\newsos5.h, s\nextstep.h, s\ptx.h, s\riscix1-1.h, s\riscix1-2.h, s\rtu.h, s\sco4.h, s\sco5.h, s\template.h, s\ultrix.h, s\umax.h, s\umips.h, s\unipl5-0.h, s\unipl5-2.h, s\usg5-0.h, s\usg5-2-2.h, s\usg5-2.h, s\usg5-3.h, s\usg5-4.h, s\windowsnt.h, s\xenix.h: Rename 'GNU Emacs' to XEmacs in the copyright and comments. nas.c: Stylistic cleanup. Avoid preprocessing games with names such as play_sound_file. xemacs-faq.texi: Update sections on Windows and MacOS availability. alist.el, apropos.el, autoload.el, bytecomp.el, cl-compat.el, cl-extra.el, cl-macs.el, cl-seq.el, cl.el, cmdloop.el, cus-edit.el, derived.el, gpm.el, itimer.el, lisp-mode.el, shadow.el, version.el, wid-browse.el: Rename 'GNU Emacs' to XEmacs in the copyright. Fix other references to GNU Emacs that should be XEmacs or just Emacs. files.el: Fix warning. simple.el: transpose-line-up/down will now move the region up or down by a line if active. cvtmail.c, fakemail.c, gnuserv.c, gnuserv.h, gnuslib.c, make-msgfile.c, make-path.c, pop.c, pop.h, profile.c, tcp.c: Rename 'GNU Emacs' to XEmacs in the copyright. Fix comments in similar ways. digest-doc.c, sorted-doc.c: Fix program and author name to reflect XEmacs.
author ben
date Sun, 10 Jun 2001 10:42:39 +0000
parents 98fb34b6fbe9
children 943eaba38521
comparison
equal deleted inserted replaced
612:ff0d9e7facba 613:023b83f4e54b
2515 Does not work on a sexp that point is in the middle of 2515 Does not work on a sexp that point is in the middle of
2516 if it is a list or string." 2516 if it is a list or string."
2517 (interactive "*p") 2517 (interactive "*p")
2518 (transpose-subr 'forward-sexp arg)) 2518 (transpose-subr 'forward-sexp arg))
2519 2519
2520 (defun Simple-forward-line-creating-newline ()
2521 ;; Move forward over a line,
2522 ;; but create a newline if none exists yet.
2523 (end-of-line)
2524 (if (eobp)
2525 (newline)
2526 (forward-char 1)))
2527
2528 (defun Simple-transpose-lines-mover (arg)
2529 (if (= arg 1)
2530 (Simple-forward-line-creating-newline)
2531 (forward-line arg)))
2532
2520 (defun transpose-lines (arg) 2533 (defun transpose-lines (arg)
2521 "Exchange current line and previous line, leaving point after both. 2534 "Exchange current line and previous line, leaving point after both.
2522 With argument ARG, takes previous line and moves it past ARG lines. 2535 With argument ARG, takes previous line and moves it past ARG lines.
2523 With argument 0, interchanges line point is in with line mark is in." 2536 With argument 0, interchanges line point is in with line mark is in."
2524 (interactive "*p") 2537 (interactive "*p")
2525 (transpose-subr #'(lambda (arg) 2538 (transpose-subr 'Simple-transpose-lines-mover arg))
2526 (if (= arg 1)
2527 (progn
2528 ;; Move forward over a line,
2529 ;; but create a newline if none exists yet.
2530 (end-of-line)
2531 (if (eobp)
2532 (newline)
2533 (forward-char 1)))
2534 (forward-line arg)))
2535 arg))
2536 2539
2537 (defun transpose-line-up (arg) 2540 (defun transpose-line-up (arg)
2538 "Move current line one line up, leaving point at beginning of that line. 2541 "Move current line one line up, leaving point at beginning of that line.
2539 This can be run repeatedly to move the current line up a number of lines." 2542 With argument ARG, move it ARG lines up. This can be run repeatedly
2543 to move the current line up a number of lines.
2544
2545 If the region is active, move the region up one line (or ARG lines,
2546 if specified). The region will not be selected afterwards, but this
2547 command can still be run repeatedly to move the region up a number
2548 of lines."
2540 (interactive "*p") 2549 (interactive "*p")
2541 ;; Move forward over a line, 2550 (transpose-line-down (- arg)))
2542 ;; but create a newline if none exists yet.
2543 (end-of-line)
2544 (if (eobp)
2545 (newline)
2546 (forward-char 1))
2547 (transpose-lines (- arg))
2548 (forward-line -1))
2549 2551
2550 (defun transpose-line-down (arg) 2552 (defun transpose-line-down (arg)
2551 "Move current line one line down, leaving point at beginning of that line. 2553 "Move current line one line down, leaving point at beginning of that line.
2552 This can be run repeatedly to move the current line down a number of lines." 2554 With argument ARG, move it ARG lines down. This can be run repeatedly
2555 to move the current line down a number of lines.
2556
2557 If the region is active, move the region down one line (or ARG lines,
2558 if specified). The region will not be selected afterwards, but this
2559 command can still be run repeatedly to move the region down a number
2560 of lines."
2553 (interactive "*p") 2561 (interactive "*p")
2554 ;; Move forward over a line, 2562 (if (or (region-active-p)
2555 ;; but create a newline if none exists yet. 2563 (getf last-command-properties 'transpose-region-by-line-command))
2556 (end-of-line) 2564 (progn
2557 (if (eobp) 2565 (transpose-subr 'Simple-transpose-lines-mover arg t)
2558 (newline) 2566 (putf this-command-properties 'transpose-region-by-line-command t))
2559 (forward-char 1)) 2567 (Simple-forward-line-creating-newline)
2560 (transpose-lines arg) 2568 (transpose-subr 'Simple-transpose-lines-mover arg)
2561 (forward-line -1)) 2569 (forward-line -1)))
2562 2570
2563 (defun transpose-subr (mover arg) 2571 (defun transpose-subr (mover arg &optional move-region)
2564 (let (start1 end1 start2 end2) 2572 (let (start1 end1 start2 end2)
2565 ;; XEmacs -- use flet instead of defining a separate function and 2573 ;; XEmacs -- use flet instead of defining a separate function and
2566 ;; relying on dynamic scope!!! 2574 ;; relying on dynamic scope; use (mark t) etc; add code to support
2575 ;; the new MOVE-REGION arg.
2567 (flet ((transpose-subr-1 () 2576 (flet ((transpose-subr-1 ()
2568 (if (> (min end1 end2) (max start1 start2)) 2577 (if (> (min end1 end2) (max start1 start2))
2569 (error "Don't have two things to transpose")) 2578 (error "Don't have two things to transpose"))
2570 (let ((word1 (buffer-substring start1 end1)) 2579 (let ((word1 (buffer-substring start1 end1))
2571 (word2 (buffer-substring start2 end2))) 2580 (word2 (buffer-substring start2 end2)))
2581 (save-excursion 2590 (save-excursion
2582 (funcall mover 1) 2591 (funcall mover 1)
2583 (setq end2 (point)) 2592 (setq end2 (point))
2584 (funcall mover -1) 2593 (funcall mover -1)
2585 (setq start2 (point)) 2594 (setq start2 (point))
2586 (goto-char (mark t)) ; XEmacs 2595 (goto-char (mark t))
2587 (funcall mover 1) 2596 (funcall mover 1)
2588 (setq end1 (point)) 2597 (setq end1 (point))
2589 (funcall mover -1) 2598 (funcall mover -1)
2590 (setq start1 (point)) 2599 (setq start1 (point))
2591 (transpose-subr-1)) 2600 (transpose-subr-1))
2592 (exchange-point-and-mark t))) ; XEmacs 2601 (exchange-point-and-mark t)))
2593 (while (> arg 0) 2602 (if move-region
2594 (funcall mover -1) 2603 (let ((rbeg (region-beginning))
2595 (setq start1 (point)) 2604 (rend (region-end)))
2596 (funcall mover 1) 2605 (while (> arg 0)
2597 (setq end1 (point)) 2606 (goto-char rend)
2598 (funcall mover 1) 2607 (funcall mover 1)
2599 (setq end2 (point)) 2608 (setq end2 (point))
2600 (funcall mover -1) 2609 (funcall mover -1)
2601 (setq start2 (point)) 2610 (setq start2 (point))
2602 (transpose-subr-1) 2611 (setq start1 rbeg end1 rend)
2603 (goto-char end2) 2612 (transpose-subr-1)
2604 (setq arg (1- arg))) 2613 (incf rbeg (- end2 start2))
2605 (while (< arg 0) 2614 (incf rend (- end2 start2))
2606 (funcall mover -1) 2615 (setq arg (1- arg)))
2607 (setq start2 (point)) 2616 (while (< arg 0)
2608 (funcall mover -1) 2617 (goto-char rbeg)
2609 (setq start1 (point)) 2618 (funcall mover -1)
2610 (funcall mover 1) 2619 (setq start1 (point))
2611 (setq end1 (point)) 2620 (funcall mover 1)
2612 (funcall mover 1) 2621 (setq end1 (point))
2613 (setq end2 (point)) 2622 (setq start2 rbeg end2 rend)
2614 (transpose-subr-1) 2623 (transpose-subr-1)
2615 (setq arg (1+ arg)))))) 2624 (decf rbeg (- end1 start1))
2625 (decf rend (- end1 start1))
2626 (setq arg (1+ arg)))
2627 (set-mark rbeg)
2628 (goto-char rend))
2629 (while (> arg 0)
2630 (funcall mover -1)
2631 (setq start1 (point))
2632 (funcall mover 1)
2633 (setq end1 (point))
2634 (funcall mover 1)
2635 (setq end2 (point))
2636 (funcall mover -1)
2637 (setq start2 (point))
2638 (transpose-subr-1)
2639 (goto-char end2)
2640 (setq arg (1- arg)))
2641 (while (< arg 0)
2642 (funcall mover -1)
2643 (setq start2 (point))
2644 (funcall mover -1)
2645 (setq start1 (point))
2646 (funcall mover 1)
2647 (setq end1 (point))
2648 (funcall mover 1)
2649 (setq end2 (point))
2650 (transpose-subr-1)
2651 (setq arg (1+ arg)))))))
2616 2652
2617 2653
2618 (defcustom comment-column 32 2654 (defcustom comment-column 32
2619 "*Column to indent right-margin comments to. 2655 "*Column to indent right-margin comments to.
2620 Setting this variable automatically makes it local to the current buffer. 2656 Setting this variable automatically makes it local to the current buffer.