aboutsummaryrefslogtreecommitdiff
path: root/modules/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/cpp')
-rw-r--r--modules/cpp/adeptsense.lua28
-rw-r--r--modules/cpp/commands.lua8
-rw-r--r--modules/cpp/init.lua1
3 files changed, 37 insertions, 0 deletions
diff --git a/modules/cpp/adeptsense.lua b/modules/cpp/adeptsense.lua
new file mode 100644
index 00000000..b584ee00
--- /dev/null
+++ b/modules/cpp/adeptsense.lua
@@ -0,0 +1,28 @@
+-- Copyright 2007-2011 Mitchell mitchell<att>caladbolg.net. See LICENSE.
+
+---
+-- Adeptsense for the cpp module.
+-- User tags are loaded from _USERHOME/modules/cpp/tags.
+module('_m.cpp.adeptsense', package.seeall)
+
+sense = _m.textadept.adeptsense.new('cpp')
+sense.ctags_kinds = {
+ c = 'classes',
+ d = 'functions',
+ e = 'fields',
+ f = 'functions',
+ g = 'classes',
+ m = 'fields',
+ s = 'classes',
+ t = 'classes'
+}
+sense.syntax.type_declarations = {
+ '(%u[%w_%.]+)[%s%*]+%_', -- Foo bar, Foo *bar, Foo* bar, etc.
+}
+sense:add_trigger('.')
+sense:add_trigger('->')
+
+-- Load user tags
+if lfs.attributes(_USERHOME..'/modules/cpp/tags') then
+ sense:load_ctags(_USERHOME..'/modules/cpp/tags')
+end
diff --git a/modules/cpp/commands.lua b/modules/cpp/commands.lua
index b18247ab..fef5255f 100644
--- a/modules/cpp/commands.lua
+++ b/modules/cpp/commands.lua
@@ -26,6 +26,7 @@ m_run.error_detail.c = {
}
-- C++-specific key commands.
+local cppsense = _m.cpp.adeptsense.sense
local keys = _G.keys
if type(keys) == 'table' then
keys.cpp = {
@@ -38,6 +39,13 @@ if type(keys) == 'table' then
buffer:add_text(';')
buffer:new_line()
end },
+ [not OSX and 'c\n' or 'esc'] = { cppsense.complete, cppsense },
+ ['\t'] = { function()
+ if string.char(buffer.char_at[buffer.current_pos - 1]) ~= '(' then
+ return false
+ end
+ return cppsense:show_apidoc()
+ end },
}
end
diff --git a/modules/cpp/init.lua b/modules/cpp/init.lua
index 17ee1d89..cce101a8 100644
--- a/modules/cpp/init.lua
+++ b/modules/cpp/init.lua
@@ -21,6 +21,7 @@ if type(_G.keys) == 'table' then
_G.keys.cpp = {}
end
+require 'cpp.adeptsense'
require 'cpp.commands'
require 'cpp.snippets'