Is a terminal-based tool general purpose solution explorer, primarily aimed to help with organising F# projects
It can also handle my C# projects and random folders of scripts just fine
- Hardly any IDEs have good built-in support for reordering F# files or folders up or down
- No IDE I've ever used has built-in support for reordering of C# projects, files, folders
File order matters in F# projects so I wanted a fast tool for reordering them (regular annoyance: manually editing .fsproj files)
File order doesn't matter to C# programmers or IDEs but I like organising topologically as if I'm writing F#, to navigate the structure better
Features:
- Run in a folder, it detects a .sln or .slnx and opens all projects
- With configuration you can open any directory as a 'project' or 'solution' even if not .NET
- You can navigate, search, rename, reorder all files in a tree
- Reordering data is stored in a .fsln directory for projects and for non-F# files
- Reordering is applied directly in .fsproj for F# projects
- Searching by filename, git integration
- Vim-like bindings and keys that let me hot-wire it to do anything
- Every action on state is a command e.g.
:edit,:move_up,:expand - All hotkeys are macros for internal commands, or shell commands that use a
!prefix - What happens when you run
:editon a file is pluggable by file type, set this to your editor of choice - These bindings end up very composable and reusable, I have a small .fslnrc full of binds like I would a .vimrc
Example::!git add $GITPATHrunsgit addin shell + the path of your selection relative to the detected git repo
Example: typing:bind v = :!vim $makesvopen the selected file (or folder) in vim and returns you on exit
- Every action on state is a command e.g.
It it made specifically for me, your mileage may vary
Overall I now use my terminal + FSLN to:
- Open projects
- Manage my todo lists
- Write all git commits, view diffs, history, etc
- Reorder F# files
- Several other script doodads for formatting and refactoring
And then I use JetbrainsRider to:
- Act as my main code editor when I "open" a file
- Navigate between files when faster (jump to definition, etc)
- Debug
- Do any complicated git merges
-
Clone the repo
-
Run
./update.shto install as a dotnet tool
Needs dotnet 10 installed and googling skills for when your dotnet tools are inevitably not found in your path -
Run with
fsln