1
Files
flake-nixinator/config/neovim/store/lazy-plugins/chadtree/docs/MIGRATION.md

4.5 KiB

Migration

Hello everybody, I am dropping support for python_version < 3.8.2 for the main branch.

Please use the legacy branch if you cannot use newer versions of python.

I am very sorry about this, but I am doing this in order to support more awesome features.

What you need to do:

Run the following once after updating your git repo to latest

:UpdateRemotePlugins

Change your extension manager to use the following:

Plug 'ms-jpq/chadtree', {'branch': 'chad', 'do': 'python3 -m chadtree deps'}

Run :CHADdeps the first time before you use :CHADopen

Check out new configuration. It is incompatible with the old one, BUT comes with a new parser and vaildator so the migration will be mostly just renaming one or two keys.

If you make a typo, CHADTree will tell you so!

Why?

Several reasons:

Python 3.8.2 is the version of python on the latest Ubuntu LTS.

There are some features I wanted to add that strictly cannot be supported below python 3.8. For example, I wanted to include a spec validator, but python 3.7 lacks support for Literal in the typing module, and therefore could introduce ambiguities in the parser.

The old CHADTree ran by nvim's default extension implementation, which had major short comings:

  1. Everything ran in the same process.

  2. The user needs to call :UpdateRemotePlugins each time I add a new RPC end point, or else they will get a random confusing error.

  3. pynvim needed to be installed, For most users who aren't familiar with how pip and python modules work. This will either mess up their usage of virtualenv, or require a global or user level pip package just to use CHADTree.

In order to fix these issues, I will have to make breaking changes anyways, why not now?

Solutions

At the cost of one time migration, which means users need to update their configs and perhaps python version. I will deilver enough features to warrant the upgrade.

New Features

Independent package management

CHADTree now will use all local dependencies. Which means pynvim can be installed under a subdirectory to chadtree. Doing a rm -rf on CHADTree will cleanly remove everything it brings in.

Nothing will pollute the global namespace for python.

Isolated Process

CHADTree now runs inside an isolated process! Not only will it start faster, it will also be isolated from your other python plugins. In case of errors or crashes, they will not affect each other nearly as much!

New Vaildating Config Parser

CHADTree will now validate your typos and misunderstandings on how to configure it! No more silent failures. If you make a typo in the config, it will tell you loud and clear!

New property.sub_property syntax also supported on a recursive level.

Faster startup

CHADTree started up kinda of slowly before. I have made it perceptibly faster through various marginal improvements.

Bigly Improved Documentation

CHADTree now comes with it's own help command!

Use :CHADhelp {topic} to open up built-in help docs in a floating window.

Use :CHADhelp {topic} --web to open up the same help docs in a browser.

Parallel File System Operations

Previously CHADTree was fast because it was async.

Now CHADTree can be even faster because it does things in parallel.

See design document here for details.

Vastly Improved Rendering Speed

You know how React is famous because it only renders what needs to be changed?

CHADTree now uses a React-like virtual rendering target. It only re-renders the minimal amount of lines. CHADTree can now handle thousands of visible files and still be reasonably performant!

This is only visible when you have 1000+ files visible. The old ways was fast enough for most tasks.

Theming

Yub, this is yuge. The #1 request was for more themes. They have came!

Go see :CHADhelp theme for details.

Even more Polish

  • Maintain cursor position in many circumstances, ie. move root up / down, filtering for files, renaming, creating files, etc

  • Selection of hidden / invisible files no longer possible.

  • Retain selection when copying or moving files.

  • Now shows git submodules

Even Higher Quality Code

Yes the quality of code is a feature. The better the code, the easier it is for me and other people to add in future improvements.