svsool / memo Goto Github PK
View Code? Open in Web Editor NEWMarkdown knowledge base with bidirectional [[link]]s built on top of VSCode
Home Page: https://marketplace.visualstudio.com/items?itemName=svsool.markdown-memo
License: MIT License
Markdown knowledge base with bidirectional [[link]]s built on top of VSCode
Home Page: https://marketplace.visualstudio.com/items?itemName=svsool.markdown-memo
License: MIT License
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?
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.
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.
How to exclude node_modues directory ?
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,
I tried searching for
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
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?
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
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.
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.
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!
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.
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.
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!
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
To reproduce,
Some foo.bar.md
)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!
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.
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.
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:
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:
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.
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.
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,
Verbose title, but basically what it says.
Right now, when you extract a note, you choose a file name and it opens that file with the content extracted.
What I find myself doing is that every time I extract a note, I go back to the place of extraction and add a link (sometimes even a ![[link]] )
Ideally I'd love to have that step be automatically done.
This is not really a bug, rather an inconvenience. If you insert a link that:
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.
There also is https://github.com/foambubble/foam which seems to do something similar. Is there anything particular to diversify memo from foam?
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.
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
.
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.
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?
I (try to) plan an MIT for the next day.
Supporting this additional command would help my flow and I think is in line with the already supported Open Today's note
command.
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.
I'm willing to implement following features:
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
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
If you agree to implement those features, then I need your feedback:
{title}
syntax?# {title}
or any other?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.
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):
I was playing around with some fixes here, and found two that seemed reasonable in use.
shortRef
as the label with longRef
as the item.detail
:const item = new CompletionItem(shortRef, CompletionItemKind.File);
item.detail = longRef;
item.detail
can be expanded:
The problem with this approach is you can't search the file path.
longRef
pathconst 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.
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!
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.
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?
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).
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.
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.
Love Markdown Memo, quite liberating. And while I'm asking for a configuration setting, I love that Markdown Memo is opinionated. Less is more.
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!
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.
Please add a sidebar for searching for a link, and listing documents in the sidebar that mention a linked document in it.
According to comparison with foam there is no tags support in vscode-memo.
Can we add this feature to roadmap?
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).
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!
Similar to images, please allow PDFs and other references to be referred to in the ![[filename.ext]] syntax
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.