Re: patch 7.0.198 (extra)

2007-02-20 Thread Mathias Michaelis
> Patch 7.0.198 (extra)
> Problem:Win32: Compiler warnings.  No need to generate gvim.exe.mnf.
> Solution:   Add type casts.  Use "*" for processorArchitecture. (George 
> Reilly)
> Files:  src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c
> 
This patch collides with some patches I posted earlier. I adopted my
patches. They can be downloaded for a while from

http://members.tcnet.ch/michaelis/vim/patches.zip

With kind regards

Mathias


Re: VC8 makefile patch

2007-01-27 Thread Mathias Michaelis
Hi

>> Alas, your patch doesn't work on my machine for three reasons:
>> 
>> 1) I use VCExpress version to build vim. This is VC8, but there is
>>no SDK.
> 
> I didn't think the Express version of the compilers supported optimized 
> code generation.  And I am surprised VCExpress comes without nmake.
>
I don't know either if Express optimizes well  -- at least it
doesn't issue any warnings about unrecognised compiler options since
I applied your patch.

The VCExpress version have an own version of nmake. But it doesn't
have an SDK. So I have to install this separately. I thought the
best thing is to use a batch file located at

%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd

to set up the environment, but may be I'm wrong. With this batch
script first the path of the SDK is searched, and after that the
path of the VCExpress tools. So the nmake of SDK is found first.

>>..., but since version 7.0 of the VC toolset there
>>exists a environment variable MSVCVer which IMHO should be used
>>when it is defined.
>>
> I don't believe this is the case.  For my install of VC8 there is no 
> MSVCVER variable defined.  Could this may be a feature of VCExpress?
> 
It's a feature of the SDK, not of the Visual Tools. MSVCVer  is
defined by the mentioned batch application SetEnv.Cmd.

> So there are now two issues.  Non-SDK build environments don't have 
> MSVCVER variable, while SDK build environments have version numbers that 
> can be out of synch with the version of Visual C.
>
Not exactly: The SDK script mentioned above searches for a VC
environment. If it finds one, it sets the MSVCVer environment
variable appropriate to the C compiler it has found.

> It would be nice to keep the makefile handle its environment
> automatically without developers having to define variables to
> get it to build "out of the box". Perhaps it should first check
> for MSVCVER and if not defined fallback on _NMAKE_VER. Thoughts?
>
This would be fine!

Best regards

Mathias



Re: VC8 makefile patch

2007-01-20 Thread Mathias Michaelis
Hi again!

I have realised that on my laptop that I am using at work there is a
nmake version 6.00.9782.0 which isn't in the version list of your
make_mvc.mak patch. I therefore definitively suggest to omit this
version list an relay solely on the MSVCVer environment variable
which should be defined since VC tool chain version 7.0. One can
force the user to define this variable with an !error directive or
one can utilize version 6.0 as standard. This may be a matter of taste.

Therefore, I suggest the patch that is attached to this email.

With kind regards

Mathias
Problem:VC8 no longer supports the /Gn processor code generation
directive, and the makefile now uses link time code
generation when not optimizing for space with an error
message.
Solution:   Check version of the visual tool set and, if version is
8.0, use VC8 specific optimization options.
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-04-26 12:30:22.0 +0200
--- src\Make_mvc.mak2007-01-20 20:29:44.430628800 +0100
***
*** 320,326 
--- 320,334 
  INTDIR=$(OBJDIR)
  OUTDIR=$(OBJDIR)
  
+ # We must know the version of the visual C tool chain.
+ !ifndef MSVCVER
+ !message Environment variable MSVCVer not defined. Please set it to the 
version of your
+ !message visual C tool chain. Possible values are 4.0, 5.0, 6.0, 7.0, 7.1 and 
8.0.
+ !error Environment variable MSVCVer is undefined!
+ !endif
+ 
  # Convert processor ID to MVC-compatible number
+ !if "$(MSVCVER)" != "8.0"
  !if "$(CPUNR)" == "i386"
  CPUARG = /G3
  !elseif "$(CPUNR)" == "i486"
***
*** 334,339 
--- 342,353 
  !else
  CPUARG =
  !endif
+ !else
+ # VC8 only allows specifying SSE architecture
+ !if "$(CPUNR)" == "pentium4"
+ CPUARG = /arch:SSE2
+ !endif
+ !endif
  
  !ifdef NODEBUG
  VIM = vim
***
*** 344,349 
--- 358,369 
  !else # MAXSPEED
  OPTFLAG = /Ox
  !endif
+ !if "$(MSVCVER)" == "8.0"
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+ !endif
+ !endif
  CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG)
  RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
  ! ifdef USE_MSVCRT
***
*** 363,369 
  CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
  RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
  # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in 
VC4.0.
! ! if "$(_NMAKE_VER)" == ""
  LIBC =
  ! else
  LIBC = /fixed:no
--- 383,389 
  CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
  RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
  # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in 
VC4.0.
! ! if "$(MSVCVER)" == "4.0"
  LIBC =
  ! else
  LIBC = /fixed:no
***
*** 707,712 
--- 727,741 
$(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) \
$(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB)
  
+ # Report link time code generation progress if used. 
+ !ifdef NODEBUG
+ !if "$(MSVCVER)" == "8.0"
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+ !endif
+ !endif
+ 
  all:  $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \
GvimExt/gvimext.dll
  
***
*** 795,801 
  
  # Create a default rule for transforming .c files to .obj files in $(OUTDIR)
  # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
! !IF "$(_NMAKE_VER)" == ""
  .c{$(OUTDIR)/}.obj:
  !ELSE
  .c{$(OUTDIR)/}.obj::
--- 824,830 
  
  # Create a default rule for transforming .c files to .obj files in $(OUTDIR)
  # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
! !IF "$(MSVCVER)" == "4.0"
  .c{$(OUTDIR)/}.obj:
  !ELSE
  .c{$(OUTDIR)/}.obj::
***
*** 804,810 
  
  # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR)
  # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
! !IF "$(_NMAKE_VER)" == ""
  .cpp{$(OUTDIR)/}.obj:
  !ELSE
  .cpp{$(OUTDIR)/}.obj::
--- 833,839 
  
  # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR)
  # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
! !IF "$(MSVCVER)" == "4.0"
  .cpp{$(OUTDIR)/}.obj:
  !ELSE
  .cpp{$(OUTDIR)/}.obj::


Re: VC8 makefile patch

2007-01-20 Thread Mathias Michaelis
Hi Mike

Thanks a lot for your patch. If the appropriate compiler options are
applied to VC8, the make_mvc.mak script emits much less warning
messages, and probably the created binary is better optimised in
some manner.

Alas, your patch doesn't work on my machine for three reasons:

1) I use VCExpress version to build vim. This is VC8, but there is
   no SDK. So I also downloaded the Windows Server 2003 R2 Platform
   SDK. This SDK was the newest when I downloaded it. Alas it comes
   with nmake version 7.00.xyz. So I have to use nmake 7.00.xyz to
   control VC8.

   Solution: make_mvc.mak should not estimate the version of the
   nmake utility, but of the compiler that is used. This is a little
   bit difficult, but since version 7.0 of the VC toolset there
   exists a environment variable MSVCVer which IMHO should be used
   when it is defined.

2) The nmake utility that comes with the Windows Server 2003 R2
   Platform SDK has the version 7.00.8882. This is none of the
   versions that your patch is made for.

   Solution: This version should be added to the list of versions
   as long a s this list is maintained. Another problem: I have
   heart of a VC 7.1. But I don't know with which exact version
   number the related nmake tool comes. So it is doubtful if the
   version list should be maintained at all, or if one should better
   relay on the environment variable MSVCVer that can in case of
   need be defined manually by the user.

3) Your patch uses the operators >, <, >= and <= to compare version
   numbers. With my nmake-7.00.8882 this doesn't work, even if I
   omit the quotes around the numbers and the macros.

   Solution: It's a pity, but one has to work with == and !=.

I have applied all the solutions mentioned above (by keeping to
maintain the list of nmake versions) and can now build vim
successfully. (To be honest: I HAVE to apply other patches too that
I once have mailed to this list but seemed to have been ignored?).

Best regards and thanks again for this patch

Mathias Michaelis
Patch U010  Written by Mike Williams <[EMAIL PROTECTED]>
and Mathias Michaelis <[EMAIL PROTECTED]>
Problem:VC8 no longer supports the /Gn processor code generation
directive, and the makefile now uses link time code
generation when not optimizing for space with an error
message.
Solution:   Check version of the visual tool set and, if version is
8.0, use VC8 specific optimization options.
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-04-26 12:30:22.0 +0200
--- src\Make_mvc.mak2007-01-20 12:33:37.088265600 +0100
***
*** 320,326 
--- 320,354 
  INTDIR=$(OBJDIR)
  OUTDIR=$(OBJDIR)
  
+ # Derive version of VC being used
+ !ifndef MSVCVER
+ !if "$(_NMAKE_VER)" == ""
+ MSVCVER = 4.0
+ !endif
+ !if "$(_NMAKE_VER)" == "162"
+ MSVCVER = 5.0
+ !endif
+ !if "$(_NMAKE_VER)" == "6.00.8168.0"
+ MSVCVER = 6.0
+ !endif
+ !if "$(_NMAKE_VER)" == "7.00.9466"
+ MSVCVER = 7.0
+ !endif
+ !if "$(_NMAKE_VER)" == "7.00.8882"
+ MSVCVER = 7.0
+ !endif
+ !if "$(_NMAKE_VER)" == "8.00.50727.42"
+ MSVCVER = 8.0
+ !endif
+ !endif
+ 
+ # Default to VC6 (arbitrarily) if unknown
+ !ifndef MSVCVER
+ MSVCVER = 6.0
+ !endif
+ 
  # Convert processor ID to MVC-compatible number
