From 4a766139dcbc3e720d9db1132a98688b4659f2b4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 23 Oct 2012 15:34:46 -0700 Subject: [PATCH] Use regex instead of line tokens --- .../outline-view/outline-view.coffee | 43 ++++++------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/src/extensions/outline-view/outline-view.coffee b/src/extensions/outline-view/outline-view.coffee index 3de95f983..b80dd7675 100644 --- a/src/extensions/outline-view/outline-view.coffee +++ b/src/extensions/outline-view/outline-view.coffee @@ -1,7 +1,5 @@ {View, $$} = require 'space-pen' SelectList = require 'select-list' -stringScore = require 'stringscore' -fuzzyFilter = require 'fuzzy-filter' _ = require 'underscore' Editor = require 'editor' @@ -33,41 +31,28 @@ class OutlineView extends SelectList if @hasParent() @cancel() else - @populate() - @attach() + @attach() if @populate() populate: -> editor = @rootView.getActiveEditor() session = editor.activeEditSession - buffer = session.buffer - language = session.tokenizedBuffer.languageMode + language = session.tokenizedBuffer.languageMode.grammar.name + return false unless language is "CoffeeScript" functions = [] - functionTester = (scope) -> - scope.indexOf('entity.name.function.') is 0 - registerFunction = (row, column, name) -> - return unless name.length > 0 - functions.push - row: row - column: column - name: name - - for row in [0...editor.getLineCount()] - line = buffer.lineForRow(row) + functionRegex = /(\s*)(@?[a-zA-Z$_]+)\s*(=|\:)\s*(\([^\)]*\))?\s*(-|=)>/ + lineCount = editor.getLineCount() + for row in [0...lineCount] + line = session.buffer.lineForRow(row) continue unless line.length - {tokens} = language.getLineTokens(line) - name = '' - column = 0 - for token in tokens - if _.find(token.scopes, functionTester) - name += token.value - else - registerFunction(row, column, name) - column += token.value.length - name = '' - registerFunction(row, column, name) - + matches = line.match(functionRegex) + if matches + functions.push + row: row + column: matches[1].length + name: matches[2] @setArray(functions) + true confirmed : ({row, column, name}) -> return unless name.length