annotate man/lispref/mouse.texi @ 4995:8431b52e43b1

Move the various map* functions to C; add #'map-into. src/ChangeLog addition: 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> Move #'mapcar*, #'mapcan, #'mapc, #'map, #'mapl, #'mapcon to C; extend #'mapvector, #'mapconcat, #'mapcar to support more SEQUENCES; have them all error with circular lists. * fns.c (Fsubseq): Call CHECK_SEQUENCE here; Flength can return from the debugger if it errors with a non-sequence, leading to a crash in Fsubseq if sequence really is *not* a sequence. (mapcarX): Rename mapcar1 to mapcarX; rework it comprehensively to take an optional lisp output argument, and a varying number of sequences. Special-case a single list argument, as we used to, saving its elements in the stack space for the results before calling FUNCTION, so FUNCTION can corrupt the list all it wants. dead_wrong_type_argument() in the other cases if we encounter a non-cons where we expected a cons. (Fmapconcat): Accept further SEQUENCES after separator here. Special-case the idiom (mapconcat 'identity SEQUENCE), don't even funcall. (FmapcarX): Rename this from Fmapcar. Accept optional SEQUENCES. (Fmapvector): Accept optional SEQUENCES. (Fmapcan, Fmapc, Fmap): Move these here from cl-extra.el. (Fmap_into): New function, as specified by Common Lisp. (maplist): New function, the guts of the implementation of Fmaplist and Fmapl. (Fmaplist, Fmapl, Fmapcon): Move these from cl-extra.el. (syms_of_fns): Add a few needed symbols here, for the type tests used by #'map. Add the new subrs, with aliases for #'mapc-internal and #'mapcar. * general-slots.h: Declare Qcoerce here, now it's used in both indent.c and fns.c * indent.c (syms_of_indent): Qcoerce is gone from here. * lisp.h: Add ARRAYP(), SEQUENCEP(), and the corresponding CHECK_* macros. Declare Fbit_vector, Fstring, FmapcarX, now other files need to use them. * data.c (Farrayp, Fsequencep): Use ARRAYP and SEQUENCEP, just added to lisp.h * buffer.c (Fbuffer_list): Now Fmapcar has been renamed FmapcarX and takes MANY arguments, update this function to reflect that. lisp/ChangeLog addition: 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * cl.el (mapcar*): Delete; this is now in fns.c. Use #'mapc, not #'mapc-internal in a couple of places. * cl-macs.el (mapc, mapcar*, map): Delete these compiler macros now the corresponding functions are in fns.c; there's no run-time advantage to the macros. * cl-extra.el (coerce): Extend the possible conversions here a little; it's not remotely comprehensive yet, though it does allow running slightly more Common Lisp code than previously. (cl-mapcar-many): Delete. (map, maplist, mapc, mapl, mapcan, mapcon): Move these to fns.c. * bytecomp.el (byte-compile-maybe-mapc): Use #'mapc itself, not #'mapc-internal, now the former is in C. (mapcar*): Use #'byte-compile-maybe-mapc as this function's byte-compile method, now a #'mapc that can take more than one sequence is in C. * obsolete.el (cl-mapc): Move this compatibility alias to this file. * update-elc.el (do-autoload-commands): Use #'mapc, not #'mapc-internal here.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 31 Jan 2010 18:29:48 +0000
parents 576fb035e263
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 @c -*-texinfo-*-
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 @setfilename ../../info/mouse.info
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 @node Mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 @chapter The Mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 @cindex mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 * Mouse Position:: Asking where the mouse is, or moving it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 @ignore @c Not in XEmacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 @node Mouse Tracking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 @section Mouse Tracking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 @cindex mouse tracking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 @cindex tracking the mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 (deleted)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 @c These are not implemented yet.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 These functions change the screen appearance instantaneously. The
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 effect is transient, only until the next ordinary XEmacs redisplay. That
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 is ok for mouse tracking, since it doesn't make sense for mouse tracking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 to change the text, and the body of @code{track-mouse} normally reads
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 the events itself and does not do redisplay.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
30 @defun x-contour-region window start end
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
31 This function draws lines to make a box around the text from @var{start}
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 to @var{end}, in window @var{window}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
35 @defun x-uncontour-region window start end
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 This function erases the lines that would make a box around the text
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
37 from @var{start} to @var{end}, in window @var{window}. Use it to remove
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 a contour that you previously made by calling @code{x-contour-region}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 @defun x-draw-rectangle frame left top right bottom
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 This function draws a hollow rectangle on frame @var{frame} with the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 specified edge coordinates, all measured in pixels from the inside top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 left corner. It uses the cursor color, the one used for indicating the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 location of point.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 @defun x-erase-rectangle frame left top right bottom
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 This function erases a hollow rectangle on frame @var{frame} with the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 specified edge coordinates, all measured in pixels from the inside top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 left corner. Erasure means redrawing the text and background that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 normally belong in the specified rectangle.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 @node Mouse Position
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 @section Mouse Position
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 @cindex mouse position
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 @cindex position of mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 The functions @code{mouse-position}, @code{mouse-pixel-position},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 @code{set-mouse-position} and @code{set-mouse-pixel-position} give
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 access to the current position of the mouse.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 @defun mouse-position &optional device
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 This function returns a list (@var{window} @var{x} . @var{y}) giving the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 current mouse window and position. The position is given in character
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 cells, where @samp{(0, 0)} is the upper-left corner.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 @var{device} specifies the device on which to read the mouse position,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 and defaults to the selected device. If the device is a mouseless
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 terminal or XEmacs hasn't been programmed to read its mouse position, it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 returns the device's selected window for @var{window} and @code{nil} for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 @var{x} and @var{y}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 @defun mouse-pixel-position &optional device
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 This function returns a list (@var{window} @var{x} . @var{y}) giving the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 current mouse window and position. The position is given in pixel
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 units, where @samp{(0, 0)} is the upper-left corner.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 @var{device} specifies the device on which to read the mouse position,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 and defaults to the selected device. If the device is a mouseless
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 terminal or XEmacs hasn't been programmed to read its mouse position, it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 returns the device's selected window for @var{window} and @code{nil} for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 @var{x} and @var{y}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 @defun set-mouse-position window x y
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 This function @dfn{warps the mouse} to the center of character position
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 @var{x}, @var{y} in frame @var{window}. The arguments @var{x} and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 @var{y} are integers, giving the position in characters relative to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 the top left corner of @var{window}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 @cindex warping the mouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 @cindex mouse warping
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 Warping the mouse means changing the screen position of the mouse as if
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 the user had moved the physical mouse---thus simulating the effect of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 actual mouse motion.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 @defun set-mouse-pixel-position window x y
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 This function @dfn{warps the mouse} to pixel position @var{x}, @var{y}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 in frame @var{window}. The arguments @var{x} and @var{y} are integers,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 giving the position in pixels relative to the top left corner of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 @var{window}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 @end defun