Mercurial > emacs
view lisp/hl-line.el @ 83065:a871be7b26a5
Implemented suspending of emacsclient frames.
lib-src/emacsclient.c (quote_file_name): Renamed to quote_argument.
(unquote_argument, handle_sigcont, handle_sigtstp): New functions.
(out, in): New global variables for communicating with the Emacs process.
(init_signals): Set up handlers for SIGCONT, SIGTSTP and SIGTTOU.
(main): Changed out and in to global variables. Prepend `-eval' or
'-file' to each argument. Use fsync to force sending the strings to Emacs.
Removed obsolete -bad-version code. Support the -suspend command.
Cleaned up newline handling.
lisp/frame.el (suspend-frame): New function.
Substitute key definition of suspend-emacs with suspend-frame.
lisp/server.el (server-log): Cosmetic change in log format.
(server-handle-delete-tty, server-handle-delete-frame): Added logging.
(server-handle-suspend-tty, server-quote-arg): New functions.
(server-start): Install server-handle-suspend-tty.
(server-process-filter): Reorganized source code for clarity.
Implemented -resume, -suspend and -ignore commands.
lisp/term/x-win.el (x-initialize-window-system): Don't change the
binding of C-z.
src/cm.c: Replaced TTY_INPUT, TTY_OUTPUT, TTY_TERMSCRIPT calls with
their macro expansion.
src/dispnew.c: Ditto.
src/frame.c: Ditto.
src/keyboard.c: Ditto.
src/sysdep.c: Ditto.
src/keyboard.c (tty_read_avail_input): Don't read if the terminal is
suspended.
src/sysdep.c (discard_tty_input, init_sys_modes, reset_sys_modes): Ditto.
src/term.c (tty_set_terminal_modes, tty_reset_terminal_modes): Ditto.
src/term.c (Vsuspend_tty_functions, Vresume_tty_functions): New hooks.
(syms_of_term): Defvar them.
(term_init): Don't allow opening a new frame on a suspended tty device.
(Fsuspend_tty, Fresume_tty): New functions.
(syms_of_term): Defsubr them.
src/termchar.c (struct tty_display_info): Update documentation of
input and output.
(TTY_INPUT, TTY_OUTPUT, TTY_TERMSCRIPT): Removed.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-105
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 28 Feb 2004 01:23:39 +0000 |
parents | 7d40f75d6c53 |
children | ad02f6299e9a |
line wrap: on
line source
;;; hl-line.el --- highlight the current line ;; Copyright (C) 1998, 2000, 2001, 2003 Free Software Foundation, Inc. ;; Author: Dave Love <fx@gnu.org> ;; Maintainer: FSF ;; Created: 1998-09-13 ;; Keywords: faces, frames, emulation ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; Provides a local minor mode (toggled by M-x hl-line-mode) and ;; a global minor mode (toggled by M-x global-hl-line-mode) to ;; highlight, on a suitable terminal, the line on which point is. The ;; global mode highlights the current line in the selected window only ;; (except when the minibuffer window is selected). This was ;; implemented to satisfy a request for a feature of Lesser Editors. ;; The local mode is sticky: it highlights the line about the buffer's ;; point even if the buffer's window is not selected. Caveat: the ;; buffer's point might be different from the point of a non-selected ;; window. Set the variable `hl-line-sticky-flag' to nil to make the ;; local mode behave like the global mode. ;; You probably don't really want to use the global mode; if the ;; cursor is difficult to spot, try changing its colour, relying on ;; `blink-cursor-mode' or both. The hookery used might affect ;; response noticeably on a slow machine. The local mode may be ;; useful in non-editing buffers such as Gnus or PCL-CVS though. ;; An overlay is used. In the non-sticky cases, this overlay is ;; active only on the selected window. A hook is added to ;; `post-command-hook' to activate the overlay and move it to the line ;; about point. To get the non-sticky behavior, `hl-line-unhighlight' ;; is added to `pre-command-hook' as well. This function deactivates ;; the overlay unconditionally in case the command changes the ;; selected window. (It does so rather than keeping track of changes ;; in the selected window). ;; You could make variable `global-hl-line-mode' buffer-local and set ;; it to nil to avoid highlighting specific buffers, when the global ;; mode is used. ;;; Code: (defgroup hl-line nil "Highlight the current line." :version "21.1" :group 'editing) (defcustom hl-line-face 'highlight "Face with which to highlight the current line." :type 'face :group 'hl-line) (defcustom hl-line-sticky-flag t "*Non-nil means highlight the current line in all windows. Otherwise Hl-Line mode will highlight only in the selected window. Setting this variable takes effect the next time you use the command `hl-line-mode' to turn Hl-Line mode on." :type 'boolean :version "21.4" :group 'hl-line) (defvar hl-line-overlay nil "Overlay used by Hl-Line mode to highlight the current line.") (make-variable-buffer-local 'hl-line-overlay) (defvar global-hl-line-overlay nil "Overlay used by Global-Hl-Line mode to highlight the current line.") ;;;###autoload (define-minor-mode hl-line-mode "Buffer-local minor mode to highlight the line about point. With ARG, turn Hl-Line mode on if ARG is positive, off otherwise. If `hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the line about the buffer's point in all windows. Caveat: the buffer's point might be different from the point of a non-selected window. Hl-Line mode uses the function `hl-line-highlight' on `post-command-hook' in this case. When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the line about point in the selected window only. In this case, it uses the function `hl-line-unhighlight' on `pre-command-hook' in addition to `hl-line-highlight' on `post-command-hook'." nil nil nil (if hl-line-mode (progn ;; In case `kill-all-local-variables' is called. (add-hook 'change-major-mode-hook #'hl-line-unhighlight nil t) (if hl-line-sticky-flag (remove-hook 'pre-command-hook #'hl-line-unhighlight t) (add-hook 'pre-command-hook #'hl-line-unhighlight nil t)) (hl-line-highlight) (add-hook 'post-command-hook #'hl-line-highlight nil t)) (remove-hook 'post-command-hook #'hl-line-highlight t) (hl-line-unhighlight) (remove-hook 'change-major-mode-hook #'hl-line-unhighlight t) (remove-hook 'pre-command-hook #'hl-line-unhighlight t))) (defun hl-line-highlight () "Active the Hl-Line overlay on the current line." (if hl-line-mode ; Might be changed outside the mode function. (progn (unless hl-line-overlay (setq hl-line-overlay (make-overlay 1 1)) ; to be moved (overlay-put hl-line-overlay 'face hl-line-face)) (overlay-put hl-line-overlay 'window (unless hl-line-sticky-flag (selected-window))) (move-overlay hl-line-overlay (line-beginning-position) (line-beginning-position 2))) (hl-line-unhighlight))) (defun hl-line-unhighlight () "Deactivate the Hl-Line overlay on the current line." (if hl-line-overlay (delete-overlay hl-line-overlay))) ;;;###autoload (define-minor-mode global-hl-line-mode "Global minor mode to highlight the line about point in the current window. With ARG, turn Global-Hl-Line mode on if ARG is positive, off otherwise. Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and `global-hl-line-highlight' on `pre-command-hook' and `post-command-hook'." :global t :group 'hl-line (if global-hl-line-mode (progn (add-hook 'pre-command-hook #'global-hl-line-unhighlight) (add-hook 'post-command-hook #'global-hl-line-highlight)) (global-hl-line-unhighlight) (remove-hook 'pre-command-hook #'global-hl-line-unhighlight) (remove-hook 'post-command-hook #'global-hl-line-highlight))) (defun global-hl-line-highlight () "Active the Global-Hl-Line overlay on the current line in the current window." (when global-hl-line-mode ; Might be changed outside the mode function. (unless (window-minibuffer-p (selected-window)) (unless global-hl-line-overlay (setq global-hl-line-overlay (make-overlay 1 1)) ; to be moved (overlay-put global-hl-line-overlay 'face hl-line-face)) (overlay-put global-hl-line-overlay 'window (selected-window)) (move-overlay global-hl-line-overlay (line-beginning-position) (line-beginning-position 2))))) (defun global-hl-line-unhighlight () "Deactivate the Global-Hl-Line overlay on the current line." (if global-hl-line-overlay (delete-overlay global-hl-line-overlay))) (provide 'hl-line) ;;; arch-tag: ac806940-0876-4959-8c89-947563ee2833 ;;; hl-line.el ends here