comparison src/events.c @ 793:e38acbeb1cae

[xemacs-hg @ 2002-03-29 04:46:17 by ben] lots o' fixes etc/ChangeLog: New file. Separated out all entries for etc/ into their own ChangeLog. Includes entries for the following files: etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad, etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL, etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS, etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL, etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se, etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh, etc/custom/example-themes/europe-theme.el, etc/custom/example-themes/ex-custom-file, etc/custom/example-themes/example-theme.el, etc/e/eterm.ti, etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1, etc/gnuserv.README, etc/package-index.LATEST.gpg, etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm, etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs, etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E, etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm, etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm, etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar, etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1, etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL, etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el, etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\* unicode/unicode-consortium/8859-16.TXT: New file. mule/english.el: Define this charset now, since a bug was fixed that formerly prevented it. mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be integers. Makefile.in.in: Always include gui.c, to fix compile error when TTY-only. EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo(). Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate nearly all uses of Lisp_String * in favor of Lisp_Object, and correct macros so most of them favor Lisp_Object. Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings, but at level `debug' (usually ignored). Use it when instantiating specifiers, so problems can be debugged. Move log-warning-minimum-level into C so that we can optimize ERROR_ME_DEBUG_WARN. Fix warning levels consistent with new definitions. Add default_ and parent fields to char table; not yet implemented. New fun Dynarr_verify(); use for further error checking on Dynarrs. Rearrange code at top of lisp.h in conjunction with dynarr changes. Fix eifree(). Use Eistrings in various places (format_event_object(), where_is_to_char(), and callers thereof) to avoid fixed-size strings buffers. New fun write_eistring(). Reindent and fix GPM code to follow standards. Set default MS Windows font to Lucida Console (same size as Courier New but less interline spacing, so more lines fit). Increase default frame size on Windows to 50 lines. (If that's too big for the workspace, the frame will be shrunk as necessary.) Fix problem with text files with no newlines (). (Change `convert-eol' coding system to use `nil' for autodetect, consistent with make-coding-system.) Correct compile warnings in vm-limit.c. Fix handling of reverse-direction charsets to avoid errors when opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el. Recode some object printing methods to use write_fmt_string() instead of a fixed buffer and sprintf. Turn on display of png comments as warnings (level `info'), now that they're unobtrusive. Revamped the sound documentation. Fixed bug in redisplay w.r.t. hscroll/truncation/continuation glyphs causing jumping up and down of the lines, since they're bigger than the line size. (It was seen most obviously when there's a horizontal scroll bar, e.g. do C-h a glyph or something like that.) The problem was that the glyph-contrib-p setting on glyphs was ignored even if it was set properly, which it wasn't until now.
author ben
date Fri, 29 Mar 2002 04:49:13 +0000
parents 026c5bf9c134
children a5954632b187
comparison
equal deleted inserted replaced
792:4e83fdb13eb9 793:e38acbeb1cae
133 } 133 }
134 134
135 static void 135 static void
136 print_event_1 (const char *str, Lisp_Object obj, Lisp_Object printcharfun) 136 print_event_1 (const char *str, Lisp_Object obj, Lisp_Object printcharfun)
137 { 137 {
138 char buf[255]; 138 DECLARE_EISTRING_MALLOC (ei);
139 write_c_string (str, printcharfun); 139 write_c_string (str, printcharfun);
140 format_event_object (buf, XEVENT (obj), 0); 140 format_event_object (ei, XEVENT (obj), 0);
141 write_c_string (buf, printcharfun); 141 write_eistring (ei, printcharfun);
142 eifree (ei);
142 } 143 }
143 144
144 static void 145 static void
145 print_event (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) 146 print_event (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
146 { 147 {
162 case magic_eval_event: 163 case magic_eval_event:
163 print_event_1 ("#<magic-event ", obj, printcharfun); 164 print_event_1 ("#<magic-event ", obj, printcharfun);
164 break; 165 break;
165 case pointer_motion_event: 166 case pointer_motion_event:
166 { 167 {
167 char buf[64];
168 Lisp_Object Vx, Vy; 168 Lisp_Object Vx, Vy;
169 Vx = Fevent_x_pixel (obj); 169 Vx = Fevent_x_pixel (obj);
170 assert (INTP (Vx)); 170 assert (INTP (Vx));
171 Vy = Fevent_y_pixel (obj); 171 Vy = Fevent_y_pixel (obj);
172 assert (INTP (Vy)); 172 assert (INTP (Vy));
173 sprintf (buf, "#<motion-event %ld, %ld", (long) XINT (Vx), (long) XINT (Vy)); 173 write_fmt_string (printcharfun, "#<motion-event %ld, %ld",
174 write_c_string (buf, printcharfun); 174 (long) XINT (Vx), (long) XINT (Vy));
175 break; 175 break;
176 } 176 }
177 case process_event: 177 case process_event:
178 write_c_string ("#<process-event ", printcharfun); 178 write_c_string ("#<process-event ", printcharfun);
179 print_internal (XEVENT (obj)->event.process.process, printcharfun, 1); 179 print_internal (XEVENT (obj)->event.process.process, printcharfun, 1);
1191 assert (STRINGP (seq) || VECTORP (seq)); 1191 assert (STRINGP (seq) || VECTORP (seq));
1192 assert (n < XINT (Flength (seq))); 1192 assert (n < XINT (Flength (seq)));
1193 1193
1194 if (STRINGP (seq)) 1194 if (STRINGP (seq))
1195 { 1195 {
1196 Emchar ch = string_char (XSTRING (seq), n); 1196 Emchar ch = XSTRING_CHAR (seq, n);
1197 Fcharacter_to_event (make_char (ch), event, Qnil, Qnil); 1197 Fcharacter_to_event (make_char (ch), event, Qnil, Qnil);
1198 } 1198 }
1199 else 1199 else
1200 { 1200 {
1201 Lisp_Object keystroke = XVECTOR_DATA (seq)[n]; 1201 Lisp_Object keystroke = XVECTOR_DATA (seq)[n];
1221 } 1221 }
1222 1222
1223 return head; 1223 return head;
1224 } 1224 }
1225 1225
1226 /* Concatenate a string description of EVENT onto the end of BUF. If
1227 BRIEF, use short forms for keys, e.g. C- instead of control-. */
1228
1226 void 1229 void
1227 format_event_object (char *buf, Lisp_Event *event, int brief) 1230 format_event_object (Eistring *buf, Lisp_Event *event, int brief)
1228 { 1231 {
1229 int mouse_p = 0; 1232 int mouse_p = 0;
1230 int mod = 0; 1233 int mod = 0;
1231 Lisp_Object key; 1234 Lisp_Object key;
1232 1235
1236 { 1239 {
1237 mod = event->event.key.modifiers; 1240 mod = event->event.key.modifiers;
1238 key = event->event.key.keysym; 1241 key = event->event.key.keysym;
1239 /* Hack. */ 1242 /* Hack. */
1240 if (! brief && CHARP (key) && 1243 if (! brief && CHARP (key) &&
1241 mod & (XEMACS_MOD_CONTROL | XEMACS_MOD_META | XEMACS_MOD_SUPER | XEMACS_MOD_HYPER)) 1244 mod & (XEMACS_MOD_CONTROL | XEMACS_MOD_META | XEMACS_MOD_SUPER |
1245 XEMACS_MOD_HYPER))
1242 { 1246 {
1243 int k = XCHAR (key); 1247 int k = XCHAR (key);
1244 if (k >= 'a' && k <= 'z') 1248 if (k >= 'a' && k <= 'z')
1245 key = make_char (k - ('a' - 'A')); 1249 key = make_char (k - ('a' - 'A'));
1246 else if (k >= 'A' && k <= 'Z') 1250 else if (k >= 'A' && k <= 'Z')
1265 GCPRO1 (stream); 1269 GCPRO1 (stream);
1266 1270
1267 stream = make_resizing_buffer_output_stream (); 1271 stream = make_resizing_buffer_output_stream ();
1268 event_stream_format_magic_event (event, stream); 1272 event_stream_format_magic_event (event, stream);
1269 Lstream_flush (XLSTREAM (stream)); 1273 Lstream_flush (XLSTREAM (stream));
1270 strncpy (buf, resizing_buffer_stream_ptr (XLSTREAM (stream)), 1274 eicat_raw (buf, resizing_buffer_stream_ptr (XLSTREAM (stream)),
1271 Lstream_byte_count (XLSTREAM (stream))); 1275 Lstream_byte_count (XLSTREAM (stream)));
1272 Lstream_delete (XLSTREAM (stream)); 1276 Lstream_delete (XLSTREAM (stream));
1273 UNGCPRO; 1277 UNGCPRO;
1274 return; 1278 return;
1275 } 1279 }
1276 case magic_eval_event: strcpy (buf, "magic-eval"); return; 1280 case magic_eval_event: eicat_c (buf, "magic-eval"); return;
1277 case pointer_motion_event: strcpy (buf, "motion"); return; 1281 case pointer_motion_event: eicat_c (buf, "motion"); return;
1278 case misc_user_event: strcpy (buf, "misc-user"); return; 1282 case misc_user_event: eicat_c (buf, "misc-user"); return;
1279 case eval_event: strcpy (buf, "eval"); return; 1283 case eval_event: eicat_c (buf, "eval"); return;
1280 case process_event: strcpy (buf, "process"); return; 1284 case process_event: eicat_c (buf, "process"); return;
1281 case timeout_event: strcpy (buf, "timeout"); return; 1285 case timeout_event: eicat_c (buf, "timeout"); return;
1282 case empty_event: strcpy (buf, "empty"); return; 1286 case empty_event: eicat_c (buf, "empty"); return;
1283 case dead_event: strcpy (buf, "DEAD-EVENT"); return; 1287 case dead_event: eicat_c (buf, "DEAD-EVENT"); return;
1284 default: 1288 default:
1285 abort (); 1289 abort ();
1286 return; 1290 return;
1287 } 1291 }
1288 #define modprint1(x) do { strcpy (buf, (x)); buf += sizeof (x)-1; } while (0) 1292 #define modprint(x,y) \
1289 #define modprint(x,y) do { if (brief) modprint1 (y); else modprint1 (x); } while (0) 1293 do { if (brief) eicat_c (buf, (y)); else eicat_c (buf, (x)); } while (0)
1290 if (mod & XEMACS_MOD_CONTROL) modprint ("control-", "C-"); 1294 if (mod & XEMACS_MOD_CONTROL) modprint ("control-", "C-");
1291 if (mod & XEMACS_MOD_META) modprint ("meta-", "M-"); 1295 if (mod & XEMACS_MOD_META) modprint ("meta-", "M-");
1292 if (mod & XEMACS_MOD_SUPER) modprint ("super-", "S-"); 1296 if (mod & XEMACS_MOD_SUPER) modprint ("super-", "S-");
1293 if (mod & XEMACS_MOD_HYPER) modprint ("hyper-", "H-"); 1297 if (mod & XEMACS_MOD_HYPER) modprint ("hyper-", "H-");
1294 if (mod & XEMACS_MOD_ALT) modprint ("alt-", "A-"); 1298 if (mod & XEMACS_MOD_ALT) modprint ("alt-", "A-");
1295 if (mod & XEMACS_MOD_SHIFT) modprint ("shift-", "Sh-"); 1299 if (mod & XEMACS_MOD_SHIFT) modprint ("shift-", "Sh-");
1296 if (mouse_p) 1300 if (mouse_p)
1297 { 1301 {
1298 modprint1 ("button"); 1302 eicat_c (buf, "button");
1299 --mouse_p; 1303 --mouse_p;
1300 } 1304 }
1301 1305
1302 #undef modprint 1306 #undef modprint
1303 #undef modprint1
1304 1307
1305 if (CHARP (key)) 1308 if (CHARP (key))
1306 { 1309 eicat_ch (buf, XCHAR (key));
1307 buf += set_charptr_emchar ((Intbyte *) buf, XCHAR (key));
1308 *buf = 0;
1309 }
1310 else if (SYMBOLP (key)) 1310 else if (SYMBOLP (key))
1311 { 1311 {
1312 const char *str = 0; 1312 const Char_ASCII *str = 0;
1313 if (brief) 1313 if (brief)
1314 { 1314 {
1315 if (EQ (key, QKlinefeed)) str = "LFD"; 1315 if (EQ (key, QKlinefeed)) str = "LFD";
1316 else if (EQ (key, QKtab)) str = "TAB"; 1316 else if (EQ (key, QKtab)) str = "TAB";
1317 else if (EQ (key, QKreturn)) str = "RET"; 1317 else if (EQ (key, QKreturn)) str = "RET";
1319 else if (EQ (key, QKdelete)) str = "DEL"; 1319 else if (EQ (key, QKdelete)) str = "DEL";
1320 else if (EQ (key, QKspace)) str = "SPC"; 1320 else if (EQ (key, QKspace)) str = "SPC";
1321 else if (EQ (key, QKbackspace)) str = "BS"; 1321 else if (EQ (key, QKbackspace)) str = "BS";
1322 } 1322 }
1323 if (str) 1323 if (str)
1324 { 1324 eicat_c (buf, str);
1325 int i = strlen (str);
1326 memcpy (buf, str, i+1);
1327 str += i;
1328 }
1329 else 1325 else
1330 { 1326 eicat_lstr (buf, XSYMBOL (key)->name);
1331 Lisp_String *name = XSYMBOL (key)->name;
1332 memcpy (buf, string_data (name), string_length (name) + 1);
1333 str += string_length (name);
1334 }
1335 } 1327 }
1336 else 1328 else
1337 abort (); 1329 abort ();
1338 if (mouse_p) 1330 if (mouse_p)
1339 strncpy (buf, "up", 4); 1331 eicat_c (buf, "up");
1340 } 1332 }
1341 1333
1342 DEFUN ("eventp", Feventp, 1, 1, 0, /* 1334 DEFUN ("eventp", Feventp, 1, 1, 0, /*
1343 True if OBJECT is an event object. 1335 True if OBJECT is an event object.
1344 */ 1336 */
1946 1938
1947 if (!w) 1939 if (!w)
1948 return Qnil; 1940 return Qnil;
1949 else 1941 else
1950 { 1942 {
1951 Lisp_Object window; 1943 return wrap_window (w);
1952
1953 XSETWINDOW (window, w);
1954 return window;
1955 } 1944 }
1956 } 1945 }
1957 1946
1958 DEFUN ("event-point", Fevent_point, 1, 1, 0, /* 1947 DEFUN ("event-point", Fevent_point, 1, 1, 0, /*
1959 Return the character position of the mouse event EVENT. 1948 Return the character position of the mouse event EVENT.