{"format":1,"manifest":{"name":"hello","publisher":"vyloxi","version":"1.1.0","displayName":"Hello Ferrum","description":"The example extension: a greeting command, a live word counter in the status bar and a panel with page statistics.","engines":{"ferrum":"^0.1.0"},"categories":["Tools"],"icon":"icon.png","repository":"https://github.com/voukengdongmofrankysteve/ferrum-market","license":"MIT","main":"extension.js","activationEvents":["onStartup"],"permissions":[],"contributes":{"commands":[{"command":"hello.say","title":"Say Hello","category":"Hello Ferrum"},{"command":"hello.upper","title":"Make Selection Upper Case","category":"Hello Ferrum"},{"command":"hello.stats","title":"Show Page Statistics","category":"Hello Ferrum"}],"keybindings":[{"command":"hello.say","key":"Ctrl+Alt+H"},{"command":"hello.upper","key":"Ctrl+Alt+U"}],"configuration":{"title":"Hello Ferrum","properties":{"hello.greeting":{"type":"string","default":"Hello","description":"The word used to greet."},"hello.loud":{"type":"boolean","default":false,"description":"Greet in capital letters."},"hello.counter":{"type":"boolean","default":true,"description":"Show the word counter in the status bar."}}}}},"files":{"icon.png":{"encoding":"base64","content":"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"},"extension.js":{"encoding":"utf8","content":"// Hello Ferrum: a small tour of the extension API.\n// Docs: https://ferrum.vyloxi.com/docs/api\n\nconst words = (text) => (text.match(/\\S+/g) || []).length;\n\nexports.activate = function (context) {\n  // 1. A command with an input box and a setting.\n  context.subscriptions.push(\n    ferrum.commands.register('hello.say', async () => {\n      const name = await ferrum.window.showInputBox({ prompt: 'Who should I greet?', value: 'world' });\n      if (name === undefined) return; // the person pressed Escape\n      let text = ferrum.settings.get('hello.greeting') + ', ' + name + '!';\n      if (ferrum.settings.get('hello.loud')) text = text.toUpperCase();\n      ferrum.window.showMessage(text);\n    }),\n  );\n\n  // 2. A command that edits the open file. One undoable step.\n  context.subscriptions.push(\n    ferrum.commands.register('hello.upper', async () => {\n      const doc = await ferrum.editor.active();\n      if (!doc || !doc.selectedText) return ferrum.window.showMessage('Select some text first.', 'warn');\n      await ferrum.editor.insert(doc.selectedText.toUpperCase());\n    }),\n  );\n\n  // 3. A status bar item that follows the open file.\n  const refresh = async () => {\n    if (!ferrum.settings.get('hello.counter')) return ferrum.window.setStatusBar('hello.words', { text: '' }) && undefined;\n    const doc = await ferrum.editor.active();\n    ferrum.window.setStatusBar('hello.words', {\n      text: doc ? words(doc.text) + ' words' : 'no file',\n      tooltip: 'Click for page statistics',\n      command: 'hello.stats',\n    });\n  };\n  context.subscriptions.push(ferrum.events.on('activeChanged', refresh), ferrum.events.on('save', refresh), ferrum.events.on('settingsChanged', refresh));\n  refresh();\n\n  // 4. A panel with HTML, talking to the extension with messages.\n  context.subscriptions.push(\n    ferrum.commands.register('hello.stats', async () => {\n      const panel = await ferrum.window.showPanel({\n        title: 'Page statistics',\n        html: `\n          <h2>Page statistics</h2>\n          <p id=\"out\">Loading...</p>\n          <button id=\"again\">Count again</button>\n          <script>\n            const out = document.getElementById('out');\n            document.getElementById('again').onclick = () => ferrumPanel.postMessage({ type: 'count' });\n            ferrumPanel.onMessage((m) => { if (m.type === 'result') out.textContent = m.text; });\n            ferrumPanel.postMessage({ type: 'count' });\n          </script>`,\n      });\n      panel.onMessage(async (m) => {\n        if (m.type !== 'count') return;\n        const doc = await ferrum.editor.active();\n        panel.postMessage({\n          type: 'result',\n          text: doc ? doc.name + ': ' + doc.lineCount + ' lines, ' + words(doc.text) + ' words, ' + doc.text.length + ' characters.' : 'Open a file first.',\n        });\n      });\n    }),\n  );\n};\n\nexports.deactivate = function () {};\n"},"README.md":{"encoding":"utf8","content":"# Hello Ferrum\n\nThe example extension for Ferrum. It is small on purpose: read `extension.js` next to this page to see how each feature is used. The source is in the [ferrum-market repository](https://github.com/voukengdongmofrankysteve/ferrum-market).\n\n- **Hello: Say Hello** asks for a name and greets it. The greeting word and loud mode are settings.\n- **Hello: Make Selection Upper Case** changes the selected text, as one undoable edit.\n- A **word counter** in the status bar follows the open file. Click it to open the statistics.\n- **Hello: Show Page Statistics** opens a panel with lines, words and characters of the open file.\n\n## Make your own\n\nRead the [documentation](https://ferrum.vyloxi.com/docs/getting-started), copy this folder, change `publisher` and `name` in `ferrum.json`, and publish it.\n\nNo permissions needed.\n"}}}