{ "name": "vscode-code-mark-plus", "displayName": "CodeMark+ - TODOs, Annotations & Navigation", "description": "Highlight TODOs, navigate annotations, explore workspace tags, and connect Markdown notes with code using lightweight contextual references.", "version": "1.10.1", "icon": "icon.png", "license": "MIT", "publisher": "imgildev", "author": { "name": "Manuel Gil", "email": "support@imgil.dev", "url": "https://imgil.dev/" }, "sponsor": { "url": "https://github.com/sponsors/ManuelGil" }, "packageManager": "pnpm@10.0.0", "engines": { "vscode": "^1.102.0", "node": ">=22.15.1" }, "categories": [ "Programming Languages", "Other" ], "keywords": [ "todo", "fixme", "annotations", "annotation-navigation", "tag-browser", "tag-navigation", "code-navigation", "markdown-links", "markdown-navigation", "code-references", "code-comments", "comment-templates", "highlighting", "technical-debt", "developer-notes", "workspace-tags", "mustache", "vscode" ], "homepage": "https://github.com/ManuelGil/vscode-code-mark-plus", "repository": { "type": "git", "url": "git+https://github.com/ManuelGil/vscode-code-mark-plus.git" }, "bugs": { "url": "https://github.com/ManuelGil/vscode-code-mark-plus/issues" }, "activationEvents": [ "onStartupFinished" ], "main": "./out/extension.js", "l10n": "./l10n", "files": [ "out", "package*.json", "README.md", "LICENSE", "icon.png", "schemas", "l10n" ], "contributes": { "configuration": { "type": "object", "title": "CodeMark+ Configuration", "properties": { "codeMarkPlus.enable": { "type": "boolean", "default": true, "scope": "resource", "description": "%codeMarkPlus.enable.description%" }, "codeMarkPlus.defaultLanguage": { "type": "string", "default": "javascript", "enum": [ "javascript", "typescript", "java", "csharp", "php", "dart", "python", "cpp", "ruby", "go", "kotlin", "swift", "scala", "lua", "perl", "elixir", "haskell" ], "enumDescriptions": [ "JavaScript", "TypeScript", "Java", "C#", "PHP", "Dart", "Python", "C++", "Ruby", "Go", "Kotlin", "Swift", "Scala", "Lua", "Perl", "Elixir", "Haskell" ], "scope": "resource", "description": "%codeMarkPlus.defaultLanguage.description%" }, "codeMarkPlus.isCommentMessageWrapped": { "type": "boolean", "default": false, "scope": "resource", "description": "%codeMarkPlus.isCommentMessageWrapped.description%" }, "codeMarkPlus.commentDelimiter": { "type": "string", "default": "~", "scope": "resource", "description": "%codeMarkPlus.commentDelimiter.description%" }, "codeMarkPlus.commentMessagePrefix": { "type": "string", "default": "", "scope": "resource", "description": "%codeMarkPlus.commentMessagePrefix.description%" }, "codeMarkPlus.commentMessageSuffix": { "type": "string", "default": ":", "scope": "resource", "description": "%codeMarkPlus.commentMessageSuffix.description%" }, "codeMarkPlus.addEmptyLineBeforeComment": { "type": "boolean", "default": false, "scope": "resource", "description": "%codeMarkPlus.addEmptyLineBeforeComment.description%" }, "codeMarkPlus.addEmptyLineAfterComment": { "type": "boolean", "default": false, "scope": "resource", "description": "%codeMarkPlus.addEmptyLineAfterComment.description%" }, "codeMarkPlus.literalOpen": { "type": "string", "default": "{", "scope": "resource", "description": "%codeMarkPlus.literalOpen.description%" }, "codeMarkPlus.literalClose": { "type": "string", "default": "}", "scope": "resource", "description": "%codeMarkPlus.literalClose.description%" }, "codeMarkPlus.useCurrentPosition": { "type": "boolean", "default": false, "scope": "resource", "description": "%codeMarkPlus.useCurrentPosition.description%" }, "codeMarkPlus.author": { "type": "string", "default": "Unknown", "scope": "resource", "description": "%codeMarkPlus.author.description%" }, "codeMarkPlus.version": { "type": "string", "default": "1.0.0", "scope": "resource", "description": "%codeMarkPlus.version.description%" }, "codeMarkPlus.license": { "type": "string", "default": "MIT", "scope": "resource", "description": "%codeMarkPlus.license.description%" }, "codeMarkPlus.highlightActive": { "type": "boolean", "default": true, "scope": "resource", "description": "%codeMarkPlus.highlightActive.description%" }, "codeMarkPlus.highlightRules": { "type": "array", "items": { "type": "object", "properties": { "keyword": { "type": "string", "description": "%codeMarkPlus.highlightRules.keyword.description%" }, "color": { "type": "string", "description": "%codeMarkPlus.highlightRules.color.description%" }, "bold": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.bold.description%" }, "italic": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.italic.description%" }, "underline": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.underline.description%" }, "matchMode": { "type": "string", "enum": [ "word", "substring", "regex" ], "description": "%codeMarkPlus.highlightRules.matchMode.description%" }, "pattern": { "type": "string", "description": "%codeMarkPlus.highlightRules.pattern.description%" }, "caseSensitive": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.caseSensitive.description%" }, "wholeWord": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.wholeWord.description%" }, "languageIds": { "type": "array", "items": { "type": "string" }, "description": "%codeMarkPlus.highlightRules.languageIds.description%" }, "strikethrough": { "type": "boolean", "description": "%codeMarkPlus.highlightRules.strikethrough.description%" }, "priority": { "type": "number", "description": "%codeMarkPlus.highlightRules.priority.description%" } }, "anyOf": [ { "required": [ "keyword", "color" ] }, { "required": [ "pattern", "color" ] } ] }, "default": [ { "keyword": "TODO", "color": "rgba(255,204,0,0.3)", "bold": true }, { "keyword": "FIXME", "color": "rgba(255,0,0,0.3)", "bold": true, "underline": true }, { "keyword": "NOTE", "color": "rgba(0,255,0,0.3)", "italic": true } ], "scope": "resource", "description": "%codeMarkPlus.highlightRules.description%" }, "codeMarkPlus.specialHighlightDecoration": { "type": "object", "default": { "backgroundColor": "rgba(0,128,255,0.3)", "border": "1px solid blue", "isWholeLine": true }, "scope": "resource", "description": "%codeMarkPlus.specialHighlightDecoration.description%" }, "codeMarkPlus.customTemplates": { "type": "array", "items": { "type": "object", "properties": { "language": { "type": "string", "enum": [ "javascript", "typescript", "java", "csharp", "php", "dart", "python", "cpp", "ruby", "go", "kotlin", "swift", "scala", "lua", "perl", "elixir", "haskell" ], "enumDescriptions": [ "JavaScript", "TypeScript", "Java", "C#", "PHP", "Dart", "Python", "C++", "Ruby", "Go", "Kotlin", "Swift", "Scala", "Lua", "Perl", "Elixir", "Haskell" ], "description": "%codeMarkPlus.customTemplates.language.description%" }, "template": { "type": "array", "description": "%codeMarkPlus.customTemplates.template.description%" } }, "required": [ "language", "template" ] }, "default": [], "scope": "resource", "description": "%codeMarkPlus.customTemplates.description%" }, "codeMarkPlus.files.includedFilePatterns": { "type": "array", "default": [ "**/*{js,ts,md}" ], "scope": "resource", "description": "%codeMarkPlus.files.includedFilePatterns.description%" }, "codeMarkPlus.files.excludedFilePatterns": { "type": "array", "default": [ "**/node_modules/**", "**/.git/**", "**/dist/**", "**/build/**" ], "scope": "resource", "description": "%codeMarkPlus.files.excludedFilePatterns.description%" }, "codeMarkPlus.files.maxSearchRecursionDepth": { "type": "number", "default": 0, "scope": "resource", "description": "%codeMarkPlus.files.maxSearchRecursionDepth.description%" }, "codeMarkPlus.files.supportsHiddenFiles": { "type": "boolean", "default": false, "scope": "resource", "description": "%codeMarkPlus.files.supportsHiddenFiles.description%" }, "codeMarkPlus.files.preserveGitignoreSettings": { "type": "boolean", "default": true, "scope": "resource", "description": "%codeMarkPlus.files.preserveGitignoreSettings.description%" }, "codeMarkPlus.files.showFilePathInResults": { "type": "boolean", "default": true, "scope": "resource", "description": "%codeMarkPlus.files.showFilePathInResults.description%" }, "codeMarkPlus.performance.maxFilesToIndex": { "type": "number", "default": 1000, "minimum": 1, "scope": "resource", "description": "%codeMarkPlus.performance.maxFilesToIndex.description%" }, "codeMarkPlus.performance.concurrencyLimit": { "type": "number", "default": 10, "minimum": 1, "scope": "resource", "description": "%codeMarkPlus.performance.concurrencyLimit.description%" }, "codeMarkPlus.performance.batchSize": { "type": "number", "default": 10, "minimum": 1, "scope": "resource", "description": "%codeMarkPlus.performance.batchSize.description%" }, "codeMarkPlus.tags.tagProfiles": { "type": "object", "default": {}, "scope": "resource", "description": "%codeMarkPlus.tags.tagProfiles.description%", "additionalProperties": { "type": "object", "properties": { "priority": { "type": "number", "description": "%codeMarkPlus.tags.tagProfiles.priority.description%" }, "icon": { "type": "string", "description": "%codeMarkPlus.tags.tagProfiles.icon.description%" }, "color": { "type": "string", "description": "%codeMarkPlus.tags.tagProfiles.color.description%" } }, "required": [ "priority" ] } }, "codeMarkPlus.context.contextFolder": { "type": "string", "default": ".context", "scope": "resource", "description": "%codeMarkPlus.context.contextFolder.description%" }, "codeMarkPlus.features.quickActions": { "type": "array", "default": [], "scope": "resource", "description": "%codeMarkPlus.features.quickActions.description%", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "%codeMarkPlus.features.quickActions.name.description%" }, "command": { "type": "string", "description": "%codeMarkPlus.features.quickActions.command.description%" }, "args": { "type": "array", "description": "%codeMarkPlus.features.quickActions.args.description%" }, "shortcut": { "type": "string", "description": "%codeMarkPlus.features.quickActions.shortcut.description%" }, "icon": { "type": "string", "description": "%codeMarkPlus.features.quickActions.icon.description%" } }, "required": [ "name", "command" ] } }, "codeMarkPlus.tags.tagPriorities": { "type": "array", "default": [], "scope": "resource", "description": "%codeMarkPlus.tags.tagPriorities.description%", "items": { "type": "object", "properties": { "tag": { "type": "string", "description": "%codeMarkPlus.tags.tagPriorities.tag.description%" }, "priority": { "type": "number", "description": "%codeMarkPlus.tags.tagPriorities.priority.description%" }, "color": { "type": "string", "description": "%codeMarkPlus.tags.tagPriorities.color.description%" }, "icon": { "type": "string", "description": "%codeMarkPlus.tags.tagPriorities.icon.description%" } }, "required": [ "tag", "priority" ] } } } }, "commands": [ { "command": "codeMarkPlus.insertComment", "title": "%codeMarkPlus.insertComment.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.replaceAnnotationTagInSelection", "title": "%codeMarkPlus.replaceAnnotationTagInSelection.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.replaceAnnotationTagInFile", "title": "%codeMarkPlus.replaceAnnotationTagInFile.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.removeSingleLineComments", "title": "%codeMarkPlus.removeSingleLineComments.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.removeAllSingleLineComments", "title": "%codeMarkPlus.removeAllSingleLineComments.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.changeWorkspace", "title": "%codeMarkPlus.changeWorkspace.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.tags.refresh", "title": "%codeMarkPlus.tags.refresh.title%", "category": "CodeMark+", "icon": "$(refresh)" }, { "command": "codeMarkPlus.tagBrowserView.openFile", "title": "%codeMarkPlus.tagBrowserView.openFile.title%", "category": "CodeMark+", "icon": "$(go-to-file)" }, { "command": "codeMarkPlus.context.promoteSelectionToNote", "title": "%codeMarkPlus.context.promoteSelectionToNote.title%", "category": "CodeMark+" }, { "command": "codeMarkPlus.openAddress", "title": "%codeMarkPlus.openAddress.title%", "category": "CodeMark+" } ], "menus": { "editor/context": [ { "command": "codeMarkPlus.insertComment", "when": "editorTextFocus", "group": "navigation@10" }, { "command": "codeMarkPlus.replaceAnnotationTagInSelection", "when": "editorTextFocus && editorHasSelection", "group": "navigation@11" }, { "command": "codeMarkPlus.openAddress", "when": "editorTextFocus", "group": "navigation@14" }, { "command": "codeMarkPlus.replaceAnnotationTagInFile", "when": "editorTextFocus", "group": "navigation@11" }, { "command": "codeMarkPlus.removeSingleLineComments", "when": "editorTextFocus", "group": "navigation@12" }, { "command": "codeMarkPlus.removeAllSingleLineComments", "when": "editorTextFocus", "group": "navigation@13" } ], "view/title": [ { "command": "codeMarkPlus.tags.refresh", "when": "view == codeMarkPlus.tagBrowserView", "group": "navigation@1" } ], "commandPalette": [ { "command": "codeMarkPlus.tagBrowserView.openFile", "when": "false" }, { "command": "codeMarkPlus.openAddress", "when": "true" } ], "view/item/context": [ { "command": "codeMarkPlus.tagBrowserView.openFile", "when": "view == codeMarkPlus.tagBrowserView && viewItem == file", "group": "inline" } ] }, "viewsWelcome": [ { "view": "codeMarkPlus.tagBrowserView", "contents": "%codeMarkPlus.tagBrowserView.welcomeMessage%" } ], "views": { "explorer": [ { "id": "codeMarkPlus.tagBrowserView", "name": "%codeMarkPlus.tagBrowserView.title%", "visibility": "visible", "icon": "$(tag)" } ] }, "keybindings": [ { "key": "ctrl+alt+u", "command": "codeMarkPlus.insertComment", "when": "editorTextFocus", "description": "Insert comment for selected function or variable (Windows & Linux)" }, { "key": "cmd+alt+u", "command": "codeMarkPlus.insertComment", "when": "editorTextFocus", "description": "Insert comment for selected function or variable (macOS)" }, { "key": "ctrl+alt+shift+u", "command": "codeMarkPlus.removeSingleLineComments", "when": "editorTextFocus", "description": "Remove selected single-line comments via picker (Windows & Linux)" }, { "key": "cmd+alt+shift+u", "command": "codeMarkPlus.removeSingleLineComments", "when": "editorTextFocus", "description": "Remove selected single-line comments via picker (macOS)" } ], "jsonValidation": [ { "fileMatch": ".vscode/settings.json", "url": "./schemas/config.schema.json" } ] }, "scripts": { "vscode:prepublish": "pnpm compile", "compile": "rimraf out && esbuild src/extension.ts --bundle --platform=node --target=node22 --format=cjs --external:vscode --outfile=out/extension.js --minify", "watch": "tsc -watch -p ./", "pretest": "pnpm compile && pnpm lint", "format": "biome format --write .", "lint": "biome lint .", "lint:fix": "biome lint --write .", "check": "biome check .", "check:fix": "biome check --write --unsafe .", "test": "vscode-test", "test:unit": "mocha -r ts-node/register src/**/*.test.ts", "l10n:check": "node scripts/check-l10n.js", "nls:check": "node scripts/check-nls.js", "prepare": "husky" }, "devDependencies": { "@biomejs/biome": "2.4.15", "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@types/mocha": "^10.0.10", "@types/mustache": "^4.2.6", "@types/node": "^22.19.19", "@types/vscode": "^1.102.0", "@vscode/l10n-dev": "^0.0.35", "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", "ts-node": "^10.9.1", "esbuild": "^0.28.0", "husky": "^9.1.7", "lint-staged": "^16.4.0", "mocha": "^11.7.5", "rimraf": "^6.1.3", "typescript": "^5.9.3" }, "dependencies": { "@supercharge/promise-pool": "^3.3.0", "fast-glob": "^3.3.3", "ignore": "^7.0.5", "mustache": "^4.2.0", "vscode-marketplace-client": "^1.2.3" }, "pnpm": { "overrides": { "diff@>=6.0.0 <8.0.3": ">=8.0.3", "serialize-javascript@<7.0.5": ">=7.0.5" }, "onlyBuiltDependencies": [ "esbuild" ] } }