Code Monkey home page Code Monkey logo

Comments (11)

kana avatar kana commented on May 22, 2024

Asked vim_dev: https://groups.google.com/d/topic/vim_dev/EA0jA9xLMsQ/discussion

from vim-textobj-user.

kana avatar kana commented on May 22, 2024

Idea: Is it possible to replace the :normal v trick with some combination including v:operator?

from vim-textobj-user.

glts avatar glts commented on May 22, 2024

Kana, while investigating this issue I have found some kind of workaround. It's also used in matchit.vim.

Change the first line in the script above to

onoremap iw v:<C-u>call Select()<Return>

Note the v. Now . works correctly in the normal case. Only after delfunction the behaviour becomes strange (deletes one character).

from vim-textobj-user.

kana avatar kana commented on May 22, 2024
onoremap iw v:<C-u>call Select()<Return>

Thank you for the trick. And thank you also for great help on the thread in vim_dev. I wonder why the trick enables repeatability...

However, I don't want to use it. Because:

  • o_v is to force an operation to work characterwise, or to toggle inclusive/exclusive. Using the trick disallows users to use these features. Though Vim currently doesn't provide API to detect o_v, o_V and o_CTRL-V from Vim script, but it's not difficult to add such API. I already proposed a patch, but it is not included yet.
  • vim-textobj-user allows custom text objects to cancel the current operation. If a custom text object is invoked in Operator-pending mode and the text object couldn't find a valid target, vim-textobj-user doesn't move the cursor to target no text. This behavior can be emulated with the following key sequence: d:<Return>. But the trick disallows to cancel the current operation. If o_v is given to the current operator and the cursor doesn't move, a character under the cursor is treated as a target of the operator. For example, dv:<Return> delete a character under the cursor.

Repeatability is important, but cancelability is also important. Using the trick sacrifices cancelability, and it breaks backward compatibility of vim-textobj-user based plugins. And the repeatability problem seems to be caused by the internal of Vim, as you described to the thread in vim_dev. Therefore, I don't want to use the trick directly.

from vim-textobj-user.

wellle avatar wellle commented on May 22, 2024

What about Tim Pope's vim-repeat?

from vim-textobj-user.

glts avatar glts commented on May 22, 2024

@wellle This has been discussed at length, e.g.

from vim-textobj-user.

wellle avatar wellle commented on May 22, 2024

Oh that's very interesting. Thank you for your work on this issue!

from vim-textobj-user.

glts avatar glts commented on May 22, 2024

By the way: I believe this issue has been resolved in Vim 7.3.918.

from vim-textobj-user.

wellle avatar wellle commented on May 22, 2024

Yes that's true, it's working 👍

from vim-textobj-user.

kana avatar kana commented on May 22, 2024

I've also confirmed that the issue was resolved in Vim 7.3.918.
@glts, thank you for the great help at vim_dev.

from vim-textobj-user.

glts avatar glts commented on May 22, 2024

Thank you.

from vim-textobj-user.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.