Code Monkey home page Code Monkey logo

memo's Introduction

Memo

Markdown knowledge base with bidirectional [[link]]s built on top of VSCode.

Inspired by Obsidian.md and RoamResearch.

Visual Studio Marketplace Version Open VSX Version Visual Studio Marketplace Rating codecov PRs Welcome

Why?

Because your knowledge base deserves to be powered by open source.

Getting started

If you want to try out Memo just install it via marketplace using this link and open the help folder via File > Open Folder... or by dragging it onto VSCode.

Features

  • ๐Ÿ”— Links support

    • Creating links

      • Creating links
    • Links navigation

      • Links navigation
    • Embedding notes and images

      • Embedding notes and images
    • Automatic links synchronization on file rename

      • Automatic links synchronization
    • Links rename via Rename Symbol command

      • Links rename via command
    • Links labeling

      • Links labeling
    • Support for short and full links on filename clash

      • Support short and full links on filename clash
    • Opening links with unsupported file formats in the system default app

      • Links labeling
    • Find all references

      • Find all references
  • ๐Ÿ–ผ๏ธ Notes and images preview (built-in & on-hover)

Notes and images preview

  • ๐Ÿฆ‹ Creating notes on the fly

Creating notes on the fly

  • ๐Ÿ–‡ Backlinks panel

Backlinks panel

  • ๐Ÿ•น Commands

    • "Open link" command support for links following

    • "Open link to the side" command allows you to open link in the adjacent/new column of the editor

    • "Open daily note" command which creates a note with a title in yyyy-mm-dd format or opens already existing one

      • Open daily note command
    • "Open random note" command which allows you to explore your knowledge base a little bit

      • Open random note command
    • "Open link in the default app" command for opening unsupported file formats in the system default app

    • "Paste HTML as Markdown" command which can partially replace a web clipper functionality

      • Paste HTML as Markdown
    • "Rename Symbol" command support for renaming links right in the editor

    • "Extract range to a new note" command to ease notes refactoring

Contributing

Changelog

See changelog here.

memo's People

Contributors

bs avatar caiych avatar coobaha avatar dependabot-preview[bot] avatar dependabot[bot] avatar ez4gis avatar jojanaho avatar memeplex avatar mgmeyers avatar pmagwene avatar svsool avatar zioroboco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

memo's Issues

Backlinks do not show with relative paths

When I have files with conflicting names (in my case, one inside a subdirectory and one at the root level), the backlinks panel does not show up the linked note.

Is this a know issue?

Feature Request: [[wiki links without file extension]]

All my note files are ".md" files and the internal links to other notes are like [[this note]] to refer to a file named "this note.md".

Would it be possible to allow for a default file extension so they can be excluded from the link text?

Thanks,

  • Dave

feature request: markdown file embedding

I understand that for the time being Memo can only embed image files. Being able to embed one markdown file into another would be very useful in order to introduce structure to a set of notes. Do you think that such a feature may be included in the roadmap?

Feature request: Find backlink file references in standard markdown links []() in addition to wiki links [[]]

Thanks for Memo, it's really useful!

Currently, backlinks to other notes are only detected if wiki links are used: [[filename]] or [[filename|link text]]

Unfortunately, I upload my note to Github and where wiki links are not supported and I have a tendency to use standard markdown links [link text](filename.md) for notes to be usable on the web. However, doing this means backlinks are not detected.

Would it be possible to detect backlinks to files in the []() link format?

Thanks.

issues and roadmap

Hi!

Could you please provide some additional info regarding Memo, specifically if there are any known issues, any feature roadmap that you may have in mind, how it compares/differs to/from similar efforts (e.g. foam)?

Thanks a lot!

Feature request: allow formatting of included files to remove border and heading.

Feature request:
When using the ![[file]] syntax as follows:

# Daily note for 2020-12-14

here is yesterdays: ![[2020-12-13]]

End of note