+ !if "$(MSVCVER)" != "8.0"
  !if "$(CPUNR)" == "i386"
  CPUARG = /G3
  !elseif "$(CPUNR)" == "i486"
***
*** 334,339 
--- 362,373 
  !else
  CPUARG =
  !endif
+ !else
+ # VC8 only allows specifying SSE architecture
+ !if "$(CPUNR)" == "pentium4"
+ CPUARG = /arch:SSE2
+ !endif
+ !endif
  
  !ifdef NODEBUG
  VIM = vim
***
*** 344,349 
--- 378,389 
  !else # MAXSPEED
  OPTFLAG = /Ox
  !endif
+ !if "$(MSVCVER)" == "8.0"
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+ !endif
+ !endif
  CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG)
  RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
  ! ifdef USE_MSVCRT
***
*** 363,369 
  CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
  RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
  # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in 
VC4.0.
! ! if "$(_NMAKE_VER)" == ""
  LIBC =
  ! else
  LIBC = /fixed:no
--- 403,409 
  CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
  RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
  # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in 
VC4.0.
! ! if "$(MSVCVER)" == "4.0"
  LIBC =
  ! else
  LIBC = /fixed:no
***
*** 707,712 
--- 747,761 
$(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(

Re: Paste as HTML

2006-10-21 Thread Mathias Michaelis
>>> What is the added value of marking
>>> it as HTML on the clipboard?
>>> 
>> The added value is that you are able to paste the text into a word
>> processing program like AbiWord, MS Word or StarWriter in a way that
>> the HTML-Tags are not shown, but are interpreted by the word
>> processing program in order to format the text as it would be
>> formatted in a HTML browser.
>> 
>> To achieve this know, I only see one way: Convert your text to HTML,
>> then save it as HTML, open it with a web browser, copy it from here
>> into the clipboard and paste it into a word processing program.
> 
> Why don't these programs offer the option "paste as HTML"?  I mean, the
> user must have a choice if he wants the HTML as text or the resulting
> markup.
> 
The windows clipboard can contain one and the same data item several
time, each time in a different format. If I for instance copy from
an HTML browser, the data is contained there in HTML as well as in
plain text format.

I assume word processing programs offer only the format option they
can find within the clipboard and they can handle with. When Vim
copies text into the clipboard, it declares this text as plain text,
never as HTML. This is why word processing programs interpret this
text as plain text and don't offer the same options as for HTML --
even if the text _is_ HTML.

IMHO this is ok: In order to tell to a target application what it
can do with the data contained in the clipboard, declare its format
and don't assume that the user can do this. Of course I have no
doubt that there are only intelligent Vim users. But the world of
word processing program is another one ;-)

With best regards

Mathias Michaelis


Re: Paste as HTML

2006-10-21 Thread Mathias Michaelis
Hello Tony

>> To achieve this know, I only see one way: Convert your text to HTML,
>> then save it as HTML, open it with a web browser, copy it from here
>> into the clipboard and paste it into a word processing program.
>> 
> What about opening the HTML file directly as RTF in a word processor?
>
I guess the original poster wants to insert code snippets into an
already existing documentation.

Regards

Mathias


Re: Paste as HTML

2006-10-21 Thread Mathias Michaelis
Hello *

> What is the added value of marking
> it as HTML on the clipboard?
> 
The added value is that you are able to paste the text into a word
processing program like AbiWord, MS Word or StarWriter in a way that
the HTML-Tags are not shown, but are interpreted by the word
processing program in order to format the text as it would be
formatted in a HTML browser.

To achieve this know, I only see one way: Convert your text to HTML,
then save it as HTML, open it with a web browser, copy it from here
into the clipboard and paste it into a word processing program.

With best regards

Mathias


Re: Patch 7.0.051

2006-08-13 Thread Mathias Michaelis
Hi Bram

> Patch 7.0.051 (after 7.0.44)
>
Thanks! That resolved my problem!
Best regards
Mathias


Re: Patch 7.0.044

2006-08-09 Thread Mathias Michaelis
Dear Bram, dear Tony

sorry for responding so late -- since I have a job, I run out
of time very often. Maybe I am not making enough use of all the
possibilities of vim ...

>>> I inspected if_perl.xs and if_perl.c and saw that xsubpp simply removed
>>> preprocessor directives such as
>>>
 ! #ifdef FEAT_AUTOCMD

>>> out of the code without really make a decision between the #if or #else:
>>> Both parts were left.
>>>
>> I missed this, it compiles OK for me even though the code is wrong.
>> Note that I put some white space before the # to make it work for me.
>>
I noted the space: Alas, xsubpp does not :-(

>>> I then found
>>>
>>> http://perldoc.perl.org/perlxs.html#Inserting-POD%2c-Comments-and-C-Preprocessor-Directives
>> 
>> But that mentions that the preprocessor directives are passed on
>> unmodified...  That isn't so, this documentation is wrong.
>
Maybe, I misunderstood the documentation and, based on this,
did something that worked. But I thought that this statement
is valid only before the "MODULE line" -- before the line
that much the regular expression

^\s*MODULE\s*=.*\s\s*PACKAGE\s*=.*$

After that line, the text that begins with

   "If you use preprocessor directives to choose one of two
versions of a function [...]"

becomes valid.

>> Your solution to duplicate the functions is not nice.
>>
Yes, it's not nice, it's only a work around until a better
solution is found.

> Compiling on SuSE 9.3 with gcc 3.3.5 20050117 (prerelease), I also get 
> no messages for if_perl although the # lines are removed and both 
> branches (before and after #else) passed on.
> 
The code that results if the directives are cancelled is
valid C++, but is not valid C. Maybe that this is the
crucial point.

> I notice that # directives of all kinds are passed on unmodified 
> elsewhere in the code; but they have the # in column 1 (sometimes with 
> spaces after the #). There is also one "# string" in a /* comment */ 
> which is passed on OK. Maybe xsubpp doesn't recognise lines with spaces 
> before # as 'preprocessor directives' to be passed on?
>
I think this is not the point. Since I have no time for
quickly trying things out, I can only tell about my
speculations:

Before the "MODULE line" (see above), # directives are passed
unmodified, after that "MODULE line" they are interpreted by xsubpp.

My suggestion is to pass the if_perl.xs file first though a C
preprocessor, and only after that through xsubpp.

If the preprocessor disturb the format of if_perl.xs too much
so it can't be parsed by xsubpp anymore, I would try something
like

rename if_perl.xs to if_perl.xs.orig
pre-process if_perl.xs.orig to if_perl.xs.pp
copy lines before "MODULE line" from f_perl.xs.orig to if_perl.xs
add  lines after  "MODULE line" form if_perl.xs.pp  to if_perl.xs
xsubpp if_perl.xs

But this are only my speculations ...

Best regards

Mathias


Patch (unofficial): if_perl.xs is converted to an invalid if_perl.c file

2006-08-08 Thread Mathias Michaelis
Patch   (after 7.0.44)
Problem:xsubpp simply removes the newly added directives form
if_perl.xs when converting it into if_perl.c
Solution:   See 
http://perldoc.perl.org/perlxs.html#Inserting-POD%2c-Comments-and-C-Preprocessor-Directives


*** ..\vim-7.0.044\src\if_perl.xs   2006-08-08 20:02:34.440876800 +0200
--- src\if_perl.xs  2006-08-08 21:07:26.287076800 +0200
***
*** 1048,1053 
--- 1048,1054 
}
  }

+ #ifdef FEAT_AUTOCMD
  void
  Set(vimbuf, ...)
  VIBUF vimbuf;
***
*** 1068,1102 
line = SvPV(ST(i),PL_na);
if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL)
{
- #ifdef FEAT_AUTOCMD
aco_save_T  aco;

/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
! #else
buf_T   *save_curbuf = curbuf;

curbuf = vimbuf;
curwin->w_buffer = vimbuf;
- #endif
if (u_savesub(lnum) == OK)
{
ml_replace(lnum, (char_u *)line, TRUE);
changed_bytes(lnum, 0);
}

- #ifdef FEAT_AUTOCMD
-   /* restore curwin/curbuf and a few other things */
-   aucmd_restbuf(&aco);
-   /* Careful: autocommands may have made "vimbuf" invalid! */
- #else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
- #endif
}
}
  }

  void
  Delete(vimbuf, ...)
  VIBUF vimbuf;
--- 1069,1131 
line = SvPV(ST(i),PL_na);
if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL)
{
aco_save_T  aco;

/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
!   if (u_savesub(lnum) == OK)
!   {
!   ml_replace(lnum, (char_u *)line, TRUE);
!   changed_bytes(lnum, 0);
!   }
!
!   /* restore curwin/curbuf and a few other things */
!   aucmd_restbuf(&aco);
!   /* Careful: autocommands may have made "vimbuf" invalid! */
!   }
!   }
! }
!
! #else
! void
! Set(vimbuf, ...)
! VIBUF vimbuf;
!
! PREINIT:
! int i;
! long lnum;
! char *line;
! PPCODE:
! if (buf_valid(vimbuf))
! {
!   if (items < 3)
!   croak("Usage: VIBUF::Set(vimbuf, lnum, @lines)");
!
!   lnum = SvIV(ST(1));
!   for(i = 2; i < items; i++, lnum++)
!   {
!   line = SvPV(ST(i),PL_na);
!   if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL)
!   {
buf_T   *save_curbuf = curbuf;

curbuf = vimbuf;
curwin->w_buffer = vimbuf;
if (u_savesub(lnum) == OK)
{
ml_replace(lnum, (char_u *)line, TRUE);
changed_bytes(lnum, 0);
}

curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
}
}
  }

