Giter VIP home page Giter VIP logo

notelog's Introduction

Go Report Card

notelog

Notelog is a simple organiser to maintain personal notes. The notes are kept on the file system under a certain folder NOTELOG_HOME. You can control this location via corresponding environment variable. Default location for your notes is $HOME/notes/personal.

Notelog seamlessly integrates with your favorite text editor(tested with VIM).

Vim plugin is available

Installation

make install

Examples and features

# Opens "my-note" in editor. Creates a note if the note does not exist
$ notelog my-note

# Instant note: adds a line "foo bar" to "my-note" directly from command line
$ notelog my-note foo bar

# Archive a note: the note becomes unavailable in this collection
# for direct edits, also is not visible for search by default
$ notelog archive my-note

# Lists all notes in collection sorted by last modified date
$ notelog list --by-date

# Prints help
$ notelog help

Advanced features

Search

Notelog supports search over notes collection.

# Search all lines that contain "foo" over all notes
$ notelog search --interactive foo
1. noteA:1:foo bar
2. noteB:10:hello foo

# Open the second search result note from previous search in editor
$ notelog search-browse 2

Integrate with git

Since your notes are just a bunch of text files in a subtree on a file system, you can add your note collection to a git repo and have them version controlled. Notelog has a couple of commands to simplify this task though currently this functionality is pretty basic.

# Initialize a repo in the current notes collection
$ notelog init-repo

# Synchronize the repo with origin: add all the changes, commit, update from the origin and push
$ notelog sync

Please note that the "origin" remote is not automatically added. As of now you have to add it manually using standard git remote add ...

Roadmap

  • conflict-free instant note taking from commandline: when a note is open in editor and one tries to add an instant note, editor could override amended note
  • search: consider indexing full text search solutions, e.g. https://github.com/blevesearch/bleve
  • archive: a note can:
    • be put into archive, so it will not stay in the main note list Current behavior: no search in the archive. Only through actual notes
    • enable search in archive?
    • be restored from the archive (eventually)
  • (?) sub-notes: notes that exist only in a context of a main note
    • example notelog subnote
  • (?) add man page - scdoc
  • (?) attachments to notes
    • notelog attach - puts into note directory
    • notelog attach-open - opens attach
    • integrate with search?
  • cross-linking: you can fetch all the references from other notes to a given note
  • embed cross links in notes: implemented as note: scheme for Utl vim plugin
  • (WON'T DO - can be solved by existing tools) note templates
  • in-note macros:
    • when adding lines, format them according to a given template
  • (WON'T DO - useless) multiple temporary drafts - when open a draft, this should not be the same file every time
  • (WON'T DO - useless) refactoring: consider using testing.T.TempDir() in tests instead of manually create / cleanup temp dirs
    • using testing.TempDir() will unnecessary complicate the current code
  • search
    • add regexp search
    • add colors to output when at tty
  • refactoring: consolidate withNotes functions in tests
  • get rid of cobra lib - it's too dependency-bload - migrated to https://github.com/muesli/coral - drop in replacement for cobra
  • have notes on .md format and not only in .org
  • add more examples, hints, use cases and script recipes
  • integration with fzf: search results
  • vim plugin
    • MVP
  • create dir structure in one go during init phase. Consider fixing existing incomplete structure.
    • create .notelog at least
  • migrate to cobra subcommand parser
  • create and populate .gitignore if NOTELOG_HOME is considered as a git repo
  • smart bash auto-completion for subcommands
  • search capabilities
    • search browsing: quick jump to search results from command line
    • search aggregations: - group by files(—titles-only) (? - do we need to return all lines or just docs?)
    • search over note names
  • search: add simple query language, e.g. "foo bar -buzz" == "foo OR bar EXCLUDE buzz"
  • add rm feature
  • add rename feature
  • cloud capabilities:
    • via simple rsync
    • via git

notelog's People

Contributors

nchern avatar nkchern-avn avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.