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<SourceCompletionItem> proposals;
12 //public List<Gtk.SourceCompletionItem> filtered_proposals;
14 construct(Editor editor)
17 this.windowstate = editor.window.windowstate;
19 this.proposals = new List<SourceCompletionItem> ();
22 public string get_name ()
27 public int get_priority ()
32 public bool match (SourceCompletionContext context)
38 public void populate (SourceCompletionContext context)
40 var buffer = context.completion.view.buffer;
41 var mark = buffer.get_insert ();
44 buffer.get_iter_at_mark (out end, mark);
47 var searchpos = endpos;
49 searchpos.backward_find_char(is_space, null);
50 searchpos.forward_char();
51 var search = endpos.get_text(searchpos);
52 print("got search %s\n", search);
54 if (search.length < 2) {
58 var filtered_proposals = windowstate.file.palete().suggestComplete(
59 this.windowstate.file,
69 //filtered_proposals.prepend (new SourceCompletionItem (search + "xx", search + "xx", null, "some info"));
70 foreach(var i in this.proposals) {
71 //if(i.text.contains(search)) // starts??
72 // this.filtered_proposals.prepend (new SourceCompletionItem (i.label, i.text, i.icon, i.info));
75 context.add_proposals (this, filtered_proposals, true);
78 public bool activate_proposal (SourceCompletionProposal proposal, TextIter iter)
81 istart.backward_find_char(is_space, null);
82 istart.forward_char();
84 // var search = iter.get_text(istart);
86 var buffer = iter.get_buffer();
87 buffer.delete(ref istart, ref iter);
88 buffer.insert(ref istart, proposal.get_text(), -1);
93 public SourceCompletionActivation get_activation ()
95 //if(SettingsManager.Get_Setting("complete_auto") == "true"){
96 return SourceCompletionActivation.INTERACTIVE | SourceCompletionActivation.USER_REQUESTED;
98 // return Gtk.SourceCompletionActivation.USER_REQUESTED;
102 public int get_interactive_delay ()
107 public bool get_start_iter (SourceCompletionContext context, SourceCompletionProposal proposal, out TextIter iter)
112 public void update_info (SourceCompletionProposal proposal, SourceCompletionInfo info)
117 private bool is_space(unichar space){
118 return space.isspace() || space.to_string() == "";
121 private bool is_forward_space(unichar space){
123 space.to_string() == " "
125 space.to_string() == ""
127 space.to_string() == "\n"
129 space.to_string() == ")"
131 space.to_string() == "("