/vscode-advanced-new-file

Create files anywhere in your workspace from the keyboard

Primary LanguageTypeScriptMIT LicenseMIT

VSCode Advanced New File

Travis AppVeyor

Inspired by Sublime's AdvancedNewFile plugin, this adds the ability to create files anywhere in your workspace.

Demo

Features

  • Fuzzy-matching autocomplete to create new file relative to existing path (thanks to JoeNg93 for making it faster)
  • Create new directories while creating a new file
  • Create a directory instead of a file by suffixing the file path with / as in somedirectory/ to create the directory (thanks to maximilianschmitt)
  • Ignores gitignored and workspace files.exclude settings.
  • Additional option of adding advancedNewFile.exclude settings to workspace settings just like native files.exlude except it explicitly effects AdvancedNewFile plugin only. (thanks to Kaffiend)
  • Control the order of top convenient options ("last selection", "current file", etc) via config setting advancedNewFile.convenienceOptions
  • Brace expansion - expand braces into multiple files. Entering index.{html,css} will create and open index.html and index.css. (thanks to chuckhendo and timlogemann)

Configuration Example

"advancedNewFile.exclude": {
  "node_modules": true,
  "node_modules_electron": true,
  "dev": true,
  "dist": true
},
"advancedNewFile.showInformationMessages": true,
"advancedNewFile.convenienceOptions": ["last", "current", "root"],
"advancedNewFile.expandBraces": false

Usage

  • Command palette: "Advanced New File"
  • Keyboard shortcut: cmd+alt+n (Mac), ctrl+alt+n (Win, Linux)

Keybindings

You can add your own keybinding in your keybindings.json

{
  "key": "ctrl+n", // "cmd+n" on mac
  "command": "extension.advancedNewFile",
}

Notes

Because VSCode extensions don't yet have the ability to do type-ahead autocomplete within the text input box (See microsoft/vscode#426), we work around this limitation and provide autocomplete using a two-step workflow of selecting existing path, then providing new filename/path relative to the selection.

If you encounter an error on Mac or Linux check for broken symlinks with: find . -xtype l

Contributing

  1. Clone the repo
  2. $ npm install
  3. Add your feature or fix (in src/) with test coverage (in test/)
  4. Launch the extension and do some manual QA (via Debug > Launch Extension)
  5. Run the tests (via Debug > Launch Tests)
  6. Run the linter: npm run lint
  7. Open a PR

Publishing

OpenVSX

Change the publisher in package.json to giantcola, then run:

docker-compose run plugin ./node_modules/.bin/ovsx publish -p [token]