Being new to scripting and plug-ins, I am having problems setting up something to archive my cancelled items, I want them to go into a specific Cancelled header section (like Archive done). I looked at Jesse’s archive done code and tried to copy it into a new main.js for a plug-in but it does not work. Do I need to do something else in addition to main.js?
Many thanks.
// MB Testing cancelled items
define(function(require, exports, module) {
'use strict';
var Extensions = require('ft/core/extensions').Extensions;
Extensions.addCommand({
name: 'archive @cancelled',
description: 'Move @cancelled items to its own header section.',
performCommand: function (editor, options) {
var tree = editor.tree();
tree.beginUpdates();
tree.ensureClassified();
var archiveNode = tree.evaluateNodePath("//@line:text = cancelled")[0];
if (!archiveNode) {
archiveNode = createArchiveNode(tree);
tree.appendNode(archiveNode);
}
Node.commonAncestorsForNodes(tree.evaluateNodePath("//@cancelled except //@line:text = Archive//@cancelled")).forEachNodeInSet(function(node) {
archiveNode.insertChildBefore(node, archiveNode.firstChild);
});
tree.endUpdates();
}
});
});
The first goal is for your .ftplugin to show up (without error messages) in FoldingText > Plug-In Manager ( ⌘, )
To go to that stage, you need to add a package.json file to the .ftplugin folder which you have created.
(see file:///Applications/FoldingText.app/Contents/Resources/dist/sdk/docs/tutorial-Plugins.html
)
( FoldingText > Help > Software Development Kit > Documentation )
Yes, I did do that already but I don’t have a Github presence as homepage, just a generic site which is not being used, is that important? No errors when looking at plugin but it doesn’t do what I want (the tagged cancelled items just stay where they are) which is why I assumed there was something else missing.
I think the key may be that the section of Jesse’s todomode.js which you are copying uses some functions whose definitions you haven’t included:
function createArchiveNode()
is defined before your excision,
and similarly using Node.commonAncestorsForNodes()
depends on the
Node = require('ft/core/node').Node,
in Jesse’s variable declarations.
(both towards the top of the page)
Your script is unable to evaluate calls to those functions because it doesn’t yet have access to their definitions.
For a more simply customisable approach, you could look at the script below, and perhaps uncomment the line:
-- property precOptions : {archivetags:{"cancelled"}}
If you want to bypass the menu and make it work only with @cancelled
tags.
https://github.com/RobTrew/txtquery-tools/blob/master/filtering%20in%20the%20editor/ArchiveTagsMenu.applescript
This is great, thanks, it works a treat!
I can’t get the plugin to work yet, guess I need to understand how to run a debug, I’ll have a go
Fixed it, typo as it was case sensitive and I had tagged with @Cancelled and not @cancelled
(I still can’t work out how to run a debug calling the plugin with text but am working on it).