+ #endif
+
+ #ifdef FEAT_AUTOCMD
  void
  Delete(vimbuf, ...)
  VIBUF vimbuf;
***
*** 1130,1144 
if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count)
{
buf_T   *save_curbuf = curbuf;
- #ifdef FEAT_AUTOCMD
aco_save_T  aco;

/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
- #else
-   curbuf = vimbuf;
-   curwin->w_buffer = vimbuf;
- #endif
if (u_savedel(lnum, 1) == OK)
{
ml_delete(lnum, 0);
--- 1159,1168 
***
*** 1146,1165 
if (save_curbuf == curbuf)
check_cursor();
}
- #ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "vimbuf" invalid! */
! #else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
- #endif
update_curbuf(VALID);
}
}
}
  }

  void
  Append(vimbuf, ...)
  VIBUF vimbuf;
--- 1170,1238 
if (save_curbuf == curbuf)
check_cursor();
}
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "vimbuf" invalid! */
!   update_curbuf(VALID);
!   }
!   }
!   }
! }
!
! #else
! void
! Delete(vimbu

Re: Patch 7.0.044

2006-08-08 Thread Mathias Michaelis
Dear Bram

> Patch 7.0.044
> Problem:  Perl: setting a buffer line in another buffer may result in
>   changing the current buffer.
> Solution: Properly change to the buffer to be changed.
> Files:src/if_perl.xs
> 
> [...]
>
Alas, if I want to compile this, I get the following output

---%<---
"C:\Program Files\ActivePerl\Bin\perl" "C:\Program 
Files\ActivePerl\lib\ExtUtils\xsubpp" -prototypes -typemap "C:\Program 
Files\ActivePerl\lib\ExtUtils\typemap"  -typemap typemap if_perl.xs > if_perl.c
cl -c /W3 /nologo  -D_MT -MT -I. -Iproto -DHAVE_PATHDEF -DWIN32  
-DFEAT_SNIFF -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG   -DFEAT_XPM_W32   
-DWINVER=0x0500 -D_WIN32_WINNT=0x0500  /Fo.\ObjGOL/ /Ox -DNDEBUG /G6 -DFEAT_OLE 
-DFEAT_MBYTE_IME -DDYNAMIC_IME
-DGLOBAL_IME -DFEAT_MBYTE -DFEAT_GUI_W32 -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT 
-DFEAT_PERL -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl58.dll\" -DFEAT_HUGE /Zi 
/Fd.\ObjGOL/ /I "C:\Program Files\ActivePerl\Lib\Core" if_perl.c
cl : Command line warning D9002 : ignoring unknown option '/G6'
if_perl.c
if_perl.xs(1075) : error C2275: 'buf_T' : illegal use of this type as an 
expression
c:\software\vim\vim70\src\structs.h(1133) : see declaration of 'buf_T'
if_perl.xs(1075) : error C2065: 'save_curbuf' : undeclared identifier
if_perl.xs(1088) : warning C4047: '=' : 'buf_T *' differs in levels of 
indirection from 'int'
if_perl.xs(1089) : warning C4047: '=' : 'buf_T *' differs in levels of 
indirection from 'int'
if_perl.xs(1187) : error C2275: 'buf_T' : illegal use of this type as an 
expression
c:\software\vim\vim70\src\structs.h(1133) : see declaration of 'buf_T'
if_perl.xs(1200) : warning C4047: '=' : 'buf_T *' differs in levels of 
indirection from 'int'
if_perl.xs(1201) : warning C4047: '=' : 'buf_T *' differs in levels of 
indirection from 'int'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.
--->%---

I inspected if_perl.xs and if_perl.c and saw that xsubpp simply removed
preprocessor directives such as

> ! #ifdef FEAT_AUTOCMD
>

out of the code without really make a decision between the #if or #else:
Both parts were left.

I then found

http://perldoc.perl.org/perlxs.html#Inserting-POD%2c-Comments-and-C-Preprocessor-Directives

I will make my patch to get this working

With kind regards

Mathias



Re: if_ole.cpp triggers warnings on VC++ 2005

2006-06-27 Thread Mathias Michaelis
>> As it was discussed earlier, on MS VC++ 2005 additional defines is 
>> required in order to use some of the standard C library functions 
>> without warnings.  This defines should be done before inclusion of a 
>> windows.h header.  This defines was added into vim.h.  In if_ole.cpp 
>> vim.h is included after windows.h.
> 
> Thanks for fixing this.
> 
> The side effects are unpredictable.  I'll await comments for a while
> before making an official patch for this.
> 
I have applied this patch and compiled (g)vim(d) successfully. Now I
am working with this version of vim. If I encounter some problems, I
will report them. Are there some special things I have to care
about? Or some standardized tests I have to carry out?

Best regards

Mathias


Re: src/po/README_mvc.txt: Documentation Update

2006-06-23 Thread Mathias Michaelis
Bram

> Thanks for the correction of the typos.
>
It's a pleasure!

>> + Another possibility is to use the gnuwin32 port of gettext. This is
>> + recommended especially if you use already gnuwin32 tools to gunzip, bunzip,
>> + patch etc. these files. You find the gnuwin32 version of gettext here:
>> +
>> + http://gnuwin32.sourceforge.net/packages/gettext.htm
>> +
>> + Yet another very strait forward way is to get the sources of gettext from
>> +
>> + http://www.gnu.org/software/gettext/gettext.html
>> +
>> + and build your own version of these tools. The documentation states that 
>> this
>> + should be possible with MSVC4.0, MSVC5.0, MSVC6.0 or MSVC7.0, but you can
>> + build it even successfully with MSVC8.0.
>>
> Did you try these versions?  I recall there were problems with some
> ported versions of gettext and tools, but perhaps these are fixed by
> now.
> 
Yes. I do all my work with gnuwin32. I once compiled gettext with
the Visual C++ Toolkit, and yet it works well. With the new Visual
2005 Express Edition (VCEE) you must handle the .manifest files in a
similar way as in one of my patches of gvimext.dll. But I didn't
make expensive tests with the gettext package compiled by VCEE.

The gnuwin32 version as well as the version I once compiled with VC
Toolkit of the msgfmt tool has one little problem: I can
successfully compile all po files of Vim to mo files -- with one
exception:

   msgfmt -o "vim\vim70\src\po\ja.sjis\LC_MESSAGES\vim.mo" \
 "vim\vim70\src\po\ja.sjis.po"

says:

   vim\vim70\src\po\ja.sjis.po:61:23: invalid control sequence
   vim\vim70\src\po\ja.sjis.po:208:18: invalid control sequence
   [...]
   vim\vim70\src\po\ja.sjis.po:1544:34: invalid control sequence
   vim\vim70\src\po\ja.sjis.po:1566:20: invalid control sequence
   msgfmt: too many errors, aborting

But since the official vim70lang.zip file also doesn't contain a
ja.sjis language I thought this behaviour of msgfmt is normal. When
I run the Vim version compiled myself on a German computer, all
menus and messages are German.

With best regards

Mathias


Re: Patch 7.0.027 (extra)

2006-06-23 Thread Mathias Michaelis
Bram

> Patch 7.0.027 (extra)
> [...]
>   }
>   if (msg.message == WM_USER)
> + {
> + MyTranslateMessage(&msg)
^

c:\devel\vim\vim70\src\gui_w48.c(1669) : error C2146:
syntax error : missing ';' before identifier 'DispatchMessageA'

I know these little nasty things too good myself %-]

Thanks and best regards

Mathias


src/po/README_mvc.txt: Documentation Update

2006-06-23 Thread Mathias Michaelis
Problem:No Problem! Only some documentation is out dated.
I hope this is the correct way how I communicate changes
from which I think they could be helpful not only to me.
If not, please show me the correct way. Thanks!
Solution:   This unofficial context patch.
Files:  src/po/README_mvc.txt


*** ..\vim-7.0.000\src\po\README_mvc.txt2004-06-07 16:32:21.0 
+0200
--- src\po\README_mvc.txt   2006-06-20 12:05:49.898793600 +0200
***
*** 4,19 
  gnu-gettext.win32, a Windows port of gettext by Franco Bez
  <[EMAIL PROTECTED]>.  You can find it at:

!   http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html

  First read the README.txt file in this directory for general remarks on
  translating Vim messages.


  SETUP

! Set the enviroment variable LANGUAGE to the language code for the language you
! are translating Vim messages to.  Languagde codes are typically two characters
  and you can find a list of them at:

http://www.geocities.com/click2speak/languages.html
--- 4,33 
  gnu-gettext.win32, a Windows port of gettext by Franco Bez
  <[EMAIL PROTECTED]>.  You can find it at:

!   http://people.freenet.de/franco.bez/gettext/gettext_win32_en.html

  First read the README.txt file in this directory for general remarks on
  translating Vim messages.

+ Another possibility is to use the gnuwin32 port of gettext. This is
+ recommended especially if you use already gnuwin32 tools to gunzip, bunzip,
+ patch etc. these files. You find the gnuwin32 version of gettext here:
+
+ http://gnuwin32.sourceforge.net/packages/gettext.htm
+
+ Yet another very strait forward way is to get the sources of gettext from
+
+ http://www.gnu.org/software/gettext/gettext.html
+
+ and build your own version of these tools. The documentation states that this
+ should be possible with MSVC4.0, MSVC5.0, MSVC6.0 or MSVC7.0, but you can
+ build it even successfully with MSVC8.0.
+

  SETUP

