On Thursday, 15 September 2016 15:14:03 UTC+1, Kazunobu Kuriyama wrote: > 2016-09-15 22:43 GMT+09:00 manuelschiller.pimail via vim_dev > <vim...@googlegroups.com>: > > > Hi Kazunobu, > > > > On Thursday, 15 September 2016 14:33:48 UTC+1, Kazunobu Kuriyama wrote: > > > Hi Manuel, > > > > > > > > 2016-09-15 21:33 GMT+09:00 manuelschiller.pimail via vim_dev > > <vim...@googlegroups.com>: > > > > > > > > > > > > > > > On Wednesday, 14 September 2016 20:38:27 UTC+1, Christian Brabandt wrote: > > > > > > > Hi, > > > > > > > > > > > > > > On Mi, 14 Sep 2016, manuelschiller.pimail via vim_dev wrote: > > > > > > > > > > > > > > > > > > > > > > > let g:gtk_nocache=[0x00000000, 0xfc00ffff, 0xf8000001, 0x78000001] > > > > > > > > > > > > > > > > This contains a bitmap for each character < 128, which has the > > > > > > > > corresponding bit set if the glyph cache is to be bypassed (which in > > > > > > > > turn enables ligatures). The default is no ligatures, unless people > > > > > > > > set something like above in their .vimrc. With this slightly more > > > > > > > > sophisticated patch, people have the option to enable/disable certain > > > > > > > > ligatures by routing the corresponding characters through the cache > > > > > > > > (or not) without recompiling, if they so prefer. > > > > > > > > > > > > > > > > Comments remain welcome! > > > > > > > > > > > > > > I appreciate your effort you put into this. But for the hell of it, I > > > > > > > can't understand how the values inside g:gtk_nocache are supposed to > > > > > > > work. Can you please describe more in detail, what each value stands > > > > > > > for? > > > > > > > > > > > > > > I am afraid this needs some documentation and possibly a different > > > > > > > format. We don't have something similar like this. Perhaps a new type > > > > > > > for the 'renderoptions'? > > > > > > > > > > > > > > Best, > > > > > > > Christian > > > > > > > -- > > > > > > > Ich habe etliche mal bemerkt, daß ich Kopf-Weh bekam, wenn ich mich > > > > > > > lange in einem Hohl-Spiegel betrachtete. > > > > > > > -- Georg Christoph Lichtenberg > > > > > > > > > > > > Hi Matěj, Christian, > > > > > > > > > > > > I've added the value which is equivalent to the previous patch, i.e. > > > > > > > > > > > > " this should keep character 0-31 (control characters), and [0-9A-Za-z] > > flowing > > > > > > " through the glyph cache, and the rest < 128 will bypass it > > > > > > let g:gtk_nocache=[0x00000000, 0xfc00ffff, 0xf8000001, 0x78000001] > > > > > > > > > > > > So, if you're looking to see "<=" as a combined glyph, and your font has a > > ligature for that combination, you should see it with the setting above. > > > > > > > > > > > > About how these values work: This is a bitmap, specifying with a set bit > > which of the first 128 characters bypass the glyph cache. To check > > character i, you'd check (a[i / 32] & (1u << (i % 32))), if a refers to the > > array g:gtk_nocache, and you assume standard C notation. > > > > > > > > > > > > About the criticism that this is not the most user-friendly option to set: > > That's a very valid point. My reasoning was thus: > > > > > > > > > > > > - Internally, we need something that's quick to handle inside a tight loop > > in the glyph rendering code, so something complex such as a list of > > characters or a regexp is out. This bitmap thing is quite nice, since it > > doesn't take up much memory, and it is easy and fast to do lookups. As an > > internal representation, that appears to do the job nicely. > > > > > > > > > > > > - The "user-facing part" depends very much on what people would like to > > have. I haven't written this part for two reasons yet: The first reason is > > that I am unsure what people would prefer. The second reason, I'll keep to > > myself for another couple of sentences, and continue with my thought > > process. I was thinking that it should be possible to provide a little vim > > script/function that takes the list of characters for which to bypass the > > glyph cache (or those for which not to bypass it), and set g:gtk_nocache > > from that. What form this takes depends very much on what users want. This > > brings me to the second reason why the user-facing part of vim script > > doesn't exist yet: I'm new to the vim code base and vim script, and I'm not > > sure I will manage something usable on the first go. This will require some > > iteration... ;) > > > > > > > > > > > > I'm now giving a try to a nightly build iTerm2 with FiraCode to improve my > > general knowledge on the ligature issue. The terminal has started > > supporting ligatures since early August. > > > > I am confused. My patch shouldn't affect the terminal version of vim at all. > iTerm2 is thus a good way to see how other applications (here a terminal > emulator) deal with ligatures and screen updates (and if they do a good job, > you'll see ligatures because the terminal handles them). But that has nothing > to do with the patches I sent. > > > > If you want to see how my patch does, you will need to have a look at the GTK > version of vim to see anything happening (or not). > > > > I didn't mention your patch at all. So I don't understand why you were > confused.
Ah. That was me assuming things from the context, and boy, was I wrong... Now I get it. > Anyway, I just wanted to share the-state-of-the-art about the ligature issue > with you, suggesting that > use of g:gtk_nocache would not make the users happy. I'll have a look when I get the chance on someone else's laptop - this pointer is definitely appreciated. From what you write in you last mail, that's pretty much the behaviour I get from the gtk3 version by now. :) Cheers, and thanks, Manuel > Best, > Kazunobu > > > > > > With Vim on that particular terminal, the result is nearly perfect: > > > > > > > > > - No drawing glitches are found when the cursor goes over ligature glyphs. > > > > > > > > > - Other than specifying a font name at the Preferences Panel, you can enjoy > > ligatures with Vim just out of the box. > > > > > > > > > Only the glitch I've found so far is that, when the cursor is over a > > double-width glyph, the right half of the glyph is gone. > > > > > > > > > It might be good to give a glance at other implementations. > > > > Agreed. Since I'm stuck with Linux for the time being (and don't really feel > like changing OS), I may have to ask a co-worker if they let me check things > out on their Macs... > > > > Cheers, > > > > Manuel > > > > > Best regards, > > > Kazunobu > > > > > > > > > > > > > > > That said, I'm very happy for suggestions (or patches), and will try to > > have a draft ready soonish when suggestions do trickle in. :) > > > > > > > > > > > > Does this help? > > > > > > > > > > > > Cheers, > > > > > > > > > > > > Manuel > > > > > > > > > > > > > > > > > > -- > > > > > > -- > > > > > > You received this message from the "vim_dev" maillist. > > > > > > Do not top-post! Type your reply below the text you are replying to. > > > > > > For more information, visit http://www.vim.org/maillist.php > > > > > > > > > > > > --- > > > > > > You received this message because you are subscribed to the Google Groups > > "vim_dev" group. > > > > > > To unsubscribe from this group and stop receiving emails from it, send an > > email to vim_dev+u...@googlegroups.com. > > > > > > > > For more options, visit https://groups.google.com/d/optout. > > > > -- > > -- > > You received this message from the "vim_dev" maillist. > > Do not top-post! Type your reply below the text you are replying to. > > For more information, visit http://www.vim.org/maillist.php > > > > --- > > You received this message because you are subscribed to the Google Groups > "vim_dev" group. > > To unsubscribe from this group and stop receiving emails from it, send an > email to vim_dev+u...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.