To:
[email protected]
Subject: patch 5.5a.16 (extra)
Fcc: outbox
From: Bram Moolenaar <
[email protected]>
------------
Patch 5.5a.16
Problem: VMS: GUI does not compile and run.
Solution: Various fixes. (Zoltan Arpadffy)
Moved functions from os_unix.c to ui.c, so that VMS can use them
too: open_app_context(), x11_setup_atoms() and clip_x11* functions.
Made xterm_dpy global, it's now used by ui.c and os_unix.c.
Use gethostname() always, sys_hostname doesn't exist.
Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
*** ../vim-5.5a.15/src/globals.h Mon Aug 30 10:40:47 1999
--- src/globals.h Wed Sep 8 18:18:56 1999
***************
*** 668,673 ****
--- 668,674 ----
#ifdef XTERM_CLIP
EXTERN char *xterm_display INIT(= NULL); /* xterm display name */
+ EXTERN Display *xterm_dpy INIT(= NULL); /* xterm display pointer */
#endif
#if defined(XTERM_CLIP) || defined(USE_GUI_X11)
EXTERN XtAppContext app_context INIT(= (XtAppContext)NULL);
*** ../vim-5.5a.15/src/os_vms.mms Mon Aug 30 10:40:57 1999
--- src/os_vms.mms Thu Sep 9 20:48:24 1999
***************
*** 94,100 ****
SRC = buffer.c charset.c digraph.c edit.c eval.c ex_cmds.c ex_docmd.c \
ex_getln.c fileio.c getchar.c \
! main.c mark.c \
memfile.c memline.c message.c misc1.c misc2.c normal.c ops.c option.c \
pty.c quickfix.c regexp.c search.c syntax.c tag.c term.c termlib.c \
ui.c undo.c version.c screen.c window.c os_vms.c pathdef.c \
--- 94,100 ----
SRC = buffer.c charset.c digraph.c edit.c eval.c ex_cmds.c ex_docmd.c \
ex_getln.c fileio.c getchar.c \
! main.c mark.c menu.c\
memfile.c memline.c message.c misc1.c misc2.c normal.c ops.c option.c \
pty.c quickfix.c regexp.c search.c syntax.c tag.c term.c termlib.c \
ui.c undo.c version.c screen.c window.c os_vms.c pathdef.c \
***************
*** 102,108 ****
OBJ = buffer.obj charset.obj digraph.obj edit.obj eval.obj ex_cmds.obj \
ex_docmd.obj ex_getln.obj fileio.obj getchar.obj \
! main.obj mark.obj memfile.obj memline.obj message.obj misc1.obj \
misc2.obj normal.obj ops.obj option.obj pty.obj quickfix.obj \
regexp.obj search.obj syntax.obj tag.obj term.obj termlib.obj ui.obj \
undo.obj screen.obj window.obj os_vms.obj pathdef.obj \
--- 102,108 ----
OBJ = buffer.obj charset.obj digraph.obj edit.obj eval.obj ex_cmds.obj \
ex_docmd.obj ex_getln.obj fileio.obj getchar.obj \
! main.obj mark.obj menu.obj memfile.obj memline.obj message.obj misc1.obj \
misc2.obj normal.obj ops.obj option.obj pty.obj quickfix.obj \
regexp.obj search.obj syntax.obj tag.obj term.obj termlib.obj ui.obj \
undo.obj screen.obj window.obj os_vms.obj pathdef.obj \
***************
*** 148,153 ****
--- 148,154 ----
-@ write pd " * Change the file os_vms.mms only. */"
-@ write pd "#include ""vim.h"""
-@ write pd "char_u *default_vim_dir = (char_u *)""$(VIMLOC)"";"
+ -@ write pd "char_u *default_vimruntime_dir = (char_u *)"""";"
-@ write pd "char_u *all_cflags = (char_u *)""$(CC) /incl=[] $(ALL_CFLAGS)"";"
-@ write pd "char_u *all_lflags = (char_u *)""$(LD) $(LDFLAGS) /exe=$(TARGET) $+ $(ALL_LIBS)"";"
-@ close pd
***************
*** 225,230 ****
--- 226,234 ----
$(CC) $(ALL_CFLAGS) $<
mark.obj : mark.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h term.h \
macros.h structs.h gui.h globals.h proto.h regexp.h option.h
+ $(CC) $(ALL_CFLAGS) $<
+ menu.obj : menu.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
+ term.h macros.h structs.h gui.h globals.h proto.h regexp.h option.h
$(CC) $(ALL_CFLAGS) $<
memfile.obj : memfile.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
term.h macros.h structs.h gui.h globals.h proto.h regexp.h option.h
*** ../vim-5.5a.15/src/os_unix.c Thu Sep 9 17:35:18 1999
--- src/os_unix.c Wed Sep 8 18:25:28 1999
***************
*** 100,106 ****
# include <X11/Intrinsic.h>
# include <X11/Shell.h>
# include <X11/StringDefs.h>
- static Display *xterm_dpy = NULL;
static Widget xterm_Shell = (Widget)0;
static void xterm_update __ARGS((void));
# endif
--- 100,105 ----
***************
*** 109,124 ****
Display *x11_display = NULL;
int got_x_error = FALSE;
- #if defined(USE_GUI) && defined(XTERM_CLIP)
- # define X_DISPLAY gui.in_use ? gui.dpy : xterm_dpy
- #else
- # ifdef USE_GUI
- # define X_DISPLAY gui.dpy
- # else
- # define X_DISPLAY xterm_dpy
- # endif
- #endif
-
# ifdef WANT_TITLE
static int get_x11_windis __ARGS((void));
static int test_x11_window __ARGS((Display *dpy));
--- 108,113 ----
***************
*** 3863,3896 ****
}
#endif /* GPM_MOUSE */
- #if defined(XTERM_CLIP) || defined(USE_GUI_X11) || defined(PROTO)
- /*
- * Open the application context (if it hasn't been opened yet).
- * Used for Motif and Athena GUI and the xterm clipboard.
- */
- void
- open_app_context()
- {
- if (app_context == NULL)
- {
- XtToolkitInitialize();
- app_context = XtCreateApplicationContext();
- }
- }
- #endif
-
- #if defined(XTERM_CLIP) || defined(USE_GUI_X11) || defined(PROTO)
- void
- x11_setup_atoms(dpy)
- Display *dpy;
- {
- clipboard.xatom = XInternAtom(dpy, "_VIM_TEXT", False);
- clipboard.xa_compound_text = XInternAtom(dpy, "COMPOUND_TEXT", False);
- clipboard.xa_text = XInternAtom(dpy, "TEXT", False);
- clipboard.xa_targets = XInternAtom(dpy, "TARGETS", False);
- }
- #endif
-
#if (defined(HAVE_X11) && defined(WANT_X11) && defined(XTERM_CLIP)) \
|| defined(PROTO)
static int xterm_trace = -1; /* default: disabled */
--- 3852,3857 ----
***************
*** 4131,4388 ****
clip_xterm_set_selection()
{
clip_x11_set_selection();
- }
- #endif
-
- #if defined(XTERM_CLIP) || defined(USE_GUI_X11) || defined(PROTO)
-
- /*
- * X Selection stuff, for cutting and pasting text to other windows.
- */
-
- static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
-
- /* ARGSUSED */
- static void
- clip_x11_request_selection_cb(w, success, selection, type, value, length,
- format)
- Widget w;
- XtPointer success;
- Atom *selection;
- Atom *type;
- XtPointer value;
- long_u *length;
- int *format;
- {
- int motion_type;
- long_u len;
- char_u *p;
- char **text_list = NULL;
-
- if (value == NULL || *length == 0)
- {
- clip_free_selection(); /* ??? */
- *(int *)success = FALSE;
- return;
- }
- motion_type = MCHAR;
- p = (char_u *)value;
- len = *length;
- if (*type == clipboard.xatom)
- {
- motion_type = *p++;
- len--;
- }
- else if (*type == clipboard.xa_compound_text || (
- #ifdef MULTI_BYTE
- is_dbcs &&
- #endif
- *type == clipboard.xa_text))
- {
- XTextProperty text_prop;
- int n_text = 0;
- int status;
-
- text_prop.value = (unsigned char *)value;
- text_prop.encoding = *type;
- text_prop.format = *format;
- text_prop.nitems = STRLEN(value);
- status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
- &text_list, &n_text);
- if (status != Success || n_text < 1)
- {
- *(int *)success = FALSE;
- return;
- }
- p = (char_u *)text_list[0];
- len = STRLEN(p);
- }
- clip_yank_selection(motion_type, p, (long)len);
-
- if (text_list != NULL)
- XFreeStringList(text_list);
-
- XtFree((char *)value);
- *(int *)success = TRUE;
- }
-
- void
- clip_x11_request_selection(myShell, dpy)
- Widget myShell;
- Display *dpy;
- {
- XEvent event;
- Atom type;
- static int success;
- int i;
-
- for (i = 0; i < 4; i++)
- {
- switch (i)
- {
- case 0: type = clipboard.xatom;
- case 1: type = clipboard.xa_compound_text;
- case 2: type = clipboard.xa_text;
- default: type = XA_STRING;
- }
- XtGetSelectionValue(myShell, XA_PRIMARY, type,
- clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
-
- /* Do we need this?: */
- XFlush(dpy);
-
- /*
- * Wait for result of selection request, otherwise if we type more
- * characters, then they will appear before the one that requested the
- * paste! Don't worry, we will catch up with any other events later.
- */
- for (;;)
- {
- if (XCheckTypedEvent(dpy, SelectionNotify, &event))
- break;
-
- /* Do we need this?: */
- XSync(dpy, False);
- }
-
- /* this is where clip_x11_request_selection_cb() is actually called */
- XtDispatchEvent(&event);
-
- if (success)
- return;
- }
- }
-
- static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
-
- /* ARGSUSED */
- static Boolean
- clip_x11_convert_selection_cb(w, selection, target, type, value, length, format)
- Widget w;
- Atom *selection;
- Atom *target;
- Atom *type;
- XtPointer *value;
- long_u *length;
- int *format;
- {
- char_u *string;
- char_u *result;
- int motion_type;
-
- if (!clipboard.owned)
- return False; /* Shouldn't ever happen */
-
- /* requestor wants to know what target types we support */
- if (*target == clipboard.xa_targets)
- {
- Atom *array;
-
- if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 5))) == NULL)
- return False;
- *value = (XtPointer)array;
- array[0] = XA_STRING;
- array[1] = clipboard.xa_targets;
- array[2] = clipboard.xatom;
- array[3] = clipboard.xa_text;
- array[4] = clipboard.xa_compound_text;
- *type = XA_ATOM;
- *format = sizeof(Atom) * 8;
- *length = 5;
- return True;
- }
-
- if ( *target != XA_STRING
- && *target != clipboard.xatom
- && *target != clipboard.xa_text
- && *target != clipboard.xa_compound_text)
- return False;
-
- clip_get_selection();
- motion_type = clip_convert_selection(&string, length);
- if (motion_type < 0)
- return False;
-
- /* For our own format, the first byte contains the motion type */
- if (*target == clipboard.xatom)
- (*length)++;
-
- *value = XtMalloc((Cardinal)*length);
- result = (char_u *)*value;
- if (result == NULL)
- {
- vim_free(string);
- return False;
- }
-
- if (*target == XA_STRING)
- {
- mch_memmove(result, string, (size_t)(*length));
- *type = XA_STRING;
- }
- else if (*target == clipboard.xa_compound_text
- || *target == clipboard.xa_text)
- {
- XTextProperty text_prop;
- char *string_nt = (char *)alloc((unsigned)*length + 1);
-
- /* create NUL terminated string which XmbTextListToTextProperty wants */
- mch_memmove(string_nt, string, (size_t)*length);
- string_nt[*length] = NUL;
- XmbTextListToTextProperty(X_DISPLAY, (char **)&string_nt, 1,
- XCompoundTextStyle, &text_prop);
- vim_free(string_nt);
- XtFree(*value); /* replace with COMPOUND text */
- *value = (XtPointer)(text_prop.value); /* from plain text */
- *length = text_prop.nitems;
- *type = clipboard.xa_compound_text;
- }
- else
- {
- result[0] = motion_type;
- mch_memmove(result + 1, string, (size_t)(*length - 1));
- *type = clipboard.xatom;
- }
- *format = 8; /* 8 bits per char */
- vim_free(string);
- return True;
- }
-
- static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
-
- /* ARGSUSED */
- static void
- clip_x11_lose_ownership_cb(w, selection)
- Widget w;
- Atom *selection;
- {
- clip_lose_selection();
- }
-
- void
- clip_x11_lose_selection(myShell)
- Widget myShell;
- {
- XtDisownSelection(myShell, XA_PRIMARY, CurrentTime);
- }
-
- int
- clip_x11_own_selection(myShell)
- Widget myShell;
- {
- if (XtOwnSelection(myShell, XA_PRIMARY, CurrentTime,
- clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
- NULL) == False)
- return FAIL;
- return OK;
- }
-
- /*
- * Send the current selection to the clipboard. Do nothing for X because we
- * will fill in the selection only when requested by another app.
- */
- void
- clip_x11_set_selection()
- {
}
#endif
--- 4092,4096 ----
*** ../vim-5.5a.15/src/os_vms.c Mon Aug 30 10:40:56 1999
--- src/os_vms.c Thu Sep 9 20:52:14 1999
***************
*** 938,944 ****
void
mch_get_host_name(char_u *s, int len)
{
! #if defined(__DECC) && defined(__STDC__)
extern char_u *sys_hostname;
/* presumably compiled with /decc */
--- 938,944 ----
void
mch_get_host_name(char_u *s, int len)
{
! #if 0 /* defined(__DECC) && defined(__STDC__) */
extern char_u *sys_hostname;
/* presumably compiled with /decc */
*** ../vim-5.5a.15/src/ui.c Mon Aug 30 10:40:58 1999
--- src/ui.c Wed Sep 8 20:05:20 1999
***************
*** 1378,1380 ****
--- 1378,1673 ----
return row;
}
#endif
+
+ /*
+ * Stuff for the X clipboard. Shared between VMS and Unix.
+ */
+
+ #if defined(XTERM_CLIP) || defined(USE_GUI_X11) || defined(PROTO)
+ # include <X11/Xatom.h>
+ # include <X11/Intrinsic.h>
+
+ # if defined(USE_GUI) && defined(XTERM_CLIP)
+ # define X_DISPLAY gui.in_use ? gui.dpy : xterm_dpy
+ # else
+ # ifdef USE_GUI
+ # define X_DISPLAY gui.dpy
+ # else
+ # define X_DISPLAY xterm_dpy
+ # endif
+ # endif
+
+ /*
+ * Open the application context (if it hasn't been opened yet).
+ * Used for Motif and Athena GUI and the xterm clipboard.
+ */
+ void
+ open_app_context()
+ {
+ if (app_context == NULL)
+ {
+ XtToolkitInitialize();
+ app_context = XtCreateApplicationContext();
+ }
+ }
+
+ void
+ x11_setup_atoms(dpy)
+ Display *dpy;
+ {
+ clipboard.xatom = XInternAtom(dpy, "_VIM_TEXT", False);
+ clipboard.xa_compound_text = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ clipboard.xa_text = XInternAtom(dpy, "TEXT", False);
+ clipboard.xa_targets = XInternAtom(dpy, "TARGETS", False);
+ }
+
+ /*
+ * X Selection stuff, for cutting and pasting text to other windows.
+ */
+
+ static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
+
+ /* ARGSUSED */
+ static void
+ clip_x11_request_selection_cb(w, success, selection, type, value, length,
+ format)
+ Widget w;
+ XtPointer success;
+ Atom *selection;
+ Atom *type;
+ XtPointer value;
+ long_u *length;
+ int *format;
+ {
+ int motion_type;
+ long_u len;
+ char_u *p;
+ char **text_list = NULL;
+
+ if (value == NULL || *length == 0)
+ {
+ clip_free_selection(); /* ??? */
+ *(int *)success = FALSE;
+ return;
+ }
+ motion_type = MCHAR;
+ p = (char_u *)value;
+ len = *length;
+ if (*type == clipboard.xatom)
+ {
+ motion_type = *p++;
+ len--;
+ }
+ else if (*type == clipboard.xa_compound_text || (
+ #ifdef MULTI_BYTE
+ is_dbcs &&
+ #endif
+ *type == clipboard.xa_text))
+ {
+ XTextProperty text_prop;
+ int n_text = 0;
+ int status;
+
+ text_prop.value = (unsigned char *)value;
+ text_prop.encoding = *type;
+ text_prop.format = *format;
+ text_prop.nitems = STRLEN(value);
+ status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
+ &text_list, &n_text);
+ if (status != Success || n_text < 1)
+ {
+ *(int *)success = FALSE;
+ return;
+ }
+ p = (char_u *)text_list[0];
+ len = STRLEN(p);
+ }
+ clip_yank_selection(motion_type, p, (long)len);
+
+ if (text_list != NULL)
+ XFreeStringList(text_list);
+
+ XtFree((char *)value);
+ *(int *)success = TRUE;
+ }
+
+ void
+ clip_x11_request_selection(myShell, dpy)
+ Widget myShell;
+ Display *dpy;
+ {
+ XEvent event;
+ Atom type;
+ static int success;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ switch (i)
+ {
+ case 0: type = clipboard.xatom;
+ case 1: type = clipboard.xa_compound_text;
+ case 2: type = clipboard.xa_text;
+ default: type = XA_STRING;
+ }
+ XtGetSelectionValue(myShell, XA_PRIMARY, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+
+ /* Do we need this?: */
+ XFlush(dpy);
+
+ /*
+ * Wait for result of selection request, otherwise if we type more
+ * characters, then they will appear before the one that requested the
+ * paste! Don't worry, we will catch up with any other events later.
+ */
+ for (;;)
+ {
+ if (XCheckTypedEvent(dpy, SelectionNotify, &event))
+ break;
+
+ /* Do we need this?: */
+ XSync(dpy, False);
+ }
+
+ /* this is where clip_x11_request_selection_cb() is actually called */
+ XtDispatchEvent(&event);
+
+ if (success)
+ return;
+ }
+ }
+
+ static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
+
+ /* ARGSUSED */
+ static Boolean
+ clip_x11_convert_selection_cb(w, selection, target, type, value, length, format)
+ Widget w;
+ Atom *selection;
+ Atom *target;
+ Atom *type;
+ XtPointer *value;
+ long_u *length;
+ int *format;
+ {
+ char_u *string;
+ char_u *result;
+ int motion_type;
+
+ if (!clipboard.owned)
+ return False; /* Shouldn't ever happen */
+
+ /* requestor wants to know what target types we support */
+ if (*target == clipboard.xa_targets)
+ {
+ Atom *array;
+
+ if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 5))) == NULL)
+ return False;
+ *value = (XtPointer)array;
+ array[0] = XA_STRING;
+ array[1] = clipboard.xa_targets;
+ array[2] = clipboard.xatom;
+ array[3] = clipboard.xa_text;
+ array[4] = clipboard.xa_compound_text;
+ *type = XA_ATOM;
+ *format = sizeof(Atom) * 8;
+ *length = 5;
+ return True;
+ }
+
+ if ( *target != XA_STRING
+ && *target != clipboard.xatom
+ && *target != clipboard.xa_text
+ && *target != clipboard.xa_compound_text)
+ return False;
+
+ clip_get_selection();
+ motion_type = clip_convert_selection(&string, length);
+ if (motion_type < 0)
+ return False;
+
+ /* For our own format, the first byte contains the motion type */
+ if (*target == clipboard.xatom)
+ (*length)++;
+
+ *value = XtMalloc((Cardinal)*length);
+ result = (char_u *)*value;
+ if (result == NULL)
+ {
+ vim_free(string);
+ return False;
+ }
+
+ if (*target == XA_STRING)
+ {
+ mch_memmove(result, string, (size_t)(*length));
+ *type = XA_STRING;
+ }
+ else if (*target == clipboard.xa_compound_text
+ || *target == clipboard.xa_text)
+ {
+ XTextProperty text_prop;
+ char *string_nt = (char *)alloc((unsigned)*length + 1);
+
+ /* create NUL terminated string which XmbTextListToTextProperty wants */
+ mch_memmove(string_nt, string, (size_t)*length);
+ string_nt[*length] = NUL;
+ XmbTextListToTextProperty(X_DISPLAY, (char **)&string_nt, 1,
+ XCompoundTextStyle, &text_prop);
+ vim_free(string_nt);
+ XtFree(*value); /* replace with COMPOUND text */
+ *value = (XtPointer)(text_prop.value); /* from plain text */
+ *length = text_prop.nitems;
+ *type = clipboard.xa_compound_text;
+ }
+ else
+ {
+ result[0] = motion_type;
+ mch_memmove(result + 1, string, (size_t)(*length - 1));
+ *type = clipboard.xatom;
+ }
+ *format = 8; /* 8 bits per char */
+ vim_free(string);
+ return True;
+ }
+
+ static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
+
+ /* ARGSUSED */
+ static void
+ clip_x11_lose_ownership_cb(w, selection)
+ Widget w;
+ Atom *selection;
+ {
+ clip_lose_selection();
+ }
+
+ void
+ clip_x11_lose_selection(myShell)
+ Widget myShell;
+ {
+ XtDisownSelection(myShell, XA_PRIMARY, CurrentTime);
+ }
+
+ int
+ clip_x11_own_selection(myShell)
+ Widget myShell;
+ {
+ if (XtOwnSelection(myShell, XA_PRIMARY, CurrentTime,
+ clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
+ NULL) == False)
+ return FAIL;
+ return OK;
+ }
+
+ /*
+ * Send the current selection to the clipboard. Do nothing for X because we
+ * will fill in the selection only when requested by another app.
+ */
+ void
+ clip_x11_set_selection()
+ {
+ }
+ #endif
*** ../vim-5.5a.15/src/proto/os_unix.pro Mon Aug 30 10:40:40 1999
--- src/proto/os_unix.pro Wed Sep 8 19:59:53 1999
***************
*** 41,48 ****
int mch_expandpath __ARGS((struct growarray *gap, char_u *path, int flags));
int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
int mch_has_wildcard __ARGS((char_u *p));
- void open_app_context __ARGS((void));
- void x11_setup_atoms __ARGS((Display *dpy));
void setup_xterm_clip __ARGS((void));
void start_xterm_trace __ARGS((int button));
void stop_xterm_trace __ARGS((void));
--- 41,46 ----
***************
*** 51,57 ****
void clip_xterm_lose_selection __ARGS((void));
void clip_xterm_request_selection __ARGS((void));
void clip_xterm_set_selection __ARGS((void));
- void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy));
- void clip_x11_lose_selection __ARGS((Widget myShell));
- int clip_x11_own_selection __ARGS((Widget myShell));
- void clip_x11_set_selection __ARGS((void));
--- 49,51 ----
*** ../vim-5.5a.15/src/proto/ui.pro Mon Aug 30 10:40:39 1999
--- src/proto/ui.pro Wed Sep 8 20:00:36 1999
***************
*** 39,41 ****
--- 39,47 ----
void ui_cursor_shape __ARGS((void));
int check_col __ARGS((int col));
int check_row __ARGS((int row));
+ void open_app_context __ARGS((void));
+ void x11_setup_atoms __ARGS((Display *dpy));
+ void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy));
+ void clip_x11_lose_selection __ARGS((Widget myShell));
+ int clip_x11_own_selection __ARGS((Widget myShell));
+ void clip_x11_set_selection __ARGS((void));
*** ../vim-5.5a.15/src/version.c Fri Sep 10 11:33:37 1999
--- src/version.c Sat Sep 11 16:21:19 1999
***************
*** 420,420 ****
--- 420,421 ----
{ /* Add new patch number below this line */
+ 16,
--
A village. Sound of chanting of Latin canon, punctuated by short, sharp
cracks. It comes nearer. We see it is a line of MONKS ala SEVENTH SEAL
flagellation scene, chanting and banging themselves on the foreheads with
wooden boards.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
--/-/---- Bram Moolenaar ----
[email protected] ----
[email protected] ---\-\--
\ \ www.vim.org/iccf www.moolenaar.net www.vim.org / /