! Set the environment variable LANGUAGE to the language code for the language 
you
! are translating Vim messages to.  Language codes are typically two characters
  and you can find a list of them at:

http://www.geocities.com/click2speak/languages.html
***
*** 23,29 
  Advanced tab in the System control panel.

  Next, edit Make_mvc.mak so that GETTEXT_PATH points the binary directory of
! the intallation.


  CREATING A NEW TRANSLATION
--- 37,43 
  Advanced tab in the System control panel.

  Next, edit Make_mvc.mak so that GETTEXT_PATH points the binary directory of
! the installation.


  CREATING A NEW TRANSLATION
***
*** 43,49 
  You will also need to edit the file names in the comments in the .po file.
  You need to remove the absolute directory specification (which has the form
  c:\vim61\src\).  You can do this in Vim with the following command with the
! appropriate directory specfication for where you have installed the Vim
  source:

%s/c:\\vim61\\src\\//g
--- 57,63 
  You will also need to edit the file names in the comments in the .po file.
  You need to remove the absolute directory specification (which has the form
  c:\vim61\src\).  You can do this in Vim with the following command with the
! appropriate directory specification for where you have installed the Vim
  source:

%s/c:\\vim61\\src\\//g
***
*** 57,63 

nmake -f Make_mvc.mak xx.po

! where xx is the langauge code for the language needing translations.  The
  original .po file is copied to xx.po.orig.


--- 71,77 

nmake -f Make_mvc.mak xx.po

! where xx is the language code for the language needing translations.  The
  original .po file is copied to xx.po.orig.



-- 
Thanks a lot for the VIM Editor!
Greetings
Mathias


Re: Patch: gvimext.dll don't find MSVCR80.dll when built with VC8. No context menu entries.

2006-06-19 Thread Mathias Michaelis
Hi *

> Please retrieve _all_ my patches from the archive
> 
> http://members.tcnet.ch/michaelis/vim/patches_vim_1.zip
> 
> and pick out the ones that concern the mvc makefiles.
> 
> Since only a view of my patches I published here have been discussed
> until now, I am afraid that the other ones could gone lost in the
> traffic of this list. Here is a list of all my patches so far:
> 
> http://groups.yahoo.com/group/vimdev/message/43821
> http://groups.yahoo.com/group/vimdev/message/43825
> http://groups.yahoo.com/group/vimdev/message/43850
> http://groups.yahoo.com/group/vimdev/message/43920
> http://groups.yahoo.com/group/vimdev/message/43921
> http://groups.yahoo.com/group/vimdev/message/43924
> http://groups.yahoo.com/group/vimdev/message/43934
>
Uups -- my fears have become true: I've forgot one:

http://groups.yahoo.com/group/vimdev/message/43765

I have recreated patches_vim_1.zip (above), it should now be up to
date. I'm sorry!

Best regards

Mathias


Re: Patch (unofficial): Create PDBs and EXEs within same directory

2006-06-19 Thread Mathias Michaelis
Bram

 Patch
 Problem: IMHO .pdb files should reside in the same directory as the
  corresponding .exe files so they can be distributet along
  with them.
 
>>> This doesn't matter for the distribution, the .pdb file can be moved
>>> around after generating it.  It might matter for when you want to run
>>> Vim right after compiling it.  I haven't tried it.
>>> 
>> [...]
>> Thus, if you have gvim, gvimd, vim and vimd in your
>> $VIMRUNTIME directory, you need four(!) subdirectories named
>> "OBJ..." there, each of them containing only one file: the
>> corresponding .PDB file.
>> 
>> Otherwise, you can't debug the executables without first guide your
>> debugger to the location where the corresponding .pdb file is stored.
> 
> Do you mean that the subdirectory is stored in the executable?
> 
Yes. Now I did some tests, but the results are not the same as I
mean to have experienced the first times when I started compiling
vim. Anyway:

The full (alas not relative) path to the .pdb file is stored in the
.exe file. Some information on this can be found here:

http://msdn2.microsoft.com/en-us/library/yd4f8bd1.aspx

Although stated otherwise in this link, I experienced that if the
.pdb can't be found at the location stored in the .exe file, it is
searched in the directory where the .exe file resides (and maybe
even in all directories listed in the PATH environment variable).

So that would invalidate my arguments above, but I have more arguments:

>> This is why I plead to make this patch an official one :-)
>> 
> The reason to put the .pdb file, and any other generated files,
> in a subdirectory is to keep the source directory clean.  And to
> have a different subdirectory for the various versions.
> 
1. The .pdb files are named like their corresponding .exe files
(vim.pdb, vimd.pdb, gvim.pdb, gvimd.pdb), while the .obj files (and
pathdef.c) have always the same name. So for the latter it makes
sense to store them into specially named directories in order to be
able to distinguish them, while the former ones can be distinguished
already by their file names.

2. If you change the configuration of, say, gvimd (e.g. add an
additional feature), the argument 1. above in not valid any more.
But in this case you anyway must delete (or move into the right
Obj... directory) the .exe file first, and the same is just true for
the .pdb file: .pdb files can be treated as a part of an .exe file
that is swapped out into a special file.

3. If you want to automate the process of building vim and move the
.exe and .pdb files together into an appropriate $VIMRUNTIME
directory by means of a BATCH or BASH script, then it is a nasty
task to code the cryptical name of the Obj... directory into that
script and change it whenever you change the list of features you
want to have compiled into your Vim. Not only isn't it easy to find
out the name of the Obj... directory that will be created by a
certain feature list, but you also must ensure that none of the
patches you may apply to the Vim sources changes that connection of
the feature list on the one hand and the name of the Obj...
directory on the other hand.

For all this reasons, I yet plead to put the .pdb file into the same
directory as the .exe files. But as I mentioned, it's only IMHO :-)

Best regards

Mathias


Re: PC sources lacks if_sniff.c

2006-06-19 Thread Mathias Michaelis
Bram

>>> The source archive
>>> 
>>> ftp://ftp.vim.org/pub/vim/pc/vim70src.zip
>>> 
>>> contains the file if_sniff.h but not the corresponding source file
>>> if_sniff.c. Has this a specific reason or has if_sniff.c simply been
>>> forgotten?
>>> 
> The Sniff interface is something extra, you need to get it from the
> extra archive.  That's how it is.
> 
Hmmm ...

1. The extra archive mainly consists on platform specific files and
on sub projects like tee, xxd or testdir.

Some of the sub projects are included in the pc archive (xxd,
testdir), others are not (tee). Well, for my compilations, I use tee
too, but get it from the gnuwin32 project.

Now, sniff.c is whether platform specific nor a sub project, but is
an optional component of Vim, probably similar to fold.c. I have no
big knowledge about Vim and its source, but it's not easy to me to
see why sniff.c logically belongs into the extra archive, while
sniff.h is in the source archive.

2. But there is a practical reason too why this item keeps me busy:

If I set SNIFF=yes within Make_mvc.mak, I get an error message from
the linker that a certain module could not be found. For me as a
silly Windows user it needs some time to find out

  - that this is due to a missing file
  - that this file can be found in the extra archive for unix
  - that this is a feature and not a bug, so I must not give up

Besides of this, I can't refrain to summarise my experiences like
that: With the unique exception of patch.exe from gnuwin32 where I
needed to apply the switch --binary, all other build tools (e.g.
from Microsoft VS2005) didn't have any problems with unix style line
ends (LF) instead of dos style line ends (CRLF). So it is almost
easier to work with the unix .tar.gz archives than with the .zip
archives that are kindly supplied for Windows and Dos users.

Best regards

Mathias


Re: Patch: gvimext.dll don't find MSVCR80.dll when built with VC8. No context menu entries.

2006-06-19 Thread Mathias Michaelis
Bram, George

>>> Patch 7.0.Make_GvimExt
>>> 
>> I don't have this compiler.  Can someone with MSVC 2005 verify this
>> works properly?
>>
> Send me the patch and I'll try it out.
> 
Please retrieve _all_ my patches from the archive

http://members.tcnet.ch/michaelis/vim/patches_vim_1.zip

and pick out the ones that concern the mvc makefiles.

Since only a view of my patches I published here have been discussed
until now, I am afraid that the other ones could gone lost in the
traffic of this list. Here is a list of all my patches so far:

http://groups.yahoo.com/group/vimdev/message/43821
http://groups.yahoo.com/group/vimdev/message/43825
http://groups.yahoo.com/group/vimdev/message/43850
http://groups.yahoo.com/group/vimdev/message/43920
http://groups.yahoo.com/group/vimdev/message/43921
http://groups.yahoo.com/group/vimdev/message/43924
http://groups.yahoo.com/group/vimdev/message/43934


With best regards

Mathias


Re: Patch: Make_mvc.mak creates an empty gvim.exe.mnf file

2006-06-18 Thread Mathias Michaelis
Bram

 Patch
 Problem:Make_mvc.mak creates an empty gvim.exe.mnf file
 (or stops with an error message).
 Solution:   Don't use 'echo' to create files. Use inline files
 instead.
 Files:  src/Make_mvc.mak
 
> Before including this change I would have to check the file still works
> with old versions of MSVC.  I still need to use 4.1 to be able to
> generate a win32s version.
> 
I have downloaded NMAKE 1.5 from

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q132084#appliesto

