# NeoVim Event Highlighting + custom keybindings

**URL:** <https://uzu.lurk.org/t/neovim-event-highlighting-custom-keybindings/5896>\
**Category:** Announcements\
**Created:** [6 September 2025 19:40 UTC](https://uzu.lurk.org/t/neovim-event-highlighting-custom-keybindings/5896 "2025-09-06T19:40:07Z")\
**Posts on this page:** 1\
**Showing post:** 55

<div class="post-metadata">

**Author:** ![mrreason](https://uzu.lurk.org/user_avatar/uzu.lurk.org/mrreason/32/3203_2.png) [@mrreason](https://uzu.lurk.org/u/mrreason)\
**Post date:** [23 January 2026 21:40 UTC](https://uzu.lurk.org/t/neovim-event-highlighting-custom-keybindings/5896/55 "2026-01-23T21:40:14Z")

</div>

I had a major success after some weeks of work to enhance the event highlighting! I really would like to receive some feedback, before I merge this to main. Please provide me some feedback in this thread: [Improve event highlighting by using Tidals PlayState · Issue #14 · thgrund/tidal.nvim · GitHub](https://github.com/thgrund/tidal.nvim/issues/14#issuecomment-3792477512)

Please try out the event highlighting with the tidal playstate (it's reliable, it's fast, it performs well and it will allow us at least strudel like pattern visualization! yeah! 🙂 → I run the highlights with up to 120fps without big issues on my machine). This works, because I receive the Tidal playstate with all time and event informations from stdout. I can calculate the events beforehand. All other methods used the the current state within a specific time and this live edge approach was hard to stabilize.

In the basic form you just need to add this in your tidal.nvim file:

```lua
return {
  "thgrund/tidal.nvim",
  branch = "improve-event-highlighting",
  opts = {},
  -- Recommended: Install TreeSitter parsers for Haskell and SuperCollider
  dependencies = {
    "nvim-treesitter/nvim-treesitter",
    opts = { ensure_installed = { "haskell", "supercollider" } },
  },
}

```

If you use your own `BootTidal.hs`, then you need to define a clock target like this:

```haskell
let clockShape = OSC "/ping" $ Named {requiredArgs = ["clock"]}
let clockTarget = Target {oName = "clock", oAddress = "127.0.0.1", oPort = 6013, oLatency = ((3/10)), oSchedule = Live, oWindow = Nothing, oHandshake = False, oBusPort = Nothing }

tidalInst <- mkTidalWith [(superdirtTarget { oLatency = (0.15) }, [superdirtShape]), (clockTarget, [clockShape])] (defaultConfig {cFrameTimespan = 1/50, cProcessAhead = 3/10})

```

Otherwise the inbuild BootTidal is correctly pre configured.

---

_[View the full topic](https://uzu.lurk.org/t/neovim-event-highlighting-custom-keybindings/5896)._
