phibr0 / obsidian-dictionary Goto Github PK
View Code? Open in Web Editor NEWDictionary - Obsidian Plugin | This plugin adds a multilingual dictionary to the Obsidian note taking tool.
License: GNU Affero General Public License v3.0
Dictionary - Obsidian Plugin | This plugin adds a multilingual dictionary to the Obsidian note taking tool.
License: GNU Affero General Public License v3.0
I just ran across a valid, but odd lookup: plural of "second" → "seconds" brought up odd-looking (at first glance) suggestions, and the lookup didn’t recognise the plural form:
I’m sure the suggestion is valid (like in "I second that motion"), but it looks odd at the first glance.
Don’t the dictionary APIs support plural forms?
In _constants.ts
, there is a mixture of codes for language, like
"en_US": "English (US)",
"en_GB": "English (UK)",
"pt-BR": "Brazilian Portuguese",
Some are using an underscore _
as separator between language and country, some use a hyphen -
. Although some OSes use the underscore, I’d suggest using RFC 5646 codes instead (those with a hyphen).
For non-English speakers it might also be nice to use localized language names, like the Obsidian language selector does. Example:
export const LANGUAGES = {
"en_US": "English (US)",
"hi": "हिन्दी",
"es": "Español",
"fr": "Français",
"ja": "日本語",
"ru": "Русский",
"en_GB": "English (UK)",
"de": "Deutsch",
"it": "Italiano",
"ko": "한국어 (韓國語), 조선말 (朝鮮語)",
"pt-BR": "Português do Brasil",
"ar": "اَلْعَرَبِيَّةُ",
"tr": "Türkçe"
}
See meetDeveloper/freeDictionaryAPI@e1a9c6c and meetDeveloper/freeDictionaryAPI#102 for further reference.
{{lang}}
in the filename prefix/suffix currently returns only the "…as spoken in" part of a RFC1766 language identifier, like US
.
Could we please have return {{lang}}
a complete RFC1766 language code, like en-US
, ru
, pt-BR
?
This is the way the HTML lang
attribute works, and so {{lang}}
could directly be used with that (in the template, for instance).
I have some troubleshooting on how to use it on my iPod Touch, not on desktop. Could you show me how to use it on my mobile
Hello! Firstly, WOW! I just want to thank you and @mgmeyers for this fantastic plugin. I work on writing assignments in Obsidian almost every day and this has been a lifesaver for me. I just wanted to highlight a small detail change, nothing crazy. The icons look a bit muddied while using certain themes. They're a bit hard to see, especially in a darker theme. So I think the icons would look better with a fill opacity of 0.0. I added a few screenshots to show this better. Thanks so much! :)
It would be nice to be able to use subfolders of the dictionary folder for different languages:
Dictionary
{{lang}}/
Thus, we’d get something like
Dictionary/de
Dictionary/en-US
Dictionary/en-GB
Currently, if trying this on "New Note", it shows a modal saying file exists (it did, in Dictionary
). When I select "Yes, overwrite", instead of creating a new subfolder en-US
, it stays in the modal but seems to affect the synonym list beneath it (seems like clicking "through" the modal).
I’d have expected it
Dictionary/en-US
folder,
Dictionary/en-US
and put the new note there.For people wishing for their Dictionaries named Dictionary en-US
etc., it’d also be helpful to use {{lang}}
in the Dictionary folder name.
The latest release should have been tagged 2.17.5, but it was tagged 1.17.5. This has broken the plugin's automatic updates in Obsidian. It must be manually updated.
https://github.com/phibr0/obsidian-dictionary/releases/download/2.17.5/manifest.json
Failed to load resource: the server responded with a status of 404 ()
Click the plugin's update button in Obsidian's list of community plugins.
The update will install correctly.
No response
No response
No response
Windows
The sidebar shows info for the origin of the word. Is it possible to include this in the note generated for that word?
n/a
copy it over manually
No response
I like to connect this notes to my Anki database via obsidian to Anki plugin. This would help to this end
Thanks
I presume that on overwrite you delete the old file first, then create a new one and open it in a new pane.
Unfortunately, if one happens to be in the "old" note, this results in a "No file is open" pane being left on screen (where the old file was open), and a new pane being created.
Can this easily be solved?
Note for the docs: This allows using Templater code within your template (if Templater is set to activate on new file creation), like for creating a current date stamp in the YAML! Might be beneficial to mention that in the docs.
Here is an example template:
---
# {{notice}}
date: <% tp.date.now() %>
dictionary: {{lang}}
word: "{{word}}"
---
# {{word}}
## {{pronunciationHeader}}
{{phoneticList}}
## {{meaningHeader}}
{{meanings}}
The recent update to the plugin might have caused some issue with the workspace file or the workspaces json file in the .obsidian folder since after installing the update 2.16.5 obsidian just shows a black screen after launching.
No response
No response
No response
No response
No response
Windows
In dace2cb, you require a min version 0.12.11 of Obsidian. This is an insider build that might not be available for weeks for a normal (non-insider) user.
This might stop getting your plugin the attention it deserves. And takes away the possibility for me to test :-(
(if the updater actually cares).
When I look up certain words in the dictionary sidebar, it does not produce a definition. Just the loading wheel turning endlessly without resolve.
Words that are found produce a definition but loading wheel continues to spin after the result is displayed
The synonyms dropdown works when I highlight the word.
Uncaught (in promise) TypeError: Cannot read property 'text' of undefined
at Rr (eval at <anonymous> (app.js:1), <anonymous>:23:33878)
at n (eval at <anonymous> (app.js:1), <anonymous>:23:3244)
at eval (eval at <anonymous> (app.js:1), <anonymous>:23:3513)
Downloaded plugin, updated to 2.18.1
Opened dictionary view
Entered word 'underlined' (without quotes)
Loading wheel spins
Look up 'happy' in dictionary view
Definition of 'happy' comes up
Loading wheel continues to spin
No response
English
Free-Dictionary-API
macOS
So it turns out the Systran api used to detect parts-of-speech is no longer available on rapid api.
I'm putting this here as an FYI, as I think everything still works fine. I'm happy to make a PR to remove it at some point, unless you happen to get around to it first.
When trying to open the dictionary side pane, I get:
app.js:1 Failed to open view TypeError: _a.getElementById is not a function
at append_styles (eval at <anonymous> (app.js:1), <anonymous>:529:75)
at add_css$1 (eval at <anonymous> (app.js:1), <anonymous>:2284:2)
at init (eval at <anonymous> (app.js:1), <anonymous>:1003:22)
at new DictionaryView$1 (eval at <anonymous> (app.js:1), <anonymous>:2923:3)
at DictionaryView.eval (eval at <anonymous> (app.js:1), <anonymous>:3052:26)
at Generator.next (<anonymous>)
at eval (eval at <anonymous> (app.js:1), <anonymous>:31:71)
at new Promise (<anonymous>)
at __awaiter (eval at <anonymous> (app.js:1), <anonymous>:27:12)
at DictionaryView.onOpen (eval at <anonymous> (app.js:1), <anonymous>:3051:16)
(anonymous) @ app.js:1
As silly as it sounds,
The word "Project" is locking things up on Free API
Absolutely no idea why.
Migrate to Obsidians new request API.
https://forum.obsidian.md/t/obsidian-release-v0-12-11-insider-build/21184/2
I couldnt play pronunciations. I thought it is a problem with using proxy but i noticed the link is something like this //ssl.gstatic.com instead of https://ssl which works fine as I tested it. Please fix that misstyping. I can fix it manually in notes but it is not usable in side pane.
Thanks
Currently, I tried creating flashcards of the format
Word
#flashcard
Meaning
But the meaning it takes is a long form. With a lot of headers. If possible can we have a way to just create a flashcard with the most suitable meaning.
Hello, when I try to looking for synonyms, I have nothing and error in console :
VM228:2514 GET https://api.dictionaryapi.dev/api/v2/entries/fr/aux 404
eval @ VM228:2514
eval @ VM228:31
__awaiter @ VM228:27
requestSynonyms @ VM228:2511
eval @ VM228:2698
eval @ VM228:31
__awaiter @ VM228:27
requestSynonyms @ VM228:2697
eval @ VM228:3080
fulfilled @ VM228:28
Promise.then (async)
step @ VM228:30
eval @ VM228:31
__awaiter @ VM228:27
openSynonymPopover @ VM228:3058
SynonymPopover @ VM228:3050
eval @ VM228:3148
a @ app.js:1
setTimeout (async)
a @ app.js:1
setTimeout (async)
l @ app.js:1
VM228:3083 Error requesting synonyms for word aux TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:2519:52)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
title says it, just testing the new release
Did close the pane and reopened it using cmd palette. Also restarted Obsidian after update.
Are there any changes in data.json
? When upgrading from 2.10.0 to 2.11.0, this still contains my old cached definitions, so I assume it is merged somehow or left undisturbed? cache.json
was created, though. Think I should uninstall/reinstall?
Great plug-in! I was wondering if there is any plan to add the Greek dictionary.
Thank you!
Currently, when hitting new note button. It creates the note and opens it in a new tab. I want to have the option to open it in current tab or not open it at all and just creat the note. Opening a new tab messes with my tabs size configuration for some reason.
Thanks
I'd use this plugin super often if it supported either:
Having either of those would make it wonderful!
If someone likes to learn more than one languages like me he needs to keep them in separate decks in Anki. So the template for obsidian to Anki plugin needs to be slightly different.
Thanks in advanced
Considering #37, it would be nice to be able to use {{lang}}
in the template, too, for instance to use the lang
attribute, or at least create YAML like this:
---
# {{notice}}
dictionary: {{lang}}
word: "{{word}}"
---
so the dictionary notes could later be evaluated using Dataview, for instance.
The New Note feature of this plugin works well with a particular use-case of mine, so I appreciate it, but it seems that the template for it can't be edited. I'm hoping that you would allow editing of the template perhaps via the options, like what you see in the Note Refactor plugin.
Similarly, maybe also have the option to change the default file name, like perhaps the user wants to automatically add an emoji or something like that, or the option to have the word's first letter to be capitalized (as it currently is) or not (what I personally prefer).
Hope these are doable and easy to implement, don't want this simple request to cause too much trouble on your part. Thank you so much for what you do!
Just a suggestion: If one uses definition caching, the cache grows rapidly, even after the fix not to double-cache. I don’t think it’s wise to keep all this together with the plugin settings in data.json
.
Instead, I propose to use a separate cache.json
, which would also make the deleting of the cache much easier.
The data file currently uses a lot of space because it is "pretty" JSON. I don’t think users will ever manually edit it, so I also propose to use something like JSON.stringify()
to make it more compact and faster loading.
How do you feel about that?
This is one to think about: Let’s take the word 'human'. In English, this can be a noun as well as an adjective, in German it’s an adjective.
I’m bilingual and switch between English and German quite a lot, so it sometimes happens a word is in both languages, but I still want to make a note of it. When trying this with 'human', the plugin detects the file Human.md
already present in my Dictionary
folder and simply gives an error message Error: File already exists
.
This poses two problems:
I’d propose the following solutions:
Dictionary ({{language}})
and fill in the currently selected dictionary language upon note creation. This would then use folder names like Dictionary (German)
or Dictionary (English (US))
, in my example.Dictionary (en-US)
or Dictionary (de-DE)
. Maybe even with a second template variable like {{lang}}
or something?I know this might not always make sense, but I often run into lookup cases like "Human" which the lookup doesn’t find (although the context menu shows synonyms).
Using the English dictionary, try looking up
If case-insensitive lookup was added, it should follow the usual Unicode rules, because we’ve got too many languages where a simple "ASCII" upper-/lowercase will fail. Don’t know how far JS is in that respect.
I have
Trying to look up "Autogenerated" gives the follwing type error:
Console:
app.js:1 Obsidian Developer Console
main.ts:27 loading markdown-table-editor plugin
main.ts:40 Dataview: Version 0.4.x Loaded
main.ts:77 DiceRoller plugin loaded
main.ts:49 loading Find unlinked files and unresolved links plugin
main.ts:40 loading Hotkeys for templates plugin v1.4.2
main.ts:10 Loading Hotkeys++ plugin
main.ts:125 loading plugin
VM122:2 Loading Obsidian Leaflet v3.24.10
main.ts:55 loading plugin
main.ts:17 Sortable: loading plugin...
main.ts:25 Sortable: loaded plugin.
main.ts:17 Loading snippets plugin
main.ts:27 Loading Pandoc plugin
main.ts:31 Loading status bar pomodoro timer
VM147:4649 loading dictionary
VM148:10348 [Longform] Starting Longform 1.0.3…
main.ts:20 loading open-note-to-window-title plugin
index.ts:356 Dataview: Parsed all file prefixes (0.001s)
main.ts:148 Hotkeys for templates -> active plugins: templater-obsidian,core
VM148:10529 [Longform] Loaded and watching projects.
index.ts:409 Dataview: Initialized CSV row cache (loading 5 CSV files).
index.ts:247 Dataview: Task & metadata parsing queued in 0.001s.
app://ssl.gstatic.com/dictionary/static/sounds/20200429/get--_gb_1.mp3:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
app://ssl.gstatic.com/dictionary/static/sounds/20200429/second--_gb_1.mp3:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:2368 TypeError: (intermediate value).first is not a function
at FreeDictionaryDefinitionProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3627:53)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:2368
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:2368 TypeError: (intermediate value).first is not a function
at FreeDictionaryDefinitionProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3627:53)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:2368
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
VM147:4430 Error requesting synonyms for word Autogenerated TypeError: (intermediate value).first is not a function
at FreeDictionarySynonymProvider.eval (eval at <anonymous> (app.js:1), <anonymous>:3679:57)
at Generator.next (<anonymous>)
at fulfilled (eval at <anonymous> (app.js:1), <anonymous>:28:58)
eval @ VM147:4430
DevTools failed to load SourceMap: Could not parse content for app://obsidian.md/main.js.map: Unexpected end of JSON input
The rationale: Many of us use Dataview to show content in lists and tables. These can’t be seen in edit mode, obviously. Would be nice if words could be clicked in preview mode, and a context menu shown with "lookup". Links might present a problem though—didn’t find a way to highlight part of a link (say, a note’s file name).
Hello! First of all, excellent plugin, it has helped me a lot in the last week. I would like to have the possibility to use the Spanish synonyms provider. At the moment it is only available for English and French.
Thank you very much.
Currently, one may double-click a word, then its synonym would automatically show up in a list below the selected word. Similarly, is it possible to autofill in the selected word in the sidebar (maybe also automatically expand the dictionary sidebar), to be able to automatically look up the word? This way, one may not need to type the word again in the sidebar.
In case that there are users do not want this auto lookup feature, this can be an option in the configuration pane of the plugin.
When activating the plugin in a fresh vault, I get in the Dev Console:
VM203:4243 loading dictionary
DevTools failed to load SourceMap: Could not parse content for app://obsidian.md/main.js.map: Unexpected end of JSON input
It seems to work nevertheless, but the warning is somehow disturbing …
Being able to use Synonym Suggestion without internet connection.
Since almost every other writing related plugin is useable when offline. It will be great to have an offline writing workflow which includes a synonym suggestion feature.
No response
No response
Russian apparently uses the Free Dictionary API but has no synonym provider.
It doesn’t seem to work at all (not even an error message), try words like
Москва
Ру́сский
русский
словарь
язык
Same for Portuguese, word list I tried:
língua
dicionário
brasileiro
brasileira
First of all. Thanks for this great plugin.
I can't get any results when highlighting a text. I works when I search for the stuff on the right pane. Is there anything else I should enable. The synonym suggestion is enabled so I don't know what else I should change
P.s. it is working inside the created notes for words. It is just not working on the rest of the vault
As I understand, currently this plugin could automatically switch languages based on folders. Nevertheless, I have notes in Italian, English and French placed everywhere in every folder of my vault.
What I would like to have is for the plugin to read the lang:
parameter in YAML and consequently set the language for that note.
For example:
lang: it
would set the language of the page in Italian.
Furthermore, it should be possible to set a default language, so that if lang:
is not specified, it is the one chosen to be the main one.
—
Right now I am using the plugin for English notes only.
Current folder setup, to which the YAML setup should be added:
It looks like the cached definitions in data.json
are stored twice.
I attach my data.json
so you can verify:
data.json.zip
Using Obsidian 0.12.10 (installer 0.12.10/AppImage) on Linux Mint 20.2, Dictionary v2.10.0.
Using 2.15.0, English (US), definition & synonym provider "Free Dictionary API", looking up, for instance "right hand", delivers an audio link that’s unplayable, both in pane and generated note, due to the protocol missing:
<source src="//ssl.gstatic.com/dictionary/static/sounds/20200429/right_hand--1_gb_1.4.mp3">
Manually adding the https:
protocol makes it playable.
Since we might encounter APIs that don’t use https:
, it might be clever to check if the returned audio link uses a protocol, if not, add the one used to make the request.
Hello, thank you for this wonderful plug-in.
I learn the language in obsidian, so I often query new words, mark them in the text, and finally use DataView to summarize them.
However, all the words in the dictionary are split into separate markdown files.
As far as I know, DataView will support querying from CSV soon. I think this format may be also suitable for dictionary plugin with a lot of data.
Will the dictionary plug-in consider supporting this format?
The headers 'Pronunciation' and 'Meanings' aren’t translated, and 'New Note' isn’t. All are in 'de.ts', for example.
When I close all open markdown files, this error is thrown:
For the most part, this error doesn't cause any issues, but it will prevent Kanban boards from cleaning up after themselves if they are the last leaf to close.
Uncaught (in promise) TypeError: Cannot read property 'path' of null
at t.getFileCache (app.js:1)
at _t.eval (eval at <anonymous> (app.js:1), <anonymous>:35:4930)
at Generator.next (<anonymous>)
at eval (eval at <anonymous> (app.js:1), <anonymous>:6:982)
at new Promise (<anonymous>)
at _ (eval at <anonymous> (app.js:1), <anonymous>:6:802)
at eval (eval at <anonymous> (app.js:1), <anonymous>:35:4832)
at t.e.tryTrigger (app.js:1)
at t.e.trigger (app.js:1)
at t.trigger (app.js:1)
t.getFileCache @ app.js:1
eval @ VM219:35
eval @ VM219:6
_ @ VM219:6
eval @ VM219:35
e.tryTrigger @ app.js:1
e.trigger @ app.js:1
t.trigger @ app.js:1
t.activeLeafEvents @ app.js:1
a @ app.js:1
setTimeout (async)
l @ app.js:1
t.setActiveLeaf @ app.js:1
t.onLayoutChange @ app.js:1
t.insertChild @ app.js:1
t.createLeafInParent @ app.js:1
t.onLayoutChange @ app.js:1
t.removeChild @ app.js:1
t.detach @ app.js:1
t.detach @ app.js:1
eval @ VM173:71
o @ VM173:23
(anonymous) @ app.js:1
(anonymous) @ app.js:1
Open a single markdown file and close it so that the No file is open
message appears.
No response
No response
No response
No response
macOS
Playing around with the template functionality I noticed that only the first occurrence of a placeholder gets replaced.
Given the following template...
## {{word}} (Glossary)
?
{{meanings}}
—
**Source:**
https://www.google.de/search?q=Wörterbuch#dobs={{word}}
...second {{word}}
placeholder doesn't get replaced currently.
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.