and saw, that it can handle inline files too. I think NMAKE 1.5 is
only a bug fix release with no additional features so NMAKE 1.4
should also handle inline files. The actual version on NMAKE is
about 8.00.xxx.

The method of using inline files is much more reliable than using
"echo", by reasons mentioned already at other places of that thread.

With best regards

Mathias


Re: Patch (unofficial): Create PDBs and EXEs within same directory

2006-06-18 Thread Mathias Michaelis
Bram

>> Patch
>> Problem:IMHO .pdb files should reside in the same directory as the
>> corresponding .exe files so they can be distributet along
>> with them.
>> Solution:   Change one line within src/Make_mvc.mak
>> Files:  src/Make_mvc.mak
>> 
> This doesn't matter for the distribution, the .pdb file can be moved
> around after generating it.  It might matter for when you want to run
> Vim right after compiling it.  I haven't tried it.
> 
Of course: If the pdb file is created in a subdirectory OBJGO, then
you must move this directory when ever you move the corresponding
Vim .EXE file. Thus, if you have gvim, gvimd, vim and vimd in your
$VIMRUNTIME directory, you need four(!) subdirectories named
"OBJ..." there, each of them containing only one file: the
corresponding .PDB file.

Otherwise, you can't debug the executables without first guide your
debugger to the location where the corresponding .pdb file is stored.

And yes: the .PDB are not needed for a distribution. But this is no
reason to hide these files in some subdirectories. Maybe, someone
wants to copy these files in the same $VIMRUNTIME directory as the
executable files. Or even wants to create his own distribution that
contains these files -- as Antoine Mechelynck contributed the
debugging executables vimd.exe and gvimd.exe at the times when he
compiled Vim.

This is why I plead to make this patch an official one :-)

Best regards

Mathias


Re: Patch: Make_mvc.mak creates an empty gvim.exe.mnf file

2006-06-18 Thread Mathias Michaelis
Bram

>> Patch
>> Problem:Make_mvc.mak creates an empty gvim.exe.mnf file
>> (or stops with an error message).
>> Solution:   Don't use 'echo' to create files. Use inline files
>> instead.
>> Files:  src/Make_mvc.mak
> 
> This has always worked just fine.  When does it fail?
> 
The gvim.exe.mnf always was empty -- but as George Reilly (who made
the skipt) told me, it is only used for 64-Bit Windows.

On the other hand, the error message ("FATAL error: echo returned
'1'") was only issued from time to time, depending on the commands I
typed in before. However, the message appeared in a reproducible
manner if I issued the nmake command from within a BATCH file.

I checked the documentation of nmake from VC 8.0 (VS 2005) and from
VC 6.0 to see if inline files can be handled. Since it is possible
and since I can compile Vim _only_ like that, I'm pretty sure this
patch facilitate the life of many users.

My environment: Visual Studio 2005 Express Edition.

C:>cmd -version
Microsoft Windows XP [Version 5.1.2600]

C:>nmake /?
Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

With best regards

Mathias


Re: gvim crash after closing: gvim hanging in Windows XP Taskmanager

2006-06-12 Thread Mathias Michaelis
Hi vimmers

I have some news about the crash -- finally I found the cause.

> I don't know how to find out where the problem is. Perhaps, there
> are some resources yet occupied, or some messages in a message
> queue of some hidden windows, that leads OleUninitialize() to stop
> the whole program at the end of a vim session -- I'm not a
> specialist for such things.
>
I think the last thought was actually the reason of the crash. See:

http://groups.yahoo.com/group/vimdev/message/43934

Best regards

Mathias



Patch (unofficial): OLE & SNIFF enabled gvim crashes on Windows by closing

2006-06-12 Thread Mathias Michaelis
Patch (unofficial)
Problem:OLE & SNIFF enabled gvim crashes on Windows by issuing the
command :q after 10 minutes
Solution:   Do translate and dispatch all messages. They may be addressed
to some thread of hidden window created by the os.
Files:  src/gui_w48.c


*** ..\vim-7.0.000\src\gui_w48.c2006-05-07 16:13:02.0 +0200
--- src\gui_w48.c   2006-06-12 12:17:56.160569600 +0200
***
*** 1664,1670 
--- 1664,1674 
/* request is handled in normal.c */
  }
  if (msg.message == WM_USER)
+ {
+   MyTranslateMessage(&msg);
+   DispatchMessage(&msg);
return;
+ }
  #endif

  #ifdef MSWIN_FIND_REPLACE


Patch (unofficial): Synchronize documetation of Makefile with my patched src/Make_mvc.mak (Thanks to Ylia)

2006-06-09 Thread Mathias Michaelis
Patch 7.0.Makefile
Problem:IMHO .pdb files should reside in the same directory as the
corresponding .exe files so they can be distributet along
with them. Therefore, one of my recent patches adopted
src/Make_mvc.mak to that opinion. Alas, now the top level
Makefile is out of sync.
Solution:   Change documentation within ./Makefile (thanks to Ilya
)
Files:  ./Makefile


*** ..\vim-7.0.000\Makefile 2006-05-07 14:16:24.0 +0200
--- .\Makefile  2006-06-09 17:34:43.712491200 +0200
***
*** 132,151 
  # - "nmake -f Make_mvc.mak"
  # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
  # - Rename the executables to "vimw32.exe", "xxdw32.exe".
! # - Rename ObjC/vim.pdb to vimw32.pdb.
  # - When building the Win32s version later, delete vimrun.exe, install.exe and
  #   uninstal.exe.  Otherwise rename executables to installw32.exe and
  #   uninstalw32.exe.
  # Win32 GUI version:
  # - "nmake -f Make_mvc.mak GUI=yes.
  # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
! # - Move ObjG/gvim.pdb to here.
  # - Delete vimrun.exe, install.exe and uninstall.exe.
  # - Copy "GvimExt/gvimext.dll" to here.
  # Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
  # - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
  # - Rename "gvim.exe" to "gvim_ole.exe".
! # - Rename ObjGOLYTR/gvim.pdb to "gvim_ole.pdb".
  # - Delete install.exe and uninstall.exe.
  # - If building the Win32s version delete vimrun.exe.
  # Win32s GUI version:
--- 132,151 
  # - "nmake -f Make_mvc.mak"
  # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
  # - Rename the executables to "vimw32.exe", "xxdw32.exe".
! # - Rename vim.pdb to vimw32.pdb.
  # - When building the Win32s version later, delete vimrun.exe, install.exe and
  #   uninstal.exe.  Otherwise rename executables to installw32.exe and
  #   uninstalw32.exe.
  # Win32 GUI version:
  # - "nmake -f Make_mvc.mak GUI=yes.
  # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
! # - Move gvim.pdb to here.
  # - Delete vimrun.exe, install.exe and uninstall.exe.
  # - Copy "GvimExt/gvimext.dll" to here.
  # Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
  # - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
  # - Rename "gvim.exe" to "gvim_ole.exe".
! # - Rename gvim.pdb to "gvim_ole.pdb".
  # - Delete install.exe and uninstall.exe.
  # - If building the Win32s version delete vimrun.exe.
  # Win32s GUI version:

-- 
Thanks a lot for the VIM Editor!
Greetings
Mathias



Patch (unofficial): xpm_w32 support now possible with spaces in path names

2006-06-09 Thread Mathias Michaelis
Patch
Problem:When trying to buid vim with xpm_w32 support, the Make_mvc
runs into troubles as soon as the path names of required
libraries and include files contain spaces.
Solution:   Quote such path names.
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-06-09 09:55:53.956646400 +0200
--- src\Make_mvc.mak2006-06-09 10:40:59.957684800 +0200
***
*** 262,272 

  !ifdef XPM
  # XPM - Include support for XPM signs
! # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself
  XPM_OBJ   = $(OBJDIR)/xpm_w32.obj
  XPM_DEFS  = -DFEAT_XPM_W32
  XPM_LIB   = "$(XPM)\lib\libXpm.lib"
! XPM_INC = -I $(XPM)\include
  !endif
  !endif

--- 262,272 

  !ifdef XPM
  # XPM - Include support for XPM signs
! # you can get xpm.lib from http://gnuwin32.sourceforge.net/packages/xpm.htm
  XPM_OBJ   = $(OBJDIR)/xpm_w32.obj
  XPM_DEFS  = -DFEAT_XPM_W32
  XPM_LIB   = "$(XPM)\lib\libXpm.lib"
! XPM_INC = -I "$(XPM)\include" -I "$(XPM)\include\x11"
  !endif
  !endif

***
*** 962,967 
--- 962,974 
  E0_CFLAGS = $(CFLAGS:\=\\)
  E_CFLAGS = $(E0_CFLAGS:"=\")

+ # $LINKARGS1 and $LINKARGS2 may contain backslashes and double quotes.
+ # Excape them both.
+ E0_LINKARGS1 = $(LINKARGS1:\=\\)
+ E_LINKARGS1 = $(E0_LINKARGS1:"=\")
+ E0_LINKARGS2 = $(LINKARGS2:\=\\)
+ E_LINKARGS2 = $(E0_LINKARGS2:"=\")
+
  $(PATHDEF_SRC): auto
@echo creating $@
@copy << $@
***
*** 970,976 
  char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)";
  char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)";
  char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)";
! char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) 
$(LINKARGS2:\=\\)";
  char_u *compiled_user = (char_u *)"$(USERNAME)";
  char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";
  <<
--- 977,983 
  char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)";
  char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)";
  char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)";
