Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Adds shebang and mode line detection to the
CodeLanguage.detectLanguage
function.Shebangs are commonly used in scripting languages like python or ruby to allow the scripts to be run by the operating system by adding a "#! ..." line at the top of the file.
modelines are used by Emacs and Vim to configure editor functionality. Both have parameters for setting the file type.
CodeLanguage.detectLanguage
can now detect both shebangs and modelines via the optional parametersprefixBuffer
andsuffixBuffer
. It will check the prefix buffer for a valid shebang, and if found attempt to parse it. If no shebang is found, it will attempt to find and parse a valid modeline from either the prefix or suffix (Emacs modelines can be in the first or last 5 lines of the file).Related Issues
Checklist
Screenshots
Once the changes are propagated to CodeEditTextView and CodeEdit, opened files can detect shebangs and modelines:
Python detection:

Vim modeline detecting javascript:

Node:
