SQF Highlighter – Extension

From Bohemia Interactive Community
Jump to navigation Jump to search
(Add v2)
(Add options documentation)
Line 2: Line 2:
! colspan="2" style="padding: 1.5em" | SQF Highlighter
! colspan="2" style="padding: 1.5em" | SQF Highlighter
|-
|-
! | Description
! Description
| Highlights and links SQF commands and functions
| Highlights and links SQF commands and functions
|-
|-
! | Author
! Author
| {{User|Lou Montana}}
| {{User|Lou Montana}}
|-
|-
! | Version
! Version
| 0.85b
| 0.85b
|-
|-
! | Release Date
! Release Date
|
|
* 2022-03-12: First upload
* 2022-03-12: "v1" (0.50b), first upload
* 2022-07-11: "v2" (0.85b), new parser
* 2022-07-11: "v2" (0.85b), new parser
|-
|-
! | Project Start
! Project Start
| 2022-03-08: Project start
| 2022-03-08: Project start
|}
|}
Line 28: Line 28:
* "Copy code to clipboard" button on hover
* "Copy code to clipboard" button on hover
* {{hl|#define}}d constant value on mouse hover
* {{hl|#define}}d constant value on mouse hover
* Options:
** {{hl|inline}} for inline code
** {{hl|notrim}} to remove the auto trim (lines themselves will always be rtrimmed)




Line 64: Line 67:
| <syntaxhighlight lang="html">This is <sqf inline>hint "It Works!";</sqf> absolutely inline.</syntaxhighlight>
| <syntaxhighlight lang="html">This is <sqf inline>hint "It Works!";</sqf> absolutely inline.</syntaxhighlight>
| This is <sqf inline>hint "It Works!";</sqf> absolutely inline.
| This is <sqf inline>hint "It Works!";</sqf> absolutely inline.
|-
| <syntaxhighlight lang="html"><sqf notrim>
hint "It Works!";
</sqf></syntaxhighlight>
| <sqf notrim>
hint "It Works!";
</sqf>
|-
|-
| <syntaxhighlight lang="html">
| <syntaxhighlight lang="html">
Line 142: Line 158:
| <syntaxhighlight lang="html">This is <sqs inline>hint "It Works!"</sqs> absolutely inline.</syntaxhighlight>
| <syntaxhighlight lang="html">This is <sqs inline>hint "It Works!"</sqs> absolutely inline.</syntaxhighlight>
| This is <sqs inline>hint "It Works!"</sqs> absolutely inline.
| This is <sqs inline>hint "It Works!"</sqs> absolutely inline.
|-
| <syntaxhighlight lang="html"><sqs notrim>
hint "It Works!";
</sqs></syntaxhighlight>
| <sqs notrim>
hint "It Works!";
</sqs>
|-
|-
| <syntaxhighlight lang="html"><sqs>
| <syntaxhighlight lang="html"><sqs>
Line 239: Line 268:
| macro
| macro
| sqfhighlighter-'''macro'''
| sqfhighlighter-'''macro'''
| <sqf>#define
| <sqf>#define myVar 1
#if
#if
#endif</sqf>
#endif</sqf>
Line 245: Line 274:
| constant ({{hl|#define}}d value)
| constant ({{hl|#define}}d value)
| sqfhighlighter-'''const'''
| sqfhighlighter-'''const'''
| <sqf>// anything #defined or anything UNDERSCORED_ALL_CAPS
| <sqf>// anything #defined only
#define testVar 1
#define testVar 1


Line 310: Line 339:
| preprocessor instructions are not considered if not at the very beginning of the line (and the parsing of the whole line may be wrong)
| preprocessor instructions are not considered if not at the very beginning of the line (and the parsing of the whole line may be wrong)
| 2022-07-11
| 2022-07-11
| {{n/a}}
| 2022-07-12
|}
|}


{{Feature|informative|Report issues on [https://discord.gg/arma Discord], in the {{hl|#community_wiki}} channel!}}
{{Feature|informative|Report issues on [https://discord.gg/arma Discord], in the {{hl|#community_wiki}} channel!}}

Revision as of 14:53, 15 July 2022

SQF Highlighter
Description Highlights and links SQF commands and functions
Author Lou Montana
Version 0.85b
Release Date
  • 2022-03-12: "v1" (0.50b), first upload
  • 2022-07-11: "v2" (0.85b), new parser
Project Start 2022-03-08: Project start

This extension highlights and automatically links SQF commands and functions. It also covers SQS (free of charge).


Features

  • SQF Syntax support
  • SQS Syntax support
  • "Copy code to clipboard" button on hover
  • #defined constant value on mouse hover
  • Options:
    • inline for inline code
    • notrim to remove the auto trim (lines themselves will always be rtrimmed)


Installation

  • Unzip the directory to wiki/extensions/SQFHighlighter
  • Add wfLoadExtension( 'SQFHighlighter' ); to LocalSettings.php
  • There are no settings - the extension creates full path links unless the host is one of the following (then relative links are created):
    • community.bistudio.com
    • community.bohemia.net


Usage

Using <sqf> tags will auto-generate syntax highlighting and links to the pages.

Examples
SQF Syntax
Code Result
<sqf/>
-no SQF code provided-
<sqf></sqf>
-no SQF code provided-
<sqf> </sqf>
-no SQF code provided-
<sqf>hint "It Works!";</sqf>
hint "It Works!";
This is <sqf inline>hint "It Works!";</sqf> absolutely inline.
This is hint "It Works!"; absolutely inline.
<sqf notrim>

	hint "It Works!";


</sqf>
hint "It Works!";
<sqf>
// your code here
hint "good!";
</sqf>
// your code here hint "good!";
<sqf>
#define fadeInDuration 3

waitUntil { not alive player };
hint DEATH_MESSAGE;
cutText ["", "Black", playerRespawnTime];

private _deathTime = time;
Deaths = Deaths + 1;

/*
	wait for resurrection
*/
waitUntil { alive player && { preloadCamera getPosATL player } };

sleep 3;
cutText ["Welcome!", "Black in", fadeInDuration];

// after 10s, end the mission
sleep 10;
[] call BIS_fnc_endMission;
</sqf>
#define fadeInDuration 3 waitUntil { not alive player }; hint DEATH_MESSAGE; cutText ["", "Black", playerRespawnTime]; private _deathTime = time; Deaths = Deaths + 1; /* wait for resurrection */ waitUntil { alive player && { preloadCamera getPosATL player } }; sleep 3; cutText ["Welcome!", "Black in", fadeInDuration]; // after 10s, end the mission sleep 10; [] call BIS_fnc_endMission;
SQS Syntax
Code Result
<sqs/>
-no SQS code provided-
<sqs></sqs>
-no SQS code provided-
<sqs> </sqs>
-no SQS code provided-
<sqs>hint "It Works!"</sqs>
hint "It Works!";
This is <sqs inline>hint "It Works!"</sqs> absolutely inline.
This is hint "It Works!" absolutely inline.
<sqs notrim>

	hint "It Works!";


</sqs>
hint "It Works!";
<sqs>
#loop
@ alive player
; you ok
hint "OK"
~1
@ not alive player
~1
hint "you ded"
; you not ok
goto "loop"
</sqs>
#loop @ alive player ; you ok hint "OK" ~1 @ not alive player ~1 hint "you ded" ; you not ok goto "loop"


CSS Classes

All elements are <span> but the parent block that is a <div>.

Element CSS class Overview
parent block sqfhighlighter-block
&nbsp;
error message sqfhighlighter-error
-no SQF code provided-

-no SQS code provided-
comment sqfhighlighter-comment
// comment /* this is a multiline comment */
string sqfhighlighter-string
"string"
number sqfhighlighter-number
42 -6.9 10e10
operator sqfhighlighter-operator
a + b
keyword (if, then, waitUntil, etc) sqfhighlighter-keyword
command sqfhighlighter-command
function sqfhighlighter-function
external function sqfhighlighter-function-ext
// not just considering BIS_ or BIN_ BIS_fnc_unknownFunction TAG_fnc_spawnGroup
local variable sqfhighlighter-localvar
_localVar
global variable sqfhighlighter-globalvar
// anything will go but UNDERSCORED_ALL_CAPS GlobalVar = 1;
macro sqfhighlighter-macro
#define myVar 1 #if #endif
constant (#defined value) sqfhighlighter-const
// anything #defined only #define testVar 1 testVar; otherVar; MY_CONSTANT;
array start ([) sqfhighlighter-arraystart
[...
array end (]) sqfhighlighter-arrayend
...]
code start ({) sqfhighlighter-codestart
{...
code end (}) sqfhighlighter-codeend
...}
parenthese start ({) sqfhighlighter-parenthesestart
(...
parenthese end (}) sqfhighlighter-parentheseend
...)


Known Issues

Version Issue Report Date Fix Date
v1 comment blocks still highlight words as global variables for now 2022-03-15 2022-03-17
#if are considered as keywords 2022-03-15 2022-03-17
single-quote strings have issues with other formatting between quotes 2022-03-15 w/ v2
negative numbers should see the minus sign coloured as well
in the end, they should not
2022-03-15 2022-03-17
numbers in variables are highlighted as numbers (e.g unit1) 2022-03-22 w/ v2
v2 preprocessor instructions are not considered if not at the very beginning of the line (and the parsing of the whole line may be wrong) 2022-07-11 2022-07-12
Report issues on Discord, in the #community_wiki channel!