! char_u *all_lflags = (char_u *)"$(link:\=\\) $(E_LINKARGS1) $(E_LINKARGS2)";
  char_u *compiled_user = (char_u *)"$(USERNAME)";
  char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";
  <<

-- 
Thanks a lot for the VIM Editor!
Greetings
Mathias


Patch (unofficial): Create PDBs and EXEs within same directory

2006-06-09 Thread Mathias Michaelis
Patch
Problem:IMHO .pdb files should reside in the same directory as the
corresponding .exe files so they can be distributet along
with them.
Solution:   Change one line within src/Make_mvc.mak
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-06-04 18:09:36.210426300 +0200
--- src\Make_mvc.mak2006-06-05 19:02:19.844152000 +0200
***
*** 683,689 
  # on a crash (doesn't add overhead to the executable).
  #
  CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/
! LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup

  #
  # End extra feature include
--- 683,689 
  # on a crash (doesn't add overhead to the executable).
  #
  CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/
! LINK_PDB = /PDB:$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup

  #
  # End extra feature include

-- 
Thanks a lot for the VIM Editor!
Greetings
Mathias


Re: gvim crash after closing: gvim hanging in Windows XP Taskmanager

2006-06-09 Thread Mathias Michaelis
Hi vimmers

I have some news about the crash.

1) Minimal requirement to build a gvim.exe that crashes with
   Microsoft Visual Studio 2005 Express Edition (VSEE):

   nmake -f Make_mvc.mak FEATURES=NORMAL GUI=yes OLE=yes \
 MBYTE=no IME=no GIME=no SNIFF=yes CSCOPE=no \
 ICONV=no GETTEXT=no POSTSCRIPT=no

   That means: gvim.exe has the problem only if all three following
   conditions are met:

   a) OLE=yes
   b) SNIFF=yes
   c) Close gvim.exe only after 15 minutes

   Sometimes, gvim seems to close properly, but in the Taskmanager
   one can see that gvim is yet there.

2) One can also build a huge debug version of vim and enable much
   more feature to let gvim show this behaviour.

3) The crash happens as follows: Within the source file
   src/os_mswin.c the function mch_exit() is called as soon as you
   press :q within gvim.exe. Now, the function UninitOLE(), defined
   in src/if_ole.c, called. This function calls the Windows API
   function OleUninitialize(), which alas never returns.

   I don't know how to find out where the problem is. Perhaps, there
   are some resources yet occupied, or some messages in a message
   queue of some hidden window, that leads OleUninitialize() to stop
   the whole program -- I'm not a specialist for such things.

4) Why does this happen only after gvim was running for 10 minutes
   or more? Perhaps this also depends on a time constant of the
   operating system: I had read somewhere that Windows unloads all
   10 minutes some dlls that seam to not be in use any more.

My work around: Don't use the SNIFF feature on Windows.

Apropos SNIFF: The source file if_sniff.c is missing in the pc
source package ftp://ftp.vim.org/pub/vim/pc/vim70src.zip. I got it
from ftp://ftp.vim.org/pub/vim/extra/vim-7.0-extra.tar.gz. As
mentioned in http://groups.yahoo.com/group/vimdev/message/43780, I'm
not sure if that has a reason or not. Strange coincidence!

With best regards

Mathias


Re: matchparen bug?

2006-06-08 Thread Mathias Michaelis
Hi *

> I call that reproducing the bug.  That makes three of us who see 
> the bug, one who does not.  Looking at the plugin, I think I
> understand what causes it.  I explained that a few posts back,
> didn't I?
> 
Bram has fixed this bug already a month ago ;-)

See: http://groups.yahoo.com/group/vimdev/message/43639

Best regards

Mathias


Re: gvim crash after closing: gvim hanging in Windows XP Taskmanager

2006-06-07 Thread Mathias Michaelis
Tony

>> But if I invoke the Taskmanager by pressing Ctrl-Alt_Delete,
>> then I observe a gvim zombie hanging around within the task
>> list.
>> 
> If it doesn't happen when you build with Big features (and an
> otherwise identical configuration), then the only difference
> between Big and Hige is that the latter has +profile
> 
Thanks for that hint! I am doing some researches about this issue
and am glad about such tips.

Sincerely
Mathias


Re: All mails lost

2006-06-07 Thread Mathias Michaelis
Yakov

> ... That's why re-sending helps.
> 
Thanks again! Yes, I experienced that once or twice too. But this
time, waiting one night didn't help, so I thought it stays like that
for ever: I am receiving mails, can't reply nor unsubscribe nor
influence in any way what's going on. This is why I was a little bit
in panic.

Excuse me!
Sincerely
Mathias


Re: All mails lost

2006-06-07 Thread Mathias Michaelis
Tony

> > I found that emails that are written on my Thunderbird Email
> > Client AND where addressed to vim-dev@vim.org ... were filtered
> > away, ... 
> >
> There may be an explanation to that: Thunderbird writes its mail in HTML 
> by default, ...
> 
Thanks for reply -- I appreciate that also those nasty problems are
discussed seriously. But anyway: I don't write HTML emails, I turn this
(un-)feature off where ever it is possible. So this explanation can be excluded.

Sincerely

Mathias

Webmail TcNet GmbH http://www.tcnet.ch




Re: All mails lost

2006-06-07 Thread Mathias Michaelis
Hello Matthew, dear developers

>> My emails are systematically filtered out.
>>
> I'm seeing your messages on the list.
>
First: Thanks for replying so fast!

But: You don't see no of my mails written yesterday, and also not
all from this morning. The testmail written at 09:03:28 +0200 is not
from me, but from my Email-Provider. I found that emails that are
written on my Thunderbird Email Client AND where addressed to
vim-dev@vim.org or an address to unsubscribe from the list where
filtered away, BUT emails written on the web interface of my ISP
reached the list.

I can verify that on the mail archive

http://groups.yahoo.com/group/vimdev

Although I have unsubscribed my self, I yet receive emails from the
list and - suddenly - I can send emails again to the list. Very curious!

> There have been situations in the past where the list has
> silently discarded messages because they don't match some
> arbitrary unpublished criterion, but that doesn't appear to be
> the case here.
> 
First I thought emails must not be written on Thunderbird, but that
apparently isn't true any more.

> [cc'd to poster to be certain the message gets through]
> 
Thanks again for your reply!

Best regards

Mathias


gvim crash after closing: gvim hanging in Windows XP Taskmanager

2006-06-07 Thread Mathias Michaelis
Dear developers

I observe the following strange behaviour of gvim 7.0 on Windows XP
built with HUGE features by my own:

I open gvim.exe, work with it or leave it without touching it for
half an hour. Then, within gvim.exe, I type ":q" or ":wq". gvim
saves the text, remove the .swp file and closes its window -- all as
expected. But if I invoke the Taskmanager by pressing
Ctrl-Alt_Delete, then I observe a gvim zombie hanging around within
the task list.

I have tried all to make this phenomena more reproducible, but
nothing helps: You may open and close gvim hundred times, or may
open and close with gvim a hundred files, you may do heavy work with
it or can leave it alone, all that does not matter. The only thing
that matters is the time you keep gvim open: On my (old) machine,
gvim closes properly if I quit it after five minutes, but if I quit
it only after 30 minutes, it keeps hanging around in the task list.

There is a second parameter that matters: The features you include
into your built of gvim. Alas, I could not yet found clearly, which
features this strange behaviour depends on.

Has anybody similar effects? Or do I do something wrong? See below
how I built my version of gvim.

Thanks very much for any help, hints, proposals or anything that
could help to trace down this effect.

With kind regards

Mathias

-- 
How I built my version of gvim:

I used the sources I found under

ftp://ftp.vim.org/pub/vim/pc/vim70src.zip
ftp://ftp.vim.org/pub/vim/pc/vim70rt.zip
ftp://ftp.vim.org/pub/vim/pc/vim70lang.zip

and used also if_sniff.c from

ftp://ftp.vim.org/pub/vim/extra/vim-7.0-extra.tar.gz

I applied all 17 patches I've grabbed from

ftp://ftp.vim.org/pub/vim/patches/7.0

and also applied my own patches I sent to this list:

http://groups.yahoo.com/group/vimdev/message/43765
http://groups.yahoo.com/group/vimdev/message/43821
http://groups.yahoo.com/group/vimdev/message/43825
http://groups.yahoo.com/group/vimdev/message/43850

To build gvim.exe, I used Microsoft Visual Studio 2005 Express
Edition (VSEE) and issued the commands

call "%VC8_DIR%\bin\vcvars32.bat"
call "%SDK_DIR%\setenv" /XP32 /RETAIL
nmake -f Make_mvc.mak FEATURES=HUGE GUI=yes OLE=yes \
  MBYTE=yes IME=yes GIME=yes SNIFF=yes CSCOPE=yes \
  ICONV=yes GETTEXT=yes POSTSCRIPT=no CPUNR=i686 \
  WINVER=0x0500 PERL="%ProgramFiles%\ActivePerl" \
  DYNAMIC_PERL=yes PERL_VER=58

Then I installed gvim by copying the .exe and .dlls as well as the
runtime files to %ProgramFiles%\Vim\vim70 and by running
install.exe. All worked great!



testmail

2006-06-07 Thread Mathias Michaelis
testmail


All mails lost

2006-06-07 Thread Mathias Michaelis
Dear developers

My emails are systematically filtered out. I can't even unsubscribe (why be on 
a list where own, very carefully composed contributions aren't desired?). I 
already have phoned to my ISP, and he's innocent. Now I am really helpless. If 
this email reaches the list, I will once more try to logout myself.

Best regards
Mathias

Webmail TcNet GmbH http://www.tcnet.ch




testmail

2006-06-07 Thread Mathias Michaelis
testmail

Webmail TcNet GmbH http://www.tcnet.ch




Re: VS2005 linking errors with FEATURES=TINY GUI=yes OLE=yes

2006-06-05 Thread Mathias Michaelis
Hi Tony

Thanks for your reply!

>> If I compile vim on Windows XP with Microsoft Visual Studio
>> 2005 Express Edition on the command line with
>> 
>> nmake -f Make_mvc.mak DEBUG=yes FEATURES=TINY GUI=yes OLE=yes
>> 
>> I get the [some] errors:
>> 
> I guess it's a bug; but "Tiny" features means barest bones,
> without arithmetic evaluation and without syntax highlighting. I
> don't recommend it.
> 
There is another bug that leads vim to crash sometimes. I will
report it here as soon I can describe it in a reproducible manner.
Anyway, I am trying to create a vim that is as small as possible but
in spite of that has the property to crash. I hope it is easier to
trace down the cause of the crash in a tiny vim than in a huge one.

With best regards

Mathias


Patch: nmake DEBUG=yes FEATURES=NORMAL GUI=yes OLE=yes fails

2006-06-04 Thread Mathias Michaelis
Patch 7.0.mswin
Problem:On Windows, when gvim is built by the command

nmake -f Make_mvc.mak DEBUG=yes FEATURES=NORMAL GUI=yes OLE=yes

then the linker will issue the error message

if_ole.obj : error LNK2019:i
unresolved external symbol _MultiByteToWideChar_alloc
referenced in function
"public: virtual long __stdcall
 CVim::Eval(wchar_t *,wchar_t * *)"
Solution:   Include this function into the built also when OLE is enabled.
Files:  src/mswin.c


*** ..\vim-7.0.000\src\os_mswin.c   2006-05-07 16:13:03.0 +0200
--- src\os_mswin.c  2006-06-04 17:38:32.981234300 +0200
***
*** 957,962 
--- 957,966 
  return outlen;
  }

