File indexing completed on 2024-04-28 11:20:29

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2016 Ivan Lakhtanov <ivan.lakhtanov@gmail.com>
0004 */
0005 
0006 #pragma once
0007 
0008 #include "completionobject.h"
0009 #include "expression.h"
0010 
0011 class JuliaSession;
0012 
0013 /**
0014  * Implements code completion for Julia language
0015  *
0016  * Uses Julia's Base.REPL.REPLCompletions.completions command to get
0017  * context-aware completions like in native Julia REPL
0018  */
0019 class JuliaCompletionObject : public Cantor::CompletionObject
0020 {
0021 public:
0022     /**
0023      * Constructs JuliaCompletionObject
0024      *
0025      * @param cmd command piece to generate completion
0026      * @param index index of cursor in command
0027      * @param session current session
0028      */
0029     JuliaCompletionObject(const QString &cmd, int index, JuliaSession *session);
0030     ~JuliaCompletionObject() override;
0031 
0032 protected:
0033     /**
0034      * @see Cantor::CompletionObject::mayIdentifierContain
0035      */
0036     bool mayIdentifierContain(QChar c) const override;
0037     bool mayIdentifierBeginWith(QChar c) const override;
0038 
0039     /**
0040      * @see Cantor::CompletionObject::mayIdentifierBeginWith
0041      */
0042 
0043 protected Q_SLOTS:
0044     /**
0045      * @see Cantor::CompletionObject::fetchCompletions
0046      */
0047     void fetchCompletions() override;
0048     void extractCompletions(Cantor::Expression::Status status);
0049 
0050 private:
0051     Cantor::Expression* m_expression;
0052 };