Compare commits

...

13 Commits

Author SHA1 Message Date
Bram Moolenaar
f2e53dada8 updated for version 7.2-015 2008-09-10 16:26:04 +00:00
Bram Moolenaar
6cad8bd4b0 updated for version 7.2-014 2008-09-10 13:39:10 +00:00
Bram Moolenaar
89417b99aa updated for version 7.2-013 2008-09-07 19:48:53 +00:00
Bram Moolenaar
e511f29adb updated for version 7.2-012 2008-09-07 13:50:37 +00:00
Bram Moolenaar
a85fb757a1 updated for version 7.2-011 2008-09-07 11:55:43 +00:00
Bram Moolenaar
3094a9e1a7 updated for version 7.2-010 2008-09-06 14:44:59 +00:00
Bram Moolenaar
ccf22171f1 updated for version 7.2-009 2008-09-01 15:56:45 +00:00
Bram Moolenaar
5bd266c96d updated for version 7.2-008 2008-09-01 15:33:17 +00:00
Bram Moolenaar
ac98e5db6e updated for version 7.2-007 2008-09-01 14:51:37 +00:00
Bram Moolenaar
12b87e55ba updated for version 7.2-006 2008-08-25 03:04:18 +00:00
Bram Moolenaar
61c4e2cb89 updated for version 7.2-005 2008-08-25 02:49:18 +00:00
Bram Moolenaar
627943d3c3 updated for version 7.2-004 2008-08-25 02:35:59 +00:00
Bram Moolenaar
6949d1ddc6 updated for version 7.2-003 2008-08-25 02:14:05 +00:00
20 changed files with 351 additions and 98 deletions

View File