+ #endif  /* FEAT_MBYTE */
+
+ #if defined(FEAT_MBYTE) || defined(FEAT_OLE) || defined(PROTO)
+
  /*
   * Call MultiByteToWideChar() and allocate memory for the result.
   * Returns the result in "*out[*outlen]" with an extra zero appended.
***
*** 977,982 
--- 981,990 
  }
  }

+ #endif  /* FEAT_MBYTE || FEAT_OLE */
+
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+
  /*
   * Call WideCharToMultiByte() and allocate memory for the result.
   * Returns the result in "*out[*outlen]" with an extra NUL appended.

-- 
Thanks a lot for the VIM Editor

Greetings
Mathias



VS2005 linking errors with FEATURES=TINY GUI=yes OLE=yes

2006-06-04 Thread Mathias Michaelis
Hi developers

If I compile vim on Windows XP with Microsoft Visual Studio 2005
Express Edition on the command line with

nmake -f Make_mvc.mak DEBUG=yes FEATURES=TINY GUI=yes OLE=yes

I get the errors:

ex_cmds2.obj : error LNK2019:
 unresolved external symbol _get_locale_val referenced
 in function _get_mess_env

os_mswin.obj : error LNK2019:
 unresolved external symbol _gui_mch_dialog referenced
 in function _display_errors

Is this a bug or isn't this configuration supported for certain reasons?

Thanks for any replies!
Best regards
Mathias


Re: Vim on Windows XP x64

2006-06-03 Thread Mathias Michaelis
> Is someone working on integrating Microsoft Platform SDK / Visual
> C++ 2005?
> 
Yes, I do, and I already have sent some patches to this list.

http://groups.yahoo.com/group/vimdev/message/43765
http://groups.yahoo.com/group/vimdev/message/43821
http://groups.yahoo.com/group/vimdev/message/43825

Please pay attention to them, I don't want to create them again.

With kind regards

Mathias


Patch: Make_mvc.mak can't handle path names that contain spaces

2006-05-31 Thread Mathias Michaelis
Patch
Problem:Make_mvc.mak can't handle path names that contain spaces.
Solution:   Surround path names by quotes
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-05-31 09:13:13.607288000 +0200
--- src\Make_mvc.mak2006-05-31 10:24:17.718779200 +0200
***
*** 265,271 
  # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself
  XPM_OBJ   = $(OBJDIR)/xpm_w32.obj
  XPM_DEFS  = -DFEAT_XPM_W32
! XPM_LIB   = $(XPM)\lib\libXpm.lib
  XPM_INC = -I $(XPM)\include
  !endif
  !endif
--- 265,271 
  # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself
  XPM_OBJ   = $(OBJDIR)/xpm_w32.obj
  XPM_DEFS  = -DFEAT_XPM_W32
! XPM_LIB   = "$(XPM)\lib\libXpm.lib"
  XPM_INC = -I $(XPM)\include
  !endif
  !endif
***
*** 525,536 
-DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
  TCL_OBJ   = $(OUTDIR)\if_tcl.obj
  TCL_INC   = /I "$(TCL)\Include" /I "$(TCL)"
! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib
  !else
  CFLAGS  = $(CFLAGS) -DFEAT_TCL
  TCL_OBJ   = $(OUTDIR)\if_tcl.obj
  TCL_INC   = /I "$(TCL)\Include" /I "$(TCL)"
! TCL_LIB = $(TCL)\lib\tcl$(TCL_VER)vc.lib
  !endif
  !endif

--- 525,536 
-DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
  TCL_OBJ   = $(OUTDIR)\if_tcl.obj
  TCL_INC   = /I "$(TCL)\Include" /I "$(TCL)"
! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib"
  !else
  CFLAGS  = $(CFLAGS) -DFEAT_TCL
  TCL_OBJ   = $(OUTDIR)\if_tcl.obj
  TCL_INC   = /I "$(TCL)\Include" /I "$(TCL)"
! TCL_LIB = "$(TCL)\lib\tcl$(TCL_VER)vc.lib"
  !endif
  !endif

***
*** 551,557 
-DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
  PYTHON_LIB = /nodefaultlib:python$(PYTHON_VER).lib
  !else
! PYTHON_LIB = $(PYTHON)\libs\python$(PYTHON_VER).lib
  !endif
  !endif

--- 551,557 
-DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
  PYTHON_LIB = /nodefaultlib:python$(PYTHON_VER).lib
  !else
! PYTHON_LIB = "$(PYTHON)\libs\python$(PYTHON_VER).lib"
  !endif
  !endif

***
*** 561,575 
  !ifndef MZSCHEME_VER
  MZSCHEME_VER = 205_000
  !endif
! CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
  !if "$(DYNAMIC_MZSCHEME)" == "yes"
  !message MzScheme DLLs will be loaded dynamically
  CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
-DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
-DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
  !else
! MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
!   $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
  !endif
  MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
  !endif
--- 561,575 
  !ifndef MZSCHEME_VER
  MZSCHEME_VER = 205_000
  !endif
! CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I "$(MZSCHEME)\include"
  !if "$(DYNAMIC_MZSCHEME)" == "yes"
  !message MzScheme DLLs will be loaded dynamically
  CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
-DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
-DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
  !else
! MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib" \
!   "$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib"
  !endif
  MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
  !endif
***
*** 591,597 
  !endif

  # Is Perl installed in architecture-specific directories?
! !if exist($(PERL)\Bin\MSWin32-x86)
  PERL_ARCH = \MSWin32-x86
  !endif

--- 591,597 
  !endif

  # Is Perl installed in architecture-specific directories?
! !if exist("$(PERL)\Bin\MSWin32-x86")
  PERL_ARCH = \MSWin32-x86
  !endif

***
*** 599,608 

  # Version-dependent stuff
  !if $(PERL_VER) == 55
! PERL_LIB = $(PERL_INCDIR)\perl.lib
  !else
  PERL_DLL = perl$(PERL_VER).dll
! PERL_LIB = $(PERL_INCDIR)\perl$(PERL_VER).lib
  !endif

  CFLAGS = $(CFLAGS) -DFEAT_PERL
--- 599,608 

  # Version-dependent stuff
  !if $(PERL_VER) == 55
! PERL_LIB = "$(PERL_INCDIR)\perl.lib"
  !else
  PERL_DLL = perl$(PERL_VER).dll
! PERL_LIB = "$(PERL_INCDIR)\perl$(PERL_VER).lib"
  !endif

  CFLAGS = $(CFLAGS) -DFEAT_PERL
***
*** 613,623 
  !undef PERL_LIB
  !endif

! PERL_EXE = $(PERL)\Bin$(PERL_ARCH)\perl
! PERL_INC = /I $(PERL_INCDIR)
  PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
! XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
! XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap

  !endif

--- 613,623 
  !undef PERL_LIB
  !endif

! PERL_EXE = "$(PERL)\Bin$(PERL_ARCH)\perl"
! PERL_INC = /I "$(PERL_INCDIR)"
  PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
! XSUBPP = "$(PERL)\lib\ExtUtils\xsubpp"
! XSUBPP_TYPEMAP = "$(PERL)\lib\ExtUtils\typemap"

  !endif

***
*** 653,659 
  CFLAGS = $(CFLAGS) -DFEAT_RUBY
  RUBY_OBJ = $(OUTDIR)\if_ruby.obj
  RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
! RUBY_LIB = $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib
  # Do we want to load Ruby dynamically?
  !if "$(DYNAMIC_RUBY)" == "yes"
  

Patch: gvimext.dll don't find MSVCR80.dll when built with VC8. No context menu entries.

2006-05-30 Thread Mathias Michaelis
Patch 7.0.Make_GvimExt
Problem:On Windows, when GvimExt is built with Microsoft Visual
Studio 2005, the context menu item "Edit with vim" doesn't
appear in Explorer. Reason: GvimExt.dll cannot be loaded,
because it is not prepared to the Windows Side by Side
Components subsystem and so cannot find the C Runtime
library in MSVCR80.dll.
Solution:   A manifest file is created by the linker. Embed it into
the resources of GvimExt.dll.
Files:  src/GvimExt/Makefile


*** ..\vim-7.0.000\src\GvimExt\Makefile 2006-05-07 16:13:00.0 +0200
--- src\GvimExt\Makefile2006-05-30 14:42:37.168430400 +0200
***
*** 19,24 
--- 19,25 
  # $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
  # $(link) $(dlllflags) -base:0x1C00 -out:$*.dll $** $(olelibsdll) 
shell32.lib gvimext.lib comctl32.lib gvimext.exp
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C00 -out:$*.dll $** 
$(olelibsdll) shell32.lib comctl32.lib
+   if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest 
-outputresource:$*.dll;2

  gvimext.obj: gvimext.h

***
*** 34,36 
--- 35,38 
  - if exist gvimext.exp del gvimext.exp
  - if exist gvimext.obj del gvimext.obj
  - if exist gvimext.res del gvimext.res
+ - if exist gvimext.dll.manifest del gvimext.dll.manifest

-- 
Thanks a lot for the GvimExt project for Windows! I appreciate it
very much.

Greetings
Mathias


Re: Runtime error in explorer.exe when right clicking with vim70f gvimext.dll installed

2006-05-30 Thread Mathias Michaelis
Ilya

first of all: THANKS!

> This issue is explained in MSDN in section about SxS - Side by
> Side Components.  I've attached patch against current
> GvimExt/gvimext.rc that would make resource compiler add manifest
> inside generated DLL - this is what is required to make it run on
> WinXP SP2 and Win2k3.
> 
I first tried your patch, but then the resource compiler complained
he couldn't find a file named "winres.h". I then restored the
original files, applied the following patch to your patch, and then
applied your patch again. This was a full success! The dll now
worked! The patch that I had to apply to your patch was: Change the
names winres.h <--> winresrc.h:


*** gvimext.rc.patch.orig   2006-05-30 14:34:24.269676800 +0200
--- gvimext.rc.patch2006-05-30 13:46:16.937897600 +0200
***
*** 15,19 
  + #if defined(__BORLANDC__) || defined(__CYGWIN32__) ||
defined(__MINGW32__)
- + # include 
- + #else
  + # include 
  + #endif
--- 15,19 
  + #if defined(__BORLANDC__) || defined(__CYGWIN32__) ||
defined(__MINGW32__)
  + # include 
+ + #else
+ + # include 
  + #endif


But in spite of this success, I was not yet fully satisfied. (Yes, I
know, I have high demands): The linker itself creates a
gvimext.dll.manifest file, and I would like to use that one, but
only if it is present. Now, thank to your hint, I now that embedding
the manifest into the resources of a dll is THE solution! Therefore,
I restored the code to its original state (without applying any
patches).

>> Then I tried
>>
>> mt -outputresource:gvimext.dll -manifest gvimext.dll.manifest
>>
>> to include the dll into the resources of gvimext.dll. That helped
>> nothing.
>>   
> To include the manifest as a resource into the dll?  I don't know 
> exactly why this was not working for you.
>
Because it was not the right command -- but it was almost right.
Today, I tried (again without you patch):

mt -manifest gvimext.dll.manifest -outputresource:gvimext.dll;2

This worked again! Now I am happy because it is enough to add only
one single line to the original Makefile in order to make it work
also for the new version of the Microsoft Visual Studio:

if exist gvimext.dll.manifest do "the above command".

> This issue is explained in MSDN in section about SxS - Side by
> Side Components.
> 
Thanks again! That leaded me to the correct command:

http://msdn2.microsoft.com/en-us/library/ms235591(VS.80).aspx

With best regards

Mathias Michaelis


Re: Runtime error in explorer.exe when right clicking with vim70f gvimext.dll installed

2006-05-29 Thread Mathias Michaelis
Hello Vim List

I have a similar problem with the final vim 7.0, if I try to compile
it with Microsoft Visual Studio 2005 Express Edition. I don't get a
runtime error, but simply get no "Edit with vim ..." context menu
entries when I right-click on any file.

>>> When I right click on a file in explorer I get an MSVC Runtime error
>>> dialog:
>>>
>> msvcr80.dll is the problem, but it isn't that the dll is missing,
>> gvimext.dll loads it from c:\windows\system32.  The problem is that
>> gvimext.dll is loading the dll incorrectly (according to the error
>> dialog). Obviously the source for gvimext.dll hasn't changed in a
>> while, but I believe this means that the gvimext.dll can't be built
>> against VC 8.0 until this problem is resolved. :/
>> 
> Try copying src\GvimExt\gvimext.dll.manifest to wherever you've placed
> gvimext.dll.
> 
This was the first thing I tried. Then I checked with "Dependency
Walker" and saw that MSVCR80.DLL was now found. But in spite of
that: I got no context menus.

Then I tried

mt -outputresource:gvimext.dll -manifest gvimext.dll.manifest

to include the dll into the resources of gvimext.dll. That helped
nothing.

Then I tried to add a  session to gvimext.dll.manifest:


  


Helped nothing, independent of running mt.exe or not.

I am searching for solutions for days now, browsed all the msdn
library, but found nothing: gvimext.dll doesn't work when linked
against MSVCR80.DLL with Visual Studio 2005 Express Edition.

The only workaround is: I have to link gvimext.dll statically
against the C runtime library. Then, gvimext.dll needs about five
times more space on disk, but like that the context menu entries
appear although I hardly can't believe it any more %-]

Thanks in advance for any suggestions or hints!

With best regards

Mathias



PC sources lacks if_sniff.c

2006-05-24 Thread Mathias Michaelis
Hi vimmers!

The source archive

ftp://ftp.vim.org/pub/vim/pc/vim70src.zip

contains the file if_sniff.h but not the corresponding source file
if_sniff.c. Has this a specific reason or has if_sniff.c simply been
forgotten?

With kind regards

Mathias


Patch: Make_mvc.mak creates an empty gvim.exe.mnf file

2006-05-22 Thread Mathias Michaelis
Patch
Problem:Make_mvc.mak creates an empty gvim.exe.mnf file (or stops
with an error message). (Suresh Govindachar)
Solution:   Don't use 'echo' to create files. Use inline files instead.
Files:  src/Make_mvc.mak


*** ..\vim-7.0.000\src\Make_mvc.mak 2006-05-07 16:13:02.0 +0200
--- src\Make_mvc.mak2006-05-22 22:11:29.768449600 +0200
***
*** 963,1001 
  E_CFLAGS = $(E0_CFLAGS:"=\")

  $(PATHDEF_SRC): auto
!   @echo creating $(PATHDEF_SRC)
!   @echo /* pathdef.c */ > $(PATHDEF_SRC)
!   @echo #include "vim.h" >> $(PATHDEF_SRC)
!   @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> 
$(PATHDEF_SRC)
!   @echo char_u *default_vimruntime_dir = (char_u 
*)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC)
!   @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> 
$(PATHDEF_SRC)
!   @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) 
$(LINKARGS2:\=\\)"; >> $(PATHDEF_SRC)
!   @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC)
!   @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> 
$(PATHDEF_SRC)

  gvim.exe.mnf: auto
