File indexing completed on 2024-04-28 11:20:35
0001 /* 0002 SPDX-License-Identifier: GPL-2.0-or-later 0003 SPDX-FileCopyrightText: 2018 Sirgienko Nikita <warquark@gmail.com> 0004 */ 0005 0006 #include "octavekeywords.h" 0007 0008 #include <KSyntaxHighlighting/Repository> 0009 #include <KSyntaxHighlighting/Definition> 0010 0011 OctaveKeywords::OctaveKeywords() 0012 { 0013 KSyntaxHighlighting::Repository m_repository; 0014 KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Octave")); 0015 0016 //TODO: KSyntaxHighlighting provides "keywords", "functions", "forge", "builtin" and "commands". 0017 //we use "keywords" and "functions" at the moment. decide what to do with "forge", "builtin" and "commands". 0018 m_keywords = definition.keywordList(QLatin1String("keywords")); 0019 0020 //KSyntaxHighlighting store this keywords separatly of keywords list, so we add them manually 0021 m_keywords 0022 << QLatin1String("function") << QLatin1String("endfunction") 0023 << QLatin1String("for") << QLatin1String("endfor") 0024 << QLatin1String("while") << QLatin1String("endwhile") 0025 << QLatin1String("if") << QLatin1String("endif") << QLatin1String("else") 0026 << QLatin1String("elseif") << QLatin1String("endswitch") 0027 << QLatin1String("switch") << QLatin1String("case") 0028 << QLatin1String("end") << QLatin1String("otherwise"); 0029 0030 m_functions = definition.keywordList(QLatin1String("functions")); 0031 // https://phabricator.kde.org/D18734 0032 // OUTOFDATE: Remove after 5.56 KSyntaxHighlighting version 0033 m_functions 0034 << QLatin1String("plot") << QLatin1String("semilogx") << QLatin1String("semilogy") 0035 << QLatin1String("loglog") << QLatin1String("polar") << QLatin1String("contour") 0036 << QLatin1String("stairs") << QLatin1String("errorbar") << QLatin1String("sombrero") 0037 << QLatin1String("hist") << QLatin1String("fplot") << QLatin1String("imshow") 0038 << QLatin1String("stem") << QLatin1String("stem3") << QLatin1String("scatter") 0039 << QLatin1String("pie") << QLatin1String("quiver") << QLatin1String("compass") 0040 << QLatin1String("pareto") << QLatin1String("rose") << QLatin1String("feather") 0041 << QLatin1String("pcolor") << QLatin1String("area") << QLatin1String("fill") 0042 << QLatin1String("plotmatrix") << QLatin1String("bar") << QLatin1String("comet") 0043 /* 3d-plots */ 0044 << QLatin1String("plot3") << QLatin1String("isocaps") << QLatin1String("isonormals") 0045 << QLatin1String("mesh") << QLatin1String("meshc") << QLatin1String("meshz") 0046 << QLatin1String("surf") << QLatin1String("surfc") << QLatin1String("surfl") 0047 << QLatin1String("surfnorm") << QLatin1String("isosurface") 0048 /* 3d-plots defined by a function */ 0049 << QLatin1String("ezplot3") << QLatin1String("ezmesh") << QLatin1String("ezmeshc") 0050 << QLatin1String("ezsurf") << QLatin1String("ezsurfc"); 0051 } 0052 0053 OctaveKeywords* OctaveKeywords::instance() 0054 { 0055 static OctaveKeywords* inst = nullptr; 0056 0057 if(inst == nullptr){ 0058 inst = new OctaveKeywords(); 0059 std::sort(inst->m_functions.begin(), inst->m_functions.end()); 0060 std::sort(inst->m_keywords.begin(), inst->m_keywords.end()); 0061 } 0062 0063 return inst; 0064 } 0065 0066 const QStringList& OctaveKeywords::functions() const 0067 { 0068 return m_functions; 0069 } 0070 0071 const QStringList& OctaveKeywords::keywords() const 0072 { 0073 return m_keywords; 0074 }