コード例 #1
0
ファイル: ResultProvider.cs プロジェクト: JadeHub/Jade
        public ResultSet GetResults(string file, int line, int column, CompletionSelection selection)
        {
            ResultSet resultSet = new ResultSet();
            LibClang.TranslationUnit tu = _index.FindTranslationUnit(_sourceFile);
            if (tu == null)
                return null;
            
            //convert unsaved files
            List<Tuple<string, string>> unsavedFiles = new List<Tuple<string, string>>();

            foreach(var item in _unsavedFiles.UnsavedFiles)
            {
                unsavedFiles.Add(new Tuple<string, string>(item.Path.Str, item.Content));
            }

            LibClang.CodeCompletion.Results results = tu.CodeCompleteAt(file, line, column, unsavedFiles);
            if (results == null || results.Items.Count() == 0) return null;

            foreach (LibClang.CodeCompletion.Result r in results.Items.OrderBy(item => item.CompletionPriority))
            {
                resultSet.Add(new CompletionData(r, selection));
            }

            return resultSet;
        }
コード例 #2
0
ファイル: CodeCompletion.cs プロジェクト: JadeHub/Jade
        /// <summary>
        /// 
        /// </summary>
        /// <param name="file"></param>
        /// <param name="triggerWord">Initial text to be selected in the completion window. line and col should point to the start of this word</param>
        /// <param name="line"></param>
        /// <param name="col"></param>
        public void BeginSelection(int offset)
        {
            if (_currentSelection != null) return;

            string triggerWord = ExtractTriggerWord(offset, out offset);

            int line, col;
            if (!_sourceDoc.GetLineAndColumnForOffset(offset, out line, out col))
                return;

            CompletionContext context = new CompletionContext
            {
                Line = line,
                Column = col,
                Offset = offset,
                Path = _sourceDoc.File.Path,
                ResultProvider = _resulsProvider,
                TextArea = _textArea,
                TriggerWord = triggerWord,
                Callback = delegate(LibClang.CodeCompletion.Result selection, ISegment completionSegment, EventArgs insertionRequestEventArgs) 
                    {
                        int caretLoc;
                        int startOffset = completionSegment.Offset;
                        string s = GetInsertionText(selection, insertionRequestEventArgs, out caretLoc);
                        _textArea.Document.Replace(completionSegment, s);
                        if (caretLoc != -1)
                        {
                            _textArea.Caret.Offset = startOffset + caretLoc;
                        }
                    }
            };
            _currentSelection = CompletionSelection.Create(context, delegate { _currentSelection = null; });
        }
コード例 #3
0
ファイル: CompletionData.cs プロジェクト: JadeHub/Jade
 public CompletionData(LibClang.CodeCompletion.Result r, CompletionSelection selection)
 {
     _result = r;
     _selection = selection;
 }
コード例 #4
0
ファイル: OverloadProvider.cs プロジェクト: JadeHub/Jade
 public OverloadProvider(LibClang.CodeCompletion.Result r, CompletionSelection selection)
 {
     _result = r;
     _selection = selection;
 }