Mercurial > emacs
view lisp/term/w32console.el @ 111116:b52e94e0cf53
Implement mouse highlight for bidi-reordered lines.
xdisp.c (fast_find_string_pos): #ifdef away, not used anymore.
(mouse_face_from_string_pos): New function, replaces
fast_find_string_pos.
(note_mouse_highlight): Call it instead of fast_find_string_pos.
(note_mode_line_or_margin_highlight): Support bidi-reordered
strings and R2L glyph rows. Fix comments.
(note_mouse_highlight): When bidi reordering is turned on in a
buffer, call next-single-property-change and
previous-single-property-change with last argument nil. Clear
mouse highlight when mouse pointer is in a R2L row on the stretch
glyph that stands for no text beyond the line end.
(row_containing_pos): Don't return too early when CHARPOS is in a
bidi-reordered continued line. Return immediately when the first
hit is found in a line that is not continued, or when an exact
match for CHARPOS is found.
(rows_from_pos_range): New function.
(mouse_face_from_buffer_pos): Use it instead of calling
row_containing_pos for START_CHARPOS and END_CHARPOS. Rewrite the
function to support mouse highlight in bidi-reordered lines and
not to assume that START_CHARPOS is always in mouse_face_beg_row.
If necessary, swap mouse_face_beg_row and mouse_face_end_row so
that the former is always above the latter or identical to it.
(show_mouse_face): Support drawing highlighted R2L lines.
(coords_in_mouse_face_p): New function, bidi-aware.
(cursor_in_mouse_face_p, note_mouse_highlight, erase_phys_cursor):
Call it instead of comparing with mouse-face members of dpyinfo.
(note_mode_line_or_margin_highlight): Fix confusingly swapped
usage of hpos and vpos.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 23 Oct 2010 17:30:45 +0200 |
parents | 1d1d5d9bd884 |
children | d1cffc3c49f5 376148b31b5e |
line wrap: on
line source
;;; w32console.el -- Setup w32 console keys and colors. ;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals ;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;;; Code: ;; W32 uses different color indexes than standard: (defvar w32-tty-standard-colors '(("black" 0 0 0 0) ("blue" 1 0 0 52480) ; MediumBlue ("green" 2 8704 35584 8704) ; ForestGreen ("cyan" 3 0 52736 53504) ; DarkTurquoise ("red" 4 45568 8704 8704) ; FireBrick ("magenta" 5 35584 0 35584) ; DarkMagenta ("brown" 6 40960 20992 11520) ; Sienna ("lightgray" 7 48640 48640 48640) ; Gray ("darkgray" 8 26112 26112 26112) ; Gray40 ("lightblue" 9 0 0 65535) ; Blue ("lightgreen" 10 0 65535 0) ; Green ("lightcyan" 11 0 65535 65535) ; Cyan ("lightred" 12 65535 0 0) ; Red ("lightmagenta" 13 65535 0 65535) ; Magenta ("yellow" 14 65535 65535 0) ; Yellow ("white" 15 65535 65535 65535)) "A list of VGA console colors, their indices and 16-bit RGB values.") (declare-function x-setup-function-keys "w32-fns" (frame)) (defun terminal-init-w32console () "Terminal initialization function for w32 console." ;; Share function key initialization with w32 gui frames (x-setup-function-keys (selected-frame)) (let* ((colors w32-tty-standard-colors) (color (car colors))) (tty-color-clear) (while colors (tty-color-define (car color) (cadr color) (cddr color)) (setq colors (cdr colors) color (car colors)))) (clear-face-cache) (tty-set-up-initial-frame-faces) (run-hooks 'terminal-init-w32-hook)) ;; arch-tag: 3195fd5e-ab86-4a46-b1dc-4f7a8c8deff3