On 18/01/10 03:12, AndyHancock wrote:
On Jan 17, 8:03 pm, Tony Mechelynck<[email protected]>
wrote:
On 18/01/10 01:15, AndyHancock wrote:



On Sun, Jan 17, 2010 at 6:46 PM, Tony Mechelynck
<[email protected]>    wrote:
On 17/01/10 23:55, AndyHancock wrote:

I am finally following up on the solution below for using bullets
corresponding to Windows-1252 code 149 (0x95).  I put the script in
vimrc, issues "gvim Temp.txt" from the bash command line (Temp.txt is
nonexistent), and got no warning about missing multi_byte capability
[ not surprising since ":echo has('multi_byte')" yields 1 ].  However,
I'm still not getting the bullet.  I tried a few ways.

First, I created a bullet in one of a couple of Windows app (Firefox,
Palm Desktop) using the usual method: Alt-0149 on the number pad.
(Actually, it's a laptops, so I had to use "num lk", which locks some
of the qwerty keys into a number pad function).  Then I copied and
pasted the bullet into gvim (mouse middle-button to paste, since it's
X-windows).  It pastes as a question-mark character.

I then tried Alt-0149 directly in gvim while in insert mode.  No joy,
as this translates into four characters, corrersponding to Alt-0 Alt-1
Alt-4 Alt-9.

Finally, in insert mode, I did Ctrl-V 149, which simply inserts a
character with hex code ox95.  I literally shows up as a blue-coloured
"<95>" without quotes.  The "ga" command shows this to be a character
with hex code 0x95.  I thought that the last method above might be
fine, and perhaps it just wasn't showing up in the gvim window due
some reason related to X-windows fonts.  So I copied and pasted the
text into a Windows app...the result was a space in place of the
bullet.  Note that the bullet 0x95 copies successfully between windows
apps, and between windows apps and windows-based gvim (as opposed to
cygwin gvim).

I also tried the alternative bullet 0xB7, but that's almost invisible
in Palm Desktop.  Better to use an asterisk (which is highly
nonideal).

To troubleshoot the script, I tried querired the following options,
with the shown results:

     Encoding
     --------
     set encoding
     Ans: encoding=utf-8

     setlocal encoding
     Ans: encoding=utf-8

     setglobal encoding
     Ans: encoding=utf-8

     This make sense, since encoding is global.

     Fileencoding
     ------------
     set fileencoding
     Ans: fileencoding=

     setlocal fileencoding
     Ans: fileencoding=

'fileencoding' empty means that the file will be recorded in the same
charset as 'encoding', i.e., UTF-8. In that charset, 0x95 (or 149 decimal)
is a non-printable control character. Since this control character has no
representation in Windows-1252, you cannot convert to Windows-1252 an UTF-8
buffer which contains it (and remember, 'encoding', not 'fileencoding',
defines how Vim represent the data in memory).

As I said in my previous post, to generate a file encoded on disk in
Windows-1252 with a Windows-1252 bullet (0x95 on disk) in it, you must:

1) keep 'encoding' to UTF-8 as above

2) :setlocal fileencoding=cp1252   " (or: :setlocal fenc=windows-1252 )

3) Enter the character into Vim as the Unicode representation of the
equivalent character, i.e. U+2022. To do that, in Insert mode, type (with no
intervening spaces, I add them here only for legibility): Ctrl-V u 2 0 2 2
(but if your Ctrl-V has been remapped to the Paste operation, use Ctrl-Q
instead).

See
         :help i_CTRL-V_digit
         :help i_CTRL-Q
         :help CTRL-V-alternative

Actually, I'm just discovering this from reading at the same time you
responded.  What happened was that I suspected the bullet wasn't
getting properly copied over by the bridge between the Windows cut/
paste buffer and X-windows's cut/paste buffer.  So on the Windows
side, I used Notepad to save a text file containing the desired
bullet.  Then I opened it using Vim, but I had to set encoding=utf-8
for the bullet to show properly.  "ga" revealed the 4-digit hex code,
which was no longer decimal x95, but the help showed how to enter 4-
digit hex codes.  If I originated the file from the unix/cygwin/gvim
side, I'd have to be sure to set fileformat=dos before I could see the
bullet.

All this to say that if I want to use Vim to work on text from the
Palm Desktop, I need to save it to a DOS text file by pasting into
Notepad first.  Ah well.  A bit more buttonology won't kill me, though
I have to admit it's not convenient.  However, it isn't inconvenient
enough for me to install the Windows version of gvim -- that would be
so overkill.

Thanks, Tony.

To save a file in dos fileformat (i.e., with CR-LF ends of lines), use

         :setlocal ff=dos

before you save the file.

To have Vim _recognize_ that an existing file is in dos fileformat when
reading, be sure that the 'fileformats' (plural) option contains "dos", e.g.

         :set ffs=dos,unix

Note that if the file contains some lines with CR-LF and some without CR
(which also applies if the last line has no end-of-line at all), Vim
will prefer Unix to Dos (and show carriage returns as ^M) unless you use
++ff=dos (see :help ++enc); this ++ff modifier wasn't always handled
correctly before Vim 7.2.040.

If you force Dos fileformat with ++ff=dos, then on _reading_ the file a
linefeed preceded or not by a carriage return will terminate the line,
but on _writing_ it *every* line will get both CR and LF at the end.

The 'fileformat' option concerns _only_ the ends-of-lines; not the way
some character (such as the bullet) is represented inside the file.

Yes, got it.  Just checked.  I will need set ff=dos because the main
reason for using this bullet is so that I have a decent vim editor
when editor text from the Palm Desktop.  For this purpose, even if I
create a new spanking file, I need to save it a DOS file and open it
with Notepad.  Simply because the bridge between X-windows cut/paste
and Windows cut/paste doesn't preserve the bullet.

And thanks for the tidbits on forced (temporary) setting of ff for a
single write command.


IMHO it's easier to keep native-Windows (with gvim GUI for Windows, and/or Vim for Windows running in cmd.exe) and Cygwin (with Vim for Cygwin running in bash) apart from each other. If you need to copy-paste between Vim and other Windows applications, I recommend using gvim for Windows (which can be built in Cygwin as a kind of "cross-compile", but doesn't need Cygwin to run), which natively "understands" the Windows clipboard as "* or "+. Now YMMV.


Best regards,
Tony.
--
George Washington was first in war, first in peace -- and the first to
have his birthday juggled to make a long weekend.
                -- Ashley Cooper
-- 
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php

Reply via email to