@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 7.2. Last change: 2006 Nov 18
*os_vms.txt* For Vim version 7.2. Last change: 2008 Aug 19
VIM REFERENCE MANUAL
@@ -312,7 +312,7 @@ features, it is worth to choose non GUI executables.
8. Useful notes *vms-notes*
8.1 backspace/delete
8.1 Backspace/delete
8.2 Filters
8.3 VMS file version numbers
8.4 Directory conversion
@@ -326,8 +326,10 @@ features, it is worth to choose non GUI executables.
8.12 diff-mode
8.13 Allow '$' in C keywords
8.14 VIMTUTOR for beginners
8.15 Slow start in console mode issue
8.16 Common VIM directory - different architectures
8.1 backspace/delete
8.1 Backspace/delete
There are backspace/delete key inconsistencies with VMS.
:fixdel doesn't do the trick, but the solution is: >
@@ -663,12 +665,130 @@ start it with: >
(Thomas.R.Wyant III, Vim 6.1)
8.14 Slow start in console mode issue
As GUI/GTK Vim works equally well in console mode, many administartors
deploy those executables system wide.
Unfortunately, on a remote slow connections GUI/GTK executables behave rather
slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
Luckily, there is a simple solution for that. Administrators need to deploy
both GUI/GTK build and just console build executables, like below: >
|- vim72
|----- doc
|----- syntax
vimrc (system rc files)
gvimrc
gvim.exe (the remaned GUI or GTK built vim.exe)
vim.exe (the console only executable)
Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
$ define/nolog VIM RF10:[UTIL.VIM72] ! where you VIM directory is
$ vi*m :== mcr VIM:VIM.EXE
$ gvi*m :== mcr VIM:GVIM.EXE
$ ! or you can try to spawn with
$ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
Like this, users that do not have X environment and want to use Vim just in
console mode can avoid performance problems.
(Zoltan Arpadffy, Vim 7.2)
8.15 Common VIM directory - different architectures
In a cluster that contains nodes with different architectures like below:
$show cluster
View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31
+---------------------------------+
<EFBFBD> SYSTEMS <20> MEMBERS <20>
+-----------------------+---------<2D>
<EFBFBD> NODE <20> SOFTWARE <20> STATUS <20>
+--------+--------------+---------<2D>
<EFBFBD> TOR <20> VMS V7.3-2 <20> MEMBER <20>
<EFBFBD> TITAN2 <20> VMS V8.3 <20> MEMBER <20>
<EFBFBD> ODIN <20> VMS V7.3-2 <20> MEMBER <20>
+---------------------------------+
It is convinient to have a common VIM directory but execute different
executables.
There are more solutions for this problem:
solution 1. all executables in the same directory with different names
This is easily done with the following script that can be added
to the login.com or sylogin.com: >
$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
$ then
$ say "VAX platform"
$ vi*m:== mcr vim:VIM.EXE_VAX
$ endif
$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
$ then
$ say "ALPHA platform"
$ vi*m :== mcr vim:VIM.EXE_AXP
$ endif
$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
$ then
$ say "IA64 platform"
$ vi*m :== mcr vim:VIM.EXE_IA64
$ endif
solution 2. different directories: >
$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
$ then
$ say "VAX platform"
$ define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
$ endif
$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
$ then
$ say "ALPHA platform"
$ define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
$ endif
$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
$ then
$ say "IA64 platform"
$ define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
$ endif
$! VIMRUNTIME must be defined in order to find runtime files
$ define/nolog VIMRUNTIME RF10:[UTIL.VIM72]
A good examle for this approach is the [GNU]gnu_tools.com script from GNU_TOOLS.ZIP
package downloadable from http://www.polarhome.com/vim/
(Zoltan Arpadffy, Vim 7.2)
==============================================================================
9. VMS related changes *vms-changes*
Version 7
Recent changes
- The following plugins are included into VMS runtime:
genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
bufexplorer 7.1.7, taglist 4.5
- minor changes in vimrc (just in VMS runtime)
- make_vms.mms - HUGE model is the default
- [TESTDIR]make_vms.mms include as many tests possible
- modify test30 and test54 for VMS
- enable FLOAT feature in VMS port
- os_vms.txt updated
Version 7.2 (2008 Aug 9)
- VCF files write corrected
- CTAGS 5.7 included
- corrected make_vms.mms (on VAX gave syntax error)
Version 7.1 (2007 Jun 15)
- create TAGS file from menu
Version 7 (2006 May 8)
- Improved low level char input (affects just console mode)
- Fixed plugin bug
- CTAGS 5.6 included
Version 6.4 (2005 Oct 15)
- GTKLIB and Vim build on IA64
@@ -806,6 +926,7 @@ Version 4.5 (1996 Dec 16)
OpenVMS documentation and executables are maintained by:
Zoltan Arpadffy <arpadffy@polarhome.com>
OpenVMS Vim page: http://www.polarhome.com/vim/
This document uses parts and remarks from earlier authors and contributors
of OS_VMS.TXT:

View File

@@ -234,6 +234,10 @@ else
elseif s:line1 =~ '\<DTD\s\+XHTML\s'
set ft=xhtml
" HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
set ft=html
" PDF
elseif s:line1 =~ '^%PDF-'
set ft=pdf

View File

@@ -2,7 +2,7 @@
# Makefile for Vim on OpenVMS
#
# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
# Last change: 2007 Oct 22
# Last change: 2008 Aug 16
#
# This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
# with MMS and MMK
@@ -36,7 +36,7 @@ DECC = YES
# BIG - Many features enabled, as rich as possible. (default)
# HUGE - All possible featues enabled.
# Please select one of these alternatives above.
MODEL = BIG
MODEL = HUGE
# GUI or terminal mode executable.
# Comment out if you want just the character terminal mode only.

View File

@@ -1351,11 +1351,12 @@ set_curbuf(buf, action)
}
}
#ifdef FEAT_AUTOCMD
/* An autocommand may have deleted "buf", already entered it (e.g., when
* it did ":bunload") or aborted the script processing! */
# ifdef FEAT_EVAL
/* An autocommand may have deleted buf or aborted the script processing! */
if (buf_valid(buf) && !aborting())
if (buf_valid(buf) && buf != curbuf && !aborting())
# else
if (buf_valid(buf)) /* an autocommand may have deleted buf! */
if (buf_valid(buf) && buf != curbuf)
# endif
#endif
enter_buffer(buf);

View File

