annotate src/msdos.h @ 107777:13c077500eb3

2010-04-04 John Wiegley <jwiegley@gmail.com> * ido.el (ido-use-virtual-buffers): New variable to indicate whether "virtual buffer" support is enabled for IDO. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With virtual buffers enabled, the buffer name stays in the buffer list (using the ido-virtual face, and always at the end), and if you select it, it opens the file back up again. This allows you to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still were. NOTE: This feature has been present in iswitchb for several years now, and I'm porting the same logic to IDO. (ido-virtual): Face used to indicate virtual buffers in the list. (ido-buffer-internal): If a buffer is chosen, and no such buffer exists, but a virtual buffer of that name does (which would be why it was in the list), recreate the buffer by reopening the file. (ido-make-buffer-list): If virtual buffers are being used, call `ido-add-virtual-buffers-to-list' before the make list hook. (ido-virtual-buffers): New variable which contains a copy of the current contents of the `recentf-list', albeit pared down for the sake of speed, and with proper faces applied. (ido-add-virtual-buffers-to-list): Using the `recentf-list', create a list of "virtual buffers" to present to the user in addition to the currently open set. Note that this logic could get rather slow if that list is too large. With the default `recentf-max-saved-items' of 200, there is little speed penalty.
author jwiegley@gmail.com
date Sun, 04 Apr 2010 02:55:19 -0400
parents 1d1d5d9bd884
children e16f43875a48 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* MS-DOS specific C utilities, interface.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
2 Copyright (C) 1993, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100951
diff changeset
3 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
10 (at your option) any later version.
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
29611
f39e60352427 (EMACS_MSDOS_H): Renamed from MSDOS_H_.
Eli Zaretskii <eliz@gnu.org>
parents: 29557
diff changeset
20 #ifndef EMACS_MSDOS_H
f39e60352427 (EMACS_MSDOS_H): Renamed from MSDOS_H_.
Eli Zaretskii <eliz@gnu.org>
parents: 29557
diff changeset
21 #define EMACS_MSDOS_H
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
22
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 #include <dpmi.h>
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
97661
e4a283c4bc1c Remove definition of struct x_display_info and struct x_output.
Eli Zaretskii <eliz@gnu.org>
parents: 94994
diff changeset
25 int dos_ttraw (struct tty_display_info *);
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 int dos_ttcooked ();
13178
74b4edb62cf0 (internal_flush): Removed
Kim F. Storm <storm@cua.dk>
parents: 13021
diff changeset
27 int dos_get_saved_screen (char **, int *, int *);
74b4edb62cf0 (internal_flush): Removed
Kim F. Storm <storm@cua.dk>
parents: 13021
diff changeset
28 int dos_set_keyboard (int, int);
14285
6081221167de (dos_set_window_size): Prototype for a new function.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
29 void dos_set_window_size (int *, int *);
13178
74b4edb62cf0 (internal_flush): Removed
Kim F. Storm <storm@cua.dk>
parents: 13021
diff changeset
30
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 int getdefdir (int, char*);
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 void unixtodos_filename (char *);
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 void dostounix_filename (char *);
7822
17b96e349369 Add template for rootrelativepath.
Richard M. Stallman <rms@gnu.org>
parents: 7604
diff changeset
34 char *rootrelativepath (char *);
5503
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 void init_environment ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 void internal_terminal_init ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 void ctrl_break_func (_go32_dpmi_registers *);
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 void install_ctrl_break_check ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 extern int have_mouse;
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 void mouse_init ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 void mouse_on ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 void mouse_off ();
003e84b91d21 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 void mouse_moveto (int, int);
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
45
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
46 #ifndef HAVE_X_WINDOWS
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
47 /* Dummy types. */
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
48 typedef int XFontStruct;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
49 typedef int GC;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
50 typedef int Pixmap;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
51 typedef int Display;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
52 typedef int Window;
21784
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
53 typedef int XRectangle;
74497
07c34c917584 (PIX_TYPE): Redefine as `unsigned long'.
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
54 #define PIX_TYPE unsigned long
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
55 #define XDISPLAY
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
56
97661
e4a283c4bc1c Remove definition of struct x_display_info and struct x_output.
Eli Zaretskii <eliz@gnu.org>
parents: 94994
diff changeset
57 typedef struct tty_display_info Display_Info;
27018
c56e0e887ba4 (struct display_info): New.
Eli Zaretskii <eliz@gnu.org>
parents: 26729
diff changeset
58
97661
e4a283c4bc1c Remove definition of struct x_display_info and struct x_output.
Eli Zaretskii <eliz@gnu.org>
parents: 94994
diff changeset
59 extern struct tty_display_info the_only_display_info;
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
60
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
61 #define FRAME_X_DISPLAY(f) ((Display *) 0)
97661
e4a283c4bc1c Remove definition of struct x_display_info and struct x_output.
Eli Zaretskii <eliz@gnu.org>
parents: 94994
diff changeset
62 #define FRAME_FONT(f) ((f)->output_data.tty->font)
e4a283c4bc1c Remove definition of struct x_display_info and struct x_output.
Eli Zaretskii <eliz@gnu.org>
parents: 94994
diff changeset
63 #define FRAME_X_DISPLAY_INFO(f) (&the_only_display_info)
27957
5210a97b3ac7 (FRAME_INTERNAL_BORDER_WIDTH): Define to zero.
Eli Zaretskii <eliz@gnu.org>
parents: 27463
diff changeset
64
21784
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
65 /* Prototypes. */
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
66
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
67 /* Forward declarations for prototypes. */
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
68 struct frame;
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
69 struct window;
25111
36169f5d88da Remove redundant declarations (most of them are now in
Eli Zaretskii <eliz@gnu.org>
parents: 21784
diff changeset
70
36169f5d88da Remove redundant declarations (most of them are now in
Eli Zaretskii <eliz@gnu.org>
parents: 21784
diff changeset
71 /* Defined in xfns.c; emulated on msdos.c */
21784
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
72
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
73 extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
74 extern int x_pixel_width P_ ((struct frame *));
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
75 extern int x_pixel_height P_ ((struct frame *));
8de4e2a8cc62 [!HAVE_X_WINDOWS]: Add a dummy typedef for XRectangle
Eli Zaretskii <eliz@gnu.org>
parents: 15386
diff changeset
76
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
77 #define XFreeGC (void)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
78 #define x_destroy_bitmap(p1,p2)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
79 #define load_pixmap(p1,p2,p3,p4) (0)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
80 #define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9)
51202
62a7506ec831 (struct x_output): Remove members left_pos, top_pos,
Kim F. Storm <storm@cua.dk>
parents: 50247
diff changeset
81 #define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols)
62a7506ec831 (struct x_output): Remove members left_pos, top_pos,
Kim F. Storm <storm@cua.dk>
parents: 50247
diff changeset
82 #define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines)
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
83 #define XMenuSetAEQ (void)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
84 #define XMenuSetFreeze (void)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
85 #define XMenuRecompute (void)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
86 #define FONT_WIDTH(foo) 1
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
87 #define XM_FAILURE -1
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
88 #define XM_SUCCESS 1
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
89 #define XM_NO_SELECT 2
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
90 #define XM_IA_SELECT 3
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
91 #define ButtonReleaseMask 0
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
92
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
93 typedef struct x_menu_struct
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
94 {
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
95 int count;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
96 char **text;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
97 struct x_menu_struct **submenu;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
98 int *panenumber; /* Also used as enable. */
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
99 int allocated;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
100 int panecount;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
101 int width;
27463
6e3d60350319 Change prototypes of XMenuAddSelection and XMenuActivate.
Eli Zaretskii <eliz@gnu.org>
parents: 27018
diff changeset
102 char **help_text;
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
103 } XMenu;
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
104
10503
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
105 XMenu *XMenuCreate (Display *, Window, char *);
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
106 int XMenuAddPane (Display *, XMenu *, char *, int);
27463
6e3d60350319 Change prototypes of XMenuAddSelection and XMenuActivate.
Eli Zaretskii <eliz@gnu.org>
parents: 27018
diff changeset
107 int XMenuAddSelection (Display *, XMenu *, int, int, char *, int, char *);
10503
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
108 void XMenuLocate (Display *, XMenu *, int, int, int, int,
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
109 int *, int *, int *, int *);
27463
6e3d60350319 Change prototypes of XMenuAddSelection and XMenuActivate.
Eli Zaretskii <eliz@gnu.org>
parents: 27018
diff changeset
110 int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned,
30340
be29e15ece0e (XMenuActivate): Update prototype.
Eli Zaretskii <eliz@gnu.org>
parents: 29611
diff changeset
111 char **, void (*callback)(char *, int, int));
10503
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
112 void XMenuDestroy (Display *, XMenu *);
4d94f31dc555 (x_mouse_leave): Add neutralizing define.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
113
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
114 #endif /* not HAVE_X_WINDOWS */
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 7822
diff changeset
115
29611
f39e60352427 (EMACS_MSDOS_H): Renamed from MSDOS_H_.
Eli Zaretskii <eliz@gnu.org>
parents: 29557
diff changeset
116 #endif /* not EMACS_MSDOS_H */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51202
diff changeset
117
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51202
diff changeset
118 /* arch-tag: ad21eeed-8fdb-4357-8007-36368a6bdbf3
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51202
diff changeset
119 (do not change this comment) */