Skip to content
percyqazPublic

About

Terminal-based solution explorer designed to annoy me a little less than existing IDE explorers

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

FSLN

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 :edit on 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 $GITPATH runs git add in shell + the path of your selection relative to the detected git repo
      Example: typing :bind v = :!vim $ makes v open the selected file (or folder) in vim and returns you on exit

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

Installing

  1. Clone the repo

  2. Run ./update.sh to install as a dotnet tool
    Needs dotnet 10 installed and googling skills for when your dotnet tools are inevitably not found in your path

  3. Run with fsln

About

Terminal-based solution explorer designed to annoy me a little less than existing IDE explorers

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages