vimr icon indicating copy to clipboard operation
vimr copied to clipboard

Fix lcd/tcd

Open shanesmith opened this issue 1 year ago • 1 comments

The following code path effectively turned any lcd or tcd into a cd.

  • lcd (or tcd) from nvim
  • handled by DirChanged autocmd from NvimView.swift
  • fires .dirchanged event
  • handled by autoCommandEvent() in NvimView+UiBridge.swift
  • calls cwdChanged() in NvimView+UiBridge.swift
  • fires event .cwdChanged
  • handled by subscribeToNvimViewEvents() in MainWindow.swift
  • calls cwdChanged() in MainWindow+Delegates.swift
  • fires even .cd
  • handled by typedReduce() in MainWindowReducer.swift
  • sets state.cwdToSet
  • state change handled by subscribeToStateChange() in MainWindow.swift
  • sets self.neoVimView.cwd
  • handled by var cwd setter in NvimView.swift
  • calls nvimSetCurrentDir() which sets global nvim cwd

This chain had to be broken somewhere. The state.cwdToSet line in MainWindowReducer.swift has a comment that it's set to "ensure updates also send to tab bar". To fix we remove that line and instead set the tab bar cwd earlier in the cahin in NvimView+UiBridge.swift.

I don't normally use the custom tab bar or file browser, but have tested them with this change and they seem to still work well.

Fixes #1027

shanesmith avatar Jun 30 '24 02:06 shanesmith

This is fantastic and was also on my list to look at. Thanks!

There was some confusion due to lcd not working right which caused me to make the change. I think it related to the browser not getting updated on tab switch.

georgeharker avatar Jun 30 '24 02:06 georgeharker