4 // not sure why - but extending Gtk.SourceCompletionProvider seems to give an error..
7 public class CompletionProvider : Object, SourceCompletionProvider
10 WindowState windowstate;
11 //public List<Gtk.SourceCompletionItem> filtered_proposals;
13 public CompletionProvider(Editor editor)
20 public string get_name ()
25 public int get_priority ()
30 public bool match (SourceCompletionContext context)
36 public void populate (SourceCompletionContext context)
38 if (this.windowstate == null) {
39 this.windowstate = this.editor.window.windowstate;
43 var buffer = context.completion.view.buffer;
44 var mark = buffer.get_insert ();
47 buffer.get_iter_at_mark (out end, mark);
50 var searchpos = endpos;
52 searchpos.backward_find_char(is_space, null);
53 searchpos.forward_char();
54 var search = endpos.get_text(searchpos);
55 print("got search %s\n", search);
57 if (search.length < 2) {
61 var filtered_proposals = this.windowstate.file.palete().suggestComplete(
62 this.windowstate.file,
70 context.add_proposals (this, filtered_proposals, true);
73 public bool activate_proposal (SourceCompletionProposal proposal, TextIter iter)
76 istart.backward_find_char(is_space, null);
77 istart.forward_char();
79 // var search = iter.get_text(istart);
81 var buffer = iter.get_buffer();
82 buffer.delete(ref istart, ref iter);
83 buffer.insert(ref istart, proposal.get_text(), -1);
88 public SourceCompletionActivation get_activation ()
90 //if(SettingsManager.Get_Setting("complete_auto") == "true"){
91 return SourceCompletionActivation.INTERACTIVE | SourceCompletionActivation.USER_REQUESTED;
93 // return Gtk.SourceCompletionActivation.USER_REQUESTED;
97 public int get_interactive_delay ()
102 public bool get_start_iter (SourceCompletionContext context, SourceCompletionProposal proposal, out TextIter iter)
107 public void update_info (SourceCompletionProposal proposal, SourceCompletionInfo info)
112 private bool is_space(unichar space){
113 return space.isspace() || space.to_string() == "";
116 private bool is_forward_space(unichar space){
118 space.to_string() == " "
120 space.to_string() == ""
122 space.to_string() == "\n"
124 space.to_string() == ")"
126 space.to_string() == "("