Tuesday, June 23, 2015

Search for character that doesn't have a combining character?

I'm working on a custom command to add strikethrough to text, using the Unicode COMBINING LONG STROKE OVERLAY, 0x0336.

In this command, I want to apply a strikethrough to a character, only if it is not already present.

This pattern fails because it doesn't match *anything* with regexpengine set to 2, it does not match an unadorned character immediately before a struck-through base character, and it *does* match the last combining character in a word for some reason:

[^\u0336]\%u0336\@!

This pattern also fails, because it matches already struck-through base characters for some reason (although it does the same thing in both engines):

[^\u0336][^\u0336]\@=

What is the correct way to do this?

Full command (attempted):

'<,'>s;\%#=1\%V[^\u0336]\%u0336\@!;\=submatch(0)."\u0336";g

Note, how I'm also limiting to a visual selection; so I'm trying to use the :s command for simplicity.

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: