Description
We are adding commands for fold/unfolding code in Vim and it turns out that Code's APIs are somewhat limited. All Vim's folding commands can be categorized as below.
Close/Open Folds (Done)
Vim allows users to open/close folds under cursor. Users can also decide how deep the folds are opened or closed.
These commands are partially supported, we have editor.fold
, editor.unfold
, editor.foldRecursively
, etc and it's easy to map them to Vim commands. Besides, Code supports us to fold
from level 1 to level 5 but level 6 and above is not supported and we don't have similar commands for unfold
.
Vim even supports us to toggle Fold. We don't have this command in Code and we can't use editor.fold
or editor.unfold
to workaround as we have no idea whether we are inside a folding area.
executeCommand('editor.fold, {levels: 3});
executeCommand('editor.unfold, {levels: 3});
Fold creation/deletion
Vim allows users to create or delete folds manually. It's not possible here as Code is doing this for us.
Navigate through Folds
We can navigate to previous or next fold area through commands in Vim. If we want to implement this in Code, we need to know the info about all folds.
Fold options
We can configure max/min screen lines for a fold, max level for folds, etc in Vim. Again, we didn't expose them in Code.
There are about 20+ unique commands and 10+ options about folding and we can only implement 5 of them partially right now.