Skip to content

Commit d504c74

Browse files
committed
Added ISPC syntax highlighting (SpartanJ/ecode#436).
1 parent 2b3bd2f commit d504c74

File tree

5 files changed

+163
-2
lines changed

5 files changed

+163
-2
lines changed

src/eepp/ui/doc/textdocument.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2779,7 +2779,8 @@ TextDocument::SearchResult TextDocument::findTextLast( String text, TextPosition
27792779
TextDocument::SearchResult TextDocument::find( const String& text, TextPosition from,
27802780
bool caseSensitive, bool wholeWord,
27812781
FindReplaceType type, TextRange restrictRange ) {
2782-
std::vector<String> textLines = text.split( '\n', true, true );
2782+
std::vector<String> textLines = type == FindReplaceType::Normal ? text.split( '\n', true, true )
2783+
: std::vector<String>{ text };
27832784

27842785
if ( textLines.empty() || textLines.size() > mLines.size() )
27852786
return {};
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#include <eepp/ui/doc/languages/ispc.hpp>
2+
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>
3+
4+
namespace EE { namespace UI { namespace Doc { namespace Language {
5+
6+
void addISPC() {
7+
8+
auto& sd = SyntaxDefinitionManager::instance()->add(
9+
10+
{ "ISPC",
11+
{ "%.ispc$", "%.isph$", "%.ih$" },
12+
{
13+
{ { "//.-\n" }, "comment" },
14+
{ { "/%*", "%*/" }, "comment" },
15+
{ { "(#%s*include)%s+([<%\"][%w%d%.%\\%/%_%-]+[>%\"])" },
16+
{ "keyword", "keyword", "literal" } },
17+
{ { "L?\"", "[\"\n]", "\\" }, "string" },
18+
{ { "'", "'", "\\" }, "string" },
19+
{ { "c_number_parser" }, "number", "", SyntaxPatternMatchType::Parser },
20+
{ { "(struct)%s+([%a_][%w_]+)" }, { "keyword", "keyword", "keyword2" } },
21+
{ { "(enum)%s+([%a_][%w_]+)" }, { "keyword", "keyword", "keyword2" } },
22+
{ { "(cdo|cfor|cif|cwhiledo|else|for|foreach|foreach_active|foreach_tiled|foreach_"
23+
"unique|goto|if|switch|while)\\s*(?=\\()" },
24+
{ "normal", "keyword", "keyword" },
25+
"",
26+
SyntaxPatternMatchType::RegEx },
27+
{ { "[%a_][%w_]*%s*%f[(]" }, "function" },
28+
{ { "@llvm%.[a-zA-Z_0-9%.]*" }, "function" },
29+
{ { "[%+%-=/%*%^%%<>!~|&]" }, "operator" },
30+
{ { "#[%a_][%w_]*" }, "symbol" },
31+
{ { "[%a_][%w_]*" }, "symbol" },
32+
33+
},
34+
{
35+
36+
{ "assert", "keyword" },
37+
{ "break", "keyword" },
38+
{ "case", "keyword" },
39+
{ "cdo", "keyword" },
40+
{ "cfor", "keyword" },
41+
{ "cif", "keyword" },
42+
{ "cwhile", "keyword" },
43+
{ "continue", "keyword" },
44+
{ "default", "keyword" },
45+
{ "do", "keyword" },
46+
{ "else", "keyword" },
47+
{ "for", "keyword" },
48+
{ "foreach", "keyword" },
49+
{ "foreach_active", "keyword" },
50+
{ "foreach_tiled", "keyword" },
51+
{ "foreach_unique", "keyword" },
52+
{ "goto", "keyword" },
53+
{ "if", "keyword" },
54+
{ "in", "keyword" },
55+
{ "return", "keyword" },
56+
{ "switch", "keyword" },
57+
{ "sync", "keyword" },
58+
{ "task", "keyword" },
59+
{ "while", "keyword" },
60+
{ "launch", "keyword" },
61+
{ "invoke_sycl", "keyword" },
62+
{ "delete", "keyword" },
63+
{ "new", "keyword" },
64+
{ "sizeof", "keyword" },
65+
{ "alloca", "keyword" },
66+
{ "const", "keyword" },
67+
{ "extern", "keyword" },
68+
{ "inline", "keyword" },
69+
{ "noinline", "keyword" },
70+
{ "static", "keyword" },
71+
{ "uniform", "keyword" },
72+
{ "unmasked", "keyword" },
73+
{ "varying", "keyword" },
74+
{ "template", "keyword" },
75+
{ "typedef", "keyword" },
76+
{ "typename", "keyword" },
77+
{ "export", "keyword" },
78+
{ "signed", "keyword2" },
79+
{ "unsigned", "keyword2" },
80+
{ "soa", "keyword" },
81+
{ "__vectorcall", "keyword" },
82+
{ "__regcall", "keyword" },
83+
{ "__attribute__", "keyword" },
84+
{ "volatile", "keyword" },
85+
86+
{ "bool", "keyword2" },
87+
{ "double", "keyword2" },
88+
{ "float", "keyword2" },
89+
{ "float16", "keyword2" },
90+
{ "int", "keyword2" },
91+
{ "uint", "keyword2" },
92+
{ "int8", "keyword2" },
93+
{ "uint8", "keyword2" },
94+
{ "int16", "keyword2" },
95+
{ "uint16", "keyword2" },
96+
{ "int32", "keyword2" },
97+
{ "uint32", "keyword2" },
98+
{ "int64", "keyword2" },
99+
{ "uint64", "keyword2" },
100+
{ "void", "keyword" },
101+
{ "struct", "keyword" },
102+
{ "enum", "keyword" },
103+
{ "size_t", "keyword2" },
104+
{ "ptrdiff_t", "keyword2" },
105+
{ "intptr_t", "keyword2" },
106+
{ "uintptr_t", "keyword2" },
107+
108+
{ "true", "literal" },
109+
{ "false", "literal" },
110+
{ "NULL", "literal" },
111+
{ "programIndex", "literal" },
112+
{ "programCount", "literal" },
113+
{ "threadIndex", "literal" },
114+
{ "threadIndex0", "literal" },
115+
{ "threadIndex1", "literal" },
116+
{ "threadIndex2", "literal" },
117+
{ "threadCount", "literal" },
118+
{ "taskIndex", "literal" },
119+
{ "taskIndex0", "literal" },
120+
{ "taskIndex1", "literal" },
121+
{ "taskIndex2", "literal" },
122+
{ "taskCount", "literal" },
123+
124+
{ "#if", "keyword" },
125+
{ "#ifdef", "keyword" },
126+
{ "#ifndef", "keyword" },
127+
{ "#elif", "keyword" },
128+
{ "#else", "keyword" },
129+
{ "#endif", "keyword" },
130+
{ "#define", "keyword" },
131+
{ "#undef", "keyword" },
132+
{ "#include", "keyword" },
133+
{ "#line", "keyword" },
134+
{ "#error", "keyword" },
135+
{ "#pragma", "keyword" },
136+
{ "#warning ", "keyword" },
137+
{ "#elifdef ", "keyword" },
138+
{ "#elifndef ", "keyword" },
139+
},
140+
"//",
141+
{}
142+
143+
} );
144+
145+
sd.setFoldRangeType( FoldRangeType::Braces ).setFoldBraces( { { '{', '}' } } );
146+
}
147+
148+
}}}} // namespace EE::UI::Doc::Language
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef EE_UI_DOC_ISPC
2+
#define EE_UI_DOC_ISPC
3+
4+
namespace EE { namespace UI { namespace Doc { namespace Language {
5+
6+
extern void addISPC();
7+
8+
}}}} // namespace EE::UI::Doc::Language
9+
10+
#endif

src/modules/languages-syntax-highlighting/src/eepp/ui/doc/languagessyntaxhighlighting.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <eepp/ui/doc/languages/hlsl.hpp>
4040
#include <eepp/ui/doc/languages/htaccess.hpp>
4141
#include <eepp/ui/doc/languages/ignorefile.hpp>
42+
#include <eepp/ui/doc/languages/ispc.hpp>
4243
#include <eepp/ui/doc/languages/jai.hpp>
4344
#include <eepp/ui/doc/languages/janet.hpp>
4445
#include <eepp/ui/doc/languages/java.hpp>
@@ -151,6 +152,7 @@ void LanguagesSyntaxHighlighting::load() {
151152
addHLSL();
152153
addHtaccessFile();
153154
addIgnoreFile();
155+
addISPC();
154156
addJai();
155157
addJanet();
156158
addJava();

src/tools/ecode/ecode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3536,7 +3536,7 @@ void App::init( const LogLevel& logLevel, std::string file, const Float& pidelDe
35363536
mThreadPool->run( [this] {
35373537
// Load language definitions
35383538
Clock defClock;
3539-
SyntaxDefinitionManager::createSingleton( 123 );
3539+
SyntaxDefinitionManager::createSingleton( 124 );
35403540
Language::LanguagesSyntaxHighlighting::load();
35413541
SyntaxDefinitionManager::instance()->setLanguageExtensionsPriority(
35423542
mConfig.languagesExtensions.priorities );

0 commit comments

Comments
 (0)