proj

Goals

  • Integrate vim sesssions, notes, and directories
  • Trivial Initialization
  • Support monorepo + multiple work trees + branches

Foundations

  • smartcd
  • notes system
  • little vim plugins + vim8 optional loading

Sketch

  • Support worktrees by allowing symlinks in smartcd scripts dir
proj init <proj> -> create project called <proj> for current dir, creating vim session and note.
                    if either vim session or note already exist, fail with error
                    --skip-vim or --skip-note do not attempt to create those
                    --force-vim or --force-note will overwrite those

proj vim -> open vim session
proj gvim -> open vim session in new terminal (todo)
proj note -> open note (maybe just render it?) (todo)
proj enote -> open note in existing notes session (todo)

Plan

  • add proj index
    • from name to path
    • worktrees? (multiple path options, one correct?)
    • branches? (only whichever work tree has a branch checked out?)
  • add proj support to notes.vim
    • open vim for project :Session
    • :Tmux window for project
  • create proj.vim
    • show :Note from within project
    • open :Tmux
  • move smartcd config to dropbox

Ideas

  • allow locking a project to a branch? (proj unlock-branch, proj lock-branch, implemented as part of proj.vim?)
    • maybe to a given worktree
  • cd $(proj dir proj)
  • per project shell history
  • proj tabs to load firefox tabs from some urls on the note?
  • vim sessions mapped to branch, vs project, to allow more fluid switching?
  • automatically link to any existing superproject (ie stuff in the zr monorepo should link to a zr project)

Inspiration