Skip to content
dharmx edited this page May 13, 2024 · 12 revisions

What is track.nvim?

Track is a plugin for bookmarking specific pieces of information that is relevant to things that you are working on at the moment.

The said "things" could be one or, more of the following.

  • Code files from your current project, files from other projects that have used the same logic on some part, etc.
  • Websites i.e. blogs, YouTube videos or, maybe a documentation website.
  • Offline images, audios, videos, etc.
  • Manuals i.e. man find(1), etc.
  • Terminal commands that you do not want to run again.
  • And, more (Except your biological mother. She is too over-weight).

Inpiration

This plugin borrows its core concept from GIT. See the following.

  1. We have a Root which is essentially the project directory that GIT will track.
  2. Then on the next level we have Branch which is similar to branches in GIT.
  3. And, on the final level we have the marks i.e. the files, binaries, medias, etc. In terms of GIT, these are the actual files that GIT will track.

Note that, Root is just a list of Branches and a Branch is a list of Marks. This exists so that you can have several versions of your marks list for working on specific parts of your project (say).

The credit to this idea goes to @nikfp.

snip-1715088308-1920x1080

Root

Root represents a directory in track.nvim. This is synonymous to current working directory. A root will contain a map of branches and the branches will contain marks. A root will also contain a main key which (just like GIT) will be the default branch of the root.

A Root will always contain a main branch which is not removable.

Branch

A virtual marks list. Allows one to create different versions of marks that is better suited to a part of a project that you might be working on.

Consider the following example for instance.

Working at documenting your project will require you to frequent README.md, CONRIBUTING.md and doc/index.html (say) files and writing tests for your project would require you to frequent the tests/mocks.java, tests/fixtures.java and https://junit.com files and sites.

Normally, without branches one may put all project files in the mark-list or, remove files README.md, CONRIBUTING.md and doc/index.html and then add tests/mocks.java, tests/fixtures.java and https://junit.com files and vice-versa. This adds overhead.

Now, with branches you just need to stash the current branch which contains README.md, CONRIBUTING.md and doc/index.html and add tests/mocks.java, tests/fixtures.java and https://junit.com to the new branch.

This is similar to GIT branches. You create feature branches for working on them separately.

Mark

The actual URIs that will be used as bookmarks. Note that you can virtually add anything to this. Files, terminal commands, manpages, websites, media files, etc.

Clone this wiki locally