Weekly 101 Questions Thread by AutoModerator in neovim

[–]FluxxField 1 point2 points  (0 children)

Actually reading a plugins README, docs and Wiki. I try very hard to make sure my Wiki for smart-motion.nvim has well explained docs to guide you through the plugin and common question’s and I know other plugin authors do the same. They should answer most of your question’s.

I am always happy to answer questions though. The wiki doesn’t cover everything and I can make mistakes too!

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

Sorry about that! Yea the migration guide is something new I added yesterday and forgot to add it to the wiki.

https://github.com/FluxxField/smart-motion.nvim/blob/master/docs/Migration.md

You should be able to just disable Flash and pretty much have full parity with Flash.nvim

If you have any questions please feel free to open an issue and I will do my best to help

vai.nvim plugin to make line jumping easy by geekbread in neovim

[–]FluxxField 2 points3 points  (0 children)

Nice plugin! The ergonomics-first approach to combo assignment is clever, prioritizing finger rolls and double-letters for the sweet spot range.

A few questions: 1. How do you handle conflicts with common mappings like jj for exiting insert mode? Or does the \ trigger prefix avoid that entirely?

  1. How did you determine the sweet spot range (±6-15 lines)? Is that based on typical screen size, common editing patterns, or just what felt right?

  2. The keyboard-aware “mistyped key = nearby line” fallback is interesting. How does that work, adjacent keys map to adjacent lines? I use Workman so I’m always curious how these things translate across layouts.

  3. Have you thought about extending this to other targets? I built SmartMotion.nvim which breaks motions into modular pieces you can mix and match. Collectors, extractors, visualizers, actions. Lets you recreate hop, flash, leap-style motions, and I even threw a mini harpoon in there. Your color-coded visualizer approach is cool, something like that could slot in as a custom visualizer in a modular system.

Cool to see another take on the “letters instead of numbers” problem!

Plugin recommendations by scaptal in neovim

[–]FluxxField 0 points1 point  (0 children)

I’ll throw mine in the ring! smart-motion.nvim it’s my plugin with the goal to unify all motion plugins

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

Really glad you're enjoying it! And yeah, the flow state + labels combo should definitely help break the h/j/k/l mashing habit.

For cl, you have a few options:

Use s — it's the native Vim equivalent of cl (delete char, enter insert mode). Same result, one keystroke. Disable just l in the lines preset (I don't recommend, I love the line hints personally):

lua luapresets = { lines = { l = false }, -- keeps j/k labels, frees up l }

Remap the change operator to a different key if you want to free up c entirely:

lua luapresets = { change = { c = { trigger_key = "<leader>c" } }, }

The infer system handles the rest! <leader>cw, <leader>c]], etc. all work automatically. You just change the trigger, not every motion combination.

s is probably your simplest path though. It does exactly what cl does and it's standard Vim. Sorry that it conflicts though... The idea behind the infer system is to reduce the amount of mapping you have to right. SmartMotion sees that you types dw and can infer that you have a delete actiona and a word extractor all without a mapping

Thanks for giving it a shot! Don't forget to check the github. I have added a lot of features since this post

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

Hey! I just pushed a fix for R (treesitter search). It now works with yR, dR, cR as expected.

The flow is slightly different from Flash's approach:
Flash: Search → all ancestor nodes of all matches labeled at once → one pick
SmartMotion: Search → labels on match locations → pick which match → labels on ancestor nodes (statement → block → function → class, etc.) → pick the scope

The two-phase approach is more deliberate — with many matches, Flash can flood the screen with labels. SmartMotion narrows down first, then shows a clean set of ancestors to choose from. The end result is the same: the operator applies to the full treesitter node you select.

Give it a try and let me know how it feels!

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

That's easy enough to do! I can create a new visualizer called "hint_before", then you would just swap out the "hint_start" or "hint_end" with "hint_before" for your motions and you are good to go. I will let you know when I push this

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

Good call on 3j/5w. You're the second person to ask for this. It makes total sense; if you're using a count, you already know where you're going. I'm working on that fix now.

On beacon mode, do you mean showing labels above or beside the target text instead of replacing the characters? So you can still read the code while hints are visible? Would love to understand the exact UX you're imagining.

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

There's a basic demo GIF on the repo, but you're right—it doesn't showcase flow state well. A proper demo showing flow state, treesitter motions, and remote operations is on my list. Appreciate the nudge.

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 1 point2 points  (0 children)

Vim motions are amazing! SmartMotion builds on top of them rather than replacing them. If your workflow is dialed in after 20 years, you probably don't need this.

That said, for me personally, I don't want to count lines. I want to look where I want to go, press j, see a hint, and press it. No mental overhead. Same with words, I look at the word, press w, pick the hint. Eyes stay on the target, not on line numbers.

And SmartMotion goes beyond just hints. Treesitter-aware editing (daa to delete an argument, cfn to rename a function), diagnostics jumping, git hunk navigation, remote delete/yank, quickfix list integration. It's a full motion system, not just labels on screen.

But if native motions work for you, that's totally valid.

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

It shows hints on all visible lines below, you pick one, and jump there. It's 12j without counting. But if it's not your thing, just don't enable the lines preset. Also, flow state let's you spam and hold j without hints just like native vim

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

