aboutsummaryrefslogtreecommitdiff
path: root/modules/textadept/adeptsense.lua
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2011-03-03 17:19:29 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2011-03-03 17:19:29 -0500
commitf0eb4916ea9eaa82dc75878d5d0c39e55fcba609 (patch)
tree8e84f9e1359684ea07469f7f91df60b22845b476 /modules/textadept/adeptsense.lua
parent875f03caac65a3001d39ebb1562165746b5807ef (diff)
downloadtextadept-f0eb4916ea9eaa82dc75878d5d0c39e55fcba609.tar.gz
textadept-f0eb4916ea9eaa82dc75878d5d0c39e55fcba609.zip
Use superclass completions for unknown class; modules/textadept/adeptsense.lua
For unknown classes that inherit superclasses, show the superclass completions. This is intended for Ruby on Rails development where regenerating ctags for each new controller, model, etc. is tedious.
Diffstat (limited to 'modules/textadept/adeptsense.lua')
-rw-r--r--modules/textadept/adeptsense.lua33
1 files changed, 20 insertions, 13 deletions
diff --git a/modules/textadept/adeptsense.lua b/modules/textadept/adeptsense.lua
index 2d24f03b..ace3a516 100644
--- a/modules/textadept/adeptsense.lua
+++ b/modules/textadept/adeptsense.lua
@@ -82,7 +82,7 @@ module('_m.textadept.adeptsense', package.seeall)
-- In addition to the usual `[%w_%.]` symbol characters, Lua also allows symbols
-- to contain a `:`.
--
--- sense.syntax.symbol_chars = '[%w_.:]'
+-- sense.syntax.symbol_chars = '[%w_%.:]'
--
-- ##### syntax.type_declarations
--
@@ -133,11 +133,11 @@ module('_m.textadept.adeptsense', package.seeall)
-- `ctags --list-kinds` in your shell. Since Adeptsense only cares about
-- classes, functions, and fields, you need to let it know which kind of tag is
-- which. Unfortunately, Lua support in Ctags is not good at all. Instead,
--- Textadept has a utility to generate a fake set of tags that is more useful.
--- This utility (`scripts/adeptsensedoc.lua`) is found in the source release.
--- Functions are tagged `'f'` and should be recognized as such; table keys are
--- tagged `'t'` and should be recognized as fields; module fields, `'F'`, should
--- be fields; and modules, `'m'`, should be classes:
+-- Textadept has a utility (`scripts/adeptsensedoc.lua`) to generate a fake set
+-- of tags that is more useful. Functions are tagged `'f'` and should be
+-- recognized as such; table keys are tagged `'t'` and should be recognized as
+-- fields; module fields, `'F'`, should be fields; and modules, `'m'`, should be
+-- classes:
--
-- sense.ctags_kinds = {
-- f = 'functions',
@@ -357,13 +357,15 @@ function get_class(sense, symbol)
local type_declarations = sense.syntax.type_declarations
local type_assignments = sense.syntax.type_assignments
local assignment_patt = symbol..'%s*=%s*([^\r\n]+)'
- local class, assignment
+ local class, superclass, assignment
for i = buffer:line_from_position(buffer.current_pos), 0, -1 do
local s, e
if symbol == self or symbol == '' then
-- Determine type from the class declaration.
- s, e, class = buffer:get_line(i):find(class_definition)
- if class and not completions[class] then class = nil end
+ s, e, class, superclass = buffer:get_line(i):find(class_definition)
+ if class and not completions[class] then
+ class = completions[superclass] and superclass or nil
+ end
else
-- Search for a type declaration or type assignment.
local line = buffer:get_line(i)
@@ -458,13 +460,13 @@ function get_completions(sense, symbol, only_fields, only_functions)
local c = {}
if not only_fields then
for _, v in ipairs(compls[class].functions) do c[#c + 1] = v end
- if include_globals then
+ if include_globals and class ~= '' then
for _, v in ipairs(compls[''].functions) do c[#c + 1] = v end
end
end
if not only_functions then
for _, v in ipairs(compls[class].fields) do c[#c + 1] = v end
- if include_globals then
+ if include_globals and class ~= '' then
for _, v in ipairs(compls[''].fields) do c[#c + 1] = v end
end
end
@@ -829,8 +831,13 @@ api_files = {},
-- Contains syntax-specific values for the language.
-- @field self The language's syntax-equivalent of 'self'. Default is 'self'.
-- @field class_definition A Lua pattern representing the language's class
--- definition syntax. The first capture returned must be the class name.
--- Defaults to 'class%s+([%w_]+)'.
+-- definition syntax. The first capture returned must be the class name. A
+-- second, optional capture contains the class' superclass (if any). If no
+-- completions are found for the class name, completions for the superclass
+-- are shown (if any). Completions will not be shown for both a class and
+-- superclass unless defined in a previously loaded ctags file. Also, multiple
+-- superclasses cannot be recognized by this pattern; use a ctags file
+-- instead. Defaults to 'class%s+([%w_]+)'.
-- @field word_chars A Lua pattern of characters allowed in a word. Default is
-- '%w_'.
-- @field symbol_chars A Lua pattern of characters allowed in a symbol,