!   @echo ^ >$@
!   @echo ^ >>$@
!   @echo   ^>$@
!   @echo processorArchitecture="$(ASSEMBLY_ARCHITECTURE)" >>$@
!   @echo version="7.0.0.0" >>$@
!   @echo type="win32" >>$@
!   @echo name="Vim" >>$@
!   @echo   /^> >>$@
!   @echo   ^Vi Improved - A Text Editor^ >>$@
!   @echo   ^ >>$@
!   @echo ^ >>$@
!   @echo   ^>$@
!   @echo type="win32" >>$@
!   @echo name="Microsoft.Windows.Common-Controls" >>$@
!   @echo version="6.0.0.0" >>$@
!   @echo publicKeyToken="6595b64144ccf1df" >>$@
!   @echo language="*" >>$@
!   @echo processorArchitecture="$(ASSEMBLY_ARCHITECTURE)" >>$@
!   @echo   /^> >>$@
!   @echo ^ >>$@
!   @echo   ^ >>$@
!   @echo ^ >>$@

  auto:
if not exist auto/nul mkdir auto
--- 963,1005 
  E_CFLAGS = $(E0_CFLAGS:"=\")

  $(PATHDEF_SRC): auto
!   @echo creating $@
!   @copy << $@
! /* pathdef.c */
! #include "vim.h"
! char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)";
! char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)";
! char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)";
! char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) 
$(LINKARGS2:\=\\)";
! char_u *compiled_user = (char_u *)"$(USERNAME)";
! char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";
! <<

  gvim.exe.mnf: auto
!   @copy << $@
! 
! 
!  
!  Vi Improved - A Text Editor
!  
!
!  
!
!  
! 
! <<

  auto:
if not exist auto/nul mkdir auto

-- 
Thanks a lot for the VIM Editor!
Greetings
Mathias