Mercurial > emacs
annotate src/w32.h @ 42602:633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
* viper-init.el (viper-cond-compile-for-xemacs-or-emacs):
new macro that replaces viper-emacs-p and viper-xemacs-p in many
cases. Used to reduce the number of warnings.
* viper-cmd.el: use viper-cond-compile-for-xemacs-or-emacs.
(viper-standard-value): moved here from viper.el.
(viper-set-unread-command-events): moved to viper-util.el
(viper-check-minibuffer-overlay): make sure
viper-minibuffer-overlay is moved to cover the entire input field.
* viper-util.el: use viper-cond-compile-for-xemacs-or-emacs.
(viper-read-key-sequence, viper-set-unread-command-events,
viper-char-symbol-sequence-p, viper-char-array-p): moved here.
* viper-ex.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-keym.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-mous.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-macs.el (viper-char-array-p, viper-char-symbol-sequence-p,
viper-event-vector-p): moved to viper-util.el
* viper.el (viper-standard-value): moved to viper-cmd.el.
Use viper-cond-compile-for-xemacs-or-emacs.
* ediff-help.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-hook.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-init.el (ediff-cond-compile-for-xemacs-or-emacs): new
macro designed to be used in many places where ediff-emacs-p or
ediff-xemacs-p was previously used. Reduces the number of
warnings.
Use ediff-cond-compile-for-xemacs-or-emacs in many places in lieue
of ediff-xemacs-p.
(ediff-make-current-diff-overlay, ediff-highlight-diff-in-one-buffer,
ediff-convert-fine-diffs-to-overlays, ediff-empty-diff-region-p,
ediff-whitespace-diff-region-p, ediff-get-region-contents):
moved to ediff-util.el.
(ediff-event-key): moved here.
* ediff-merge.el: got rid of unreferenced variables.
* ediff-mult.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-util.el: use ediff-cond-compile-for-xemacs-or-emacs.
(ediff-cleanup-mess): improved the way windows are set up after
quitting ediff.
(ediff-janitor): use ediff-dispose-of-variant-according-to-user.
(ediff-dispose-of-variant-according-to-user): new function
designed to be smarter and also understands indirect buffers.
(ediff-highlight-diff-in-one-buffer,
ediff-unhighlight-diff-in-one-buffer,
ediff-unhighlight-diffs-totally-in-one-buffer,
ediff-highlight-diff, ediff-highlight-diff,
ediff-unhighlight-diff, ediff-unhighlight-diffs-totally,
ediff-empty-diff-region-p, ediff-whitespace-diff-region-p,
ediff-get-region-contents, ediff-make-current-diff-overlay):
moved here.
(ediff-format-bindings-of): new function by Hannu Koivisto
<azure@iki.fi>.
(ediff-setup): make sure the merge buffer is always widened and
modifiable.
(ediff-write-merge-buffer-and-maybe-kill): refuse to write the
result of a merge into a file visited by another buffer.
(ediff-arrange-autosave-in-merge-jobs): check if the merge file
is visited by another buffer and ask to save/delete that buffer.
(ediff-verify-file-merge-buffer): new function to do the above.
* ediff-vers.el: load ediff-init.el at compile time.
* ediff-wind.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff.el (ediff-windows, ediff-regions-wordwise,
ediff-regions-linewise): use indirect buffers to improve
robustness and make it possible to compare regions of the same
buffer (even overlapping regions).
(ediff-clone-buffer-for-region-comparison,
ediff-clone-buffer-for-window-comparison): new functions.
(ediff-files-internal): refuse to compare identical files.
(ediff-regions-internal): get rid of the warning about comparing
regions of the same buffer.
* ediff-diff.el (ediff-convert-fine-diffs-to-overlays): moved here.
Plus the following fixes courtesy of Dave Love:
Doc fixes.
(ediff-word-1): Use word class and move - to the
front per regexp documentation.
(ediff-wordify): Bind forward-word-function outside loop.
(ediff-copy-to-buffer): Use insert-buffer-substring rather than
consing buffer contents.
(ediff-goto-word): Move syntax table setting outside loop.
author | Michael Kifer <kifer@cs.stonybrook.edu> |
---|---|
date | Tue, 08 Jan 2002 04:36:01 +0000 |
parents | ba9de1745e36 |
children | 2d293a5868cf |
rev | line source |
---|---|
29604
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
1 #ifndef EMACS_W32_H |
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
2 #define EMACS_W32_H |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
3 |
9803 | 4 /* Support routines for the NT version of Emacs. |
5 Copyright (C) 1994 Free Software Foundation, Inc. | |
6 | |
7 This file is part of GNU Emacs. | |
8 | |
9 GNU Emacs is free software; you can redistribute it and/or modify | |
10 it under the terms of the GNU General Public License as published by | |
11 the Free Software Foundation; either version 2, or (at your option) | |
12 any later version. | |
13 | |
14 GNU Emacs is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
20 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13426
diff
changeset
|
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13426
diff
changeset
|
22 Boston, MA 02111-1307, USA. */ |
9803 | 23 |
34697
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
24 |
9803 | 25 /* File descriptor set emulation. */ |
26 | |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
27 /* MSVC runtime library has limit of 64 descriptors by default */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
28 #define FD_SETSIZE 64 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
29 typedef struct { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
30 unsigned int bits[FD_SETSIZE / 32]; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
31 } fd_set; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
32 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
33 /* standard access macros */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
34 #define FD_SET(n, p) \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
35 do { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
36 if ((n) < FD_SETSIZE) { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
37 (p)->bits[(n)/32] |= (1 << (n)%32); \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
38 } \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
39 } while (0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
40 #define FD_CLR(n, p) \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
41 do { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
42 if ((n) < FD_SETSIZE) { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
43 (p)->bits[(n)/32] &= ~(1 << (n)%32); \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
44 } \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
45 } while (0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
46 #define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
47 #define FD_ZERO(p) memset((p), 0, sizeof(fd_set)) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
48 |
9803 | 49 #define SELECT_TYPE fd_set |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
50 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
51 /* ------------------------------------------------------------------------- */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
52 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
53 /* child_process.status values */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
54 enum { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
55 STATUS_READ_ERROR = -1, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
56 STATUS_READ_READY, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
57 STATUS_READ_IN_PROGRESS, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
58 STATUS_READ_FAILED, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
59 STATUS_READ_SUCCEEDED, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
60 STATUS_READ_ACKNOWLEDGED |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
61 }; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
62 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
63 /* This structure is used for both pipes and sockets; for |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
64 a socket, the process handle in pi is NULL. */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
65 typedef struct _child_process |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
66 { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
67 int fd; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
68 int pid; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
69 HANDLE char_avail; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
70 HANDLE char_consumed; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
71 HANDLE thrd; |
19705
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
72 HWND hwnd; |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
73 PROCESS_INFORMATION procinfo; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
74 volatile int status; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
75 char chr; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
76 } child_process; |
9803 | 77 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
78 #define MAXDESC FD_SETSIZE |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
79 #define MAX_CHILDREN MAXDESC/2 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
80 #define CHILD_ACTIVE(cp) ((cp)->char_avail != NULL) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
81 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
82 /* parallel array of private info on file handles */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
83 typedef struct |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
84 { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
85 unsigned flags; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
86 HANDLE hnd; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
87 child_process * cp; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
88 } filedesc; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
89 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
90 extern filedesc fd_info [ MAXDESC ]; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
91 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
92 /* fd_info flag definitions */ |
21606
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
93 #define FILE_READ 0x0001 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
94 #define FILE_WRITE 0x0002 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
95 #define FILE_BINARY 0x0010 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
96 #define FILE_LAST_CR 0x0020 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
97 #define FILE_AT_EOF 0x0040 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
98 #define FILE_SEND_SIGCHLD 0x0080 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
99 #define FILE_PIPE 0x0100 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
100 #define FILE_SOCKET 0x0200 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
101 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
102 extern child_process * new_child (void); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
103 extern void delete_child (child_process *cp); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
104 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
105 /* ------------------------------------------------------------------------- */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
106 |
34697
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
107 /* Equivalent of strerror for W32 error codes. */ |
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
108 extern char * w32_strerror (int error_no); |
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
109 |
19705
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
110 /* Get long (aka "true") form of file name, if it exists. */ |
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
111 extern BOOL w32_get_long_filename (char * name, char * buf, int size); |
9803 | 112 |
113 /* Prepare our standard handles for proper inheritance by child processes. */ | |
114 extern void prepare_standard_handles (int in, int out, | |
115 int err, HANDLE handles[4]); | |
116 | |
117 /* Reset our standard handles to their original state. */ | |
118 extern void reset_standard_handles (int in, int out, | |
119 int err, HANDLE handles[4]); | |
120 | |
13426
8074deaef2f4
(nt_get_resource): Prototype defined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
121 /* Return the string resource associated with KEY of type TYPE. */ |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15248
diff
changeset
|
122 extern LPBYTE w32_get_resource (char * key, LPDWORD type); |
13426
8074deaef2f4
(nt_get_resource): Prototype defined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
123 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
124 extern void init_ntproc (); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
125 extern void term_ntproc (); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
126 |
29604
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
127 #endif /* EMACS_W32_H */ |