the included file is displayed with a border like this:
image

It would be nice to be able to format the included file without the border, and with the title removed, so that it looks like just another part of the document. That would allow the creation of large documents from multiple smaller pieces.

Feature Request: autocomplete with h1 title

When linking 02-started.md document in 01-intro.md document, it would be greate to be able to bring the h1 title of document 02-started.md.

e.g.
01-intro.md

# Intro
This is some text, link [[02-started|Let's started]]

02-started.md

# Let's started
Do something.

Zettlr like ID support

Is it possible to support zettlr-like ID's.

ID is represented as regex expression in setting.
Than the first string in the file considered to be id. Usually it is a data-time. But it has sense to add some prefix.
The link support shall also admit the ID's

So in some file we have a string:

ID:20200728172530

In another we have a link

[[20200728172530]] - this link shall work.

Feature Request: Links to headers

In Obsidian you'd be able to click on a

[[AWS#Monitoring]]

and the AWS.md file would open under any header that had Monitoring as title.

Right now, the behaviour of memo is that it creates a file AWS#Monitoring.md

Support for #note linking syntax

Use case:
Every note is also a tag and linking to other notes can be done interchangeably with #note and [[note]] syntax (similar to how it works in Roam Research).

Could this be supported in Memo?
From the extension perspective, both types of links are exactly the same (later, maybe they can be displayed in a different style, but that's just cosmetics).

Feature request: follow link under cursor

Like in Obsidian, it would be great if something like cmd-enter would open the link under your cursor. Even better than Obsidian: it would be great if this worked not only for links to [[other notes]] but also https://external-links.

Thanks!

Features Approval: new-note template, new-note command

I'm willing to implement following features:

  1. New note template
    The template could be set in a configuration (string) or an optional file, whichever you prefer
    And embedding data with {title} and maybe {date}. For my use-case I don't really need date, but I presume it will be a popular feature

  2. New note command
    Asks for filename/title and pass it as the reference parameter to openDocumentByReference()

Basically what this extension does https://github.com/monferrand/mzettel but integrated so the template works when cmd/ctrl+clicking a new wiki-link

new command and template


If you agree to implement those features, then I need your feedback:

  1. Would you like the template to be set in a configuration or a file? or any other idea?
  2. Do you agree with the {title} syntax?
  3. Would you like an empty template as default or # {title} or any other?

Feature request: templates, at least for daily notes

I like the daily note feature. It would be great to be able to specify a template for it, with some headings, and even an included file. like a todo list.

For example:

# Daily note for {date}

This is a #dailynote or #journal

# Existing todo list

![[todo]]

# other heading

etc

This templating could be used elsewhere as well, wherever multiple notes with the same structure are required.

Piped wikilinks don't work well in table cells

When I have a piped wikilink in a table cell, I have to type \| to avoid it is parsed as table syntax. And then all work well in the preview, the link is clickable and leads to the right file. However, when I hover on the link in editor, it says the file is not created yet. And it will create a .md file after I Ctrl + click on it.

image

image

Wikilinks with slugification and piping

I would like to be able to write [[Hello World]] and create a file hello-world.md.
At the moment I am forced to create it as hello world.md, which makes linking to a file path more difficult -> hello%20world.md

Also I would like to write the wiki-link with piping: This is a common [[greeting|Hello World]], which would link to hello-world.md.

Filenames are truncated when deeply nested in workspace

This isn't so much of an issue with this plugin as a limitation of vscode, but I've been noticing it's difficult to tell which file the completion menu is showing me when files are nested deeply (or have a long name):

_Extension_Development_Host__-_Visual_Studio_Code_and_Visual_Studio_Code

I was playing around with some fixes here, and found two that seemed reasonable in use.

1. Use shortRef as the label with longRef as the item.detail:

const item = new CompletionItem(shortRef, CompletionItemKind.File);
item.detail = longRef;

_Extension_Development_Host__-_Visual_Studio_Code_and_New_Issue_ยท_svsool_vscode-memo

item.detail can be expanded:

_Extension_Development_Host__-_Visual_Studio_Code_and_New_Issue_ยท_svsool_vscode-memo

The problem with this approach is you can't search the file path.

2. Reverse the longRef path

const label = longRef.split(path.sep).reverse().join(path.sep);
const item = new CompletionItem(label, CompletionItemKind.File);

I thought this would be kind of weird to use, but it actually felt the most natural to me. It searches the file names first, then offers a more context specific view of the path without having to expand anything.

_Extension_Development_Host__-_Visual_Studio_Code_and_Visual_Studio_Code


Could even have a few options selectable via settings (something like memo.completion.format):

  • fullPath
  • fullPathReversed
  • filename

Let me know if you have any thoughts/ideas here, and I can raise a PR!

Syntax decorations override theme preferences

Since the colors for syntax decoration (wiki-link) colors are hardcoded here: https://github.com/svsool/vscode-memo/blob/master/src/features/syntaxDecorations.ts#L24-L33 there's no way to have them respect the current theme.

I would love it if I could disable these syntax decorations or if they were exposed as themeable tokens, rather than hard-coded. The latter is how vscode-markdown-notes handles wiki-link styling:

https://github.com/kortina/vscode-markdown-notes/blob/master/syntaxes/notes.tmLanguage.json
https://github.com/kortina/vscode-markdown-notes/blob/master/language-configuration.json
https://github.com/kortina/vscode-markdown-notes/blob/master/package.json#L28-L45

Issues on markdown preview rendering

Thanks for the great work! Exactly what I was looking for.

I have a few questions on how you set up your markdown preview. Right now the images/note embed and link label doesn't work for me:

image

As you can see the label and embed don't show up. I am using the latest 0.1.8 version.

Feature Request - Ability to disable IntelliSense and/or other features

I use a few other plugins to aid my codium-powered Zettelkasten in addition to vscode-memo. Consequently, I'd like to disable the intillesense feature while leaving other features intact. The available options in the extension UI are quite minimal and don't allow much customization. If you want to implement that feature it'll let people mix and match more plugins with vscode-memo.

Copy backlinks, references and outline to clipboard

It would be nice if we could copy links to the notes in Backlinks and References to the clipboard, to be pasted where we want them. Useful for creating tables of contents/indexess. If the built-in Outline panel could be copied as well, that would be great too!

The same markdown file name in different directories will cause incorrect links

The same markdown file name in different directories will cause incorrect links. For example, the following scenario:

First step, linking questions/02-started.md document in tutorials/01-intro.md document
tutorials/01-intro.md

This is some text, link [[02-started]]

questions/02-started.md

Do something.

Second step, add a tutorials/02-started.md document in the tutorials folder.
This will cause the [[02-started]] link in the tutorials/01-intro.md document points to the tutorials/02-started.md document in the newly created tutorials directory.

Can supporting relative paths solve this scenario?

no extension found in marketplace (linux)

I tried searching for

  • Markdown memo
  • svsool.markdown-memo
  • Ctrl+P + ext install svsool.markdown-memo

and I get "No extensions found."

Code OSS 1.51.1
Electron 9.3.4
Arch Linux x64 5.4.77-1-lts

versus on a windows computer it does find the extension

Find all references only shows where the link exists in other files, not the current one as well

In your readme, the references panel shows the note that the search was initiated from (readme.md) in addition to other instances (creating links.md) of the link.

image

I'm only getting the other instances, and not the current note (i.e. readme.md is not showing up in the references panel). It would be useful to work as shown in your readme, as I could then more easily navigate back to where I started.

Feature Request: A configurable root location for creating notes on the fly

What:

Add a configurable path, relative within a workspace, as the location for notes created on the fly.

It would enable the concept of an inbox, from which we can then decide the notes final location. Or it could be an unstructured repository if we care only to contain our notes in a single bucket.

Why:

Following a link to a non-existing target will create the new MD file in the root of my workspace. While that works well for a dedicated knowledge base, I use Markdown Memo to document my research for a writing project with its own set of documents and folder structure. All these Zettelkasten Markdown documents clutter up my workspace root.

I end up prefixing the link to something like [[kb/thought]], create the note, then come back to the link and remove the kb/ so that backlinks work. This is workable if I have only one reference, but becomes cumbersome when I have links to [[thought]] in multiple locations. In that scenario I leave out the "kb/" prefix and let the note be created in the workspace root and then later manually move it to kb/.

Either way works, but both are more cumbersome and I have to consider in advance whether I will be creating multiple links before creating the content. If we can remove that extra [[thought]] process to get focus back on the content and relations themselves, that would be a big boon.

Kudos:

Love Markdown Memo, quite liberating. And while I'm asking for a configuration setting, I love that Markdown Memo is opinionated. Less is more.

Feature Request: Option to Default Backlinks to Collapsed

The backlinks pane can be hard to quickly navigate when all entries are uncollapsed. Collapsing the view makes it far more easy to read at a glance (in my opinion). A setting to control the default behaviour would cater to a users preference.

Screen Shot 2020-07-18 at 14 18 40
Screen Shot 2020-07-18 at 14 17 33

Feature Request: Keep directory path

When linking 02-started.md document in 01-intro.md document,
it is very useful if autocomplete keeps the directory path when using markdown-it-wikilinks to generate static pages. Thanks!

e.g.
tutorials/01-intro.md

# Intro
This is some text, link [[tools/02-started|Let's started]]

tools/02-started.md

# Let's started
Do something.

link auto-creation

This is not really a bug, rather an inconvenience. If you insert a link that:

  • doesn't exist yet,
  • should go inside a directory
  • has a unique file name

and ctrl/cmd-click to create the file, the new file is created but the link doesn't work. If, subsequently, you enter the link manually, Memo uses the short form because the link is unique.

I ended up first creating the target file and then creating the link towards it which works reliably.

Reverse link function

This is related to the extract/refactor request I've made that you are working on in Markdown Kit, but I think is more appropriate here as it is purely link-based.

I'm currently creating various indexes that point to my notes. It would be really neat if there was a command that uses a search/autocomplete to create a link to the current file in the OTHER selected file. It is essentially the reverse of the current wikilinking function, where a link to the other file is created in the current file. It would need to go in some default place in the target file - in a YAML header above "---" perhaps?

Another related idea - some sort of Ctrl+Shift+Click feature to create a link to the current page in the page contained within the link that was clicked on (e.g. Page 1 has [[Page 2]] within it. This command would add [[Page 1]] to Page 2.

These features would be useful for making topical index notes - I have many index pages like "Inbox", "Nutrition", "Finance" which are full of links to specific pages on those topics. If I am on a new page on Vitamins that is not yet linked to Nutrition, I could add that link without having to open and type it. Or, in the header of Vitamins, I could manually add link in the header to Nutrition and Shopping List, and then create links in those summary pages by clicking.

I know there are backlinks, but this is an extra level of functionality.

Functions to open link in adjacent/new pane

I'm aware that there is a VS Code command/shortcut for moving a file to another editor pane, but it would be nice if we could Ctrl+Shift+Click or Ctrl+Shift+Enter to open a link in the adjacent pane. Perhaps Ctrl+Alt+Shift+Click to open in a new pane as well, or however we choose to configure it.

Thanks!

suggestions for publishing notes as static website

I understand Memo is an excellent plugin to manage notes on a local computerin VS Code, many thanks for supporting open source counter-part for Roam and Obsidian. I was wondering is there is a suggested workflow to render Memo notes as a static html site. Would by-directional links need some specail handling or there is already a solution to convert them to HTML?

Backlinks panel does not show context

This is the sample image in the README.md about backlinks

backlinks

I think I see some context surrounding the reference.

Is that supported and it's now broken? or that was never implemented?

Feature request / question: key binding for preview link?

I don't know if this is possible, so please forgive the request if it's not.

I love the preview-on-hover behavior! And I'd love it even more if I could trigger the preview of a link under my cursor with a key binding. Is this plausible? Is it the kind of thing that you'd accept a PR for?

Thanks!

Show backlinks when interacting with markdown preview

Use case

I tend to use the markdown preview to navigate through my notes and find what I'm looking for. However I have no way of going back to the previous note as the backlinks are missing in preview. I have to open the file to edit (double click) and then go to the backlinks and that completely breaks the navigation flow.

Current behaviour:

The "Explorer: Backlinks" panel only shows backlinks when the user is editing a file but is lost (empty) when focus switches to the markdown preview.

Suggestion

Show the Backlinks in "Explorer: Backlinks" for a file in the markdown preview when in focus.

Create daily note with default title

Create the new daily note with a default title (matching filename):

# 2020-09-12

I find myself doing this manually anyways; would be nice if the extension did it automatically. Users who don't need it can always Ctrl+A DEL it.

Why do I need it? Because the markdown-links extension requires a level-1 heading.

Parens in file names break backlinks

Moving over from Obsidian, I have filenames like Black Swan (book).md. Those parens seem to break the backlink code.

I'm just going to update the names, since parens are ugly anyway. So no rush.

I'm really liking the extension!

how do you do [[filenames with spaces]]?

Most markdown extensions force you to use [[dashes-in-filenames]] but from your help page

https://github.com/svsool/vscode-memo/tree/master/help

it appears that yours does not.

However, when I install your extension (plus the Markdown Preview Enhanced extension), I still get the error when I click on the [[name of some file]] link in the preview pane that the file does not exist and its looking for [[name_of_some_file]] instead of the one with the spaces.

Can you explain how to do this for non-programmers (i.e. "for dummys", I'm just looking for a personal wiki note solution and this seems to fit the bill if I can just get it working right)

Thank you,

  • Dave

Backlinks: show surrounding context

The extension's backlinks panel currently displays only context after the link (see #29 (comment)), however in practice the context both before and after the link is relevant when navigating notes by backlinks, especially if the link is used in passing in the middle of a whole sentence (eg: "Here is a sentence which is the whole [[context]] for the link in it"; vscode-memo will display [[context]] for the link in it in backlinks panel, which is obviously incomplete).

Tags support

According to comparison with foam there is no tags support in vscode-memo.
Can we add this feature to roadmap?

Feature Request: option to rename link to rename file and other references to the file

After reviewing the resume, I see that when a file is renamed, references to it from other files are renamed accordingly. I think it would also be nice to have a hyperlink in the pop-up when you hover over a link to rename the corresponding file and other references to it. I think it would work really great for renaming images and other attachments in the future more easily.

Convert Embedded Notes to Actual Text

I have many small notes that serve as reference material, that I then join into new notes/essays via embedding their links. I would love to be able to convert these embedded links into actual text that can be edited and stored as a permanent new note.

Open link keystroke fails to activate on nonexistent links due to when expression

The open link command, if invoked by a keystroke on a link that does not yet have a corresponding file, fails to execute due to the refUnderCursorExists constraint. If the command is ran manually (through the command pallet) it runs fine.

I'm not very experienced with the vscode extension API, but my suspicion is is it fails because getRefUriUnderCursor only looks through existing files for references. The actual file creation happens in openDocumentByReference.

I'd be willing to do a PR, but I don't really know what needs changing. If you want a PR, give me some pointers on how this needs to be fixed and I'll try.

Add command for New Note

It would be great to have a keyboard shortcut mapped to a New Markdown Note command. I am coming from Foam and this is a very useful function as I don't always want to create a note from a new link.

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.