forked from adobe/brackets
-
Notifications
You must be signed in to change notification settings - Fork 0
Language Support
DennisKehrig edited this page Feb 13, 2013
·
84 revisions
Support for languages like HTML, JavaScript and CSS is currently a core part of Brackets. Support on the same level cannot easily be added by extensions. This page documents our efforts to change that.
- Introduced a new high-level concept "language" and refactored support for LESS based on that (Pull Request)
A difficulty when making comments more generic is that we rely on the defined comment symbols to be completely contained in one CodeMirror token. I.e. we cannot define "//~" as the prefix for line comments (like SciTE does) because it is not a prefix of the "//" token.
From the Extensibility Proposal
- Access to code model
- Quick open / go to symbol
- Index files/code (background process)
- Better code hinting for "supported" languages (e.g. for a particular framework)
- JSLint tools
- Inline editor providers (e.g. CSS gradient editor)
- Language-specific search and replace (e.g. HTML tag search and replace)
- Code cleanup / refactoring tools
- What hooks would need to be added where to allow extension-based language support?
LiveDevelopment.registerDocumentClass(...) - What behavior would need to be configurable by extensions?
turning off auto-reload for LESS files, configuring CodeMirror - What deployment scenarios do we want to support?
Dynamic client-side, dynamic server-side, static server-side? - Do we need to integrate with 3rd-party build tools?
I.e. run ant/cake/... when changing a LESS file to initiate compliation to CSS - Do we need a specification to delegate compilation to an existing server?
The server might use a compiler written in a language other than JS, or might use a JS compiler with specific options that can't be easily extracted - What can we support without impacting performance too much?
Running a build tool for every character entered will not work - How should the user configure Brackets to support server-side compilation?
What file needs to be compiled how when changed - setting for the entire project or a subdirectory? Exceptions for single files? - How do we deal with distributed files?
LESS supports including other LESS files, so changes to these should trigger compilation of the master file