From 8914fccaba8655eb00f5809423c8ab75e0551acc Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Sat, 12 Jun 2021 20:39:45 -0700 Subject: [PATCH 01/11] Writing to file off-screen so it displays upon open Working around a bug/feature where the appendParagraph was not showing up in the Editor. It's better this way anyway, because I can ask the user whether to open it or not. :) --- jgclark.NoteHelpers/noteHelpers.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 22e651528..1879c74ae 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -65,13 +65,19 @@ async function showMessage(message, confirmTitle = 'OK') { return await CommandBar.showOptions([confirmTitle], message) } +// Show feedback Yes/No Question via Command Bar (@dwertheimer) +async function showMessageYesNo(message, choicesArray = ['Yes', 'No']) { + const answer = await CommandBar.showOptions(choicesArray, message) + return choicesArray[answer.index] +} + // Find a unique note title/filename so backlinks can work properly (@dwertheimer) function getUniqueNoteTitle(title) { let i = 0, res = [] while (++i === 1 || res.length > 0) { newtitle = i === 1 ? title : `${title} ${i}` - res = DataStore.projectNoteByTitle(newtitle,true,false) + res = DataStore.projectNoteByTitle(newtitle, true, false) } return newtitle } @@ -242,6 +248,8 @@ async function newNoteFromSelection() { // const origFileType = Editor.note.type //either "Notes" or "Calendar" const filename = DataStore.newNote(title, currentFolder) ?? '' + const newNote = await DataStore.projectNoteByFilename(filename) + const iblq = await CommandBar.showOptions( ['Yes', 'No'], 'Insert link to new file where selection was?', @@ -255,10 +263,11 @@ async function newNoteFromSelection() { Editor.replaceSelectionWithText(``) } } - await Editor.openNoteByFilename(filename) if (insertBackLink) - Editor.note.appendParagraph(`From [[${origFile}]]:`, 'empty') - Editor.note.appendParagraph(movedText, 'empty') + newNote.appendParagraph(`From [[${origFile}]]:`, 'empty') + newNote.appendParagraph(movedText, 'empty') + if ((await showMessageYesNo('New Note created. Open it now?')) === 'Yes') + await Editor.openNoteByFilename(filename) } else { console.log('\tError: undefined or empty title') } From b5665270e8b20210eb85859d1a81041f71d314c0 Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Sat, 12 Jun 2021 20:45:58 -0700 Subject: [PATCH 02/11] Updated version to 0.9.1 --- jgclark.NoteHelpers/README.md | 3 +++ jgclark.NoteHelpers/noteHelpers.js | 2 +- jgclark.NoteHelpers/plugin.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jgclark.NoteHelpers/README.md b/jgclark.NoteHelpers/README.md index af9058f72..2098a2897 100644 --- a/jgclark.NoteHelpers/README.md +++ b/jgclark.NoteHelpers/README.md @@ -20,6 +20,9 @@ Templates should normally end with a linefeed character (`\n`). ## History +### v0.9.1, 12.6.2021 +- change: write text offscreen and ask user if they want to open newly created file + ### v0.9.0, 12.6.2021 - [add]: **/nns** command to add a new note from selection (and leave link to it in its place) (@dwertheimer) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 1879c74ae..cbbd6bd70 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -3,7 +3,7 @@ // Note Helpers plugin for NotePlan // Jonathan Clark & Eduard Metzger // /nns by @dwertheimer -// v0.9.0, 1.6.2021 +// v0.9.1, 1.6.2021 //-------------------------------------------------------------------------------------------------------------------- // Globals diff --git a/jgclark.NoteHelpers/plugin.json b/jgclark.NoteHelpers/plugin.json index 478c762fe..f3bdb41a3 100644 --- a/jgclark.NoteHelpers/plugin.json +++ b/jgclark.NoteHelpers/plugin.json @@ -6,7 +6,7 @@ "plugin.icon": "", "plugin.author": "Jonathan Clark & Eduard Metzger", "plugin.url": "https://github.com/NotePlan/plugins/tree/main/jgclark.NoteHelpers/", - "plugin.version": "0.9.0", + "plugin.version": "0.9.1", "plugin.changelog": "See plugin README.md", "plugin.dependencies": [], "plugin.script": "noteHelpers.js", From 308d00a8cf64fb0efe57bafacaa87d6d984b21bc Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Sun, 13 Jun 2021 07:44:46 -0700 Subject: [PATCH 03/11] minor clean-up No functional changes. Just making the Linter happier --- jgclark.NoteHelpers/noteHelpers.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index cbbd6bd70..0d4ee9542 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -74,12 +74,13 @@ async function showMessageYesNo(message, choicesArray = ['Yes', 'No']) { // Find a unique note title/filename so backlinks can work properly (@dwertheimer) function getUniqueNoteTitle(title) { let i = 0, - res = [] + res = [], + newTitle = title while (++i === 1 || res.length > 0) { - newtitle = i === 1 ? title : `${title} ${i}` - res = DataStore.projectNoteByTitle(newtitle, true, false) + newTitle = i === 1 ? title : `${title} ${i}` + res = DataStore.projectNoteByTitle(newTitle, true, false) } - return newtitle + return newTitle } //------------------------------------------------------------------ @@ -263,11 +264,15 @@ async function newNoteFromSelection() { Editor.replaceSelectionWithText(``) } } - if (insertBackLink) + if (insertBackLink) { newNote.appendParagraph(`From [[${origFile}]]:`, 'empty') + } newNote.appendParagraph(movedText, 'empty') - if ((await showMessageYesNo('New Note created. Open it now?')) === 'Yes') + if ( + (await showMessageYesNo('New Note created. Open it now?')) === 'Yes' + ) { await Editor.openNoteByFilename(filename) + } } else { console.log('\tError: undefined or empty title') } From 3aaa47ea7df9d970e79876588ae3e42911062309 Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Sun, 13 Jun 2021 08:44:13 -0700 Subject: [PATCH 04/11] Refining the title suggestions If item is a todo or list, etc. then don't delete it after using it for the title --- jgclark.NoteHelpers/noteHelpers.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 0d4ee9542..4bed5f3ca 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -206,16 +206,25 @@ globalThis.setTitleFromYAML = setTitleFromYAML // Create new note from currently selected text // and (optionally) leave backlink to it where selection was async function newNoteFromSelection() { - const { selectedLinesText, selectedText } = Editor - console.log('\nnewNoteFromSelection (running):') + const { selectedLinesText, selectedText, selectedParagraphs } = Editor + console.log( + `\nnewNoteFromSelection (running) ${selectedParagraphs.length} selected:`, + ) let currentFolder = '' if (selectedLinesText.length && selectedText !== '') { // Get title for this note - const stripHashes = /^\s*(#)* *(.*)/ - const firstLineArray = stripHashes.exec(selectedLinesText[0]) - const strippedFirstLine = - firstLineArray.length === 3 ? firstLineArray[2] : '' + console.log( + `1st Para Type = ${selectedParagraphs[0].type} = "${selectedParagraphs[0].content}"`, + ) + // const stripHashes = /^\s*(#)* *(.*)/ + // const firstLineArray = stripHashes.exec(selectedLinesText[0]) + // const strippedFirstLine = + // firstLineArray.length === 3 ? firstLineArray[2] : '' + + const isTextContent = + ['title', 'text', 'empty'].indexOf(selectedParagraphs[0].type) >= 0 + const strippedFirstLine = selectedParagraphs[0].content let title = await CommandBar.showInput( 'Title of new note ([enter] to use text below)', strippedFirstLine, @@ -223,7 +232,9 @@ async function newNoteFromSelection() { // If user just hit [enter], then use the first line as suggested if (!title) { title = strippedFirstLine - selectedLinesText.shift() + if (isTextContent) { + selectedLinesText.shift() + } } const movedText = selectedLinesText.join('\n') const uniqueTitle = getUniqueNoteTitle(title) From 0a802eeb7107f247f198286183b737b665dcd16e Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Sun, 13 Jun 2021 23:59:14 -0700 Subject: [PATCH 05/11] Added debug/testing code Stuck on how to open a file that's in a folder. Pushing code so Jonathan can see it with the console logs. --- jgclark.NoteHelpers/README.md | 2 +- jgclark.NoteHelpers/noteHelpers.js | 70 ++++++++++++++++++++---------- jgclark.NoteHelpers/plugin.json | 2 +- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/jgclark.NoteHelpers/README.md b/jgclark.NoteHelpers/README.md index 2098a2897..7b9030ae0 100644 --- a/jgclark.NoteHelpers/README.md +++ b/jgclark.NoteHelpers/README.md @@ -20,7 +20,7 @@ Templates should normally end with a linefeed character (`\n`). ## History -### v0.9.1, 12.6.2021 +### v0.9.2, 13.6.2021 - change: write text offscreen and ask user if they want to open newly created file ### v0.9.0, 12.6.2021 diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 4bed5f3ca..b1fc4a40a 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -3,7 +3,7 @@ // Note Helpers plugin for NotePlan // Jonathan Clark & Eduard Metzger // /nns by @dwertheimer -// v0.9.1, 1.6.2021 +// v0.9.2, 1.6.2021 //-------------------------------------------------------------------------------------------------------------------- // Globals @@ -206,16 +206,18 @@ globalThis.setTitleFromYAML = setTitleFromYAML // Create new note from currently selected text // and (optionally) leave backlink to it where selection was async function newNoteFromSelection() { + const version = `0.9.2` + console.log(`Running v${version}`) const { selectedLinesText, selectedText, selectedParagraphs } = Editor console.log( - `\nnewNoteFromSelection (running) ${selectedParagraphs.length} selected:`, + `\nnewNoteFromSelection (running v${version}) ${selectedParagraphs.length} selected:`, ) let currentFolder = '' if (selectedLinesText.length && selectedText !== '') { // Get title for this note console.log( - `1st Para Type = ${selectedParagraphs[0].type} = "${selectedParagraphs[0].content}"`, + `\t1st Para Type = ${selectedParagraphs[0].type} = "${selectedParagraphs[0].content}"`, ) // const stripHashes = /^\s*(#)* *(.*)/ // const firstLineArray = stripHashes.exec(selectedLinesText[0]) @@ -253,36 +255,56 @@ async function newNoteFromSelection() { // no Folders so go to root currentFolder = '/' } + console.log(`\tcurrentFolder=${currentFolder}`) if (title) { // Create new note in the specific folder const origFile = Editor.note.title || Editor.note.filename // Calendar notes have no title // const origFileType = Editor.note.type //either "Notes" or "Calendar" + console.log(`\torigFile:${origFile}`) + const filename = (await DataStore.newNote(title, currentFolder)) ?? '' + console.log(`\tnewNote returned Filename:${filename}`) + const fullPath = `${ + currentFolder !== '/' ? currentFolder + '/' : '' + }${filename}` + console.log(`\tAbout to open filename: "${fullPath}"`) + /* + // make a new note for this + let noteFilename = await DataStore.newNote(title, pref_folderToStore); + console.log(`\tnewNote filename: ${noteFilename}`); + noteFilename = `${pref_folderToStore}/${noteFilename}` ?? '(error)'; // NB: filename here = folder + filename - const filename = DataStore.newNote(title, currentFolder) ?? '' - const newNote = await DataStore.projectNoteByFilename(filename) + */ + const newNote = await DataStore.projectNoteByFilename(fullPath) + if (newNote) { + console.log(`\tnewNote=${newNote}\n\t${newNote.title}`) + console.log(`\tcontent=${newNote.content}`) - const iblq = await CommandBar.showOptions( - ['Yes', 'No'], - 'Insert link to new file where selection was?', - ) - const insertBackLink = iblq.index === 0 - if (Editor.replaceSelectionWithText) { - // for compatibility, make sure the function exists + const iblq = await CommandBar.showOptions( + ['Yes', 'No'], + 'Insert link to new file where selection was?', + ) + const insertBackLink = iblq.index === 0 + if (Editor.replaceSelectionWithText) { + // for compatibility, make sure the function exists + if (insertBackLink) { + Editor.replaceSelectionWithText(`[[${title}]]`) + } else { + Editor.replaceSelectionWithText(``) + } + } if (insertBackLink) { - Editor.replaceSelectionWithText(`[[${title}]]`) - } else { - Editor.replaceSelectionWithText(``) + newNote.appendParagraph(`From [[${origFile}]]:`, 'text') } - } - if (insertBackLink) { - newNote.appendParagraph(`From [[${origFile}]]:`, 'empty') - } - newNote.appendParagraph(movedText, 'empty') - if ( - (await showMessageYesNo('New Note created. Open it now?')) === 'Yes' - ) { - await Editor.openNoteByFilename(filename) + newNote.appendParagraph(movedText, 'empty') + if ( + (await showMessageYesNo('New Note created. Open it now?')) === 'Yes' + ) { + await Editor.openNoteByFilename(filename) + } + } else { + console.log(`\Could not open file: "${fullPath}"`) + showMessage(`Could not open file ${fullPath}`) } } else { console.log('\tError: undefined or empty title') diff --git a/jgclark.NoteHelpers/plugin.json b/jgclark.NoteHelpers/plugin.json index f3bdb41a3..affe2af65 100644 --- a/jgclark.NoteHelpers/plugin.json +++ b/jgclark.NoteHelpers/plugin.json @@ -6,7 +6,7 @@ "plugin.icon": "", "plugin.author": "Jonathan Clark & Eduard Metzger", "plugin.url": "https://github.com/NotePlan/plugins/tree/main/jgclark.NoteHelpers/", - "plugin.version": "0.9.1", + "plugin.version": "0.9.2", "plugin.changelog": "See plugin README.md", "plugin.dependencies": [], "plugin.script": "noteHelpers.js", From 06f5ded02f2cbd93da61197ea3104670167f8f26 Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 09:05:44 -0700 Subject: [PATCH 06/11] Adding test code for @EduardMe debugging testing projectNoteByFilename --- jgclark.NoteHelpers/noteHelpers.js | 45 ++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index b1fc4a40a..4861b403c 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -264,18 +264,45 @@ async function newNoteFromSelection() { console.log(`\torigFile:${origFile}`) const filename = (await DataStore.newNote(title, currentFolder)) ?? '' console.log(`\tnewNote returned Filename:${filename}`) - const fullPath = `${ + + // Start Testing/debugging here + const noteOpener = async function (fullPath, desc) { + console.log(`\tAbout to open filename: "${fullPath}" (${desc})`) + const newNote = await DataStore.projectNoteByFilename(fullPath) + if (newNote) { + console.log(`\tWorked! ${fullPath} (${desc} version)`) + } else { + console.log( + `\tDidn't work! ${fullPath} (${desc}) returned ${newNote}`, + ) + } + return newNote + } + let fullPath = `${ currentFolder !== '/' ? currentFolder + '/' : '' }${filename}` - console.log(`\tAbout to open filename: "${fullPath}"`) - /* - // make a new note for this - let noteFilename = await DataStore.newNote(title, pref_folderToStore); - console.log(`\tnewNote filename: ${noteFilename}`); - noteFilename = `${pref_folderToStore}/${noteFilename}` ?? '(error)'; // NB: filename here = folder + filename - */ - const newNote = await DataStore.projectNoteByFilename(fullPath) + let newNote = await noteOpener(fullPath, 'no leading slash') + if (!newNote) { + fullPath = `${ + currentFolder !== '/' ? '/' + currentFolder + '/' : '' + }${filename}` + newNote = await noteOpener(fullPath, 'with leading slash') + } + if (!newNote) { + newNote = await noteOpener( + `${currentFolder}/${filename}`, + 'Jonathan way', + ) + } + if (!newNote) { + newNote = await noteOpener( + `${filename}`, + 'no folder path, filename only', + ) + } + // let newNote = await DataStore.projectNoteByFilename(fullPath) + if (newNote) { console.log(`\tnewNote=${newNote}\n\t${newNote.title}`) console.log(`\tcontent=${newNote.content}`) From ba73292a85a9218370b45743131d0429fccbec5b Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 09:18:11 -0700 Subject: [PATCH 07/11] trying noteByFilename too Still not working --- jgclark.NoteHelpers/noteHelpers.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 4861b403c..da7b5227b 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -266,9 +266,15 @@ async function newNoteFromSelection() { console.log(`\tnewNote returned Filename:${filename}`) // Start Testing/debugging here - const noteOpener = async function (fullPath, desc) { + const noteOpener = async function ( + fullPath, + desc, + useProjNoteByFilename = true, + ) { console.log(`\tAbout to open filename: "${fullPath}" (${desc})`) - const newNote = await DataStore.projectNoteByFilename(fullPath) + const newNote = (await useProjNoteByFilename) + ? DataStore.projectNoteByFilename(fullPath) + : DataStore.noteByFilename(fullPath, 'Notes') if (newNote) { console.log(`\tWorked! ${fullPath} (${desc} version)`) } else { @@ -301,8 +307,19 @@ async function newNoteFromSelection() { 'no folder path, filename only', ) } + if (!newNote) { + newNote = await noteOpener( + `${currentFolder !== '/' ? currentFolder + '/' : ''}${filename}`, + 'using noteByFilename Instead', + false, + ) + } + // let newNote = await DataStore.projectNoteByFilename(fullPath) + if (!newNote) { + } + if (newNote) { console.log(`\tnewNote=${newNote}\n\t${newNote.title}`) console.log(`\tcontent=${newNote.content}`) From e3ee670861bb413d77ad2ca519f3144fdce92769 Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 09:38:11 -0700 Subject: [PATCH 08/11] Using noteByFilename logging also --- jgclark.NoteHelpers/noteHelpers.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index da7b5227b..fbdc2cf30 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -271,12 +271,16 @@ async function newNoteFromSelection() { desc, useProjNoteByFilename = true, ) { - console.log(`\tAbout to open filename: "${fullPath}" (${desc})`) + console.log( + `\tAbout to open filename: "${fullPath}" (${desc}) using ${ + useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' + }`, + ) const newNote = (await useProjNoteByFilename) ? DataStore.projectNoteByFilename(fullPath) : DataStore.noteByFilename(fullPath, 'Notes') if (newNote) { - console.log(`\tWorked! ${fullPath} (${desc} version)`) + console.log(`\tWorked! ${fullPath} (${desc} version) `) } else { console.log( `\tDidn't work! ${fullPath} (${desc}) returned ${newNote}`, From 4417af88dd4ad36e61880dc59a9c673fd3216cda Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 10:10:38 -0700 Subject: [PATCH 09/11] Added one more test --- jgclark.NoteHelpers/noteHelpers.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index fbdc2cf30..d36450446 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -280,10 +280,10 @@ async function newNoteFromSelection() { ? DataStore.projectNoteByFilename(fullPath) : DataStore.noteByFilename(fullPath, 'Notes') if (newNote) { - console.log(`\tWorked! ${fullPath} (${desc} version) `) + console.log(`\t\tWorked! ${fullPath} (${desc} version) `) } else { console.log( - `\tDidn't work! ${fullPath} (${desc}) returned ${newNote}`, + `\t\tDidn't work! ${fullPath} (${desc}) returned ${newNote}`, ) } return newNote @@ -318,7 +318,15 @@ async function newNoteFromSelection() { false, ) } - + if (!newNote) { + newNote = await noteOpener( + `${ + currentFolder !== '/' ? '/' + currentFolder + '/' : '' + }${filename}`, + 'using noteByFilename Instead, leading slash', + false, + ) + } // let newNote = await DataStore.projectNoteByFilename(fullPath) if (!newNote) { From 226974f51b87e00fbde65c8dd1d1f1aa1d21d839 Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 10:15:04 -0700 Subject: [PATCH 10/11] log tweak --- jgclark.NoteHelpers/noteHelpers.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index d36450446..091e905af 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -283,7 +283,9 @@ async function newNoteFromSelection() { console.log(`\t\tWorked! ${fullPath} (${desc} version) `) } else { console.log( - `\t\tDidn't work! ${fullPath} (${desc}) returned ${newNote}`, + `\t\tDidn't work! ${ + useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' + } returned ${newNote}`, ) } return newNote From c5898b10caf73d181aac1bff00fd3a72030e876c Mon Sep 17 00:00:00 2001 From: David Wertheimer Date: Mon, 14 Jun 2021 20:22:43 -0700 Subject: [PATCH 11/11] Workarounds for API cache issue on projectNoteByFilename Moved question in the middle as a work-around so it should work on / and folder use cases. @jgclark pls let me know if you find anything else --- jgclark.NoteHelpers/noteHelpers.js | 113 ++++++++++------------------- 1 file changed, 38 insertions(+), 75 deletions(-) diff --git a/jgclark.NoteHelpers/noteHelpers.js b/jgclark.NoteHelpers/noteHelpers.js index 091e905af..71f053835 100644 --- a/jgclark.NoteHelpers/noteHelpers.js +++ b/jgclark.NoteHelpers/noteHelpers.js @@ -1,4 +1,4 @@ -// @flow +// @ flow //-------------------------------------------------------------------------------------------------------------------- // Note Helpers plugin for NotePlan // Jonathan Clark & Eduard Metzger @@ -201,6 +201,28 @@ function setTitleFromYAML() { } globalThis.setTitleFromYAML = setTitleFromYAML +// Start Testing/debugging here +async function noteOpener(fullPath, desc, useProjNoteByFilename = true) { + console.log( + `\tAbout to open filename: "${fullPath}" (${desc}) using ${ + useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' + }`, + ) + const newNote = (await useProjNoteByFilename) + ? DataStore.projectNoteByFilename(fullPath) + : DataStore.noteByFilename(fullPath, 'Notes') + if (newNote) { + console.log(`\t\tWorked! ${fullPath} (${desc} version) `) + } else { + console.log( + `\t\tDidn't work! ${ + useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' + } returned ${newNote}`, + ) + } + return newNote +} + //------------------------------------------------------------------ // @dwertheimer based on @jgclark's newNote // Create new note from currently selected text @@ -265,83 +287,23 @@ async function newNoteFromSelection() { const filename = (await DataStore.newNote(title, currentFolder)) ?? '' console.log(`\tnewNote returned Filename:${filename}`) - // Start Testing/debugging here - const noteOpener = async function ( - fullPath, - desc, - useProjNoteByFilename = true, - ) { - console.log( - `\tAbout to open filename: "${fullPath}" (${desc}) using ${ - useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' - }`, - ) - const newNote = (await useProjNoteByFilename) - ? DataStore.projectNoteByFilename(fullPath) - : DataStore.noteByFilename(fullPath, 'Notes') - if (newNote) { - console.log(`\t\tWorked! ${fullPath} (${desc} version) `) - } else { - console.log( - `\t\tDidn't work! ${ - useProjNoteByFilename ? 'projectNoteByFilename' : 'noteByFilename' - } returned ${newNote}`, - ) - } - return newNote - } - let fullPath = `${ - currentFolder !== '/' ? currentFolder + '/' : '' + const fullPath = `${ + currentFolder !== '/' ? `${currentFolder}/` : '' }${filename}` - let newNote = await noteOpener(fullPath, 'no leading slash') - if (!newNote) { - fullPath = `${ - currentFolder !== '/' ? '/' + currentFolder + '/' : '' - }${filename}` - newNote = await noteOpener(fullPath, 'with leading slash') - } - if (!newNote) { - newNote = await noteOpener( - `${currentFolder}/${filename}`, - 'Jonathan way', - ) - } - if (!newNote) { - newNote = await noteOpener( - `${filename}`, - 'no folder path, filename only', - ) - } - if (!newNote) { - newNote = await noteOpener( - `${currentFolder !== '/' ? currentFolder + '/' : ''}${filename}`, - 'using noteByFilename Instead', - false, - ) - } - if (!newNote) { - newNote = await noteOpener( - `${ - currentFolder !== '/' ? '/' + currentFolder + '/' : '' - }${filename}`, - 'using noteByFilename Instead, leading slash', - false, - ) - } - // let newNote = await DataStore.projectNoteByFilename(fullPath) + // This question needs to be here after newNote and before noteOpener + // to force a cache refresh after newNote. This API bug will eventually be fixed. + const iblq = await CommandBar.showOptions( + ['Yes', 'No'], + 'Insert link to new file where selection was?', + ) - if (!newNote) { - } + const newNote = await noteOpener(fullPath, 'no leading slash') if (newNote) { console.log(`\tnewNote=${newNote}\n\t${newNote.title}`) console.log(`\tcontent=${newNote.content}`) - const iblq = await CommandBar.showOptions( - ['Yes', 'No'], - 'Insert link to new file where selection was?', - ) const insertBackLink = iblq.index === 0 if (Editor.replaceSelectionWithText) { // for compatibility, make sure the function exists @@ -351,18 +313,19 @@ async function newNoteFromSelection() { Editor.replaceSelectionWithText(``) } } + + newNote.appendParagraph(movedText, 'empty') if (insertBackLink) { - newNote.appendParagraph(`From [[${origFile}]]:`, 'text') + newNote.appendParagraph(`^^^ Moved from [[${origFile}]]:`, 'text') } - newNote.appendParagraph(movedText, 'empty') if ( (await showMessageYesNo('New Note created. Open it now?')) === 'Yes' ) { - await Editor.openNoteByFilename(filename) + await Editor.openNoteByFilename(fullPath) } } else { - console.log(`\Could not open file: "${fullPath}"`) - showMessage(`Could not open file ${fullPath}`) + console.log(`\tCould not open file: "${fullPath}"`) + showMessage(`\tCould not open file ${fullPath}`) } } else { console.log('\tError: undefined or empty title')