@@ -1256,23 +1256,26 @@ skip_expr(pp)
/*
* Top level evaluation function, returning a string.
* When "convert" is TRUE convert a List into a sequence of lines and convert
* a Float to a String.
* Return pointer to allocated memory, or NULL for failure.
*/
char_u *
eval_to_string(arg, nextcmd, dolist)
eval_to_string(arg, nextcmd, convert)
char_u *arg;
char_u **nextcmd;
int dolist; /* turn List into sequence of lines */
int convert;
{
typval_T tv;
char_u *retval;
garray_T ga;
char_u numbuf[NUMBUFLEN];
if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
retval = NULL;
else
{
if (dolist && tv.v_type == VAR_LIST)
if (convert && tv.v_type == VAR_LIST)
{
ga_init2(&ga, (int)sizeof(char), 80);
if (tv.vval.v_list != NULL)
@@ -1280,6 +1283,13 @@ eval_to_string(arg, nextcmd, dolist)
ga_append(&ga, NUL);
retval = (char_u *)ga.ga_data;
}
#ifdef FEAT_FLOAT
else if (convert && tv.v_type == VAR_FLOAT)
{
vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float);
retval = vim_strsave(numbuf);
}
#endif
else
retval = vim_strsave(get_tv_string(&tv));
clear_tv(&tv);
@@ -3657,8 +3667,8 @@ item_lock(tv, deep, lock)
}
/*
* Return TRUE if typeval "tv" is locked: Either tha value is locked itself or
* it refers to a List or Dictionary that is locked.
* Return TRUE if typeval "tv" is locked: Either that value is locked itself
* or it refers to a List or Dictionary that is locked.
*/
static int
tv_islocked(tv)
@@ -15838,10 +15848,9 @@ item_compare2(s1, s2)
if (res == FAIL)
res = ITEM_COMPARE_FAIL;
else
/* return value has wrong type */
res = get_tv_number_chk(&rettv, &item_compare_func_err);
if (item_compare_func_err)
res = ITEM_COMPARE_FAIL;
res = ITEM_COMPARE_FAIL; /* return value has wrong type */
clear_tv(&rettv);
return res;
}
@@ -16658,7 +16667,7 @@ f_synstack(argvars, rettv)
col = get_tv_number(&argvars[1]) - 1; /* -1 on type error */
if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
&& col >= 0 && col < (long)STRLEN(ml_get(lnum))
&& col >= 0 && (col == 0 || col < (long)STRLEN(ml_get(lnum)))
&& rettv_list_alloc(rettv) != FAIL)
{
(void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
@@ -20590,6 +20599,9 @@ func_dump_profile(fd)
int st_len = 0;
todo = (int)func_hashtab.ht_used;
if (todo == 0)
return; /* nothing to dump */
sorttab = (ufunc_T **)alloc((unsigned)(sizeof(ufunc_T) * todo));
for (hi = func_hashtab.ht_array; todo > 0; ++hi)
@@ -20638,6 +20650,8 @@ func_dump_profile(fd)
prof_self_cmp);
prof_sort_list(fd, sorttab, st_len, "SELF", TRUE);
}
vim_free(sorttab);
}
static void
@@ -21204,7 +21218,7 @@ call_user_func(fp, argcount, argvars, rettv, firstline, lastline, selfdict)
if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
func_do_profile(fp);
if (fp->uf_profiling
|| (fc.caller != NULL && &fc.caller->func->uf_profiling))
|| (fc.caller != NULL && fc.caller->func->uf_profiling))
{
++fp->uf_tm_count;
profile_start(&call_start);
@@ -21235,13 +21249,13 @@ call_user_func(fp, argcount, argvars, rettv, firstline, lastline, selfdict)
#ifdef FEAT_PROFILE
if (do_profiling == PROF_YES && (fp->uf_profiling
|| (fc.caller != NULL && &fc.caller->func->uf_profiling)))
|| (fc.caller != NULL && fc.caller->func->uf_profiling)))
{
profile_end(&call_start);
profile_sub_wait(&wait_start, &call_start);
profile_add(&fp->uf_tm_total, &call_start);
profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
if (fc.caller != NULL && &fc.caller->func->uf_profiling)
if (fc.caller != NULL && fc.caller->func->uf_profiling)
{
profile_add(&fc.caller->func->uf_tm_children, &call_start);
profile_add(&fc.caller->func->uf_tml_children, &call_start);

View File

@@ -3145,8 +3145,8 @@ do_source(fname, check_other, is_vimrc)
verbose_leave();
}
#ifdef STARTUPTIME
vim_snprintf(IObuff, IOSIZE, "sourcing %s", fname);
time_msg(IObuff, &tv_start);
vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
time_msg((char *)IObuff, &tv_start);
time_pop(&tv_rel);
#endif

View File

@@ -74,7 +74,7 @@ static cscmd_T cs_cmds[] =
{ "add", cs_add,
N_("Add a new database"), "add file|dir [pre-path] [flags]", 0 },
{ "find", cs_find,
N_("Query for a pattern"), FIND_USAGE, 1 },
N_("Query for a pattern"), "find c|d|e|f|g|i|s|t name", 1 },
{ "help", cs_help,
N_("Show this message"), "help", 0 },
{ "kill", cs_kill,
@@ -1180,7 +1180,16 @@ cs_help(eap)
(void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
cmdp->name, _(cmdp->help), cmdp->usage);
if (strcmp(cmdp->name, "find") == 0)
MSG_PUTS(FIND_HELP);
MSG_PUTS(_("\n"
" c: Find functions calling this function\n"
" d: Find functions called by this function\n"
" e: Find this egrep pattern\n"
" f: Find this file\n"
" g: Find this definition\n"
" i: Find files #including this file\n"
" s: Find this C symbol\n"
" t: Find assignments to\n"));
cmdp++;
}

