From 31d5b0988fda838b833a82cae3469ce8c5fc2a39 Mon Sep 17 00:00:00 2001 From: Buddy Sandidge Date: Wed, 19 Feb 2014 22:00:58 -0800 Subject: [PATCH] Squashed 'vim/bundle/literate-coffeescript/' content from commit 99aa91709 git-subtree-dir: vim/bundle/literate-coffeescript git-subtree-split: 99aa91709201cbb0e9ef0b15eb8c2390b764e8b5 --- LICENSE | 19 ++++ README.md | 56 ++++++++++++ ftdetect/vim-literate-coffeescript.vim | 8 ++ indent/litcoffee.vim | 22 +++++ syntax/litcoffee.vim | 20 +++++ test/test.coffee.md | 117 +++++++++++++++++++++++++ test/test.litcoffee | 117 +++++++++++++++++++++++++ test/test.png | Bin 0 -> 41026 bytes 8 files changed, 359 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 ftdetect/vim-literate-coffeescript.vim create mode 100644 indent/litcoffee.vim create mode 100644 syntax/litcoffee.vim create mode 100644 test/test.coffee.md create mode 100644 test/test.litcoffee create mode 100644 test/test.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9dfbb05 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013 Michael Smith + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..787bb5a --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +`vim-literate-coffeescript` adds syntax highlighting and indentation support for +[Literate CoffeeScript](http://coffeescript.org/#literate) to the vim text +editor. + +It looks something like this: + +![Preview](test/test.png) + +# Dependencies + +You must have syntax highlighting installed for both +[Markdown](https://github.com/tpope/vim-markdown) and +[CoffeeScript](https://github.com/kchmck/vim-coffee-script) installed to use +this package. + +# Installation + +## Manually + + 1. Clone this repository. + + git clone https://github.com/mintplant/vim-literate-coffeescript.git + + 2. Copy all the vim-specific files into your ~/.vim folder. + + cp -r vim-literate-coffeescript/ftdetect/ ~/.vim/ + cp -r vim-literate-coffeescript/indent/ ~/.vim/ + cp -r vim-literate-coffeescript/syntax/ ~/.vim/ + +## With Pathogen + +### Setup + + 1. Install [Pathogen](http://www.vim.org/scripts/script.php?script_id=2332) + + 2. Change directory to your bundle folder. + + cd ~/.vim/bundle + + 3. Clone this repository. + + git clone https://github.com/mintplant/vim-literate-coffeescript.git + +### Updating + + 1. Change directory to where the repository was cloned. + + cd ~/.vim/bundle/vim-literate-coffeescript/ + + 2. Pull in the latest changes. + + git pull + +# License + +[MIT](LICENSE) diff --git a/ftdetect/vim-literate-coffeescript.vim b/ftdetect/vim-literate-coffeescript.vim new file mode 100644 index 0000000..7f66624 --- /dev/null +++ b/ftdetect/vim-literate-coffeescript.vim @@ -0,0 +1,8 @@ +" Language: Literate CoffeeScript +" Maintainer: Michael Smith +" URL: https://github.com/mintplant/vim-literate-coffeescript +" License: MIT + +autocmd BufNewFile,BufRead *.litcoffee set filetype=litcoffee +autocmd BufNewFile,BufRead *.coffee.md set filetype=litcoffee + diff --git a/indent/litcoffee.vim b/indent/litcoffee.vim new file mode 100644 index 0000000..599cbea --- /dev/null +++ b/indent/litcoffee.vim @@ -0,0 +1,22 @@ +if exists('b:did_indent') + finish +endif + +runtime! indent/coffee.vim + +let b:did_indent = 1 + +setlocal indentexpr=GetLitCoffeeIndent() + +if exists('*GetLitCoffeeIndent') + finish +endif + +function GetLitCoffeeIndent() + if searchpair('^ \|\t', '', '$', 'bWnm') > 0 + return GetCoffeeIndent(v:lnum) + else + return -1 + endif +endfunc + diff --git a/syntax/litcoffee.vim b/syntax/litcoffee.vim new file mode 100644 index 0000000..4028a82 --- /dev/null +++ b/syntax/litcoffee.vim @@ -0,0 +1,20 @@ +" Language: Literate CoffeeScript +" Maintainer: Michael Smith +" URL: https://github.com/mintplant/vim-literate-coffeescript +" License: MIT + +if exists('b:current_syntax') && b:current_syntax == 'litcoffee' + finish +endif + +runtime! syntax/markdown.vim +unlet b:current_syntax + +syn clear markdownCode + +syn include @coffee syntax/coffee.vim + +syn region inlineCoffee start='^ \|\t' end='$' contains=@coffee + +let b:current_syntax = "litcoffee" + diff --git a/test/test.coffee.md b/test/test.coffee.md new file mode 100644 index 0000000..62b99b7 --- /dev/null +++ b/test/test.coffee.md @@ -0,0 +1,117 @@ +The **Scope** class regulates lexical scoping within CoffeeScript. As you +generate code, you create a tree of scopes in the same shape as the nested +function bodies. Each scope knows about the variables declared within it, +and has a reference to its parent enclosing scope. In this way, we know which +variables are new and need to be declared with `var`, and which are shared +with external scopes. + +Import the helpers we plan to use. + + {extend, last} = require './helpers' + + exports.Scope = class Scope + +The `root` is the top-level **Scope** object for a given file. + + @root: null + +Initialize a scope with its parent, for lookups up the chain, +as well as a reference to the **Block** node it belongs to, which is +where it should declare its variables, and a reference to the function that +it belongs to. + + constructor: (@parent, @expressions, @method) -> + @variables = [{name: 'arguments', type: 'arguments'}] + @positions = {} + Scope.root = this unless @parent + +Adds a new variable or overrides an existing one. + + add: (name, type, immediate) -> + return @parent.add name, type, immediate if @shared and not immediate + if Object::hasOwnProperty.call @positions, name + @variables[@positions[name]].type = type + else + @positions[name] = @variables.push({name, type}) - 1 + +When `super` is called, we need to find the name of the current method we're +in, so that we know how to invoke the same method of the parent class. This +can get complicated if super is being called from an inner function. +`namedMethod` will walk up the scope tree until it either finds the first +function object that has a name filled in, or bottoms out. + + namedMethod: -> + return @method if @method.name or !@parent + @parent.namedMethod() + +Look up a variable name in lexical scope, and declare it if it does not +already exist. + + find: (name) -> + return yes if @check name + @add name, 'var' + no + +Reserve a variable name as originating from a function parameter for this +scope. No `var` required for internal references. + + parameter: (name) -> + return if @shared and @parent.check name, yes + @add name, 'param' + +Just check to see if a variable has already been declared, without reserving, +walks up to the root scope. + + check: (name) -> + !!(@type(name) or @parent?.check(name)) + +Generate a temporary variable name at the given index. + + temporary: (name, index) -> + if name.length > 1 + '_' + name + if index > 1 then index - 1 else '' + else + '_' + (index + parseInt name, 36).toString(36).replace /\d/g, 'a' + +Gets the type of a variable. + + type: (name) -> + return v.type for v in @variables when v.name is name + null + +If we need to store an intermediate result, find an available name for a +compiler-generated variable. `_var`, `_var2`, and so on... + + freeVariable: (name, reserve=true) -> + index = 0 + index++ while @check((temp = @temporary name, index)) + @add temp, 'var', yes if reserve + temp + +Ensure that an assignment is made at the top of this scope +(or at the top-level scope, if requested). + + assign: (name, value) -> + @add name, {value, assigned: yes}, yes + @hasAssignments = yes + +Does this scope have any declared variables? + + hasDeclarations: -> + !!@declaredVariables().length + +Return the list of variables first declared in this scope. + + declaredVariables: -> + realVars = [] + tempVars = [] + for v in @variables when v.type is 'var' + (if v.name.charAt(0) is '_' then tempVars else realVars).push v.name + realVars.sort().concat tempVars.sort() + +Return the list of assignments that are supposed to be made at the top +of this scope. + + assignedVariables: -> + "#{v.name} = #{v.type.value}" for v in @variables when v.type.assigned + diff --git a/test/test.litcoffee b/test/test.litcoffee new file mode 100644 index 0000000..62b99b7 --- /dev/null +++ b/test/test.litcoffee @@ -0,0 +1,117 @@ +The **Scope** class regulates lexical scoping within CoffeeScript. As you +generate code, you create a tree of scopes in the same shape as the nested +function bodies. Each scope knows about the variables declared within it, +and has a reference to its parent enclosing scope. In this way, we know which +variables are new and need to be declared with `var`, and which are shared +with external scopes. + +Import the helpers we plan to use. + + {extend, last} = require './helpers' + + exports.Scope = class Scope + +The `root` is the top-level **Scope** object for a given file. + + @root: null + +Initialize a scope with its parent, for lookups up the chain, +as well as a reference to the **Block** node it belongs to, which is +where it should declare its variables, and a reference to the function that +it belongs to. + + constructor: (@parent, @expressions, @method) -> + @variables = [{name: 'arguments', type: 'arguments'}] + @positions = {} + Scope.root = this unless @parent + +Adds a new variable or overrides an existing one. + + add: (name, type, immediate) -> + return @parent.add name, type, immediate if @shared and not immediate + if Object::hasOwnProperty.call @positions, name + @variables[@positions[name]].type = type + else + @positions[name] = @variables.push({name, type}) - 1 + +When `super` is called, we need to find the name of the current method we're +in, so that we know how to invoke the same method of the parent class. This +can get complicated if super is being called from an inner function. +`namedMethod` will walk up the scope tree until it either finds the first +function object that has a name filled in, or bottoms out. + + namedMethod: -> + return @method if @method.name or !@parent + @parent.namedMethod() + +Look up a variable name in lexical scope, and declare it if it does not +already exist. + + find: (name) -> + return yes if @check name + @add name, 'var' + no + +Reserve a variable name as originating from a function parameter for this +scope. No `var` required for internal references. + + parameter: (name) -> + return if @shared and @parent.check name, yes + @add name, 'param' + +Just check to see if a variable has already been declared, without reserving, +walks up to the root scope. + + check: (name) -> + !!(@type(name) or @parent?.check(name)) + +Generate a temporary variable name at the given index. + + temporary: (name, index) -> + if name.length > 1 + '_' + name + if index > 1 then index - 1 else '' + else + '_' + (index + parseInt name, 36).toString(36).replace /\d/g, 'a' + +Gets the type of a variable. + + type: (name) -> + return v.type for v in @variables when v.name is name + null + +If we need to store an intermediate result, find an available name for a +compiler-generated variable. `_var`, `_var2`, and so on... + + freeVariable: (name, reserve=true) -> + index = 0 + index++ while @check((temp = @temporary name, index)) + @add temp, 'var', yes if reserve + temp + +Ensure that an assignment is made at the top of this scope +(or at the top-level scope, if requested). + + assign: (name, value) -> + @add name, {value, assigned: yes}, yes + @hasAssignments = yes + +Does this scope have any declared variables? + + hasDeclarations: -> + !!@declaredVariables().length + +Return the list of variables first declared in this scope. + + declaredVariables: -> + realVars = [] + tempVars = [] + for v in @variables when v.type is 'var' + (if v.name.charAt(0) is '_' then tempVars else realVars).push v.name + realVars.sort().concat tempVars.sort() + +Return the list of assignments that are supposed to be made at the top +of this scope. + + assignedVariables: -> + "#{v.name} = #{v.type.value}" for v in @variables when v.type.assigned + diff --git a/test/test.png b/test/test.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ad61929aeaadd4cad8e28b2c8cd983fd3c8455 GIT binary patch literal 41026 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%0A%H7j{{7p=Z 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 z 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