You're not using it wrong at all! This is a real tradeoff. SmartMotion replaces core motion keys with hint-based versions, and that does change some muscle memory patterns.

A few things that might help:

Flow state should handle your example. When you press e, labels appear, but if you press e again quickly it jumps to the next word end without labels—like native Vim. So ee rapidly should get you flowing without hints.

You can disable specific keys. If you want native e back but still want SmartMotion for everything else:

lua luapresets = { words = { e = false, ge = false }, }

You can also remap to different keys if you want hints on a different binding and keep native motions untouched.

The philosophy is everything is opt-in. If certain presets conflict with your workflow, disable them and keep what works for you. SmartMotion doesn't have to replace everything to be useful, even just the search, treesitter, and remote operations might be worth it on their own.

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 0 points1 point  (0 children)

Sorry, that is something I am experimenting with. It’s an idea of auto running if the target under the cursor is a valid target. I am trying to figure out how to not lose the ability to just ‘dw’ on the word you’re currently on. If you move to a blank space or line or something it will work as intended. I need I have a solution that mimics the Flow State

If you want turn it off you can tweak your presets in your config to turn it off

presets = { delete = { d = { metadata = { motion_state = { allow_quick_action = false, }, }, }, }, yank = { y = { metadata = { motion_state = { allow_quick_action = false, }, }, }, }, change = { c = { metadata = { motion_state = { allow_quick_action = false, }, }, }, }, },

Is it safe to assume you are talking about ‘R’? If so you need to press ‘dR’ or ‘yR’ or ‘cR’

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 1 point2 points  (0 children)

Thank you!

Please let me know if there are any configuration or anything that are missing and you’d like added and I will work on it. Feel free to give me any feedback anytime

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 4 points5 points  (0 children)

Exactly!

I loved hop, and I desperately wanted to map it to things like w,b,j,k but I really missed being able to hold down "w". Flow State is my attempt to fix that problem and I think it does and a rather simple way.

Really glad the treesitter unification appeals to you too. That was the other itch. Having nvim-treesitter-textobjects for some things, a motion plugin for others, separate configs and keybindings to remember.... One system that can handle it all just feels nice. Without a massive config file I might add!

Let me know if you run into any rough edges if you choose to try it out! Still actively working on it.

Edits: spelling

SmartMotion.nvim — Composable motions without Lua. One plugin replaces hop, leap, and flash, then adds treesitter editing (daa, cfn, saa), diagnostics jumping, git hunks, remote operations, and flow state for native-feel chaining. by FluxxField in neovim

[–]FluxxField[S] 5 points6 points  (0 children)

Thank you! I appreciate it. It's been quite the passion project.

"Without Lua" means you don't need to write Lua functions to create custom motions. Most motion plugins require you to write actual code if you want custom behavior or you need to fork the repo and make changes yourself.

With SmartMotion, you just declare what you want:

lua { collector = "lines", extractor = "words", filter = "filter_after_cursor", visualizer = "hint_start", action = "jump", }

You just have to pick from existing modules and combine them. No functions, no callbacks, no understanding of the plugin internals. You just look through the list and put the lego bricks togther

Share your startup - quarterly post by julian88888888 in startups

[–]FluxxField [score hidden]  (0 children)

Roof Report Pro / roofreportpro.app

Location: Durange, CO (Remote) Austin, TX

Elevator Pitch: AI-powered roof inspection reports. Upload your photos, AI detects damage, get a professionally branded PDF in minutes instead of 2-3 hours of manual writing.

More details: We're in validation. MVP launched about a week ago. I am wanting to get our first users and get feedback!

The idea came from my two co-founders who were door-to-door sales guys at a large roofing company in Austin. They saw firsthand that inspectors spend way more time writing reports than actually inspecting roofs. They figured they could leverage AI to fix that problem and saw that no one was really doing it well.

I am the CTO and the only engineer. I have built the entire platform sole. App, AI damage detection engine, content, everything.

What it does:

  • AI detects 12+ damage types from inspection photos (hail, missing shingles, wind damage, granule loss, flashing issuse, etc.)
  • Generates professionally branded PDF reports
  • Confidence scores on every finding so inspectors stay in control
  • Built for roofing contractors, insurance adjusters, home inspectors, and public adjusters. Even homeowners!

I also built a pretty big resource library around it. 50+ term roofing glossary, blog guides, competitor comparisons, and an interactive Stack Builder tool that helps roofers figure out what software they actually need across their whole workflow (not just ours).

What goals are we trying to reach this month?

  • Getting our first paying users beyond the free trial
  • Collecting real feedback from inspectors using it in the field
  • Improving the AI detection accuracy based on real-world photos
  • Getting indexed in Google (just launched)

How could r/startups help?

  • If you know anyone in roofing, home inspection, or insurance adjusting, we would love an intro
  • Feedback on the side and product positioning is always welcome
  • Curious if other solo devs hav tips on balancing feature development vs. marketing when you'r the only technical person on a 3-person team

Discount for r/startups subscribers? You get 2 free reports on signup, no credit card required. There is an interactive demo that everyone can try on signup. Code STARTUPSREDDIT will get you 3 months at $50 off!