Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 32 additions & 11 deletions sfdocs-vscode-extension-pack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,39 @@ The extension pack is good for beginning and professional authors.

- [SFDocs Markdown Preview](https://marketplace.visualstudio.com/items?itemName=salesforce.salesforce-docs-markdown-preview)–Provides Micromark-compliant Markdown previews.
- [SFDocs Markdown Assistant](https://marketplace.visualstudio.com/items?itemName=salesforce.sfdocs-markdown-assistant)–Provides palette commands and shortcuts that make it easy to write Markdown.
- [AML Support](https://marketplace.visualstudio.com/items?itemName=MuleSoftInc.aml-vscode)–Implements AML Language Server for use with RAML and OpenAPI specs.
- [Code Tour](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour)–Allows you to record and play back guided walkthroughs of your codebases.
- [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory)–View and search git log.
- [GitHub Pull Requests & Issues](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github)–Allows you to review and manage GitHub pull requests and issues in Visual Studio Code.
- [Indent Rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow)–Colorizes the indentation of your text alternating four different colors on each step.
- [Lorem Ipsum](https://marketplace.visualstudio.com/items?itemName=Tyriar.lorem-ipsum)–Generates and inserts lorem ipsum text.
- [Material Icon Theme](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme)–Allows VSCode to use Material Design icons.
- [OpenAPI Designer](https://marketplace.visualstudio.com/items?itemName=philosowaffle.openapi-designer)–Previews OpenAPI schemas.
- [Path Autocomplete](https://marketplace.visualstudio.com/items?itemName=ionutvmi.path-autocomplete)–Provides path completion for visual studio code.
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)–Enforces a consistent style by parsing your code and reprinting it with its own style rules.
- [YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)–Provides comprehensive YAML Language support to Visual Studio Code.
- [Acrolinx for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=acrolinx.vscode-sidebar)-An AI-powered platform that eliminates content chaos and delivers strategy-aligned content, at scale.
- [Vale](https://marketplace.visualstudio.com/items?itemName=ChrisChinchilla.vale-vscode)-Provides customizable spelling, style, and grammar checking for a variety of markup formats (Markdown, AsciiDoc, reStructuredText, HTML, and DITA)
- [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker&ssr=false#overview)-help catch common spelling errors while keeping the number of false positives low.
- [LTeX+](https://marketplace.visualstudio.com/items?itemName=ltex-plus.vscode-ltex-plus)-provides offline grammar checking of various markup languages in Visual Studio Code using LanguageTool (LT)
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint&ssr=false#overview)-Lints JavaScript and TypeScript code to enforce consistent style and catch common errors.

## 🚀 Quick Setup

### Automated Configuration (Recommended)

Run our setup script to automatically configure all extensions:

```bash
# Navigate to the extension pack directory
cd ~/.vscode/extensions/salesforce.sfdocs-vscode-extension-pack-*/

# Run the setup script
node setup-vale.js
```

### Manual Configuration

#### Vale Configuration
1. **Install Vale CLI**: Follow [Vale installation guide](https://vale.sh/docs/vale-cli/installation/)
2. **Configure VS Code**:
- Open VS Code settings (`Cmd+,` on macOS, `Ctrl+,` on Windows)
- Search for "Vale"
- Set **Vale › Vale CLI: Config** to:
- **macOS**: `/Users/Shared/Vale/.vale.ini`
- **Windows**: `C:\ProgramData\Vale\.vale.ini`

#### Recommended Settings
Copy the settings from `.vscode/settings.json` in this extension pack to your workspace settings for optimal configuration.

## Contribute

Expand Down
21 changes: 8 additions & 13 deletions sfdocs-vscode-extension-pack/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"displayName": "SFDocs Extension Pack",
"description": "One stop shop for Salesforce Markdown writing productivity.",
"icon": "icon.png",
"version": "0.0.3",
"version": "0.0.4",
"preview": true,
"author": "Ayush Kumar Tarun",
"publisher": "salesforce",
Expand All @@ -13,25 +13,20 @@
},
"scripts": {
"package": "vsce package",
"vscode:publish": "vsce publish"
"vscode:publish": "vsce publish",
"setup": "node setup-vale.js",
"configure": "node setup-vale.js"
},
"categories": [
"Extension Packs"
],
"extensionPack": [
"salesforce.salesforce-docs-markdown-preview",
"salesforce.sfdocs-markdown-assistant",
"MuleSoftInc.aml-vscode",
"vsls-contrib.codetour",
"donjayamanne.githistory",
"GitHub.vscode-pull-request-github",
"oderwat.indent-rainbow",
"Tyriar.lorem-ipsum",
"PKief.material-icon-theme",
"philosowaffle.openapi-designer",
"ionutvmi.path-autocomplete",
"esbenp.prettier-vscode",
"redhat.vscode-yaml",
"acrolinx.vscode-sidebar"
"ChrisChinchilla.vale-vscode",
"streetsidesoftware.code-spell-checker",
"ltex-plus.vscode-ltex-plus",
"dbaeumer.vscode-eslint"
]
}
117 changes: 117 additions & 0 deletions sfdocs-vscode-extension-pack/setup-vale.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#!/usr/bin/env node

/**
* SFDocs Extension Pack - Vale Configuration Setup Script
*
* This script automatically configures Vale for the SFDocs Extension Pack
* by setting up the Vale configuration path in VS Code settings.
*/

const fs = require('fs');
const path = require('path');
const os = require('os');

const CONFIG_PATHS = {
darwin: '/Users/Shared/Vale/.vale.ini',
win32: 'C:\\ProgramData\\Vale\\.vale.ini',
linux: '/usr/share/vale/.vale.ini'
};

const VSCODE_SETTINGS_PATHS = {
darwin: path.join(os.homedir(), 'Library/Application Support/Code/User/settings.json'),
win32: path.join(os.homedir(), 'AppData/Roaming/Code/User/settings.json'),
linux: path.join(os.homedir(), '.config/Code/User/settings.json')
};

function getValeConfigPath() {
const platform = os.platform();
return CONFIG_PATHS[platform] || CONFIG_PATHS.linux;
}

function getVSCodeSettingsPath() {
const platform = os.platform();
return VSCODE_SETTINGS_PATHS[platform] || VSCODE_SETTINGS_PATHS.linux;
}

function updateVSCodeSettings() {
const settingsPath = getVSCodeSettingsPath();
const valeConfigPath = getValeConfigPath();

console.log('🔧 SFDocs Extension Pack - Vale Configuration Setup');
console.log('📍 Platform:', os.platform());
console.log('📁 Vale config path:', valeConfigPath);
console.log('⚙️ VS Code settings path:', settingsPath);

// Check if Vale config exists
if (!fs.existsSync(valeConfigPath)) {
console.log('⚠️ Vale configuration file not found at:', valeConfigPath);
console.log('📖 Please install Vale first: https://vale.sh/docs/vale-cli/installation/');
return false;
}

// Ensure VS Code settings directory exists
const settingsDir = path.dirname(settingsPath);
if (!fs.existsSync(settingsDir)) {
fs.mkdirSync(settingsDir, { recursive: true });
console.log('📁 Created VS Code settings directory');
}

// Read existing settings or create new
let settings = {};
if (fs.existsSync(settingsPath)) {
try {
const settingsContent = fs.readFileSync(settingsPath, 'utf8');
settings = JSON.parse(settingsContent);
console.log('📖 Read existing VS Code settings');
} catch (error) {
console.log('⚠️ Could not parse existing settings, creating new ones');
settings = {};
}
}

// Update Vale configuration
settings['vale.valeCLI.config'] = valeConfigPath;
settings['vale.valeCLI.path'] = 'vale';

// Add other SFDocs recommended settings
settings['editor.defaultFormatter'] = 'esbenp.prettier-vscode';
settings['editor.formatOnSave'] = true;
settings['cSpell.words'] = [
...(settings['cSpell.words'] || []),
'Salesforce', 'SFDocs', 'SFDX', 'Trailhead', 'Apex', 'Lightning', 'Visualforce'
].filter((word, index, self) => self.indexOf(word) === index); // Remove duplicates

// Write updated settings
try {
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 4));
console.log('✅ Successfully configured Vale for SFDocs Extension Pack!');
console.log('🎉 Vale configuration path set to:', valeConfigPath);
console.log('💡 Restart VS Code to apply changes');
return true;
} catch (error) {
console.error('❌ Failed to write VS Code settings:', error.message);
return false;
}
}

function main() {
console.log('\n' + '='.repeat(60));

if (updateVSCodeSettings()) {
console.log('\n🚀 Setup complete! Your SFDocs Extension Pack is ready to use.');
console.log('📝 Open a Markdown file to see Vale in action.');
} else {
console.log('\n❌ Setup failed. Please configure Vale manually:');
console.log('1. Open VS Code Settings (Cmd/Ctrl + ,)');
console.log('2. Search for "Vale"');
console.log('3. Set "Vale CLI: Config" to:', getValeConfigPath());
}

console.log('='.repeat(60) + '\n');
}

if (require.main === module) {
main();
}

module.exports = { updateVSCodeSettings, getValeConfigPath, getVSCodeSettingsPath };
Binary file not shown.
Binary file not shown.