Loading ...
Sorry, an error occurred while loading the content.

Re: clipboard for win9x

Expand Messages
  • Tony Mechelynck
    Glenn Maynard wrote: [...] ... Apparently the person who had it fixed it by setting his preferences to send in plaintext rather than HTML.
    Message 1 of 20 , Mar 6, 2003
    • 0 Attachment
      Glenn Maynard <glenn@...> wrote:
      [...]
      > Even if it's an OE problem, if it's something we're triggering that we
      > can fix, we should, at least if it occurs on more than one person's
      > system and the fix isn't overly heinous (and there's no workaround
      > available, such as upgrading OE).
      >
      > However, if nobody else can reproduce it, there's not much I can do,
      > so I won't worry about it.
      >
      > --
      > Glenn Maynard

      Apparently the person who had it "fixed" it by setting his preferences to
      send in plaintext rather than HTML. Dunno if that qualifies as a
      "workaround" in your eyes.

      Tony.
    • Glenn Maynard
      ... Vim got somebody to stop sending HTML mail? Now *that s* a feature! :) -- Glenn Maynard
      Message 2 of 20 , Mar 6, 2003
      • 0 Attachment
        On Thu, Mar 06, 2003 at 03:40:07PM +0100, Tony Mechelynck wrote:
        > Apparently the person who had it "fixed" it by setting his preferences to
        > send in plaintext rather than HTML. Dunno if that qualifies as a
        > "workaround" in your eyes.

        Vim got somebody to stop sending HTML mail? Now *that's* a feature! :)

        --
        Glenn Maynard
      • Glenn Maynard
        ... Substituting Japanese for Hebrew and/or Greek here, all of this worked for me already, with only CF_UNICODETEXT being set. The only apparent problem was
        Message 3 of 20 , Mar 6, 2003
        • 0 Attachment
          On Thu, Mar 06, 2003 at 08:35:02AM -0800, Ron Aaron wrote:
          > Highlight the text in Word and paste into vim ... do you see the text correctly? (yes)
          > Highlight the text in Notepad and paste into vim ... do you see the text correctly? (depends...)
          > yank again from vim to the clipboard and paste back into vim -- is the text correct? (it better be)

          Substituting Japanese for Hebrew and/or Greek here, all of this worked
          for me already, with only CF_UNICODETEXT being set. The only apparent
          problem was that (contrary to MS's docs) CF_U isn't actually supported
          in 9x (and apparently ME), so copying didn't work correctly there.

          > The correct thing to do is to make sure the CF_UNICODE is correct always, and the CF_TEXT is ANSI so Windows doesn't muck with it. When we have multiple languages in the text and try to ANSIfy it, we will have a problem ... but there is nothing to do about it.

          This is what my patch already does, except that it doesn't set
          CF_UNICODETEXT if CF_TEXT is lossless (which it would not be in
          the above cases). Have you tried it?

          I've found one bug related to transliteration (copy "ı" out of Vim and
          you'll always get "i"); I've fixed this, but I'm not going to send this
          out just yet, since I havn't been awake long enough. Once I have that
          tested more and posted, I'll put together a small test set for people to try.

          Also, the same conversion (ACP to wide char to p_enc) *may* need to be
          done when pasting into Vim, too. I'll include a test for this in the
          test set (so we don't waste time on it if it's not needed).

          > I suggest making the smallest possible change, and testing it on Me and XP (or equivalent systems) before sending out a patch.

          Feel free to donate such systems. :) A better (practical) approach is
          for me to write the code, test it as best I can, and then post it to the
          appropriate mailing list(s) so people on other systems can test it, which
          is what I do. (I only have 2k machines.)

          Have you tested the patch? You seem to be criticising something, but I don't
          know what; it's intended to do almost exactly what you're saying it should do.

          --
          Glenn Maynard
        • Glenn Maynard
          On Thu, Mar 06, 2003 at 02:19:00PM -0500, Glenn Maynard wrote: I ve found one bug related to transliteration (copy ı out of Vim and you ll always get
          Message 4 of 20 , Mar 6, 2003
          • 0 Attachment
            On Thu, Mar 06, 2003 at 02:19:00PM -0500, Glenn Maynard wrote:
            > I've found one bug related to transliteration (copy "ı" out of Vim and
            > you'll always get "i"); I've fixed this, but I'm not going to send this
            > out just yet, since I havn't been awake long enough. Once I have that
            > tested more and posted, I'll put together a small test set for people to try.

            Okay. I've just removed the code to elide the Unicode clipboard, since
            I rather just want to get the current stuff working well. (It may be a
            mostly futile gesture to memory conservation, anyway--we make several
            copies of the clipboard data when copying anyway, so we'll hit swap
            there if we'll hit it at all.)

            Here's how people can test this patch:

            Load Vim, Notepad and Word with a font that can display the characters in
            this mail; Courier New works. Make sure Vim is using UTF-8 internally;
            use ":set enc=utf-8".

            Copy in these lines:
            ASCII test
            Latín tëst
            בגדה

            Copy them--one line at a time--from Vim into Notepad and Word.

            The first is a sanity check. The second tests non-ASCII ANSI copying,
            and assumes you're on a US system; substitute characters in your local
            language if needed. The third tests Unicode and will probably not work
            when pasting to Notepad in 9x or ME (but may work when pasting to Word).
            (Note that the second test requires iconv until the enc_codepage patch
            is in, and the third one inherently requires iconv.)

            Try it in reverse; copy them (again one at a line) from Notepad and Word
            back to Vim.

            And, just to be paranoid, copy from one Vim to another.


            --
            Glenn Maynard
          • Bram Moolenaar
            ... I m wondering if we can really omit CF_UNICODETEXT. It s unclear what encoding CF_TEXT should use. The active code page? Any 8-bit encoding that the
            Message 5 of 20 , Mar 6, 2003
            • 0 Attachment
              Glenn Maynard wrote:

              > > The correct thing to do is to make sure the CF_UNICODE is correct
              > > always, and the CF_TEXT is ANSI so Windows doesn't muck with it.
              > > When we have multiple languages in the text and try to ANSIfy it, we
              > > will have a problem ... but there is nothing to do about it.
              >
              > This is what my patch already does, except that it doesn't set
              > CF_UNICODETEXT if CF_TEXT is lossless (which it would not be in
              > the above cases). Have you tried it?

              I'm wondering if we can really omit CF_UNICODETEXT. It's unclear what
              encoding CF_TEXT should use. The active code page? Any 8-bit encoding
              that the file happens to contain? And even when MS specifies something,
              do applications really implement it correctly?

              Using CF_UNICODETEXT has the advantage that there can be no confusion
              about the encoding, thus every application that uses it (like Vim) will
              copy/paste correctly.

              --
              BEDEVERE: And that, my lord, is how we know the Earth to be banana-shaped.
              "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

              /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
              /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\
              \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
              \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///
            • Glenn Maynard
              ... I m sure that CF_TEXT contains text in the ANSI codepage. Also, data sent to the normal *A Windows API functions is in the ANSI codepage, and most apps
              Message 6 of 20 , Mar 6, 2003
              • 0 Attachment
                On Thu, Mar 06, 2003 at 10:41:24PM +0100, Bram Moolenaar wrote:
                > I'm wondering if we can really omit CF_UNICODETEXT. It's unclear what
                > encoding CF_TEXT should use. The active code page? Any 8-bit encoding
                > that the file happens to contain? And even when MS specifies something,
                > do applications really implement it correctly?

                I'm sure that CF_TEXT contains text in the ANSI codepage. Also, data sent
                to the normal *A Windows API functions is in the ANSI codepage, and most
                apps simply take data from CF_TEXT and throw it at Windows API calls
                unchanged--CF_TEXT being ANSI "just works" almost all of the time (and it
                being anything else almost never works). I could find cases where it
                doesn't work (by using old non-Unicode fonts), but in those cases,
                CF_UNICODETEXT doesn't help.

                However, I removed the code to omit CF_UNICODETEXT for simplicity, so
                it's a moot issue.

                --
                Glenn Maynard
              • Glenn Maynard
                ... Here s one problem I ve found--not due to the patch, but related: if we ever get text from CF_TEXT, it ll be in the ANSI codepage, and we need to convert
                Message 7 of 20 , Mar 12, 2003
                • 0 Attachment
                  On Thu, Mar 06, 2003 at 04:16:53PM -0500, Glenn Maynard wrote:
                  > Try it in reverse; copy them (again one at a line) from Notepad and Word
                  > back to Vim.

                  Here's one problem I've found--not due to the patch, but related: if we
                  ever get text from CF_TEXT, it'll be in the ANSI codepage, and we need
                  to convert it to p_enc. On NT, we never use CF_TEXT, since it'll
                  synthesize CF_UNICODETEXT for us.

                  So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                  indicate that we do. Can someone confirm this by copying "Latín tëxt"
                  into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                  you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                  just CVS, though I'm still looking for someone to test it in 95.)

                  --
                  Glenn Maynard
                • Tony Mechelynck
                  ... On W98SE 4.10.2222 with gvim 6.1.362 +ole as distributed in binary by Cream (see link at http://cream.sourceforge.net/vim.html ): writing Latín tèxt
                  Message 8 of 20 , Mar 12, 2003
                  • 0 Attachment
                    Glenn Maynard <glenn@...> wrote:
                    > On Thu, Mar 06, 2003 at 04:16:53PM -0500, Glenn Maynard wrote:
                    > > Try it in reverse; copy them (again one at a line) from Notepad and
                    > > Word back to Vim.
                    >
                    > Here's one problem I've found--not due to the patch, but related: if
                    > we ever get text from CF_TEXT, it'll be in the ANSI codepage, and we
                    > need
                    > to convert it to p_enc. On NT, we never use CF_TEXT, since it'll
                    > synthesize CF_UNICODETEXT for us.
                    >
                    > So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                    > indicate that we do. Can someone confirm this by copying "Latín tëxt"
                    > into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                    > you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test
                    > this, just CVS, though I'm still looking for someone to test it in
                    > 95.)
                    >
                    > --
                    > Glenn Maynard

                    On W98SE 4.10.2222 with gvim 6.1.362 +ole as distributed in binary by Cream
                    (see link at http://cream.sourceforge.net/vim.html ): writing "Latín tèxt"
                    in Notepad and pasting it in gvim [No File] buffer with 'enc'=utf-8 gives
                    indeed Lat<ed>n t<e8>xt, with the <> sequences in blue and the rest in
                    black. I don't know if your patch is included in my binary, but it shows
                    that non-unicode text is passed. This experiment may or may not be relevant
                    to your needs. Pasting done by clicking Edit -> Paste in the standard gvim
                    menu.

                    Tony.
                  • uribarri_u@tsm.es
                    I have detected two problems with UTF-8: 1. When I write a two byte character (í or ñ), I have press the spacebar twice to get it (the spaces aren t inserted
                    Message 9 of 20 , Mar 13, 2003
                    • 0 Attachment
                      I have detected two problems with UTF-8:
                      1. When I write a two byte character (í or ñ), I have press the spacebar
                      twice to get it (the spaces aren't inserted in the buffer).
                      2. If I copy "Cañá" on VIM and paste it in the notepad I get "Cañá"




                      13/03/2003 00:25
                      Glenn Maynard <glenn@...>


                      Destinatarios: vim-multibyte@..., vim-dev@...
                      CC:
                      Asunto: Re: clipboard for win9x


                      On Thu, Mar 06, 2003 at 04:16:53PM -0500, Glenn Maynard wrote:
                      > Try it in reverse; copy them (again one at a line) from Notepad and Word
                      > back to Vim.

                      Here's one problem I've found--not due to the patch, but related: if we
                      ever get text from CF_TEXT, it'll be in the ANSI codepage, and we need
                      to convert it to p_enc. On NT, we never use CF_TEXT, since it'll
                      synthesize CF_UNICODETEXT for us.

                      So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                      indicate that we do. Can someone confirm this by copying "Latín tëxt"
                      into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                      you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                      just CVS, though I'm still looking for someone to test it in 95.)

                      --
                      Glenn Maynard
                    • Glenn Maynard
                      ... This doesn t seem to be related to the clipboard, so I ll leave this to Bram ... ... Is this with or without the patch I attached to this thread? -- Glenn
                      Message 10 of 20 , Mar 13, 2003
                      • 0 Attachment
                        On Thu, Mar 13, 2003 at 10:12:57AM +0100, uribarri_u@... wrote:
                        > I have detected two problems with UTF-8:
                        > 1. When I write a two byte character (í or ñ), I have press the spacebar
                        > twice to get it (the spaces aren't inserted in the buffer).

                        This doesn't seem to be related to the clipboard, so I'll leave this to
                        Bram ...

                        > 2. If I copy "Cañá" on VIM and paste it in the notepad I get "Cañá"

                        Is this with or without the patch I attached to this thread?

                        --
                        Glenn Maynard
                      • Bram Moolenaar
                        ... Didn t we have this discussion before? The CF_TEXT text can theoretically be any encoding. But it s probably the currently active codepage. Thus
                        Message 11 of 20 , Mar 13, 2003
                        • 0 Attachment
                          Glenn Maynard wrote:

                          > On Thu, Mar 06, 2003 at 04:16:53PM -0500, Glenn Maynard wrote:
                          > > Try it in reverse; copy them (again one at a line) from Notepad and Word
                          > > back to Vim.
                          >
                          > Here's one problem I've found--not due to the patch, but related: if we
                          > ever get text from CF_TEXT, it'll be in the ANSI codepage, and we need
                          > to convert it to p_enc. On NT, we never use CF_TEXT, since it'll
                          > synthesize CF_UNICODETEXT for us.
                          >
                          > So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                          > indicate that we do. Can someone confirm this by copying "Latín tëxt"
                          > into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                          > you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                          > just CVS, though I'm still looking for someone to test it in 95.)

                          Didn't we have this discussion before? The CF_TEXT text can
                          theoretically be any encoding. But it's probably the currently active
                          codepage. Thus converting from that codepage to 'encoding' would work
                          in most situations.

                          Previously we didn't do the conversion, because it could break
                          copy/paste from one Vim to another when 'enc' is utf-8 and the codepage
                          is an 8-bit one. But we now use CF_UNICODETEXT between two Vims.

                          --
                          hundred-and-one symptoms of being an internet addict:
                          39. You move into a new house and decide to Netscape before you landscape.

                          /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                          /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\
                          \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
                          \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///
                        • Glenn Maynard
                          ... Since somebody confirmed this problem, I have code written to handle the other end of the conversion (converting CF_TEXT properly when pasting). I ll post
                          Message 12 of 20 , Mar 13, 2003
                          • 0 Attachment
                            On Thu, Mar 13, 2003 at 10:34:11AM +0100, Bram Moolenaar wrote:
                            > > So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                            > > indicate that we do. Can someone confirm this by copying "Latín tëxt"
                            > > into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                            > > you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                            > > just CVS, though I'm still looking for someone to test it in 95.)

                            Since somebody confirmed this problem, I have code written to handle the
                            other end of the conversion (converting CF_TEXT properly when pasting).
                            I'll post it (combined with the last patch, converting copying) once I
                            test it some more.

                            Unless you'd rather apply the current (more important) fix first. After
                            all, this problem has existed for a long time, so we don't necessarily
                            have to fix them together. Do you want to wait to finish the copying
                            fix and let that sit in CVS for a while before bothering with pasting?

                            > Didn't we have this discussion before? The CF_TEXT text can
                            > theoretically be any encoding. But it's probably the currently active
                            > codepage. Thus converting from that codepage to 'encoding' would work
                            > in most situations.

                            I don't recall. We might have settled on "maybe what we're doing is
                            valid and maybe not, but UTF-8 pasting between Vims is more important
                            anyway".

                            Anyway, as you said, since the stumbling block of cross-Vim pasting is gone
                            this doesn't matter now. We can deal with CF_TEXT in ANSI now without
                            lossage.

                            --
                            Glenn Maynard
                          • Bram Moolenaar
                            ... I would prefer fixing this with one patch. We have quite a few of them already anyway! -- hundred-and-one symptoms of being an internet addict: 40. You
                            Message 13 of 20 , Mar 13, 2003
                            • 0 Attachment
                              Glenn Maynard wrote:

                              > On Thu, Mar 13, 2003 at 10:34:11AM +0100, Bram Moolenaar wrote:
                              > > > So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                              > > > indicate that we do. Can someone confirm this by copying "Latín tëxt"
                              > > > into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                              > > > you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                              > > > just CVS, though I'm still looking for someone to test it in 95.)
                              >
                              > Since somebody confirmed this problem, I have code written to handle the
                              > other end of the conversion (converting CF_TEXT properly when pasting).
                              > I'll post it (combined with the last patch, converting copying) once I
                              > test it some more.
                              >
                              > Unless you'd rather apply the current (more important) fix first. After
                              > all, this problem has existed for a long time, so we don't necessarily
                              > have to fix them together. Do you want to wait to finish the copying
                              > fix and let that sit in CVS for a while before bothering with pasting?

                              I would prefer fixing this with one patch. We have quite a few of them
                              already anyway!

                              --
                              hundred-and-one symptoms of being an internet addict:
                              40. You tell the cab driver you live at
                              http://123.elm.street/house/bluetrim.html
                              41. You actually try that 123.elm.street address.

                              /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                              /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\
                              \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
                              \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///
                            • Valery Kondakoff
                              Hello, Glenn! ... Yes. Garbage characters that I was describing in my latest mail are looking exactly like these. GM Is this with or without the patch I
                              Message 14 of 20 , Mar 13, 2003
                              • 0 Attachment
                                Hello, Glenn!

                                13 ìàðòà 2003 ã., you wrote to me:

                                >> 2. If I copy "Cañá" on VIM and paste it in the notepad I get "Cañá"

                                Yes. 'Garbage characters' that I was describing in my latest mail are
                                looking exactly like these.

                                GM> Is this with or without the patch I attached to this thread?

                                Glenn, excuse me for asking: if there is a place, where I can download
                                GVIM build with your patch applied? (I'm not sure that I can compile
                                CVIM by myself, but I'll try if there are no other ways to 'catch' the
                                problem...). :)


                                --
                                Best regards,
                                Valery Kondakoff
                                http://www.nbk.orc.ru (Ne Bey Kopytom)
                                http://www.nbk.orc.ru/mtb (MTB riding in Moscow)

                                PGP key: mailto:pgp-public-keys@...?subject=GET%20strauss@...
                              • Bram Moolenaar
                                ... Yes, this problem exists. After including your previous patch I can now properly copy text in gvim (using encoding set to utf-8 ) and paste in Notepad.
                                Message 15 of 20 , Mar 16, 2003
                                • 0 Attachment
                                  Glenn Maynard wrote:

                                  > On Thu, Mar 06, 2003 at 04:16:53PM -0500, Glenn Maynard wrote:
                                  > > Try it in reverse; copy them (again one at a line) from Notepad and Word
                                  > > back to Vim.
                                  >
                                  > Here's one problem I've found--not due to the patch, but related: if we
                                  > ever get text from CF_TEXT, it'll be in the ANSI codepage, and we need
                                  > to convert it to p_enc. On NT, we never use CF_TEXT, since it'll
                                  > synthesize CF_UNICODETEXT for us.
                                  >
                                  > So, do we ever get CF_TEXT in 95? The recent Notepad problems seem to
                                  > indicate that we do. Can someone confirm this by copying "Latín tëxt"
                                  > into Vim on a 95 box with "encoding" set to UTF-8? I expect that
                                  > you'll see "Lat<ed>n t<eb>xt". (You don't need this patch to test this,
                                  > just CVS, though I'm still looking for someone to test it in 95.)

                                  Yes, this problem exists. After including your previous patch I can now
                                  properly copy text in gvim (using 'encoding' set to "utf-8") and paste in
                                  Notepad. Thus setting the CF_TEXT entry to text converted from
                                  'encoding' to the active codepage appears to work.

                                  The other way around doesn't work. Obviously Notepad only sets CF_TEXT
                                  and it is in the active codepage. When pasting CF_TEXT in Vim this must
                                  be converted to 'encoding'.

                                  Should not be difficult.... Below is a patch that combines the two
                                  directions. I also fixed a memory leak when using CF_UNICODETEXT.
                                  Please give this a try.

                                  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                                  *** ../vim61.406/src/os_mswin.c Sat Mar 15 16:54:47 2003
                                  --- src/os_mswin.c Sun Mar 16 16:47:15 2003
                                  ***************
                                  *** 971,977 ****

                                  utf8_str = alloc((unsigned)length);
                                  if (utf8_str != NULL)
                                  ! WideCharToMultiByte(enc_dbcs, 0, str, *len, utf8_str, length, 0,0);
                                  *len = length;
                                  return utf8_str;
                                  }
                                  --- 971,977 ----

                                  utf8_str = alloc((unsigned)length);
                                  if (utf8_str != NULL)
                                  ! WideCharToMultiByte(enc_dbcs, 0, str, *len, utf8_str, length, 0, 0);
                                  *len = length;
                                  return utf8_str;
                                  }
                                  ***************
                                  *** 1022,1027 ****
                                  --- 1022,1028 ----
                                  VimClipType_t metadata = { -1, -1, -1 };
                                  HGLOBAL hMem = NULL;
                                  char_u *str = NULL;
                                  + char_u *to_free = NULL;
                                  char_u *hMemStr = NULL;
                                  int str_size = 0;
                                  int maxlen;
                                  ***************
                                  *** 1076,1082 ****
                                  if (hMemWstr[str_size] == NUL)
                                  break;
                                  }
                                  ! str = ucs2_to_enc(hMemWstr, &str_size);
                                  GlobalUnlock(hMemW);
                                  }
                                  }
                                  --- 1077,1083 ----
                                  if (hMemWstr[str_size] == NUL)
                                  break;
                                  }
                                  ! to_free = str = ucs2_to_enc(hMemWstr, &str_size);
                                  GlobalUnlock(hMemW);
                                  }
                                  }
                                  ***************
                                  *** 1105,1110 ****
                                  --- 1106,1128 ----
                                  if (str[str_size] == NUL)
                                  break;
                                  }
                                  +
                                  + /* The text is now in the active codepage. Convert to 'encoding',
                                  + * going through UCS-2. */
                                  + maxlen = MultiByteToWideChar(CP_ACP, 0, str, str_size, NULL, 0);
                                  + to_free = alloc((unsigned)(maxlen * sizeof(WCHAR)));
                                  + if (to_free != NULL)
                                  + {
                                  + MultiByteToWideChar(CP_ACP, 0, str, str_size,
                                  + (WCHAR *)to_free, maxlen);
                                  + str_size = maxlen;
                                  + str = ucs2_to_enc((WCHAR *)to_free, &str_size);
                                  + if (str != NULL)
                                  + {
                                  + vim_free(to_free);
                                  + to_free = str;
                                  + }
                                  + }
                                  }
                                  }

                                  ***************
                                  *** 1129,1134 ****
                                  --- 1147,1153 ----
                                  if (hMemStr != NULL)
                                  GlobalUnlock(hMem);
                                  CloseClipboard();
                                  + vim_free(to_free);
                                  }

                                  /*
                                  ***************
                                  *** 1138,1144 ****
                                  clip_mch_set_selection(VimClipboard *cbd)
                                  {
                                  char_u *str = NULL;
                                  - long_u str_len;
                                  VimClipType_t metadata;
                                  HGLOBAL hMem = NULL;
                                  HGLOBAL hMemVim = NULL;
                                  --- 1157,1162 ----
                                  ***************
                                  *** 1152,1167 ****
                                  cbd->owned = FALSE;

                                  /* Get the text to be put on the clipboard, with CR-LF. */
                                  ! metadata.type = clip_convert_selection(&str, &str_len, cbd);
                                  if (metadata.type < 0)
                                  return;
                                  - metadata.txtlen = str_len;
                                  metadata.ucslen = 0;

                                  # if defined(FEAT_MBYTE) && defined(WIN3264)
                                  {
                                  WCHAR *out;
                                  ! int len = str_len;

                                  /* Convert the text to UCS-2. This is put on the clipboard as
                                  * CF_UNICODETEXT. */
                                  --- 1170,1184 ----
                                  cbd->owned = FALSE;

                                  /* Get the text to be put on the clipboard, with CR-LF. */
                                  ! metadata.type = clip_convert_selection(&str, &metadata.txtlen, cbd);
                                  if (metadata.type < 0)
                                  return;
                                  metadata.ucslen = 0;

                                  # if defined(FEAT_MBYTE) && defined(WIN3264)
                                  {
                                  WCHAR *out;
                                  ! int len = metadata.txtlen;

                                  /* Convert the text to UCS-2. This is put on the clipboard as
                                  * CF_UNICODETEXT. */
                                  ***************
                                  *** 1170,1175 ****
                                  --- 1187,1206 ----
                                  {
                                  WCHAR *lpszMemW;

                                  + /* Convert the text for CF_TEXT to ANSI codepage. Otherwise it's
                                  + * p_enc, which has no relation to the ANSI codepage. */
                                  + metadata.txtlen = WideCharToMultiByte(CP_ACP, 0, out, len,
                                  + NULL, 0, 0, 0);
                                  + vim_free(str);
                                  + str = (char_u *)alloc((unsigned)metadata.txtlen);
                                  + if (str == NULL)
                                  + {
                                  + vim_free(out);
                                  + return; /* out of memory */
                                  + }
                                  + WideCharToMultiByte(CP_ACP, 0, out, len,
                                  + str, metadata.txtlen, 0, 0);
                                  +
                                  /* Allocate memory for the UCS-2 text, add one NUL word to
                                  * terminate the string. */
                                  hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
                                  ***************
                                  *** 1189,1202 ****

                                  /* Allocate memory for the text, add one NUL byte to terminate the string.
                                  */
                                  ! hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, str_len + 1);
                                  {
                                  LPSTR lpszMem = (LPSTR)GlobalLock(hMem);

                                  if (lpszMem)
                                  {
                                  ! STRNCPY(lpszMem, str, str_len);
                                  ! lpszMem[str_len] = NUL;
                                  GlobalUnlock(hMem);
                                  }
                                  }
                                  --- 1220,1233 ----

                                  /* Allocate memory for the text, add one NUL byte to terminate the string.
                                  */
                                  ! hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, metadata.txtlen + 1);
                                  {
                                  LPSTR lpszMem = (LPSTR)GlobalLock(hMem);

                                  if (lpszMem)
                                  {
                                  ! STRNCPY(lpszMem, str, metadata.txtlen);
                                  ! lpszMem[metadata.txtlen] = NUL;
                                  GlobalUnlock(hMem);
                                  }
                                  }
                                  ***************
                                  *** 1230,1237 ****
                                  # if defined(FEAT_MBYTE) && defined(WIN3264)
                                  if (hMemW != NULL)
                                  {
                                  ! SetClipboardData(CF_UNICODETEXT, hMemW);
                                  ! hMemW = 0;
                                  }
                                  # endif
                                  /* Always use CF_TEXT. On Win98 Notepad won't obtain the
                                  --- 1261,1268 ----
                                  # if defined(FEAT_MBYTE) && defined(WIN3264)
                                  if (hMemW != NULL)
                                  {
                                  ! if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL)
                                  ! hMemW = NULL;
                                  }
                                  # endif
                                  /* Always use CF_TEXT. On Win98 Notepad won't obtain the


                                  --
                                  From "know your smileys":
                                  (X0||) Double hamburger with lettuce and tomato

                                  /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                                  /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\
                                  \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
                                  \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///
                                • Valery Kondakoff
                                  Hello, Bram! Sunday, March 16, 2003, you wrote to me: BM Should not be difficult.... Below is a patch that combines the two BM directions. I also fixed a
                                  Message 16 of 20 , Mar 25, 2003
                                  • 0 Attachment
                                    Hello, Bram!

                                    Sunday, March 16, 2003, you wrote to me:

                                    BM> Should not be difficult.... Below is a patch that combines the two
                                    BM> directions. I also fixed a memory leak when using CF_UNICODETEXT.
                                    BM> Please give this a try.

                                    BM> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                                    BM> *** ../vim61.406/src/os_mswin.c Sat Mar 15 16:54:47 2003
                                    BM> --- src/os_mswin.c Sun Mar 16 16:47:15 2003

                                    Please, can you give me rather more details how to apply this patch?
                                    I'm a real newbie in "patching". With a little help of VIM-community I
                                    was able to apply 'official' patches. But I still can't understand
                                    what 'os_mswin.c' revision do I need to have to successfully apply
                                    your patch.

                                    When applying your patch on clean 'os_mswin.c' or 'os_mswin.c' with
                                    all official patches applyed, I receive an error:

                                    Patching file src/os_mswin.c using Plan A...
                                    Hunk #1 FAILED at 971.
                                    Hunk #2 FAILED at 1022.
                                    Hunk #3 FAILED at 1077.
                                    Hunk #4 FAILED at 1106.
                                    Hunk #5 succeeded at 1147 with fuzz 2.
                                    Hunk #6 FAILED at 1157.
                                    Hunk #7 FAILED at 1170.
                                    Hunk #8 FAILED at 1187.
                                    Hunk #9 FAILED at 1220.
                                    Hunk #10 FAILED at 1261.
                                    9 out of 10 hunks FAILED -- saving rejects to file src/os_mswin.c.rej

                                    Do I need to find a special 'os_mswin.c' version in CVS?

                                    Thank you in advance! (I think I need to try this patch and
                                    'strftime_encoding' one, because I'm working in multilangiage
                                    environment).

                                    --
                                    Best regards,
                                    Valery Kondakoff
                                    http://www.nbk.orc.ru (Ne Bey Kopytom)
                                    http://www.nbk.orc.ru/mtb (MTB riding in Moscow)

                                    PGP key: mailto:pgp-public-keys@...?subject=GET%20strauss@...

                                    np: Simon Raymonde - The Seventh Day (Blame Someone Else) [stopped]
                                  • Bram Moolenaar
                                    ... First make sure the patch file and the source file use the same line endings. Both dos and unix fileformats work, but they must match. I m not sure if
                                    Message 17 of 20 , Mar 26, 2003
                                    • 0 Attachment
                                      Valery Kondakoff wrote:

                                      > Please, can you give me rather more details how to apply this patch?
                                      > I'm a real newbie in "patching". With a little help of VIM-community I
                                      > was able to apply 'official' patches. But I still can't understand
                                      > what 'os_mswin.c' revision do I need to have to successfully apply
                                      > your patch.
                                      >
                                      > When applying your patch on clean 'os_mswin.c' or 'os_mswin.c' with
                                      > all official patches applyed, I receive an error:
                                      >
                                      > Patching file src/os_mswin.c using Plan A...
                                      > Hunk #1 FAILED at 971.
                                      > Hunk #2 FAILED at 1022.
                                      > Hunk #3 FAILED at 1077.
                                      > Hunk #4 FAILED at 1106.
                                      > Hunk #5 succeeded at 1147 with fuzz 2.
                                      > Hunk #6 FAILED at 1157.
                                      > Hunk #7 FAILED at 1170.
                                      > Hunk #8 FAILED at 1187.
                                      > Hunk #9 FAILED at 1220.
                                      > Hunk #10 FAILED at 1261.
                                      > 9 out of 10 hunks FAILED -- saving rejects to file src/os_mswin.c.rej
                                      >
                                      > Do I need to find a special 'os_mswin.c' version in CVS?

                                      First make sure the patch file and the source file use the same line
                                      endings. Both dos and unix fileformats work, but they must match.

                                      I'm not sure if this patch depends on previous patches. Simplest is to
                                      obtain the latest version through CVS. See the CVS page on
                                      www.vim.org for that.

                                      --
                                      hundred-and-one symptoms of being an internet addict:
                                      214. Your MCI "Circle of Friends" are all Hayes-compatible.

                                      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                                      /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\
                                      \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
                                      \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///
                                    Your message has been successfully submitted and would be delivered to recipients shortly.