View File

@@ -42,17 +42,6 @@
* f 7name Find this file
* i 8name Find files #including this file
*/
#define FIND_USAGE "find c|d|e|f|g|i|s|t name"
#define FIND_HELP "\n\
c: Find functions calling this function\n\
d: Find functions called by this function\n\
e: Find this egrep pattern\n\
f: Find this file\n\
g: Find this definition\n\
i: Find files #including this file\n\
s: Find this C symbol\n\
t: Find assignments to\n"
typedef struct {
char * name;

View File

@@ -136,6 +136,9 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
# define Perl_newXS_flags dll_Perl_newXS_flags
#endif
# define Perl_sv_free dll_Perl_sv_free
# if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
# define Perl_sv_free2 dll_Perl_sv_free2
# endif
# define Perl_sv_isa dll_Perl_sv_isa
# define Perl_sv_magic dll_Perl_sv_magic
# define Perl_sv_setiv dll_Perl_sv_setiv
@@ -268,6 +271,7 @@ static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*);
static void (*boot_DynaLoader)_((pTHX_ CV*));
#if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
static void (*Perl_sv_free2)(pTHX_ SV*);
static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
static void (*Perl_sys_term)(void);
static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
@@ -367,6 +371,7 @@ static struct {
{"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
{"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
#else
{"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
{"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
{"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
{"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},

View File

@@ -2540,7 +2540,6 @@ utf_head_off(base, p)
return (int)(p - q);
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Copy a character from "*fp" to "*tp" and advance the pointers.
*/
@@ -2555,7 +2554,6 @@ mb_copy_char(fp, tp)
*tp += l;
*fp += l;
}
#endif
/*
* Return the offset from "p" to the first byte of a character. When "p" is

View File

@@ -1257,7 +1257,6 @@ vim_strsave_escaped_ext(string, esc_chars, cc, bsl)
return escaped_string;
}
#if !defined(BACKSLASH_IN_FILENAME) || defined(FEAT_EVAL) || defined(PROTO)
/*
* Return TRUE when 'shell' has "csh" in the tail.
*/
@@ -1266,9 +1265,7 @@ csh_like_shell()
{
return (strstr((char *)gettail(p_sh), "csh") != NULL);
}
#endif
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Escape "string" for use as a shell argument with system().
* This uses single quotes, except when we know we need to use double qoutes
@@ -1391,7 +1388,6 @@ vim_strsave_shellescape(string, do_special)
return escaped_string;
}
#endif
/*
* Like vim_strsave(), but make all characters uppercase.

View File

@@ -5469,6 +5469,11 @@ nv_ident(cap)
STRCPY(buf, "he! ");
else
{
/* An external command will probably use an argument starting
* with "-" as an option. To avoid trouble we skip the "-". */
while (*ptr == '-')
++ptr;
/* When a count is given, turn it into a range. Is this
* really what we want? */
isman = (STRCMP(kp, "man") == 0);
@@ -5511,37 +5516,57 @@ nv_ident(cap)
/*
* Now grab the chars in the identifier
*/
if (cmdchar == '*')
aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
else if (cmdchar == '#')
aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
else if (cmdchar == 'K' && !kp_help)
aux_ptr = (char_u *)" \t\\\"|!";
else
/* Don't escape spaces and Tabs in a tag with a backslash */
aux_ptr = (char_u *)"\\|\"";
p = buf + STRLEN(buf);
while (n-- > 0)
if (cmdchar == 'K' && !kp_help)
{
/* put a backslash before \ and some others */
if (vim_strchr(aux_ptr, *ptr) != NULL)
*p++ = '\\';
#ifdef FEAT_MBYTE
/* When current byte is a part of multibyte character, copy all bytes
* of that character. */
if (has_mbyte)
/* Escape the argument properly for a shell command */
p = vim_strsave_shellescape(ptr, TRUE);
if (p == NULL)
{
int i;
int len = (*mb_ptr2len)(ptr) - 1;
for (i = 0; i < len && n >= 1; ++i, --n)
*p++ = *ptr++;
vim_free(buf);
return;
}
#endif
*p++ = *ptr++;
buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
if (buf == NULL)
{
vim_free(buf);
vim_free(p);
return;
}
STRCAT(buf, p);
vim_free(p);
}
else
{
if (cmdchar == '*')
aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
else if (cmdchar == '#')
aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
else
/* Don't escape spaces and Tabs in a tag with a backslash */
aux_ptr = (char_u *)"\\|\"\n*?[";
p = buf + STRLEN(buf);
while (n-- > 0)
{
/* put a backslash before \ and some others */
if (vim_strchr(aux_ptr, *ptr) != NULL)
*p++ = '\\';
#ifdef FEAT_MBYTE
/* When current byte is a part of multibyte character, copy all
* bytes of that character. */
if (has_mbyte)
{
int i;
int len = (*mb_ptr2len)(ptr) - 1;
for (i = 0; i < len && n >= 1; ++i, --n)
*p++ = *ptr++;
}
#endif
*p++ = *ptr++;
}
*p = NUL;
}
*p = NUL;
/*
* Execute the command.

View File

@@ -114,6 +114,8 @@
#define HAVE_PUTENV
#define HAVE_SETENV
#define HAVE_SETJMP_H
#define HAVE_MATH_H
#define HAVE_FLOAT_FUNCS
#undef HAVE_DIRENT_H
#undef HAVE_SYS_NDIR_H

View File

@@ -77,7 +77,7 @@
/*
* Do the opposite: based on a maximum end score and a known sound score,
* compute the the maximum word score that can be used.
* compute the maximum word score that can be used.
*/
#define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
@@ -625,7 +625,7 @@ typedef struct suggest_S
/* TRUE if a word appears in the list of banned words. */
#define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
/* Number of suggestions kept when cleaning up. we need to keep more than
/* Number of suggestions kept when cleaning up. We need to keep more than
* what is displayed, because when rescore_suggestions() is called the score
* may change and wrong suggestions may be removed later. */
#define SUG_CLEAN_COUNT(su) ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
@@ -5980,7 +5980,7 @@ spell_read_aff(spin, fname)
else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
MSG(_("Too many compound flags"));
else
MSG(_("Too many posponed prefixes and/or compound flags"));
MSG(_("Too many postponed prefixes and/or compound flags"));
}
if (syllable != NULL)

View File

@@ -4,9 +4,9 @@
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
# Last change: 2008 Jun 19
# Last change: 2008 Aug 19
#
# This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX.
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
#
# Execute with:
@@ -32,6 +32,15 @@
# and directory handling.
# WANT_UNIX = YES
# Comment out if you want to run Win32 specific tests as well, but please
# be aware, that on OpenVMS will fail, because of cat, rm, etc commands
# and directory handling.
# WANT_WIN = YES
# Comment out if you want to run spell checker tests.
# They fail because VMS does not support file names.
# WANT_SPELL = YES
# Comment out if you have gzip on your system
# HAVE_GZIP = YES
@@ -53,12 +62,12 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
test13.out test14.out test15.out test17.out \
test18.out test19.out test20.out test21.out test22.out \
test23.out test24.out test26.out \
test28.out test29.out test31.out test32.out \
test28.out test29.out test30.out test31.out test32.out \
test33.out test34.out test35.out test36.out test37.out \
test38.out test39.out test40.out test41.out test42.out \
test43.out test44.out test45.out test46.out \
test48.out test51.out test53.out test54.out test55.out \
test56.out test57.out test58.out test59.out test60.out \
test56.out test57.out test60.out \
test61.out test62.out test63.out test64.out test65.out
.IFDEF WANT_GUI
@@ -67,7 +76,15 @@ GUI_OPTION = -g
.ENDIF
.IFDEF WANT_UNIX
SCRIPT_UNIX = test10.out test12.out test25.out test27.out test30.out test49.out
SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out
.ENDIF
.IFDEF WANT_WIN
SCRIPT_WIN = test50.out test52.out
.ENDIF
.IFDEF WANT_SPELL
SCRIPT_SPELL = test58.out test59.out
.ENDIF
.IFDEF HAVE_GZIP
@@ -84,11 +101,11 @@ SCRIPT_GDIFF = test47.out
-@ write sys$output " "$*" "
-@ write sys$output "-----------------------------------------------"
-@ create/term/wait mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in
-@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences test.out $*.ok;
-@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences /par test.out $*.ok;
-@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename test.out $*.out
-@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_GZIP) $(SCRIPT_GDIFF)
all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) $(SCRIPT_GDIFF)
-@ write sys$output " "
-@ write sys$output "-----------------------------------------------"
-@ write sys$output " All done"
@@ -113,6 +130,8 @@ nolog :
-@ write sys$output "MAKE_VMS.MMS options:"
-@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" "
-@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" "
-@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" "
-@ write sys$output " WANT_SPELL= ""$(WANT_SPELL)"" "
-@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" "
-@ write sys$output " HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
-@ write sys$output "Default vimrc file is VMS.VIM:
@@ -122,5 +141,13 @@ nolog :
clean :
-@ if "''F$SEARCH("*.out")'" .NES. "" then delete/noconfirm/nolog *.out.*
-@ if "''F$SEARCH("test.log")'" .NES. "" then delete/noconfirm/nolog test.log.*
-@ if "''F$SEARCH("test.ok")'" .NES. "" then delete/noconfirm/nolog test.ok.*
-@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
-@ if "''F$SEARCH("*.*_sw*")'" .NES. "" then delete/noconfirm/nolog *.*_sw*.*
-@ if "''F$SEARCH("*.failed")'" .NES. "" then delete/noconfirm/nolog *.failed.*
-@ if "''F$SEARCH("*.rej")'" .NES. "" then delete/noconfirm/nolog *.rej.*
-@ if "''F$SEARCH("tiny.vim")'" .NES. "" then delete/noconfirm/nolog tiny.vim.*
-@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.*
-@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.*
-@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.*

View File

@@ -26,15 +26,17 @@ SCRIPTS_GUI = test16.out
.SUFFIXES: .in .out
nongui: nolog $(SCRIPTS)
@echo
@cat test.log
@echo ALL DONE
nongui: nolog $(SCRIPTS) report
gui: nolog $(SCRIPTS) $(SCRIPTS_GUI)
gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report
report:
@echo
@cat test.log
@echo ALL DONE
@echo 'Test results:'
@/bin/sh -c "if test -f test.log; \
then cat test.log; echo TEST FAILURE; exit 1; \
else echo ALL DONE; \
fi"
$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
@@ -71,4 +73,4 @@ test49.out: test49.vim
test60.out: test60.vim
nolog:
-echo Test results: >test.log
-rm -f test.log

View File

@@ -24,10 +24,17 @@ STARTTEST
:set nobin eol
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:!cat XXUnix XXDos >XXUxDs
:!cat XXUnix XXMac >XXUxMac
:!cat XXDos XXMac >XXDosMac
:!cat XXUnix XXDos XXMac >XXUxDsMc
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac XXDosMac.
: !copy XXUnix,XXDos,XXMac XXUxDsMc.
:else
: !cat XXUnix XXDos >XXUxDs
: !cat XXUnix XXMac >XXUxMac
: !cat XXDos XXMac >XXDosMac
: !cat XXUnix XXDos XXMac >XXUxDsMc
:endif
:"
:" try reading and writing with 'fileformats' empty
:set fileformat=unix

View File

@@ -3,8 +3,13 @@ Some tests for buffer-local autocommands
STARTTEST
:so small.vim
:e xx
:!rm -f test.out
:au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile " here, autocommand for xx shall write test.out
: " but autocommand shall not apply to buffer named <buffer>
:bwipe xx " here, autocommand shall be auto-deleted

View File

@@ -2110,6 +2110,8 @@ clip_x11_request_selection(myShell, dpy, cbd)
int i;
int nbytes = 0;
char_u *buffer;
time_t start_time;
int timed_out = FALSE;
for (i =
#ifdef FEAT_MBYTE
@@ -2129,6 +2131,7 @@ clip_x11_request_selection(myShell, dpy, cbd)
case 3: type = text_atom; break;
default: type = XA_STRING;
}
success = FALSE;
XtGetSelectionValue(myShell, cbd->sel_atom, type,
clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
@@ -2141,27 +2144,46 @@ clip_x11_request_selection(myShell, dpy, cbd)
* characters, then they will appear before the one that requested the
* paste! Don't worry, we will catch up with any other events later.
*/
start_time = time(NULL);
for (;;)
{
if (XCheckTypedEvent(dpy, SelectionNotify, &event))
{
/* this is where clip_x11_request_selection_cb() is actually
* called */
XtDispatchEvent(&event);
break;
}
if (XCheckTypedEvent(dpy, SelectionRequest, &event))
/* We may get a SelectionRequest here and if we don't handle
* it we hang. KDE klipper does this, for example. */
XtDispatchEvent(&event);
/* Time out after 2 to 3 seconds to avoid that we hang when the
* other process doesn't respond. Note that the SelectionNotify
* event may still come later when the selection owner comes back
* to life and the text gets inserted unexpectedly (by xterm).
* Don't know how to avoid that :-(. */
if (time(NULL) > start_time + 2)
{
timed_out = TRUE;
break;
}
/* Do we need this? Probably not. */
XSync(dpy, False);
/* Bernhard Walle solved a slow paste response in an X terminal by
* adding: usleep(10000); here. */
/* Wait for 1 msec to avoid that we eat up all CPU time. */
ui_delay(1L, TRUE);
}
/* this is where clip_x11_request_selection_cb() is actually called */
XtDispatchEvent(&event);
if (success)
return;
/* don't do a retry with another type after timing out, otherwise we
* hang for 15 seconds. */
if (timed_out)
break;
}
/* Final fallback position - use the X CUT_BUFFER0 store */

View File

@@ -676,6 +676,32 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
15,
/**/
14,
/**/
13,
/**/
12,
/**/
11,
/**/
10,
/**/
9,
/**/
8,
/**/
7,
/**/
6,
/**/
5,
/**/
4,
/**/
3,
/**/
2,
/**/
@@ -790,7 +816,7 @@ list_version()
MSG_PUTS(_("\nRISC OS version"));
#endif
#ifdef VMS
MSG_PUTS("\nOpenVMS version");
MSG_PUTS(_("\nOpenVMS version"));
# ifdef HAVE_PATHDEF
if (*compiled_arch != NUL)
{