diff --git a/.gitignore b/.gitignore
index 1edc07b..40766d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@ __pycache__/
_notebooks
_testoutput
.*_cache/
+.coverage*
+.hypothesis/
.idea/
.ipynb_checkpoints/
.jupyter/
@@ -15,5 +17,3 @@ envs/
lib/
node_modules/
Untitled*.ipynb
-.coverage
-.coverage*
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..174f947
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "vendor/robotframework"]
+ path = vendor/robotframework
+ url = https://github.com/robotframework/robotframework.git
diff --git a/anaconda-project.yml b/anaconda-project.yml
index ab2ac99..ed5b237 100644
--- a/anaconda-project.yml
+++ b/anaconda-project.yml
@@ -2,15 +2,52 @@ name: irobotframework-dev
variables:
NEXT_RELEASE: 0.5.0
+ EXTENSIONS: >
+ @jupyter-widgets/jupyterlab-manager@0.38.1
+ src/packages/jupyterlab-robotframework
commands:
- atom:
- unix: atom .
- env_spec: test
bootstrap:
unix: python -m scripts.bootstrap
windows: python -m scripts.bootstrap
env_spec: default
+ build:docs:
+ description: build the docs
+ unix: sphinx-build docs dist/docs
+ env_spec: docs
+ build:docs:watch:
+ description: build the docs
+ unix: sphinx-autobuild -b html docs dist/docs
+ env_spec: docs
+ build:pip:sdist:
+ description: build a pip sdist
+ unix: |-
+ set -eux \
+ && python setup.py clean \
+ && python setup.py sdist --dist-dir ${PROJECT_DIR}/dist/pip
+ env_spec: test
+ build:pip:wheel:
+ description: build a pip wheel
+ unix: |-
+ set -eux \
+ && python setup.py clean \
+ && python setup.py bdist_wheel --dist-dir ${PROJECT_DIR}/dist/pip
+ env_spec: test
+ build:npm:
+ description: build an npm package
+ unix: |-
+ set -eux \
+ && mkdir -p dist/npm \
+ && cd src/packages/jupyterlab-robotframework \
+ && mv $(npm pack) ../../../dist/npm/
+ env_spec: test
+ build:rfug:
+ unix: python -m scripts.rfug
+ env_spec: docs
+ jlpm:
+ description: run the yarn bundled with JupyterLab
+ unix: jlpm
+ env_spec: default
build:
unix: python -m scripts.build
windows: python -m scripts.build
@@ -30,6 +67,10 @@ commands:
unix: jupyter lab --no-browser --debug --app-dir dist/lab
windows: jupyter lab --no-browser --debug --app-dir dist\lab
env_spec: default
+ lab:ext:
+ description: install 1st/3rd party extensions
+ unix: jupyter labextension install $EXTENSIONS
+ env_spec: default
ipython:
description: run IRobotFramework in the terminal
windows: ipython --kernel-name robotframework
@@ -54,17 +95,13 @@ commands:
env_spec: test
env_specs:
- _python:
- packages:
- - python >=3.6,<3.7
- _build:
- description: an environment for building conda packages (busted in CI, use base)
+ default:
inherit_from:
- - _python
+ - test
+ - docs
packages:
- - conda-build
- - conda-verify
- default:
+ - ipywidgets
+ irobotframework-minimal:
description: a pretty heavy environment, because robot & jupyter & node
inherit_from:
- _python
@@ -72,31 +109,28 @@ env_specs:
- conda-forge
- defaults
packages:
- - importnb >=0.5.2
+ - importnb >=0.5.5
- ipykernel >=5.1
- ipython >=7.2
- - jupyterlab >=0.35.4,<0.36
- - jinja2
+ - jupyterlab >=0.35.6,<0.36
- nodejs >=8.12,<9
- pillow
- robotframework >=3.1
-<<<<<<< HEAD
- tornado <6
-=======
- default-win:
+ minimal-win:
inherit_from:
- - default
+ - irobotframework-minimal
packages:
- nodejs>=8,<9
->>>>>>> bollwyvl/master
test:
description: an even-heavier test environment, because browsers
inherit_from:
- - default
+ - irobotframework-minimal
packages:
- black
- flake8
- geckodriver
+ - hypothesis
- isort
- jupyter_kernel_test
- pylint
@@ -108,19 +142,32 @@ env_specs:
- twine
test-win:
inherit_from:
- - default-win
+ - minimal-win
- test
test-win37:
inherit_from:
- - default-win
+ - minimal-win
- test
packages:
- python>=3.7,<3.8
docs:
inherit_from:
- - default
+ - irobotframework-minimal
packages:
- nbsphinx
+ - lxml
- sphinx
- sphinx_rtd_theme
- sphinx-autobuild
+ - pip:
+ - robotframeworklexer
+ _python:
+ packages:
+ - python >=3.6,<3.7
+ _build:
+ description: an environment for building conda packages (busted in CI, use base)
+ inherit_from:
+ - _python
+ packages:
+ - conda-build
+ - conda-verify
diff --git a/atest/acceptance/02_Robot/01_Settings.robot b/atest/acceptance/02_Robot/01_Settings.robot
index 703afa1..46f8f88 100644
--- a/atest/acceptance/02_Robot/01_Settings.robot
+++ b/atest/acceptance/02_Robot/01_Settings.robot
@@ -29,17 +29,13 @@ Robot Notebook completes Settings
Add a Cell *** Set
Go to End of Cell Source
Trigger Cell Source Completion
- Sleep 0.1s
- Cell Source Should Equal *** Settings ***\n
+ Cell Source Should Eventually Contain *** Settings ***\n
Append to Cell Source Lib
Trigger Cell Source Completion
- Sleep 0.1s
- Cell Source Should Contain Library\ \
+ Cell Source Should Eventually Contain Library\ \
Append to Cell Source Operating
Trigger Cell Source Completion
- Sleep 0.1s
- Cell Source Should Contain OperatingSystem
+ Cell Source Should Eventually Contain OperatingSystem
Append to Cell Source \nT
Trigger Cell Source Completion
- Sleep 0.1s
Completions Should Contain Test Setup \ \ Test Teardown \ \ Test Template \ \ Test Timeout \ \ # important whitespace
diff --git a/atest/acceptance/02_Robot/02_Highlight.robot b/atest/acceptance/02_Robot/02_Highlight.robot
new file mode 100644
index 0000000..5335ef0
--- /dev/null
+++ b/atest/acceptance/02_Robot/02_Highlight.robot
@@ -0,0 +1,152 @@
+*** Settings ***
+Documentation Highlight Robot Syntax
+Suite Setup Make a Highlighting Notebook
+Default Tags kernel:robot browser:${BROWSER} feature:highlighting
+Resource ../../resources/Highlight.robot
+
+*** Test Cases ***
+Robot Syntax is Beautiful
+ [Documentation] Does CodeMirror syntax highlighting work as expected?
+ [Template] Robot Syntax Highlighting Should Yield Tokens
+ basic${/}00_test_case
+ loops${/}old_style
+ # BEGIN RFUG
+ rfug${/}0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a
+ rfug${/}02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1
+ rfug${/}04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404
+ rfug${/}0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271
+ rfug${/}05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4
+ rfug${/}05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18
+ rfug${/}06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7
+ rfug${/}08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139
+ rfug${/}092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14
+ rfug${/}0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4
+ rfug${/}0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08
+ rfug${/}0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a
+ rfug${/}1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69
+ rfug${/}10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4
+ rfug${/}12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833
+ rfug${/}153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b
+ rfug${/}1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8
+ rfug${/}1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64
+ rfug${/}1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1
+ rfug${/}20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac
+ rfug${/}20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766
+ rfug${/}20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61
+ rfug${/}20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5
+ rfug${/}212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e
+ rfug${/}22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b
+ rfug${/}29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa
+ rfug${/}2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0
+ rfug${/}2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9
+ rfug${/}2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005
+ rfug${/}30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f
+ rfug${/}341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7
+ rfug${/}34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db
+ rfug${/}388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b
+ rfug${/}39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b
+ rfug${/}3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d
+ rfug${/}3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11
+ rfug${/}3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510
+ rfug${/}3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499
+ rfug${/}3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe
+ rfug${/}3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f
+ rfug${/}3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033
+ rfug${/}40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06
+ rfug${/}410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6
+ rfug${/}415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20
+ rfug${/}4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae
+ rfug${/}44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13
+ rfug${/}452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c
+ rfug${/}479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1
+ rfug${/}47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2
+ rfug${/}47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771
+ rfug${/}48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f
+ rfug${/}506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be
+ rfug${/}52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab
+ rfug${/}532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f
+ rfug${/}5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756
+ rfug${/}57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246
+ rfug${/}57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3
+ rfug${/}591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad
+ rfug${/}59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63
+ rfug${/}5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442
+ rfug${/}5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9
+ rfug${/}5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4
+ rfug${/}6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803
+ rfug${/}618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86
+ rfug${/}6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6
+ rfug${/}651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc
+ rfug${/}653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae
+ rfug${/}6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09
+ rfug${/}6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154
+ rfug${/}6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c
+ rfug${/}6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5
+ rfug${/}73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930
+ rfug${/}75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41
+ rfug${/}766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652
+ rfug${/}7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c
+ rfug${/}7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264
+ rfug${/}7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8
+ rfug${/}7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569
+ rfug${/}874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8
+ rfug${/}8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd
+ rfug${/}8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3
+ rfug${/}8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804
+ rfug${/}8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643
+ rfug${/}8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba
+ rfug${/}8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181
+ rfug${/}90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5
+ rfug${/}90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6
+ rfug${/}92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2
+ rfug${/}93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a
+ rfug${/}9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e
+ rfug${/}97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440
+ rfug${/}99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126
+ rfug${/}a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd
+ rfug${/}a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283
+ rfug${/}a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7
+ rfug${/}a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9
+ rfug${/}aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4
+ rfug${/}ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae
+ rfug${/}b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244
+ rfug${/}b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21
+ rfug${/}ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2
+ rfug${/}bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974
+ rfug${/}bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c
+ rfug${/}c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79
+ rfug${/}c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9
+ rfug${/}c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b
+ rfug${/}c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932
+ rfug${/}c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af
+ rfug${/}c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307
+ rfug${/}c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1
+ rfug${/}c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826
+ rfug${/}c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b
+ rfug${/}cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5
+ rfug${/}cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7
+ rfug${/}cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad
+ rfug${/}d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272
+ rfug${/}d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1
+ rfug${/}d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777
+ rfug${/}d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa
+ rfug${/}da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47
+ rfug${/}dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17
+ rfug${/}dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110
+ rfug${/}defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2
+ rfug${/}e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5
+ rfug${/}e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5
+ rfug${/}e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35
+ rfug${/}e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021
+ rfug${/}e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466
+ rfug${/}e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181
+ rfug${/}e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90
+ rfug${/}e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d
+ rfug${/}eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907
+ rfug${/}ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48
+ rfug${/}f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704
+ rfug${/}f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8
+ rfug${/}fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4
+ rfug${/}fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486
+ rfug${/}fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b
+ # END RFUG
diff --git a/atest/fixtures/highlighting/samples/basic/00_test_case.robot b/atest/fixtures/highlighting/samples/basic/00_test_case.robot
new file mode 100644
index 0000000..6cbd645
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/basic/00_test_case.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+A Test Case
+ Log Hello World
+
+ Log Hello World
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/samples/loops/old_style.robot b/atest/fixtures/highlighting/samples/loops/old_style.robot
new file mode 100644
index 0000000..b7bc6ae
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/loops/old_style.robot
@@ -0,0 +1,18 @@
+*** Keywords ***
+This is a ${woo} keyword
+ Log and it's normal ${var}
+
+Old Syntax
+ Log Outside loop
+ :FOR ${i} ${animal} IN ENUMERATE cat dog
+ \ Log ${animal}
+ \ Log 2nd keyword a ${x.y}[0][${1}] b=${c${d}} another
+ \ Log something
+ \ ${x} = Log ${animal}
+ Log Outside loop
+
+This is a keyword
+ Log and it's ${var} normal
+
+*** Variables ***
+${pop} Fooo
diff --git a/atest/fixtures/highlighting/samples/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.robot b/atest/fixtures/highlighting/samples/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.robot
new file mode 100644
index 0000000..62b9c5a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.robot
@@ -0,0 +1,9 @@
+*** Test Cases ***
+Free Named Arguments
+ Run Program arg1 arg2 cwd=/home/user
+ Run Program argument shell=True env=${ENVIRON}
+
+*** Keywords ***
+Run Program
+ [Arguments] @{args} &{config}
+ Run Process program.py @{args} &{config}
diff --git a/atest/fixtures/highlighting/samples/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.robot b/atest/fixtures/highlighting/samples/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.robot
new file mode 100644
index 0000000..4cfc0e0
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Constants
+ Login name=robot password=secret
+
+Dict Variable
+ Login &{USER}
diff --git a/atest/fixtures/highlighting/samples/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.robot b/atest/fixtures/highlighting/samples/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.robot
new file mode 100644
index 0000000..d14a92a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.robot
@@ -0,0 +1,13 @@
+*** Test Cases ***
+Start index
+ Keyword ${LIST}[1:]
+
+End index
+ Keyword ${LIST}[:4]
+
+Start and end
+ Keyword ${LIST}[2:-1]
+
+Step
+ Keyword ${LIST}[::2]
+ Keyword ${LIST}[2:-1:2]
diff --git a/atest/fixtures/highlighting/samples/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.robot b/atest/fixtures/highlighting/samples/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.robot
new file mode 100644
index 0000000..3f08424
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Test With Settings
+ [Documentation] Another dummy test
+ [Tags] dummy owner-johndoe
+ Log Hello, world!
diff --git a/atest/fixtures/highlighting/samples/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.robot b/atest/fixtures/highlighting/samples/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.robot
new file mode 100644
index 0000000..4d67a1d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.robot
@@ -0,0 +1,4 @@
+*** Keywords ***
+Select ${animal} from list
+ Open Page Pet Selection
+ Select Item From List animal_list ${animal}
diff --git a/atest/fixtures/highlighting/samples/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.robot b/atest/fixtures/highlighting/samples/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.robot
new file mode 100644
index 0000000..50df14e
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Nested item access
+ Should Be Equal ${DATA}[0][name] Robot
+ Should Be Equal ${DATA}[1][id] ${2}
diff --git a/atest/fixtures/highlighting/samples/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.robot b/atest/fixtures/highlighting/samples/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.robot
new file mode 100644
index 0000000..4552b58
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.robot
@@ -0,0 +1,8 @@
+*** Variables ***
+${JOHN HOME} /home/john
+${JANE HOME} /home/jane
+
+*** Test Cases ***
+Example
+ ${name} = Get Name
+ Do X ${${name} HOME}
diff --git a/atest/fixtures/highlighting/samples/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.robot b/atest/fixtures/highlighting/samples/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.robot
new file mode 100644
index 0000000..c46df9d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.robot
@@ -0,0 +1,5 @@
+*** Settings ***
+Library OperatingSystem
+Library my.package.TestLibrary
+Library MyLibrary arg1 arg2
+Library ${LIBRARY}
diff --git a/atest/fixtures/highlighting/samples/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.robot b/atest/fixtures/highlighting/samples/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.robot
new file mode 100644
index 0000000..1022a5a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.robot
@@ -0,0 +1,14 @@
+*** Test Cases ***
+Normal test case with embedded arguments
+ The result of 1 + 1 should be 2
+ The result of 1 + 2 should be 3
+
+Template with embedded arguments
+ [Template] The result of ${calculation} should be ${expected}
+ 1 + 1 2
+ 1 + 2 3
+
+*** Keywords ***
+The result of ${calculation} should be ${expected}
+ ${result} = Calculate ${calculation}
+ Should Be Equal ${result} ${expected}
diff --git a/atest/fixtures/highlighting/samples/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.robot b/atest/fixtures/highlighting/samples/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.robot
new file mode 100644
index 0000000..5abb052
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.robot
@@ -0,0 +1,17 @@
+*** Settings ***
+Documentation Resource file for demo purposes.
+... This resource is only used in an example and it doesn't do anything useful.
+
+*** Keywords ***
+My Keyword
+ [Documentation] Does nothing
+ No Operation
+
+Your Keyword
+ [Arguments] ${arg}
+ [Documentation] Takes one argument and *does nothing* with it.
+ ...
+ ... Examples:
+ ... | Your Keyword | xxx |
+ ... | Your Keyword | yyy |
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.robot b/atest/fixtures/highlighting/samples/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.robot
new file mode 100644
index 0000000..219f576
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.robot
@@ -0,0 +1,17 @@
+*** Keywords ***
+Any Number Of Arguments
+ [Arguments] @{varargs}
+ Log Many @{varargs}
+
+One Or More Arguments
+ [Arguments] ${required} @{rest}
+ Log Many ${required} @{rest}
+
+Required, Default, Varargs
+ [Arguments] ${req} ${opt}=42 @{others}
+ Log Required: ${req}
+ Log Optional: ${opt}
+ Log Others:
+ FOR ${item} IN @{others}
+ Log ${item}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.robot b/atest/fixtures/highlighting/samples/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.robot
new file mode 100644
index 0000000..7f37bbf
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.robot
@@ -0,0 +1,9 @@
+*** Test Cases ***
+Named-only Arguments
+ Run Program arg1 arg2 # 'shell' is False (default)
+ Run Program argument shell=True # 'shell' is True
+
+*** Keywords ***
+Run Program
+ [Arguments] @{args} ${shell}=False
+ Run Process program.py @{args} shell=${shell}
diff --git a/atest/fixtures/highlighting/samples/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.robot b/atest/fixtures/highlighting/samples/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.robot
new file mode 100644
index 0000000..c134728
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Assign multiple
+ ${a} ${b} ${c} = Get Three
+ ${first} @{rest} = Get Three
+ @{before} ${last} = Get Three
+ ${begin} @{middle} ${end} = Get Three
diff --git a/atest/fixtures/highlighting/samples/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.robot b/atest/fixtures/highlighting/samples/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.robot
new file mode 100644
index 0000000..334f1fc
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.robot
@@ -0,0 +1,14 @@
+*** Settings ***
+Documentation Example suite
+Suite Setup Do Something ${MESSAGE}
+Force Tags example
+Library SomeLibrary
+
+*** Variables ***
+${MESSAGE} Hello, world!
+
+*** Keywords ***
+Do Something
+ [Arguments] ${args}
+ Some Keyword ${arg}
+ Another Keyword
diff --git a/atest/fixtures/highlighting/samples/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.robot b/atest/fixtures/highlighting/samples/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.robot
new file mode 100644
index 0000000..2d3aa43
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.robot
@@ -0,0 +1,12 @@
+*** Settings ***
+Documentation This is documentation for this test suite.\nThis kind of documentation can often be get quite long...
+Default Tags default tag 1 default tag 2 default tag 3 default tag 4 default tag 5
+
+*** Variable ***
+@{LIST} this list is quite long and items in it could also be long
+
+*** Test Cases ***
+Example
+ [Tags] you probably do not have this many tags in real life
+ Do X first argument second argument third argument fourth argument fifth argument sixth argument
+ ${var} = Get X first argument passed to this keyword is pretty long second argument passed to this keyword is long too
diff --git a/atest/fixtures/highlighting/samples/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.robot b/atest/fixtures/highlighting/samples/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.robot
new file mode 100644
index 0000000..c86cc73
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Documentation First line.\n\nSecond paragraph. This time\nwith multiple lines.
+Metadata Example list - first item\n- second item\n- third
diff --git a/atest/fixtures/highlighting/samples/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.robot b/atest/fixtures/highlighting/samples/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.robot
new file mode 100644
index 0000000..d2ed99a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Example
+ Should Be Equal ${0b1011} ${11}
+ Should Be Equal ${0o10} ${8}
+ Should Be Equal ${0xff} ${255}
+ Should Be Equal ${0B1010} ${0XA}
diff --git a/atest/fixtures/highlighting/samples/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.robot b/atest/fixtures/highlighting/samples/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.robot
new file mode 100644
index 0000000..4d3c5b7
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Keyword Arguments
+ Example Keyword hello=world # Logs 'hello world'.
+ Example Keyword foo=1 bar=42 # Logs 'foo 1' and 'bar 42'.
diff --git a/atest/fixtures/highlighting/samples/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.robot b/atest/fixtures/highlighting/samples/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.robot
new file mode 100644
index 0000000..2191e7f
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Library ExampleLibrary &{LIB ARGS}
+Suite Setup Some Keyword &{KW ARGS} named=arg
diff --git a/atest/fixtures/highlighting/samples/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.robot b/atest/fixtures/highlighting/samples/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.robot
new file mode 100644
index 0000000..e863f66
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.robot
@@ -0,0 +1,6 @@
+*** Variables ***
+&{USER 1} name=Matti address=xxx phone=123
+&{USER 2} name=Teppo address=yyy phone=456
+&{MANY} first=1 second=${2} ${3}=third
+&{EVEN MORE} &{MANY} first=override empty=
+... =empty key\=here=value
diff --git a/atest/fixtures/highlighting/samples/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.robot b/atest/fixtures/highlighting/samples/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.robot
new file mode 100644
index 0000000..a4b65fe
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.robot
@@ -0,0 +1,6 @@
+*** Tasks ***
+Process invoice
+ Read information from PDF
+ Validate information
+ Submit information to backend system
+ Validate information is visible in web UI
diff --git a/atest/fixtures/highlighting/samples/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.robot b/atest/fixtures/highlighting/samples/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.robot
new file mode 100644
index 0000000..45f74d0
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.robot
@@ -0,0 +1,7 @@
+*** Test Cases ***
+Defaults
+ One Default
+ One Default argument
+ Multiple Defaults required arg
+ Multiple Defaults required arg optional
+ Multiple Defaults required arg optional 1 optional 2
diff --git a/atest/fixtures/highlighting/samples/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.robot b/atest/fixtures/highlighting/samples/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.robot
new file mode 100644
index 0000000..66a8f8f
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.robot
@@ -0,0 +1,15 @@
+*** Variables ***
+@{LIST} a b c
+
+*** Test Cases ***
+Manage index manually
+ ${index} = Set Variable -1
+ FOR ${item} IN @{LIST}
+ ${index} = Evaluate ${index} + 1
+ My Keyword ${index} ${item}
+ END
+
+For-in-enumerate
+ FOR ${index} ${item} IN ENUMERATE @{LIST}
+ My Keyword ${index} ${item}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.robot b/atest/fixtures/highlighting/samples/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.robot
new file mode 100644
index 0000000..cc46b37
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.robot
@@ -0,0 +1,8 @@
+*** Test Cases ***
+Constants
+ Log Hello
+ Log Hello, world!!
+
+Variables
+ Log ${GREET}
+ Log ${GREET}, ${NAME}!!
diff --git a/atest/fixtures/highlighting/samples/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.robot b/atest/fixtures/highlighting/samples/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.robot
new file mode 100644
index 0000000..4a3d233
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.robot
@@ -0,0 +1,17 @@
+*** Test Cases ***
+Positional
+ Various Args hello world # Logs 'arg: hello' and 'vararg: world'.
+
+Named
+ Various Args arg=value # Logs 'arg: value'.
+
+Kwargs
+ Various Args a=1 b=2 c=3 # Logs 'kwarg: a 1', 'kwarg: b 2' and 'kwarg: c 3'.
+ Various Args c=3 a=1 b=2 # Same as above. Order does not matter.
+
+Positional and kwargs
+ Various Args 1 2 kw=3 # Logs 'arg: 1', 'vararg: 2' and 'kwarg: kw 3'.
+
+Named and kwargs
+ Various Args arg=value hello=world # Logs 'arg: value' and 'kwarg: hello world'.
+ Various Args hello=world arg=value # Same as above. Order does not matter.
diff --git a/atest/fixtures/highlighting/samples/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.robot b/atest/fixtures/highlighting/samples/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.robot
new file mode 100644
index 0000000..081bf02
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.robot
@@ -0,0 +1,13 @@
+| *** Test Cases ***
+| Recommended solution
+| | FOR | ${animal} | IN | cat | dog |
+| | | Log | ${animal} |
+| | | Log | 2nd keyword |
+| | END | |
+| | Log | Outside loop |
+|
+| Compatible with RF 3.0.x
+| | :FOR | ${animal} | IN | cat | dog |
+| | \ | Log | ${animal} |
+| | \ | Log | 2nd keyword |
+| | Log | Outside loop |
diff --git a/atest/fixtures/highlighting/samples/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.robot b/atest/fixtures/highlighting/samples/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.robot
new file mode 100644
index 0000000..381f3eb
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.robot
@@ -0,0 +1,32 @@
+*** Settings ***
+Test Timeout 2 minutes
+
+*** Test Cases ***
+Default Timeout
+ [Documentation] Timeout from the Setting table is used
+ Some Keyword argument
+
+Override
+ [Documentation] Override default, use 10 seconds timeout
+ [Timeout] 10
+ Some Keyword argument
+
+Custom Message
+ [Documentation] Override default and use custom message
+ [Timeout] 1min 10s This is my custom error
+ Some Keyword argument
+
+Variables
+ [Documentation] It is possible to use variables too
+ [Timeout] ${TIMEOUT}
+ Some Keyword argument
+
+No Timeout
+ [Documentation] Empty timeout means no timeout even when Test Timeout has been used
+ [Timeout]
+ Some Keyword argument
+
+No Timeout 2
+ [Documentation] Disabling timeout with NONE works too and is more explicit.
+ [Timeout] NONE
+ Some Keyword argument
diff --git a/atest/fixtures/highlighting/samples/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.robot b/atest/fixtures/highlighting/samples/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.robot
new file mode 100644
index 0000000..2149832
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ @{list} = Create List first second third
+ Length Should Be ${list} 3
+ Log Many @{list}
diff --git a/atest/fixtures/highlighting/samples/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.robot b/atest/fixtures/highlighting/samples/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.robot
new file mode 100644
index 0000000..a35d2c5
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.robot
@@ -0,0 +1,19 @@
+*** Test Cases ***
+One Return Value
+ ${ret} = Return One Value argument
+ Some Keyword ${ret}
+
+Multiple Values
+ ${a} ${b} ${c} = Return Three Values
+ @{list} = Return Three Values
+ ${scalar} @{rest} = Return Three Values
+
+*** Keywords ***
+Return One Value
+ [Arguments] ${arg}
+ Do Something ${arg}
+ ${value} = Get Some Value
+ [Return] ${value}
+
+Return Three Values
+ [Return] foo bar zap
diff --git a/atest/fixtures/highlighting/samples/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.robot b/atest/fixtures/highlighting/samples/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.robot
new file mode 100644
index 0000000..bc8d480
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.robot
@@ -0,0 +1,8 @@
+*** Keywords ***
+With Positional
+ [Arguments] ${positional} @{} ${named}
+ Log Many ${positional} ${named}
+
+With Free Named
+ [Arguments] @{varargs} ${named only} &{free named}
+ Log Many @{varargs} ${named only} &{free named}
diff --git a/atest/fixtures/highlighting/samples/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.robot b/atest/fixtures/highlighting/samples/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.robot
new file mode 100644
index 0000000..4bd8924
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.robot
@@ -0,0 +1,24 @@
+*** Settings ***
+Documentation An example resource file
+Library SeleniumLibrary
+Resource ${RESOURCES}/common.resource
+
+*** Variables ***
+${HOST} localhost:7272
+${LOGIN URL} http://${HOST}/
+${WELCOME URL} http://${HOST}/welcome.html
+${BROWSER} Firefox
+
+*** Keywords ***
+Open Login Page
+ [Documentation] Opens browser to login page
+ Open Browser ${LOGIN URL} ${BROWSER}
+ Title Should Be Login Page
+
+Input Name
+ [Arguments] ${name}
+ Input Text username_field ${name}
+
+Input Password
+ [Arguments] ${password}
+ Input Text password_field ${password}
diff --git a/atest/fixtures/highlighting/samples/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.robot b/atest/fixtures/highlighting/samples/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.robot
new file mode 100644
index 0000000..c4bc529
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.robot
@@ -0,0 +1,5 @@
+*** Settings ***
+Library PythonLibrary.py
+Library /absolute/path/JavaLibrary.java
+Library relative/path/PythonDirLib/ possible arguments
+Library ${RESOURCES}/Example.class
diff --git a/atest/fixtures/highlighting/samples/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.robot b/atest/fixtures/highlighting/samples/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.robot
new file mode 100644
index 0000000..482df07
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Dictionary variable item
+ Login ${USER}[name] ${USER}[password]
+ Title Should Be Welcome ${USER}[name]!
+
+Key defined as variable
+ Log Many ${DICT}[${KEY}] ${DICT}[${42}]
+
+Attribute access
+ Login ${USER.name} ${USER.password}
+ Title Should Be Welcome ${USER.name}!
diff --git a/atest/fixtures/highlighting/samples/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.robot b/atest/fixtures/highlighting/samples/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.robot
new file mode 100644
index 0000000..7825b43
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.robot
@@ -0,0 +1,15 @@
+*** Test Cases ***
+ Example 1
+ [Documentation] First line\n Second line in multiple parts
+ No Operation
+
+ Example 2
+ [Documentation] First line
+ ... Second line in multiple parts
+ No Operation
+
+ Example 3
+ [Documentation] First line\n
+ ... Second line in\
+ ... multiple parts
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.robot b/atest/fixtures/highlighting/samples/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.robot
new file mode 100644
index 0000000..619bec7
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.robot
@@ -0,0 +1,20 @@
+*** Test Cases ***
+Example
+ I execute "ls"
+ I execute "ls" with "-lh"
+ I type 1 + 2
+ I type 53 - 11
+ Today is 2011-06-27
+
+*** Keywords ***
+I execute "${cmd:[^"]+}"
+ Run Process ${cmd} shell=True
+
+I execute "${cmd}" with "${opts}"
+ Run Process ${cmd} ${opts} shell=True
+
+I type ${a:\d+} ${operator:[+-]} ${b:\d+}
+ Calculate ${a} ${operator} ${b}
+
+Today is ${date:\d{4\}-\d{2\}-\d{2\}}
+ Log ${date}
diff --git a/atest/fixtures/highlighting/samples/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.robot b/atest/fixtures/highlighting/samples/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.robot
new file mode 100644
index 0000000..6d4d053
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.robot
@@ -0,0 +1,6 @@
+*** Settings ***
+Documentation
+... First paragraph has only one line.
+...
+... Second paragraph, this time created
+... with multiple lines.
diff --git a/atest/fixtures/highlighting/samples/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.robot b/atest/fixtures/highlighting/samples/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.robot
new file mode 100644
index 0000000..1bc73cd
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.robot
@@ -0,0 +1,36 @@
+*** Test Cases ***
+Only upper limit
+ [Documentation] Loops over values from 0 to 9
+ FOR ${index} IN RANGE 10
+ Log ${index}
+ END
+
+Start and end
+ [Documentation] Loops over values from 1 to 10
+ FOR ${index} IN RANGE 1 11
+ Log ${index}
+ END
+
+Also step given
+ [Documentation] Loops over values 5, 15, and 25
+ FOR ${index} IN RANGE 5 26 10
+ Log ${index}
+ END
+
+Negative step
+ [Documentation] Loops over values 13, 3, and -7
+ FOR ${index} IN RANGE 13 -13 -10
+ Log ${index}
+ END
+
+Arithmetic
+ [Documentation] Arithmetic with variable
+ FOR ${index} IN RANGE ${var} + 1
+ Log ${index}
+ END
+
+Float parameters
+ [Documentation] Loops over values 3.14, 4.34, and 5.54
+ FOR ${index} IN RANGE 3.14 6.09 1.2
+ Log ${index}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.robot b/atest/fixtures/highlighting/samples/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.robot
new file mode 100644
index 0000000..a5c0c49
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.robot
@@ -0,0 +1,7 @@
+*** Test Cases **
+Normal test case
+ Example keyword first argument second argument
+
+Templated test case
+ [Template] Example keyword
+ first argument second argument
diff --git a/atest/fixtures/highlighting/samples/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.robot b/atest/fixtures/highlighting/samples/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.robot
new file mode 100644
index 0000000..f5777d3
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.robot
@@ -0,0 +1,8 @@
+*** Test Case ***
+For-in-enumerate with two values per iteration
+ FOR ${index} ${en} ${fi} IN ENUMERATE
+ ... cat kissa
+ ... dog koira
+ ... horse hevonen
+ Log "${en}" in English is "${fi}" in Finnish (index: ${index})
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.robot b/atest/fixtures/highlighting/samples/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.robot
new file mode 100644
index 0000000..004bcb0
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.robot
@@ -0,0 +1,17 @@
+*** Test Cases *** # args # args, kwargs
+Positional only
+ Dynamic x # [x] # [x], {}
+ Dynamic x y # [x, y] # [x, y], {}
+ Dynamic x y z # [x, y, z] # [x, y, z], {}
+
+Named only
+ Dynamic a=x # [x] # [], {a: x}
+ Dynamic c=z a=x b=y # [x, y, z] # [], {a: x, b: y, c: z}
+
+Positional and named
+ Dynamic x b=y # [x, y] # [x], {b: y}
+ Dynamic x y c=z # [x, y, z] # [x, y], {c: z}
+ Dynamic x b=y c=z # [x, y, z] # [x], {y: b, c: z}
+
+Intermediate missing
+ Dynamic x c=z # [x, d1, z] # [x], {c: z}
diff --git a/atest/fixtures/highlighting/samples/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.robot b/atest/fixtures/highlighting/samples/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.robot
new file mode 100644
index 0000000..23ca2c3
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Returning one value
+ ${string} = Return String
+ Should Be Equal ${string} Hello, world!
+ ${object} = Return Object Robot
+ Should Be Equal ${object.name} Robot
diff --git a/atest/fixtures/highlighting/samples/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.robot b/atest/fixtures/highlighting/samples/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.robot
new file mode 100644
index 0000000..09d240a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Example
+ ${OBJECT.name} = Set Variable New name
+ ${OBJECT.new_attr} = Set Variable New attribute
diff --git a/atest/fixtures/highlighting/samples/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.robot b/atest/fixtures/highlighting/samples/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.robot
new file mode 100644
index 0000000..5117faa
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Coercion
+ Double Argument 3.14
+ Double Argument 2e16
+ Compatible Types Hello, world! 1234
+ Compatible Types Hi again! -10 true
+
+No Coercion
+ Double Argument ${3.14}
+ Conflicting Types 1 ${2} # must use variables
+ Conflicting Types ${1} 2
diff --git a/atest/fixtures/highlighting/samples/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.robot b/atest/fixtures/highlighting/samples/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.robot
new file mode 100644
index 0000000..cca0a9d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.robot
@@ -0,0 +1,7 @@
+*** Variables ***
+${DATE} 2011-06-27
+
+*** Test Cases ***
+Example
+ I type ${1} + ${2}
+ Today is ${DATE}
diff --git a/atest/fixtures/highlighting/samples/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.robot b/atest/fixtures/highlighting/samples/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.robot
new file mode 100644
index 0000000..874ec94
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.robot
@@ -0,0 +1,31 @@
+*** Settings ***
+Force Tags req-42
+Default Tags owner-john smoke
+
+*** Variables ***
+${HOST} 10.0.1.42
+
+*** Test Cases ***
+No own tags
+ [Documentation] This test has tags owner-john, smoke and req-42.
+ No Operation
+
+With own tags
+ [Documentation] This test has tags not_ready, owner-mrx and req-42.
+ [Tags] owner-mrx not_ready
+ No Operation
+
+Own tags with variables
+ [Documentation] This test has tags host-10.0.1.42 and req-42.
+ [Tags] host-${HOST}
+ No Operation
+
+Empty own tags
+ [Documentation] This test has only tag req-42.
+ [Tags]
+ No Operation
+
+Set Tags and Remove Tags Keywords
+ [Documentation] This test has tags mytag and owner-john.
+ Set Tags mytag
+ Remove Tags smoke req-*
diff --git a/atest/fixtures/highlighting/samples/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.robot b/atest/fixtures/highlighting/samples/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.robot
new file mode 100644
index 0000000..d9575ab
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Returning
+ ${x} = Get X an argument
+ Log We got ${x}!
diff --git a/atest/fixtures/highlighting/samples/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.robot b/atest/fixtures/highlighting/samples/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.robot
new file mode 100644
index 0000000..249599b
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.robot
@@ -0,0 +1,9 @@
+*** Test Cases ***
+Template and for
+ [Template] Example keyword
+ FOR ${item} IN @{ITEMS}
+ ${item} 2nd arg
+ END
+ FOR ${index} IN RANGE 42
+ 1st arg ${index}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.robot b/atest/fixtures/highlighting/samples/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.robot
new file mode 100644
index 0000000..7ff4e6a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Example
+ Remove Files ${TEMPDIR}/f1.txt ${TEMPDIR}/f2.txt ${TEMPDIR}/f3.txt
+ @{paths} = Join Paths ${TEMPDIR} f1.txt f2.txt f3.txt f4.txt
diff --git a/atest/fixtures/highlighting/samples/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.robot b/atest/fixtures/highlighting/samples/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.robot
new file mode 100644
index 0000000..97e86ac
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.robot
@@ -0,0 +1,13 @@
+*** Keywords ***
+True examples
+ Should Be Equal ${x} ${y} Custom error values=True # Strings are generally true.
+ Should Be Equal ${x} ${y} Custom error values=yes # Same as the above.
+ Should Be Equal ${x} ${y} Custom error values=${TRUE} # Python `True` is true.
+ Should Be Equal ${x} ${y} Custom error values=${42} # Numbers other than 0 are true.
+
+False examples
+ Should Be Equal ${x} ${y} Custom error values=False # String `false` is false.
+ Should Be Equal ${x} ${y} Custom error values=no # Also string `no` is false.
+ Should Be Equal ${x} ${y} Custom error values=${EMPTY} # Empty string is false.
+ Should Be Equal ${x} ${y} Custom error values=${FALSE} # Python `False` is false.
+ Should Be Equal ${x} ${y} Custom error values=no values # Special false string with this keyword.
diff --git a/atest/fixtures/highlighting/samples/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.robot b/atest/fixtures/highlighting/samples/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.robot
new file mode 100644
index 0000000..e507416
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.robot
@@ -0,0 +1,9 @@
+*** Test Cases ***
+Example 1A
+ Connect example.com 80 # Connect gets two strings as arguments
+
+Example 1B
+ Connect example.com ${80} # Connect gets a string and an integer
+
+Example 2
+ Do X ${3.14} ${-1e-4} # Do X gets floating point numbers 3.14 and -0.0001
diff --git a/atest/fixtures/highlighting/samples/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.robot b/atest/fixtures/highlighting/samples/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.robot
new file mode 100644
index 0000000..555c70d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Repeat Keyword 5 Some Keyword arg1 arg2
+ Repeat Keyword 42 times My Keyword
+ Repeat Keyword ${var} Another Keyword argument
diff --git a/atest/fixtures/highlighting/samples/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.robot b/atest/fixtures/highlighting/samples/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.robot
new file mode 100644
index 0000000..f910749
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.robot
@@ -0,0 +1,7 @@
+*** Test Cases ***
+Normal Error
+ Fail This is a rather boring example...
+
+HTML Error
+ ${number} = Get Number
+ Should Be Equal ${number} 42 *HTML* Number is not my MAGIC number.
diff --git a/atest/fixtures/highlighting/samples/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.robot b/atest/fixtures/highlighting/samples/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.robot
new file mode 100644
index 0000000..7f5d106
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ ${list} = Create List first second third
+ Length Should Be ${list} 3
+ Log Many @{list}
diff --git a/atest/fixtures/highlighting/samples/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.robot b/atest/fixtures/highlighting/samples/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.robot
new file mode 100644
index 0000000..59d827d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.robot
@@ -0,0 +1,3 @@
+*** Test Cases ***
+My Test
+ Login Via User Panel ${username} ${password}
diff --git a/atest/fixtures/highlighting/samples/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.robot b/atest/fixtures/highlighting/samples/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.robot
new file mode 100644
index 0000000..b295d72
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.robot
@@ -0,0 +1,6 @@
+*** Variables ***
+@{NAMES} Matti Teppo
+@{NAMES2} @{NAMES} Seppo
+@{NOTHING}
+@{MANY} one two three four
+... five six seven
diff --git a/atest/fixtures/highlighting/samples/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.robot b/atest/fixtures/highlighting/samples/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.robot
new file mode 100644
index 0000000..8aaf1e5
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.robot
@@ -0,0 +1,29 @@
+*** Settings ***
+Test Setup Open Application App A
+Test Teardown Close Application
+
+*** Test Cases ***
+Default values
+ [Documentation] Setup and teardown from setting table
+ Do Something
+
+Overridden setup
+ [Documentation] Own setup, teardown from setting table
+ [Setup] Open Application App B
+ Do Something
+
+No teardown
+ [Documentation] Default setup, no teardown at all
+ Do Something
+ [Teardown]
+
+No teardown 2
+ [Documentation] Setup and teardown can be disabled also with special value NONE
+ Do Something
+ [Teardown] NONE
+
+Using variables
+ [Documentation] Setup and teardown specified using variables
+ [Setup] ${SETUP}
+ Do Something
+ [Teardown] ${TEARDOWN}
diff --git a/atest/fixtures/highlighting/samples/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.robot b/atest/fixtures/highlighting/samples/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.robot
new file mode 100644
index 0000000..4043bad
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.robot
@@ -0,0 +1,12 @@
+*** Keywords ***
+Free Named Only
+ [Arguments] &{named}
+ Log Many &{named}
+
+Positional And Free Named
+ [Arguments] ${required} &{extra}
+ Log Many ${required} &{extra}
+
+Run Program
+ [Arguments] @{args} &{config}
+ Run Process program.py @{args} &{config}
diff --git a/atest/fixtures/highlighting/samples/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.robot b/atest/fixtures/highlighting/samples/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.robot
new file mode 100644
index 0000000..61e1517
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Create File ${TEMPDIR}/empty.txt
+ Create File ${TEMPDIR}/utf-8.txt Hyvä esimerkki
+ Create File ${TEMPDIR}/iso-8859-1.txt Hyvä esimerkki ISO-8859-1
diff --git a/atest/fixtures/highlighting/samples/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.robot b/atest/fixtures/highlighting/samples/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.robot
new file mode 100644
index 0000000..453d2f1
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ KW 1 ${OBJECT.name}
+ KW 2 ${OBJECT.eat('Cucumber')}
+ KW 3 ${DICTIONARY[2]}
diff --git a/atest/fixtures/highlighting/samples/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.robot b/atest/fixtures/highlighting/samples/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.robot
new file mode 100644
index 0000000..0b83ab2
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.robot
@@ -0,0 +1,12 @@
+*** Keywords ***
+Handle Table
+ [Arguments] @{table}
+ FOR ${row} IN @{table}
+ Handle Row @{row}
+ END
+
+Handle Row
+ [Arguments] @{row}
+ FOR ${cell} IN @{row}
+ Handle Cell ${cell}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.robot b/atest/fixtures/highlighting/samples/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.robot
new file mode 100644
index 0000000..5957045
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.robot
@@ -0,0 +1,22 @@
+*** Keywords ***
+One Argument With Default Value
+ [Arguments] ${arg}=default value
+ [Documentation] This keyword takes 0-1 arguments
+ Log Got argument ${arg}
+
+Two Arguments With Defaults
+ [Arguments] ${arg1}=default 1 ${arg2}=${VARIABLE}
+ [Documentation] This keyword takes 0-2 arguments
+ Log 1st argument ${arg1}
+ Log 2nd argument ${arg2}
+
+One Required And One With Default
+ [Arguments] ${required} ${optional}=default
+ [Documentation] This keyword takes 1-2 arguments
+ Log Required: ${required}
+ Log Optional: ${optional}
+
+ Default Based On Earlier Argument
+ [Arguments] ${a} ${b}=${a} ${c}=${a} and ${b}
+ Should Be Equal ${a} ${b}
+ Should Be Equal ${c} ${a} and ${b}
diff --git a/atest/fixtures/highlighting/samples/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.robot b/atest/fixtures/highlighting/samples/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.robot
new file mode 100644
index 0000000..65a4098
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.robot
@@ -0,0 +1,20 @@
+*** Keywords ***
+One line documentation
+ [Documentation] One line documentation.
+ No Operation
+
+Multiline documentation
+ [Documentation] The first line creates the short doc.
+ ...
+ ... This is the body of the documentation.
+ ... It is not shown in Libdoc outputs but only
+ ... the short doc is shown in logs.
+ No Operation
+
+Short documentation in multiple lines
+ [Documentation] If the short doc gets longer, it can span
+ ... multiple physical lines.
+ ...
+ ... The body is separated from the short doc with
+ ... an empty line.
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.robot b/atest/fixtures/highlighting/samples/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.robot
new file mode 100644
index 0000000..cd9d8ed
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.robot
@@ -0,0 +1,3 @@
+*** Test Cases ***
+Example
+ Example Keyword 42 False
diff --git a/atest/fixtures/highlighting/samples/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.robot b/atest/fixtures/highlighting/samples/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.robot
new file mode 100644
index 0000000..0c52017
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Library com.company.TestLib WITH NAME TestLib
+Library ${LIBRARY} WITH NAME MyName
diff --git a/atest/fixtures/highlighting/samples/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.robot b/atest/fixtures/highlighting/samples/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.robot
new file mode 100644
index 0000000..c721b74
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Example
+ :FOR ${animal} IN cat dog
+ \ Log ${animal}
+ \ Log 2nd keyword
+ Log Outside loop
diff --git a/atest/fixtures/highlighting/samples/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.robot b/atest/fixtures/highlighting/samples/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.robot
new file mode 100644
index 0000000..4c4241b
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.robot
@@ -0,0 +1,24 @@
+*** Test Cases ***
+Add two numbers
+ Given I have Calculator open
+ When I add 2 and 40
+ Then result should be 42
+
+Add negative numbers
+ Given I have Calculator open
+ When I add 1 and -2
+ Then result should be -1
+
+*** Keywords ***
+I have ${program} open
+ Start Program ${program}
+
+I add ${number 1} and ${number 2}
+ Input Number ${number 1}
+ Push Button +
+ Input Number ${number 2}
+ Push Button =
+
+Result should be ${expected}
+ ${result} = Get Result
+ Should Be Equal ${result} ${expected}
diff --git a/atest/fixtures/highlighting/samples/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.robot b/atest/fixtures/highlighting/samples/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.robot
new file mode 100644
index 0000000..81e8ae8
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.robot
@@ -0,0 +1,9 @@
+*** Keywords ***
+Open Login Page
+ Open Browser http://host/login.html
+ Title Should Be Login Page
+
+Title Should Start With
+ [Arguments] ${expected}
+ ${title} = Get Title
+ Should Start With ${title} ${expected}
diff --git a/atest/fixtures/highlighting/samples/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.robot b/atest/fixtures/highlighting/samples/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.robot
new file mode 100644
index 0000000..ecfb9b0
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ FOR ${element} IN @{ELEMENTS}
+ Start Element ${element}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.robot b/atest/fixtures/highlighting/samples/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.robot
new file mode 100644
index 0000000..8b0f29e
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.robot
@@ -0,0 +1,10 @@
+*** Settings ***
+Documentation
+... First line.
+...
+... Second paragraph. This time
+... with multiple lines.
+Metadata Example list
+... - first item
+... - second item
+... - third
diff --git a/atest/fixtures/highlighting/samples/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.robot b/atest/fixtures/highlighting/samples/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.robot
new file mode 100644
index 0000000..d7ad7d3
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.robot
@@ -0,0 +1,8 @@
+*** Keywords ***
+With Default
+ [Arguments] @{} ${named}=default
+ Log Many ${named}
+
+With And Without Defaults
+ [Arguments] @{} ${optional}=default ${mandatory} ${mandatory 2} ${optional 2}=default 2 ${mandatory 3}
+ Log Many ${optional} ${mandatory} ${mandatory 2} ${optional 2} ${mandatory 3}
diff --git a/atest/fixtures/highlighting/samples/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.robot b/atest/fixtures/highlighting/samples/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.robot
new file mode 100644
index 0000000..14603ae
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.robot
@@ -0,0 +1,5 @@
+*** Variables ***
+${STRING} Hello, world!
+${INTEGER} ${42}
+@{LIST} one two
+&{DICT} one=yksi two=kaksi
diff --git a/atest/fixtures/highlighting/samples/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.robot b/atest/fixtures/highlighting/samples/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.robot
new file mode 100644
index 0000000..898b3f6
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.robot
@@ -0,0 +1,10 @@
+*** Test Cases ***
+Example
+ With Varargs named=value
+ With Varargs positional second positional named=foobar
+ Without Varargs first=1 second=2
+ Without Varargs second=toka first=eka
+ With Positional foo named=bar
+ With Positional named=2 positional=1
+ With Free Named positional named only=value x=1 y=2
+ With Free Named foo=a bar=b named only=c quux=d
diff --git a/atest/fixtures/highlighting/samples/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.robot b/atest/fixtures/highlighting/samples/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.robot
new file mode 100644
index 0000000..fecdc55
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.robot
@@ -0,0 +1,14 @@
+*** Test Cases ***
+Different argument names
+ [Template] The result of ${foo} should be ${bar}
+ 1 + 1 2
+ 1 + 2 3
+
+Only some arguments
+ [Template] The result of ${calculation} should be 3
+ 1 + 2
+ 4 - 1
+
+New arguments
+ [Template] The ${meaning} of ${life} should be 42
+ result 21 * 2
diff --git a/atest/fixtures/highlighting/samples/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.robot b/atest/fixtures/highlighting/samples/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.robot
new file mode 100644
index 0000000..5ffaa58
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.robot
@@ -0,0 +1,7 @@
+*** Test Cases ***
+Using backslash
+ Do Something first arg \
+Using ${EMPTY}
+ Do Something first arg ${EMPTY}
+Non-trailing empty
+ Do Something ${EMPTY} second arg # Escaping needed in space separated format
diff --git a/atest/fixtures/highlighting/samples/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.robot b/atest/fixtures/highlighting/samples/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.robot
new file mode 100644
index 0000000..b50bfe8
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.robot
@@ -0,0 +1,8 @@
+*** Test Cases ***
+Continue Example
+ ${text} = Set Variable ${EMPTY}
+ FOR ${var} IN one two three
+ Continue For Loop If '${var}' == 'two'
+ ${text} = Set Variable ${text}${var}
+ END
+ Should Be Equal ${text} onethree
diff --git a/atest/fixtures/highlighting/samples/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.robot b/atest/fixtures/highlighting/samples/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.robot
new file mode 100644
index 0000000..b8702a6
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.robot
@@ -0,0 +1,15 @@
+*** Test Cases *** # args, kwargs
+Named-only only
+ Dynamic named=value # [], {named: value}
+ Dynamic named=value named2=2 # [], {named: value, named2: 2}
+
+Named-only with positional and varargs
+ Dynamic argument named=xxx # [argument], {named: xxx}
+ Dynamic a1 a2 named=3 # [a1, a2], {named: 3}
+
+Named-only with normal named
+ Dynamic named=foo positional=bar # [], {positional: bar, named: foo}
+
+Named-only with free named
+ Dynamic named=value foo=bar # [], {named: value, foo=bar}
+ Dynamic named2=2 third=3 named=1 # [], {named: 1, named2: 2, third: 3}
diff --git a/atest/fixtures/highlighting/samples/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.robot b/atest/fixtures/highlighting/samples/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.robot
new file mode 100644
index 0000000..6c6badc
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.robot
@@ -0,0 +1,10 @@
+*** Test Cases ***
+String
+ ${string} = Set Variable abc
+ Log ${string.upper()} # Logs 'ABC'
+ Log ${string * 2} # Logs 'abcabc'
+
+Number
+ ${number} = Set Variable ${-2}
+ Log ${number * 10} # Logs -20
+ Log ${number.__abs__()} # Logs 2
diff --git a/atest/fixtures/highlighting/samples/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.robot b/atest/fixtures/highlighting/samples/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.robot
new file mode 100644
index 0000000..876686b
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.robot
@@ -0,0 +1,20 @@
+*** Settings ***
+Documentation Example using the space separated plain text format.
+Library OperatingSystem
+
+*** Variables ***
+${MESSAGE} Hello, world!
+
+*** Test Cases ***
+My Test
+ [Documentation] Example test
+ Log ${MESSAGE}
+ My Keyword /tmp
+
+Another Test
+ Should Be Equal ${MESSAGE} Hello, world!
+
+*** Keywords ***
+My Keyword
+ [Arguments] ${path}
+ Directory Should Exist ${path}
diff --git a/atest/fixtures/highlighting/samples/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.robot b/atest/fixtures/highlighting/samples/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.robot
new file mode 100644
index 0000000..143f2fe
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Keyword &{DICT} named=arg
+ Keyword positional @{LIST} &{DICT}
+ Keyword &{DICT} &{ANOTHER} &{ONE MORE}
diff --git a/atest/fixtures/highlighting/samples/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.robot b/atest/fixtures/highlighting/samples/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.robot
new file mode 100644
index 0000000..1537c6d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.robot
@@ -0,0 +1,10 @@
+*** Keywords ***
+One Argument
+ [Arguments] ${arg_name}
+ Log Got argument ${arg_name}
+
+Three Arguments
+ [Arguments] ${arg1} ${arg2} ${arg3}
+ Log 1st argument: ${arg1}
+ Log 2nd argument: ${arg2}
+ Log 3rd argument: ${arg3}
diff --git a/atest/fixtures/highlighting/samples/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.robot b/atest/fixtures/highlighting/samples/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.robot
new file mode 100644
index 0000000..36456dd
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.robot
@@ -0,0 +1,13 @@
+*** Settings ***
+Library Telnet prompt=$ default_log_level=DEBUG
+
+*** Test Cases ***
+Example
+ Open connection 10.0.0.42 port=${PORT} alias=example
+ List files options=-lh
+ List files path=/tmp options=-l
+
+*** Keywords ***
+List files
+ [Arguments] ${path}=. ${options}=
+ Execute command ls ${options} ${path}
diff --git a/atest/fixtures/highlighting/samples/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.robot b/atest/fixtures/highlighting/samples/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.robot
new file mode 100644
index 0000000..eb58b66
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.robot
@@ -0,0 +1,8 @@
+*** Test Cases ***
+Exit Example
+ ${text} = Set Variable ${EMPTY}
+ FOR ${var} IN one two
+ Run Keyword If '${var}' == 'two' Exit For Loop
+ ${text} = Set Variable ${text}${var}
+ END
+ Should Be Equal ${text} one
diff --git a/atest/fixtures/highlighting/samples/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.robot b/atest/fixtures/highlighting/samples/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.robot
new file mode 100644
index 0000000..7ab2ac1
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.robot
@@ -0,0 +1,3 @@
+*** Test Cases ***
+System properties
+ Log %{user.name} running tests on %{os.name}
diff --git a/atest/fixtures/highlighting/samples/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.robot b/atest/fixtures/highlighting/samples/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.robot
new file mode 100644
index 0000000..ef7d991
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.robot
@@ -0,0 +1,3 @@
+| *** Test Cases *** | | | |
+| Escaping Pipe | ${file count} = | Execute Command | ls -1 *.txt \| wc -l |
+| | Should Be Equal | ${file count} | 42 |
diff --git a/atest/fixtures/highlighting/samples/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.robot b/atest/fixtures/highlighting/samples/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.robot
new file mode 100644
index 0000000..1b36ec7
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Three loop variables
+ FOR ${index} ${english} ${finnish} IN
+ ... 1 cat kissa
+ ... 2 dog koira
+ ... 3 horse hevonen
+ Add to dictionary ${english} ${finnish} ${index}
+ END
+ FOR ${name} ${id} IN @{EMPLOYERS}
+ Create ${name} ${id}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.robot b/atest/fixtures/highlighting/samples/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.robot
new file mode 100644
index 0000000..801eafd
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Example
+ I execute "ls"
+ I execute "ls" with "-lh"
+
+*** Keywords ***
+I execute "${cmd}"
+ Run Process ${cmd} shell=True
+
+I execute "${cmd}" with "${opts}"
+ Run Process ${cmd} ${opts} shell=True
diff --git a/atest/fixtures/highlighting/samples/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.robot b/atest/fixtures/highlighting/samples/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.robot
new file mode 100644
index 0000000..42fd43f
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Objects
+ KW 1 ${STR}
+ KW 2 ${OBJ}
+ KW 3 I said "${STR}"
+ KW 4 You said "${OBJ}"
diff --git a/atest/fixtures/highlighting/samples/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.robot b/atest/fixtures/highlighting/samples/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.robot
new file mode 100644
index 0000000..eba778a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.robot
@@ -0,0 +1,4 @@
+*** Settings ***
+Library Remote http://127.0.0.1:8270 WITH NAME Example1
+Library Remote http://example.com:8080/ WITH NAME Example2
+Library Remote http://10.0.0.2/example 1 minute WITH NAME Example3
diff --git a/atest/fixtures/highlighting/samples/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.robot b/atest/fixtures/highlighting/samples/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.robot
new file mode 100644
index 0000000..4488354
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.robot
@@ -0,0 +1,7 @@
+*** Settings ***
+Library MyLibrary
+
+*** Test Cases ***
+My Test
+ Do Nothing
+ Hello world
diff --git a/atest/fixtures/highlighting/samples/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.robot b/atest/fixtures/highlighting/samples/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.robot
new file mode 100644
index 0000000..4557165
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.robot
@@ -0,0 +1,8 @@
+*** Test Cases ***
+Template
+ [Template] Some keyword
+ @{EMPTY}
+
+Override
+ Set Global Variable @{LIST} @{EMPTY}
+ Set Suite Variable &{DICT} &{EMPTY}
diff --git a/atest/fixtures/highlighting/samples/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.robot b/atest/fixtures/highlighting/samples/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.robot
new file mode 100644
index 0000000..887dc52
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Environment variables
+ Log Current user: %{USER}
+ Run %{JAVA_HOME}${/}javac
diff --git a/atest/fixtures/highlighting/samples/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.robot b/atest/fixtures/highlighting/samples/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.robot
new file mode 100644
index 0000000..5d046db
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.robot
@@ -0,0 +1,13 @@
+*** Keywords ***
+True examples
+ Should Be Equal ${x} ${y} Custom error values=True # Strings are generally true.
+ Should Be Equal ${x} ${y} Custom error values=yes # Same as the above.
+ Should Be Equal ${x} ${y} Custom error values=${TRUE} # Python `True` is true.
+ Should Be Equal ${x} ${y} Custom error values=${42} # Numbers other than 0 are true.
+
+False examples
+ Should Be Equal ${x} ${y} Custom error values=False # String `false` is false.
+ Should Be Equal ${x} ${y} Custom error values=no # Also string `no` is false.
+ Should Be Equal ${x} ${y} Custom error values=${EMPTY} # Empty string is false.
+ Should Be Equal ${x} ${y} Custom error values=${FALSE} # Python `False` is false.
+ Should Be Equal ${x} ${y} Custom error values=no values # Special false string in this context.
diff --git a/atest/fixtures/highlighting/samples/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.robot b/atest/fixtures/highlighting/samples/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.robot
new file mode 100644
index 0000000..790d583
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Constants
+ Login robot secret
+
+List Variable
+ Login @{USER}
diff --git a/atest/fixtures/highlighting/samples/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.robot b/atest/fixtures/highlighting/samples/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.robot
new file mode 100644
index 0000000..4130213
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.robot
@@ -0,0 +1,10 @@
+*** Test Cases ***
+List variable item
+ Login ${USER}[0] ${USER}[1]
+ Title Should Be Welcome ${USER}[0]!
+
+Negative index
+ Log ${LIST}[-1]
+
+Index defined as variable
+ Log ${LIST}[${INDEX}]
diff --git a/atest/fixtures/highlighting/samples/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.robot b/atest/fixtures/highlighting/samples/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.robot
new file mode 100644
index 0000000..795fa49
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Create Directory ${TEMPDIR}/stuff
+ Copy File ${CURDIR}/file.txt ${TEMPDIR}/stuff
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.robot b/atest/fixtures/highlighting/samples/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.robot
new file mode 100644
index 0000000..ade66ab
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Example
+ Create Binary File ${CURDIR}${/}input.data Some text here${\n}on two lines
+ Set Environment Variable CLASSPATH ${TEMPDIR}${:}${CURDIR}${/}foo.jar
diff --git a/atest/fixtures/highlighting/samples/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.robot b/atest/fixtures/highlighting/samples/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.robot
new file mode 100644
index 0000000..feba0e0
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Valid Login
+ Given login page is open
+ When valid username and password are inserted
+ and credentials are submitted
+ Then welcome page should be open
diff --git a/atest/fixtures/highlighting/samples/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.robot b/atest/fixtures/highlighting/samples/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.robot
new file mode 100644
index 0000000..c314033
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.robot
@@ -0,0 +1,19 @@
+*** Test Cases *** # args, kwargs
+No arguments
+ Dynamic # [], {}
+
+Positional only
+ Dynamic x # [x], {}
+ Dynamic x y # [x, y], {}
+
+Free named only
+ Dynamic x=1 # [], {x: 1}
+ Dynamic x=1 y=2 z=3 # [], {x: 1, y: 2, z: 3}
+
+Free named with positional
+ Dynamic x y=2 # [x], {y: 2}
+ Dynamic x y=2 z=3 # [x], {y: 2, z: 3}
+
+Free named with normal named
+ Dynamic a=1 x=1 # [], {a: 1, x: 1}
+ Dynamic b=2 x=1 a=1 # [], {a: 1, b: 2, x: 1}
diff --git a/atest/fixtures/highlighting/samples/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.robot b/atest/fixtures/highlighting/samples/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.robot
new file mode 100644
index 0000000..4dc16a2
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Documentation An example test suite documentation with *some* _formatting_.
+... See test documentation for more documentation examples.
diff --git a/atest/fixtures/highlighting/samples/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.robot b/atest/fixtures/highlighting/samples/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.robot
new file mode 100644
index 0000000..d5c3f0c
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.robot
@@ -0,0 +1,15 @@
+*** Variables ***
+@{NUMBERS} ${1} ${2} ${5}
+@{NAMES} one two five
+
+*** Test Cases ***
+Iterate over two lists manually
+ ${length}= Get Length ${NUMBERS}
+ FOR ${idx} IN RANGE ${length}
+ Number Should Be Named ${NUMBERS}[${idx}] ${NAMES}[${idx}]
+ END
+
+For-in-zip
+ FOR ${number} ${name} IN ZIP ${NUMBERS} ${NAMES}
+ Number Should Be Named ${number} ${name}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.robot b/atest/fixtures/highlighting/samples/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.robot
new file mode 100644
index 0000000..769d61a
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.robot
@@ -0,0 +1,21 @@
+*** Test Cases ***
+Simple
+ [Documentation] Simple documentation
+ No Operation
+
+Formatting
+ [Documentation] *This is bold*, _this is italic_ and here is a link: http://robotframework.org
+ No Operation
+
+Variables
+ [Documentation] Executed at ${HOST} by ${USER}
+ No Operation
+
+Splitting
+ [Documentation] This documentation is split into multiple columns
+ No Operation
+
+Many lines
+ [Documentation] Here we have
+ ... an automatic newline
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.robot b/atest/fixtures/highlighting/samples/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.robot
new file mode 100644
index 0000000..d9f2483
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.robot
@@ -0,0 +1,10 @@
+*** Test Cases ***
+Varargs
+ Any Arguments
+ Any Arguments argument
+ Any Arguments arg 1 arg 2 arg 3 arg 4 arg 5
+ One Required required arg
+ One Required required arg another arg yet another
+ Also Defaults required
+ Also Defaults required these two have defaults
+ Also Defaults 1 2 3 4 5 6
diff --git a/atest/fixtures/highlighting/samples/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.robot b/atest/fixtures/highlighting/samples/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.robot
new file mode 100644
index 0000000..41b14f7
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Free Named Arguments
+ Run Process program.py arg1 arg2 cwd=/home/user
+ Run Process program.py argument shell=True env=${ENVIRON}
diff --git a/atest/fixtures/highlighting/samples/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.robot b/atest/fixtures/highlighting/samples/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.robot
new file mode 100644
index 0000000..f1a8b5f
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.robot
@@ -0,0 +1,4 @@
+*** Variables ***
+${EXAMPLE} This value is joined together with a space
+${MULTILINE} SEPARATOR=\n First line
+... Second line Third line
diff --git a/atest/fixtures/highlighting/samples/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.robot b/atest/fixtures/highlighting/samples/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.robot
new file mode 100644
index 0000000..95b9f4b
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Boolean
+ Set Status ${true} # Set Status gets Boolean true as an argument
+ Create Y something ${false} # Create Y gets a string and Boolean false
+
+None
+ Do XYZ ${None} # Do XYZ gets Python None as an argument
+
+Null
+ ${ret} = Get Value arg # Checking that Get Value returns Java null
+ Should Be Equal ${ret} ${null}
diff --git a/atest/fixtures/highlighting/samples/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.robot b/atest/fixtures/highlighting/samples/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.robot
new file mode 100644
index 0000000..91f1bf4
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.robot
@@ -0,0 +1,4 @@
+*** Test Cases ***
+Example
+ Sort Words Foo bar baZ
+ Sort Words Foo bar baZ case_sensitive=True
diff --git a/atest/fixtures/highlighting/samples/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.robot b/atest/fixtures/highlighting/samples/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.robot
new file mode 100644
index 0000000..68e0fa9
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.robot
@@ -0,0 +1,9 @@
+*** Keywords ***
+With Teardown
+ Do Something
+ [Teardown] Log keyword teardown
+
+Using variables
+ [Documentation] Teardown given as variable
+ Do Something
+ [Teardown] ${TEARDOWN}
diff --git a/atest/fixtures/highlighting/samples/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.robot b/atest/fixtures/highlighting/samples/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.robot
new file mode 100644
index 0000000..a0d0dfe
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.robot
@@ -0,0 +1,12 @@
+*** Test Cases ***
+Valid Login
+ Open Login Page
+ Input Username demo
+ Input Password mode
+ Submit Credentials
+ Welcome Page Should Be Open
+
+Setting Variables
+ Do Something first argument second argument
+ ${value} = Get Some Value
+ Should Be Equal ${value} Expected value
diff --git a/atest/fixtures/highlighting/samples/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.robot b/atest/fixtures/highlighting/samples/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.robot
new file mode 100644
index 0000000..043e9df
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.robot
@@ -0,0 +1,9 @@
+*** Test Cases ***
+Invalid Password
+ [Template] Login with invalid credentials should fail
+ invalid ${VALID PASSWORD}
+ ${VALID USER} invalid
+ invalid whatever
+ ${EMPTY} ${VALID PASSWORD}
+ ${VALID USER} ${EMPTY}
+ ${EMPTY} ${EMPTY}
diff --git a/atest/fixtures/highlighting/samples/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.robot b/atest/fixtures/highlighting/samples/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.robot
new file mode 100644
index 0000000..6f396f8
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.robot
@@ -0,0 +1,10 @@
+*** Settings ***
+Test Template Login with invalid credentials should fail
+
+*** Test Cases *** USERNAME PASSWORD
+Invalid User Name invalid ${VALID PASSWORD}
+Invalid Password ${VALID USER} invalid
+Invalid User Name and Password invalid invalid
+Empty User Name ${EMPTY} ${VALID PASSWORD}
+Empty Password ${VALID USER} ${EMPTY}
+Empty User Name and Password ${EMPTY} ${EMPTY}
diff --git a/atest/fixtures/highlighting/samples/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.robot b/atest/fixtures/highlighting/samples/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.robot
new file mode 100644
index 0000000..1ad414e
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Keyword @{LIST} more args
+ Keyword ${SCALAR} @{LIST} constant
+ Keyword @{LIST} @{ANOTHER} @{ONE MORE}
diff --git a/atest/fixtures/highlighting/samples/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.robot b/atest/fixtures/highlighting/samples/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.robot
new file mode 100644
index 0000000..2552109
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.robot
@@ -0,0 +1,16 @@
+| *** Settings *** |
+| Documentation | Example using the pipe separated plain text format.
+| Library | OperatingSystem
+
+| *** Variables *** |
+| ${MESSAGE} | Hello, world!
+
+| *** Test Cases *** | | |
+| My Test | [Documentation] | Example test |
+| | Log | ${MESSAGE} |
+| | My Keyword | /tmp |
+| Another Test | Should Be Equal | ${MESSAGE} | Hello, world!
+
+| *** Keywords *** | | |
+| My Keyword | [Arguments] | ${path} |
+| | Directory Should Exist | ${path} |
diff --git a/atest/fixtures/highlighting/samples/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.robot b/atest/fixtures/highlighting/samples/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.robot
new file mode 100644
index 0000000..06a7171
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.robot
@@ -0,0 +1,3 @@
+*** Test Cases ***
+Example
+ Two Arguments With Defaults arg2=new value
diff --git a/atest/fixtures/highlighting/samples/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.robot b/atest/fixtures/highlighting/samples/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.robot
new file mode 100644
index 0000000..66d6dce
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.robot
@@ -0,0 +1,8 @@
+*** Keywords ***
+With Varargs
+ [Arguments] @{varargs} ${named}
+ Log Many @{varargs} ${named}
+
+Without Varargs
+ [Arguments] @{} ${first} ${second}
+ Log Many ${first} ${second}
diff --git a/atest/fixtures/highlighting/samples/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.robot b/atest/fixtures/highlighting/samples/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.robot
new file mode 100644
index 0000000..8933b8e
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.robot
@@ -0,0 +1,4 @@
+*** Variables ***
+${NAME} Robot Framework
+${VERSION} 2.0
+${ROBOT} ${NAME} ${VERSION}
diff --git a/atest/fixtures/highlighting/samples/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.robot b/atest/fixtures/highlighting/samples/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.robot
new file mode 100644
index 0000000..728c39f
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.robot
@@ -0,0 +1,13 @@
+*** Test Cases ***
+Example
+ FOR ${animal} IN cat dog
+ Log ${animal}
+ Log 2nd keyword
+ END
+ Log Outside loop
+
+Second Example
+ FOR ${var} IN one two ${3} four ${five}
+ ... kuusi 7 eight nine ${last}
+ Log ${var}
+ END
diff --git a/atest/fixtures/highlighting/samples/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.robot b/atest/fixtures/highlighting/samples/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.robot
new file mode 100644
index 0000000..e221233
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.robot
@@ -0,0 +1,10 @@
+*** Test Cases ***
+Varargs with user keywords
+ Any Number Of Arguments
+ Any Number Of Arguments arg
+ Any Number Of Arguments arg1 arg2 arg3 arg4
+ One Or More Arguments required
+ One Or More Arguments arg1 arg2 arg3 arg4
+ Required, Default, Varargs required
+ Required, Default, Varargs required optional
+ Required, Default, Varargs arg1 arg2 arg3 arg4 arg5
diff --git a/atest/fixtures/highlighting/samples/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.robot b/atest/fixtures/highlighting/samples/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.robot
new file mode 100644
index 0000000..f59ef2d
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.robot
@@ -0,0 +1,9 @@
+*** Variables ***
+${VARIABLE} An example string
+${ANOTHER VARIABLE} This is pretty easy!
+${INTEGER} ${42}
+@{STRINGS} one two kolme four
+@{NUMBERS} ${1} ${INTEGER} ${3.14}
+&{MAPPING} one=${1} two=${2} three=${3}
+@{ANIMALS} cat dog
+&{FINNISH} cat=kissa dog=koira
diff --git a/atest/fixtures/highlighting/samples/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.robot b/atest/fixtures/highlighting/samples/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.robot
new file mode 100644
index 0000000..600a455
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.robot
@@ -0,0 +1,18 @@
+*** Test Cases ***
+One space
+ Should Be Equal ${SPACE} \ \
+
+Four spaces
+ Should Be Equal ${SPACE * 4} \ \ \ \ \
+
+Ten spaces
+ Should Be Equal ${SPACE * 10} \ \ \ \ \ \ \ \ \ \ \
+
+Quoted space
+ Should Be Equal "${SPACE}" " "
+
+Quoted spaces
+ Should Be Equal "${SPACE * 2}" " \ "
+
+Empty
+ Should Be Equal ${EMPTY} \
diff --git a/atest/fixtures/highlighting/samples/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.robot b/atest/fixtures/highlighting/samples/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.robot
new file mode 100644
index 0000000..6d921a7
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.robot
@@ -0,0 +1,19 @@
+*** Settings ***
+Documentation This is documentation for this test suite.
+... This kind of documentation can often be get quite long...
+Default Tags default tag 1 default tag 2 default tag 3
+... default tag 4 default tag 5
+
+*** Variable ***
+@{LIST} this list is quite long and
+... items in it could also be long
+
+*** Test Cases ***
+Example
+ [Tags] you probably do not have this many
+ ... tags in real life
+ Do X first argument second argument third argument
+ ... fourth argument fifth argument sixth argument
+ ${var} = Get X
+ ... first argument passed to this keyword is pretty long
+ ... second argument passed to this keyword is long too
diff --git a/atest/fixtures/highlighting/samples/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.robot b/atest/fixtures/highlighting/samples/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.robot
new file mode 100644
index 0000000..a373804
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.robot
@@ -0,0 +1,6 @@
+| *** Test Cases ***
+| Example
+| | :FOR | ${animal} | IN | cat | dog |
+| | | Log | ${animal} |
+| | | Log | 2nd keyword |
+| | Log | Outside loop |
diff --git a/atest/fixtures/highlighting/samples/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.robot b/atest/fixtures/highlighting/samples/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.robot
new file mode 100644
index 0000000..7cc82ab
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.robot
@@ -0,0 +1,5 @@
+*** Settings ***
+Variables myvariables.py
+Variables ../data/variables.py
+Variables ${RESOURCES}/common.py
+Variables taking_arguments.py arg1 ${ARG2}
diff --git a/atest/fixtures/highlighting/samples/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.robot b/atest/fixtures/highlighting/samples/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.robot
new file mode 100644
index 0000000..6fe06af
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.robot
@@ -0,0 +1,8 @@
+*** Settings ***
+Test Template Example keyword
+
+*** Test Cases ***
+Templated test case
+ first round 1 first round 2
+ second round 1 second round 2
+ third round 1 third round 2
diff --git a/atest/fixtures/highlighting/samples/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.robot b/atest/fixtures/highlighting/samples/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.robot
new file mode 100644
index 0000000..b642d00
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.robot
@@ -0,0 +1,8 @@
+*** Test Cases ***
+Example
+ Run Program shell=True # This will not come as a named argument to Run Process
+
+*** Keywords ***
+Run Program
+ [Arguments] @{args}
+ Run Process program.py @{args} # Named arguments are not recognized from inside @{args}
diff --git a/atest/fixtures/highlighting/samples/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.robot b/atest/fixtures/highlighting/samples/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.robot
new file mode 100644
index 0000000..dc4e750
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.robot
@@ -0,0 +1,5 @@
+*** Test Cases ***
+Example
+ Do Something
+ Import Library MyLibrary arg1 arg2
+ KW From MyLibrary
diff --git a/atest/fixtures/highlighting/samples/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.robot b/atest/fixtures/highlighting/samples/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.robot
new file mode 100644
index 0000000..0ad50da
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.robot
@@ -0,0 +1,28 @@
+*** Test Cases ***
+One Return Value
+ ${ret} = Return One Value argument
+ Some Keyword ${ret}
+
+Advanced
+ @{list} = Create List foo baz
+ ${index} = Find Index baz @{list}
+ Should Be Equal ${index} ${1}
+ ${index} = Find Index non existing @{list}
+ Should Be Equal ${index} ${-1}
+
+*** Keywords ***
+Return One Value
+ [Arguments] ${arg}
+ Do Something ${arg}
+ ${value} = Get Some Value
+ Return From Keyword ${value}
+ Fail This is not executed
+
+Find Index
+ [Arguments] ${element} @{items}
+ ${index} = Set Variable ${0}
+ FOR ${item} IN @{items}
+ Return From Keyword If '${item}' == '${element}' ${index}
+ ${index} = Set Variable ${index + 1}
+ END
+ Return From Keyword ${-1} # Could also use [Return]
diff --git a/atest/fixtures/highlighting/samples/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.robot b/atest/fixtures/highlighting/samples/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.robot
new file mode 100644
index 0000000..fc430cc
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.robot
@@ -0,0 +1,18 @@
+*** Keywords ***
+Timed Keyword
+ [Documentation] Set only the timeout value and not the custom message.
+ [Timeout] 1 minute 42 seconds
+ Do Something
+ Do Something Else
+
+Wrapper With Timeout
+ [Arguments] @{args}
+ [Documentation] This keyword is a wrapper that adds a timeout to another keyword.
+ [Timeout] 2 minutes Original Keyword didn't finish in 2 minutes
+ Original Keyword @{args}
+
+Wrapper With Customizable Timeout
+ [Arguments] ${timeout} @{args}
+ [Documentation] Same as the above but timeout given as an argument.
+ [Timeout] ${timeout}
+ Original Keyword @{args}
diff --git a/atest/fixtures/highlighting/samples/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.robot b/atest/fixtures/highlighting/samples/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.robot
new file mode 100644
index 0000000..b6c9615
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.robot
@@ -0,0 +1,8 @@
+*** Settings ***
+Library ExampleLibrary @{LIB ARGS} # This works
+Library ${LIBRARY} @{LIB ARGS} # This works
+Library @{LIBRARY AND ARGS} # This does not work
+Suite Setup Some Keyword @{KW ARGS} # This works
+Suite Setup ${KEYWORD} @{KW ARGS} # This works
+Suite Setup @{KEYWORD AND ARGS} # This does not work
+Default Tags @{TAGS} # This works
diff --git a/atest/fixtures/highlighting/samples/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.robot b/atest/fixtures/highlighting/samples/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.robot
new file mode 100644
index 0000000..af0a20b
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.robot
@@ -0,0 +1,6 @@
+*** Test Cases ***
+Example
+ &{dict} = Create Dictionary first=1 second=${2} ${3}=third
+ Length Should Be ${dict} 3
+ Do Something &{dict}
+ Log ${dict.first}
diff --git a/atest/fixtures/highlighting/samples/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.robot b/atest/fixtures/highlighting/samples/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.robot
new file mode 100644
index 0000000..9ebb321
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.robot
@@ -0,0 +1,3 @@
+*** Variables ***
+${NAME} = Robot Framework
+${VERSION} = 2.0
diff --git a/atest/fixtures/highlighting/samples/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.robot b/atest/fixtures/highlighting/samples/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.robot
new file mode 100644
index 0000000..41f7f28
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Library MyLibrary 10.0.0.1 8080
+Library AnotherLib ${VAR}
diff --git a/atest/fixtures/highlighting/samples/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.robot b/atest/fixtures/highlighting/samples/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.robot
new file mode 100644
index 0000000..e92215e
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.robot
@@ -0,0 +1,9 @@
+*** Keywords ***
+Settings tags using separate setting
+ [Tags] my fine tags
+ No Operation
+
+Settings tags using documentation
+ [Documentation] I have documentation. And my documentation has tags.
+ ... Tags: my, fine, tags
+ No Operation
diff --git a/atest/fixtures/highlighting/samples/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.robot b/atest/fixtures/highlighting/samples/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.robot
new file mode 100644
index 0000000..ef10df4
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.robot
@@ -0,0 +1,8 @@
+*** Settings ***
+Library SeleniumLibrary
+Library SeLibExtensions
+
+*** Test Cases ***
+Example
+ Open Browser http://example # SeleniumLibrary
+ Title Should Start With Example # SeLibExtensions
diff --git a/atest/fixtures/highlighting/samples/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.robot b/atest/fixtures/highlighting/samples/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.robot
new file mode 100644
index 0000000..c0964f6
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.robot
@@ -0,0 +1,4 @@
+*** Settings ***
+Metadata Version 2.0
+Metadata More Info For more information about *Robot Framework* see http://robotframework.org
+Metadata Executed At ${HOST}
diff --git a/atest/fixtures/highlighting/samples/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.robot b/atest/fixtures/highlighting/samples/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.robot
new file mode 100644
index 0000000..fd62865
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.robot
@@ -0,0 +1,3 @@
+*** Test Cases ***
+My Test
+ Add 7 copies of coffee to cart
diff --git a/atest/fixtures/highlighting/samples/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.robot b/atest/fixtures/highlighting/samples/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.robot
new file mode 100644
index 0000000..9c5ee99
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.robot
@@ -0,0 +1,9 @@
+*** Settings ***
+Library SomeLibrary localhost 1234 WITH NAME LocalLib
+Library SomeLibrary server.domain 8080 WITH NAME RemoteLib
+
+*** Test Cases ***
+My Test
+ LocalLib.Some Keyword some arg second arg
+ RemoteLib.Some Keyword another arg whatever
+ LocalLib.Another Keyword
diff --git a/atest/fixtures/highlighting/samples/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.robot b/atest/fixtures/highlighting/samples/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.robot
new file mode 100644
index 0000000..1631a06
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.robot
@@ -0,0 +1,11 @@
+*** Test Cases ***
+Returning multiple values
+ ${var1} ${var2} = Return Two Values
+ Should Be Equal ${var1} first value
+ Should Be Equal ${var2} second value
+ @{list} = Return Two Values
+ Should Be Equal @{list}[0] first value
+ Should Be Equal @{list}[1] second value
+ ${s1} ${s2} @{li} = Return Multiple Values
+ Should Be Equal ${s1} ${s2} a list
+ Should Be Equal @{li}[0] @{li}[1] of strings
diff --git a/atest/fixtures/highlighting/samples/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.robot b/atest/fixtures/highlighting/samples/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.robot
new file mode 100644
index 0000000..b749f93
--- /dev/null
+++ b/atest/fixtures/highlighting/samples/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.robot
@@ -0,0 +1,4 @@
+*** Settings ***
+Resource example.resource
+Resource ../data/resources.robot
+Resource ${RESOURCES}/common.resource
diff --git a/atest/fixtures/highlighting/tokens/basic/00_test_case.tokens b/atest/fixtures/highlighting/tokens/basic/00_test_case.tokens
new file mode 100644
index 0000000..b3342bd
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/basic/00_test_case.tokens
@@ -0,0 +1,11 @@
+header link
+header string
+tab
+keyword
+string
+string
+tab
+tab
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/loops/old_style.tokens b/atest/fixtures/highlighting/tokens/loops/old_style.tokens
new file mode 100644
index 0000000..45fadd4
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/loops/old_style.tokens
@@ -0,0 +1,68 @@
+header link
+def
+def
+def
+variable-2
+def
+keyword
+string
+string
+string
+variable-2
+def
+def
+keyword
+string
+string
+atom
+variable-2
+variable-2
+atom
+string
+string
+bracket
+keyword
+variable-2
+bracket
+keyword
+string
+string
+attribute
+variable-2
+operator
+property
+variable-2
+bracket
+number
+bracket
+variable-2
+number
+variable-2
+bracket
+attribute
+operator
+variable-2
+string
+bracket
+keyword
+string
+bracket
+variable-2
+operator
+keyword
+variable-2
+keyword
+string
+string
+def
+def
+def
+def
+keyword
+string
+string
+variable-2
+string
+header link
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.tokens b/atest/fixtures/highlighting/tokens/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.tokens
new file mode 100644
index 0000000..b6c9627
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/0121d11dce72f3f16f8d2f274d534f5086ee5373f9ffd8b38f6f52dfa55d7e2a.tokens
@@ -0,0 +1,29 @@
+header link
+header string
+keyword
+keyword
+string
+string
+attribute
+operator
+string
+keyword
+keyword
+string
+attribute
+operator
+string
+attribute
+operator
+variable-2
+header link
+def
+def
+meta
+variable-2
+variable-2
+keyword
+keyword
+string
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.tokens b/atest/fixtures/highlighting/tokens/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.tokens
new file mode 100644
index 0000000..541ac10
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/02373c48f779c78c85002af6741b00f9e5097c4df40c280c2cb619bff8766ae1.tokens
@@ -0,0 +1,12 @@
+header link
+header string
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+header string
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.tokens b/atest/fixtures/highlighting/tokens/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.tokens
new file mode 100644
index 0000000..4887578
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/04923f3ba2cf4a5c0e4f07bf5422da5e064aba1491996f897c0b1f7919cf6404.tokens
@@ -0,0 +1,39 @@
+header link
+header string
+keyword
+variable-2
+bracket
+number
+string
+bracket
+header string
+keyword
+variable-2
+bracket
+string
+number
+bracket
+header string
+keyword
+variable-2
+bracket
+number
+string
+number
+bracket
+header string
+keyword
+variable-2
+bracket
+string
+number
+bracket
+keyword
+variable-2
+bracket
+number
+string
+number
+string
+number
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.tokens b/atest/fixtures/highlighting/tokens/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.tokens
new file mode 100644
index 0000000..2243b1e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/0592b828e07e0283a522ac9829ba7ca3f6fdb4daa808894c222fecae0cd27271.tokens
@@ -0,0 +1,14 @@
+header link
+header string
+meta
+string
+string
+string
+bracket
+meta
+bracket
+tag
+tag
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.tokens b/atest/fixtures/highlighting/tokens/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.tokens
new file mode 100644
index 0000000..568d03b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/05d4af64db1a38b98851b62f82a9301e843f661f7850981bc1b535ccf4c1a8c4.tokens
@@ -0,0 +1,15 @@
+header link
+def
+variable-2
+def
+def
+keyword
+keyword
+string
+string
+keyword
+keyword
+keyword
+keyword
+string
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.tokens b/atest/fixtures/highlighting/tokens/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.tokens
new file mode 100644
index 0000000..bbfa444
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/05f5d8372d56c856d474cc82abdc00317867ea54ad3adfe9cf6ab18dd30d0c18.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+keyword
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+string
+bracket
+string
+keyword
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+string
+bracket
+variable-2
+number
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.tokens b/atest/fixtures/highlighting/tokens/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.tokens
new file mode 100644
index 0000000..85a9f23
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/06b24460be2e6ff2ada5c7550b03c14a42bc4ee410f8203b8b24dff53f722ee7.tokens
@@ -0,0 +1,14 @@
+header link
+variable-2
+string
+variable-2
+string
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.tokens b/atest/fixtures/highlighting/tokens/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.tokens
new file mode 100644
index 0000000..3a12250
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/08ef901bb6046ea0e59b3135401bc5e1928fa3ff6b390bfb059787564e08c139.tokens
@@ -0,0 +1,11 @@
+header link
+meta
+string
+meta
+string
+meta
+string
+string
+string
+meta
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.tokens b/atest/fixtures/highlighting/tokens/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.tokens
new file mode 100644
index 0000000..6cf7c53
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/092e8d511af68be2a0a286be12b9a8048ab6cbc76c0c17aae6deb2de4a202e14.tokens
@@ -0,0 +1,56 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+keyword
+variable-2
+keyword
+keyword
+variable-2
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+string
+header link
+def
+def
+def
+variable-2
+def
+def
+variable-2
+variable-2
+operator
+keyword
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.tokens b/atest/fixtures/highlighting/tokens/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.tokens
new file mode 100644
index 0000000..c309ea3
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/0a97471622cafaedc59fd034eb0c484968f7c255f1b444c5f8d6038964f20df4.tokens
@@ -0,0 +1,61 @@
+header link
+meta
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+header link
+def
+def
+meta
+string
+string
+keyword
+keyword
+def
+def
+meta
+variable-2
+meta
+string
+string
+string
+string
+string strong
+string
+string
+bracket
+bracket
+string
+bracket
+bracket
+string
+string
+bracket
+string
+bracket
+bracket
+bracket
+string
+string
+bracket
+string
+bracket
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.tokens b/atest/fixtures/highlighting/tokens/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.tokens
new file mode 100644
index 0000000..97696de
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/0aab0d1fa74549494ee3e3c84ddece2f5d7e6680c2988663e098a18b3e07cd08.tokens
@@ -0,0 +1,45 @@
+header link
+def
+def
+def
+def
+meta
+variable-2
+keyword
+keyword
+variable-2
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+def
+def
+def
+meta
+variable-2
+variable-2
+operator
+string
+variable-2
+keyword
+string
+variable-2
+keyword
+string
+variable-2
+keyword
+string
+atom
+variable-2
+atom
+variable-2
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.tokens b/atest/fixtures/highlighting/tokens/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.tokens
new file mode 100644
index 0000000..e9a5572
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/0b24694ed1b1f98493b33555347be15188b01a8b50e95908f62eb1e71cb2975a.tokens
@@ -0,0 +1,29 @@
+header link
+header string
+keyword
+keyword
+string
+string
+comment
+keyword
+keyword
+string
+attribute
+operator
+string
+comment
+header link
+def
+def
+meta
+variable-2
+variable-2
+operator
+string
+keyword
+keyword
+string
+variable-2
+attribute
+operator
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.tokens b/atest/fixtures/highlighting/tokens/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.tokens
new file mode 100644
index 0000000..6cbcb5a
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/1086595c60f3ffa2007ec24cb12a5d03c3b781e0cac0add7ecf98aa9390d2c69.tokens
@@ -0,0 +1,30 @@
+header link
+header string
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.tokens b/atest/fixtures/highlighting/tokens/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.tokens
new file mode 100644
index 0000000..3651741
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/10e560062d3cc3a4936b9d0feb6628087863a9da53e281985d7ef58d2467bda4.tokens
@@ -0,0 +1,26 @@
+header link
+meta
+string
+string
+meta
+keyword
+keyword
+variable-2
+meta
+tag
+meta
+string
+header link
+variable-2
+string
+string
+header link
+def
+def
+meta
+variable-2
+keyword
+keyword
+variable-2
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.tokens b/atest/fixtures/highlighting/tokens/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.tokens
new file mode 100644
index 0000000..2cd0a63
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/12bc8b58d19da54d10464c7107a68802e9c4912343ce983b8eaa2d10b0099833.tokens
@@ -0,0 +1,93 @@
+header link
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+header link
+variable-2
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+header link
+header string
+bracket
+meta
+bracket
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+keyword
+keyword
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+variable-2
+operator
+keyword
+keyword
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.tokens b/atest/fixtures/highlighting/tokens/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.tokens
new file mode 100644
index 0000000..4ffd30e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/153a7e6614945b59ba4e59d9edc514e15f4cc6d92e383e709d2b40e4ddee787b.tokens
@@ -0,0 +1,18 @@
+header link
+meta
+string
+string
+string
+string
+string
+string
+string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.tokens b/atest/fixtures/highlighting/tokens/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.tokens
new file mode 100644
index 0000000..a309302
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/1741f94ea882100c7f6b2b0b496b4a637973fae1438d0fce3dcf4792b175cef8.tokens
@@ -0,0 +1,38 @@
+header link
+header string
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.tokens b/atest/fixtures/highlighting/tokens/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.tokens
new file mode 100644
index 0000000..c66a3de
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/1e8269dbd5a257712003467240e33b0632e174f69162d8b0fb1d9de784c68e64.tokens
@@ -0,0 +1,17 @@
+header link
+header string
+keyword
+keyword
+attribute
+operator
+string
+comment
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.tokens b/atest/fixtures/highlighting/tokens/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.tokens
new file mode 100644
index 0000000..ac8c1ab
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/1e8353f856ca260e56f3050614e1dfe55cb5ff456a8680c8dfb2656e31a410f1.tokens
@@ -0,0 +1,11 @@
+header link
+meta
+string
+variable-2
+meta
+keyword
+keyword
+variable-2
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.tokens b/atest/fixtures/highlighting/tokens/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.tokens
new file mode 100644
index 0000000..a9f00fb
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/20048739e7b3b3c944c35d0bc955912fc2363c7cc1c2e5fb594410e0d15b65ac.tokens
@@ -0,0 +1,54 @@
+header link
+variable-2
+number
+variable-2
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+variable-2
+number
+variable-2
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+variable-2
+attribute
+operator
+string
+attribute
+operator
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+operator
+string
+variable-2
+variable-2
+attribute
+operator
+string
+attribute
+operator
+bracket
+operator
+string
+attribute
+operator
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.tokens b/atest/fixtures/highlighting/tokens/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.tokens
new file mode 100644
index 0000000..6ee67a1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/20cd40ec5b88bbf6580d05322f9ec2c64625c37083c087bfa24d3ae4ccfdc766.tokens
@@ -0,0 +1,20 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.tokens b/atest/fixtures/highlighting/tokens/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.tokens
new file mode 100644
index 0000000..787700d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/20df04918baac64af57717b43e0fbfd87689b08217ff180d1a09cfa3dd497e61.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+string
+string
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.tokens b/atest/fixtures/highlighting/tokens/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.tokens
new file mode 100644
index 0000000..2407c4d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/20fc6f917a687c807d152c6a14042af0a36e894e08a1116125b962ed54ce5ea5.tokens
@@ -0,0 +1,38 @@
+header link
+variable-2
+string
+string
+string
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+string
+atom
+variable-2
+atom
+variable-2
+variable-2
+operator
+keyword
+variable-2
+string
+string
+keyword
+keyword
+variable-2
+variable-2
+atom
+header string
+atom
+variable-2
+variable-2
+atom
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.tokens b/atest/fixtures/highlighting/tokens/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.tokens
new file mode 100644
index 0000000..d66c2cb
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/212879366507eb8c8c3509b446f156ca2384014a22d05a7d5f988aee5da9c37e.tokens
@@ -0,0 +1,15 @@
+header link
+header string
+keyword
+string
+keyword
+string
+string
+header string
+keyword
+variable-2
+keyword
+variable-2
+string
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.tokens b/atest/fixtures/highlighting/tokens/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.tokens
new file mode 100644
index 0000000..fa10a1e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/22497e75fa6c14bfb4ad25da9d15c9182c8e755855891a5b00f6fb029a53e61b.tokens
@@ -0,0 +1,67 @@
+header link
+header string
+keyword
+keyword
+string
+string
+comment
+header string
+keyword
+keyword
+attribute
+operator
+string
+comment
+header string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+keyword
+string
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.tokens b/atest/fixtures/highlighting/tokens/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.tokens
new file mode 100644
index 0000000..129fbae
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/29afa4cdff55b252c04d2432500c012f95d5e1b3a34efcfbe5377e463ce464fa.tokens
@@ -0,0 +1,73 @@
+bracket
+header link
+bracket
+keyword
+keyword
+bracket
+keyword
+bracket
+variable-2
+bracket
+string
+bracket
+string
+bracket
+string
+bracket
+bracket
+string
+bracket
+variable-2
+bracket
+bracket
+string
+bracket
+string
+string
+bracket
+bracket
+keyword
+bracket
+bracket
+bracket
+keyword
+bracket
+string
+string
+bracket
+bracket
+bracket
+keyword
+keyword
+keyword
+keyword
+bracket
+keyword
+bracket
+variable-2
+bracket
+string
+bracket
+string
+bracket
+string
+bracket
+bracket
+bracket
+string
+bracket
+variable-2
+bracket
+bracket
+bracket
+string
+bracket
+string
+string
+bracket
+bracket
+keyword
+bracket
+string
+string
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.tokens b/atest/fixtures/highlighting/tokens/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.tokens
new file mode 100644
index 0000000..fe85c9c
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/2c42f0b3e12f62dcadafeadeb0d11c098a5293f528df5335f8260b77109e65c0.tokens
@@ -0,0 +1,98 @@
+header link
+meta
+string
+string
+header link
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+header string
+meta
+string
+string
+string
+string
+string
+string
+meta
+string
+keyword
+keyword
+string
+header string
+meta
+string
+string
+string
+string
+string
+string
+meta
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+meta
+variable-2
+keyword
+keyword
+string
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+keyword
+keyword
+string
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+string
+keyword
+keyword
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.tokens b/atest/fixtures/highlighting/tokens/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.tokens
new file mode 100644
index 0000000..c0a8218
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/2c6668edd2895cdc20a9b6dc72d211c4d9d0e77c0a68920ce109b6d8918c26a9.tokens
@@ -0,0 +1,17 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+keyword
+variable-2
+string
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.tokens b/atest/fixtures/highlighting/tokens/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.tokens
new file mode 100644
index 0000000..967277e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/2f32350c830d580b80de7c91b064fe7dfa1b85d9ab2b19ebe334ecedd3269005.tokens
@@ -0,0 +1,56 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+variable-2
+header string
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+keyword
+variable-2
+operator
+keyword
+keyword
+keyword
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+keyword
+header link
+def
+def
+def
+meta
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+operator
+keyword
+keyword
+keyword
+meta
+variable-2
+def
+def
+def
+meta
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.tokens b/atest/fixtures/highlighting/tokens/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.tokens
new file mode 100644
index 0000000..ca75c75
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/30d47f677d803f0d674302e9f409d930084a538133e5c7da5ca9597577eb476f.tokens
@@ -0,0 +1,23 @@
+header link
+def
+def
+meta
+variable-2
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+def
+def
+def
+meta
+variable-2
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.tokens b/atest/fixtures/highlighting/tokens/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.tokens
new file mode 100644
index 0000000..c563db8
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/341d95770204f76464bcb48e9d022bfe8bc5fd0775c634c648e21d2e2e1c19b7.tokens
@@ -0,0 +1,59 @@
+header link
+meta
+string
+string
+string
+string
+meta
+string
+meta
+variable-2
+string
+header link
+variable-2
+string
+variable-2
+string
+variable-2
+string
+variable-2
+string
+variable-2
+string
+variable-2
+string
+header link
+def
+def
+def
+meta
+string
+string
+string
+string
+string
+keyword
+keyword
+variable-2
+variable-2
+keyword
+keyword
+keyword
+string
+string
+def
+def
+meta
+variable-2
+keyword
+keyword
+string
+variable-2
+def
+def
+meta
+variable-2
+keyword
+keyword
+string
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.tokens b/atest/fixtures/highlighting/tokens/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.tokens
new file mode 100644
index 0000000..f522d80
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/34f6accdeebdb7202794c428a23b952f3be36437dffb02ae39814e88ddfcb7db.tokens
@@ -0,0 +1,12 @@
+header link
+meta
+string
+meta
+string
+meta
+string
+string
+string
+meta
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.tokens b/atest/fixtures/highlighting/tokens/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.tokens
new file mode 100644
index 0000000..5616dfa
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/388c8b54ac98242cee4261f62fe4acf333f0ac5c2ca76d41c2fd1f4ed71ec34b.tokens
@@ -0,0 +1,52 @@
+header link
+header string
+keyword
+variable-2
+bracket
+string
+bracket
+variable-2
+bracket
+string
+bracket
+keyword
+keyword
+keyword
+string
+variable-2
+bracket
+string
+bracket
+string
+header string
+keyword
+keyword
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+number
+variable-2
+bracket
+header string
+keyword
+variable-2
+operator
+property
+variable-2
+variable-2
+operator
+property
+variable-2
+keyword
+keyword
+keyword
+string
+variable-2
+operator
+property
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.tokens b/atest/fixtures/highlighting/tokens/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.tokens
new file mode 100644
index 0000000..70a7af2
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/39cad635de20b26a82df7d01b53e6761f66dd37d13dd45afc52911b4cb0d125b.tokens
@@ -0,0 +1,40 @@
+header link
+string
+string
+meta
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+meta
+string
+string
+bracket
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+meta
+string
+string
+bracket
+string
+string
+string
+bracket
+string
+string
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.tokens b/atest/fixtures/highlighting/tokens/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.tokens
new file mode 100644
index 0000000..2b4806e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3aa3b4570c5ba1f80ca037585fd9b0db072fcee39904a8ea550857e45054455d.tokens
@@ -0,0 +1,72 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header link
+def
+def
+def
+variable-2
+operator
+string-2
+variable-2
+def
+keyword
+keyword
+variable-2
+attribute
+operator
+string
+def
+def
+def
+variable-2
+def
+def
+def
+variable-2
+def
+keyword
+keyword
+variable-2
+variable-2
+attribute
+operator
+string
+def
+def
+variable-2
+operator
+string-2
+variable-2
+keyword
+variable-2
+variable-2
+variable-2
+def
+def
+variable-2
+operator
+string-2
+variable-2
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.tokens b/atest/fixtures/highlighting/tokens/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.tokens
new file mode 100644
index 0000000..d366af8
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3d958a4ca736e539b8bf1ef949794659715bd81c247a9af0732b1578de94de11.tokens
@@ -0,0 +1,20 @@
+header link
+meta
+bracket
+string
+string
+string
+string
+string
+string
+bracket
+bracket
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.tokens b/atest/fixtures/highlighting/tokens/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.tokens
new file mode 100644
index 0000000..7e470d0
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3d98df5a260675e328661d653b10c7c0133b7911d606d86a1db43b1a35af9510.tokens
@@ -0,0 +1,102 @@
+header link
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+atom
+variable-2
+atom
+string
+keyword
+variable-2
+atom
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+atom
+variable-2
+atom
+string
+string
+keyword
+variable-2
+atom
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+atom
+variable-2
+atom
+string
+string
+string
+keyword
+variable-2
+atom
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+atom
+variable-2
+atom
+string
+string
+string
+keyword
+variable-2
+atom
+header string
+meta
+string
+string
+string
+atom
+variable-2
+atom
+variable-2
+string
+string
+keyword
+variable-2
+atom
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+atom
+variable-2
+atom
+string
+string
+string
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.tokens b/atest/fixtures/highlighting/tokens/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.tokens
new file mode 100644
index 0000000..064d1fb
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3e277a8346d48ea215024a486ec6a28fba58f841477fdd5a705c421a41146499.tokens
@@ -0,0 +1,18 @@
+header link
+header string
+keyword
+keyword
+string
+string
+string
+string
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+keyword
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.tokens b/atest/fixtures/highlighting/tokens/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.tokens
new file mode 100644
index 0000000..67db8a2
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3ef696c06c63d42d883007555bd6f95b8cfef399451aeb0c8ef42412f68196fe.tokens
@@ -0,0 +1,32 @@
+header link
+header string
+atom
+variable-2
+variable-2
+variable-2
+atom
+bracket
+string
+string
+bracket
+string
+string
+bracket
+string
+string
+keyword
+string
+variable-2
+string
+string
+string
+string
+string
+variable-2
+string
+string
+string
+string
+variable-2
+string
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.tokens b/atest/fixtures/highlighting/tokens/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.tokens
new file mode 100644
index 0000000..2fab2fa
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3f284550c09f030f37c5284ed13866c6eba6a125af3fea1669785582a5483c2f.tokens
@@ -0,0 +1,62 @@
+header link
+comment
+header string
+keyword
+string
+comment
+keyword
+string
+string
+comment
+keyword
+string
+string
+string
+comment
+header string
+keyword
+attribute
+operator
+string
+comment
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+string
+attribute
+operator
+string
+comment
+keyword
+string
+string
+attribute
+operator
+string
+comment
+keyword
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+string
+attribute
+operator
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.tokens b/atest/fixtures/highlighting/tokens/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.tokens
new file mode 100644
index 0000000..91607e0
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/3fdda1941e3f557e77c05a7b9ec84a63793c5ccd1498adc79354f393867b6033.tokens
@@ -0,0 +1,25 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+string
+string
+variable-2
+operator
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+variable-2
+operator
+property
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.tokens b/atest/fixtures/highlighting/tokens/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.tokens
new file mode 100644
index 0000000..10a8a7d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/40f103e15e7a7b5e38ce23e4e0effb1e2eebefb9b24b2a7d79cad73dc6da7f06.tokens
@@ -0,0 +1,20 @@
+header link
+header string
+variable-2
+operator
+property
+variable-2
+operator
+keyword
+keyword
+string
+string
+variable-2
+operator
+property
+variable-2
+operator
+keyword
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.tokens b/atest/fixtures/highlighting/tokens/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.tokens
new file mode 100644
index 0000000..1a0c970
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/410f7fe6d9038d2bbf5eff3053746ce1cef7e5263b7af553b22b18352347d5b6.tokens
@@ -0,0 +1,38 @@
+header link
+header string
+keyword
+keyword
+string
+keyword
+keyword
+string
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+string
+header string
+keyword
+keyword
+variable-2
+number
+variable-2
+keyword
+keyword
+string
+variable-2
+number
+variable-2
+comment
+keyword
+keyword
+variable-2
+number
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.tokens b/atest/fixtures/highlighting/tokens/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.tokens
new file mode 100644
index 0000000..dfbb414
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/415e28bbab0b25f38eabc1ffc962aae3f580d762d318daf0b57510ad61c26d20.tokens
@@ -0,0 +1,17 @@
+header link
+variable-2
+string
+header link
+header string
+keyword
+keyword
+variable-2
+number
+variable-2
+keyword
+variable-2
+number
+variable-2
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.tokens b/atest/fixtures/highlighting/tokens/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.tokens
new file mode 100644
index 0000000..1b21d8d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/4368bf6ece431c9f4d56798eef916ddf93f618cf87c615fc58dbf602e34ffeae.tokens
@@ -0,0 +1,83 @@
+header link
+meta
+tag
+meta
+tag
+tag
+header link
+variable-2
+string
+header link
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+meta
+bracket
+tag
+tag
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+bracket
+meta
+bracket
+tag
+variable-2
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+bracket
+meta
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+keyword
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.tokens b/atest/fixtures/highlighting/tokens/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.tokens
new file mode 100644
index 0000000..f178c04
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/44e58c5ffc5f62dd53e1ca2e321a99765a84fa98b334011b4d4c5b28d36e6a13.tokens
@@ -0,0 +1,13 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+string
+string
+keyword
+string
+string
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.tokens b/atest/fixtures/highlighting/tokens/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.tokens
new file mode 100644
index 0000000..0658640
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/452bda58da35426e37ad1e1d5aa6095dca0139471f81ccda42d75e7e3072153c.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+atom
+variable-2
+atom
+variable-2
+variable-2
+bracket
+string
+string
+atom
+atom
+variable-2
+atom
+string
+keyword
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.tokens b/atest/fixtures/highlighting/tokens/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.tokens
new file mode 100644
index 0000000..4b05617
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/479e12ffd5032cf2371a1a2f80f66c551926721b15ba4fa8bde029e7cc09a3a1.tokens
@@ -0,0 +1,27 @@
+header link
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+variable-2
+builtin
+variable-2
+string
+variable-2
+builtin
+variable-2
+string
+variable-2
+operator
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.tokens b/atest/fixtures/highlighting/tokens/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.tokens
new file mode 100644
index 0000000..2d1fd06
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/47b038a0e2b492adb5b16e4371c10f8335f222050203067c6b030f79aaec5de2.tokens
@@ -0,0 +1,113 @@
+header link
+def
+def
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+number
+variable-2
+comment
+def
+def
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.tokens b/atest/fixtures/highlighting/tokens/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.tokens
new file mode 100644
index 0000000..007b983
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/47f52d598f3fe4ac621c9778caeb1546769ad95a636981805f8e0895a3dcc771.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+keyword
+string
+string
+comment
+header string
+keyword
+string
+variable-2
+number
+variable-2
+comment
+header string
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+operator
+number
+variable-2
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.tokens b/atest/fixtures/highlighting/tokens/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.tokens
new file mode 100644
index 0000000..3650bc1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/48be95fd1c6832122bd1bd21b6b807db90365c4841f75f31ad55b1b31f3ffe8f.tokens
@@ -0,0 +1,21 @@
+header link
+header string
+keyword
+keyword
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+string
+keyword
+keyword
+variable-2
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.tokens b/atest/fixtures/highlighting/tokens/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.tokens
new file mode 100644
index 0000000..1ea9cae
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/506a398e7eafc854ac8b5dd2efdaa9a50038e591238571e070ed26d6225be0be.tokens
@@ -0,0 +1,26 @@
+header link
+header string
+keyword
+string
+string
+string
+string
+string
+string
+header string
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+string
+string strong
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.tokens b/atest/fixtures/highlighting/tokens/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.tokens
new file mode 100644
index 0000000..c0a8218
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/52c8af8fbc6b184fea278fcadd1ecc3da68ca3813d97697b3285fadcd1e285ab.tokens
@@ -0,0 +1,17 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+keyword
+variable-2
+string
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.tokens b/atest/fixtures/highlighting/tokens/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.tokens
new file mode 100644
index 0000000..a32243c
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/532d35971d640d9a253b47ec29d37135f9558dacf964ef722d584809ee21b82f.tokens
@@ -0,0 +1,8 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.tokens b/atest/fixtures/highlighting/tokens/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.tokens
new file mode 100644
index 0000000..3013b34
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/5655e1ae7dfd07ca9cb840e674152411889f65a731907b0d2938a39382926756.tokens
@@ -0,0 +1,19 @@
+header link
+variable-2
+string
+string
+variable-2
+number
+variable-2
+variable-2
+string
+variable-2
+variable-2
+string
+string
+string
+string
+bracket
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.tokens b/atest/fixtures/highlighting/tokens/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.tokens
new file mode 100644
index 0000000..3924f4c
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/57586d2261c92768d9d83a4f84d60357d651bd2f1fa2cbf995919a977cc1c246.tokens
@@ -0,0 +1,86 @@
+header link
+meta
+keyword
+keyword
+string
+string
+meta
+keyword
+keyword
+header link
+header string
+meta
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+bracket
+meta
+bracket
+keyword
+keyword
+string
+string
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+bracket
+meta
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+bracket
+meta
+bracket
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+bracket
+meta
+bracket
+variable-2
+keyword
+keyword
+bracket
+meta
+bracket
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.tokens b/atest/fixtures/highlighting/tokens/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.tokens
new file mode 100644
index 0000000..20f629b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/57d4fe4bb026e3aab2349f18ead841fa91c26661b0cfdfd613b69adb9da5eec3.tokens
@@ -0,0 +1,30 @@
+header link
+def
+def
+def
+meta
+variable-2
+keyword
+keyword
+variable-2
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+def
+def
+meta
+variable-2
+variable-2
+keyword
+keyword
+string
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.tokens b/atest/fixtures/highlighting/tokens/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.tokens
new file mode 100644
index 0000000..1ff8b9f
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/591c36a3075dba9bff1249e2b03cd92d2ba54b7d211e33b64b9edd0e24b22dad.tokens
@@ -0,0 +1,25 @@
+header link
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+string
+string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.tokens b/atest/fixtures/highlighting/tokens/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.tokens
new file mode 100644
index 0000000..541855a
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/59faa878a8acd1c86dbc79a2cab7123825e5dd9bc4f98ea5a12ecc916f17ed63.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+keyword
+keyword
+variable-2
+operator
+property
+variable-2
+keyword
+keyword
+variable-2
+operator
+property
+bracket
+string
+bracket
+variable-2
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.tokens b/atest/fixtures/highlighting/tokens/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.tokens
new file mode 100644
index 0000000..6d8167d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/5ba768e3c479734e43c46e286ae480005c12b38720a1868b2eb49014480ba442.tokens
@@ -0,0 +1,25 @@
+header link
+def
+def
+meta
+variable-2
+atom
+variable-2
+atom
+variable-2
+keyword
+keyword
+variable-2
+atom
+def
+def
+meta
+variable-2
+atom
+variable-2
+atom
+variable-2
+keyword
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.tokens b/atest/fixtures/highlighting/tokens/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.tokens
new file mode 100644
index 0000000..b97986b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/5cdf1e7a7c1e1180764138c8d8633bf2ad274a858d45cf9f2495c919bea5fbe9.tokens
@@ -0,0 +1,105 @@
+header link
+def
+def
+def
+def
+def
+meta
+variable-2
+operator
+string
+string
+meta
+string
+string
+string
+string
+string
+keyword
+string
+string
+variable-2
+def
+def
+def
+def
+meta
+variable-2
+number
+variable-2
+operator
+string
+string
+variable-2
+number
+variable-2
+operator
+variable-2
+meta
+string
+string
+string
+string
+string
+keyword
+string
+string
+variable-2
+number
+variable-2
+keyword
+string
+string
+variable-2
+number
+variable-2
+def
+def
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+operator
+string
+meta
+string
+string
+string
+string
+string
+keyword
+string
+variable-2
+keyword
+string
+variable-2
+string
+string
+string
+string
+string
+meta
+variable-2
+variable-2
+operator
+variable-2
+variable-2
+operator
+variable-2
+string
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.tokens b/atest/fixtures/highlighting/tokens/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.tokens
new file mode 100644
index 0000000..e07efa1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/5e73f2bdd7cd6d43b7a87137f25aaf6b6d4bef7bd67c109cbe5aa1ab28dbe6a4.tokens
@@ -0,0 +1,85 @@
+header link
+def
+def
+def
+meta
+string
+string
+string
+keyword
+keyword
+def
+def
+meta
+string
+string
+string
+string
+string
+string
+string
+bracket
+bracket
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+def
+def
+def
+def
+def
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+bracket
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.tokens b/atest/fixtures/highlighting/tokens/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.tokens
new file mode 100644
index 0000000..38c68e9
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6170e7b26b1017b12aa66b5bc52a6242c3e37be0e0949b7cbc9222af136d4803.tokens
@@ -0,0 +1,6 @@
+header link
+header string
+keyword
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.tokens b/atest/fixtures/highlighting/tokens/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.tokens
new file mode 100644
index 0000000..e49ec2a
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/618adedfd1b83f5d45e078051c01d0eb326ba188aa0e07307336de0ec8024f86.tokens
@@ -0,0 +1,11 @@
+header link
+meta
+string
+atom
+bracket
+def
+meta
+variable-2
+atom
+bracket
+def
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.tokens b/atest/fixtures/highlighting/tokens/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.tokens
new file mode 100644
index 0000000..e761d67
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6416c19caa21082fbf17a041f1dd0e196fbcd72d45e59c304d3c21c7b7793ea6.tokens
@@ -0,0 +1,17 @@
+header link
+header string
+atom
+variable-2
+atom
+string
+string
+bracket
+keyword
+variable-2
+bracket
+keyword
+string
+string
+keyword
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.tokens b/atest/fixtures/highlighting/tokens/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.tokens
new file mode 100644
index 0000000..aab9cc9
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/651255edafb18fa80c1e4d4b54c33dccdc73097fc3f0e7da390d7138d8762dcc.tokens
@@ -0,0 +1,87 @@
+header link
+header string
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+header string
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+header link
+def
+def
+variable-2
+def
+keyword
+keyword
+variable-2
+def
+def
+variable-2
+number
+variable-2
+def
+variable-2
+number
+variable-2
+keyword
+keyword
+variable-2
+number
+variable-2
+keyword
+keyword
+string
+keyword
+keyword
+variable-2
+number
+variable-2
+keyword
+keyword
+operator
+def
+def
+def
+variable-2
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.tokens b/atest/fixtures/highlighting/tokens/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.tokens
new file mode 100644
index 0000000..60bdaec
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/653727e6079338350455d797c46d39fb3f8e738dd4976798b26c7b67b11cf8ae.tokens
@@ -0,0 +1,27 @@
+header link
+def
+def
+def
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+string
+string
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.tokens b/atest/fixtures/highlighting/tokens/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.tokens
new file mode 100644
index 0000000..c35b694
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6d8e9584fa383b2234ad4f0041a029f77d0f5d50dd4b273a541a89e26b53ee09.tokens
@@ -0,0 +1,10 @@
+header link
+header string
+atom
+variable-2
+atom
+variable-2
+keyword
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.tokens b/atest/fixtures/highlighting/tokens/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.tokens
new file mode 100644
index 0000000..acb8adf
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6ddd7ceacb679de1a36841fe680929cd21e30e8294c8c32306a3eee4d30e6154.tokens
@@ -0,0 +1,29 @@
+header link
+meta
+bracket
+string
+string
+bracket
+bracket
+string
+string
+string
+string
+bracket
+string
+string
+string
+meta
+string
+string
+bracket
+string
+string
+string
+bracket
+string
+string
+string
+bracket
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.tokens b/atest/fixtures/highlighting/tokens/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.tokens
new file mode 100644
index 0000000..5605f44
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6e8906a5f2ec1b630a50364e313f4d6b0eb5bbfec7bf7f18645b7a8d98130c5c.tokens
@@ -0,0 +1,46 @@
+header link
+def
+def
+meta
+variable-2
+variable-2
+operator
+string
+keyword
+keyword
+variable-2
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+operator
+string
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+operator
+string
+string
+variable-2
+number
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.tokens b/atest/fixtures/highlighting/tokens/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.tokens
new file mode 100644
index 0000000..77f0d91
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/6fc94101dabf8ec05d36020547f1a76368b9e111bea2da46827196c8bbab19a5.tokens
@@ -0,0 +1,18 @@
+header link
+variable-2
+string
+string
+variable-2
+variable-2
+number
+variable-2
+variable-2
+string
+string
+variable-2
+attribute
+operator
+string
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.tokens b/atest/fixtures/highlighting/tokens/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.tokens
new file mode 100644
index 0000000..3ec0b4b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/73296a9999631a485bd1df7926822d37a014dee6dfefb4e9a6d17eb58e1de930.tokens
@@ -0,0 +1,73 @@
+header link
+header string
+keyword
+keyword
+attribute
+operator
+string
+keyword
+keyword
+string
+string
+string
+attribute
+operator
+string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+keyword
+keyword
+string
+attribute
+operator
+string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+keyword
+keyword
+keyword
+string
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+keyword
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.tokens b/atest/fixtures/highlighting/tokens/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.tokens
new file mode 100644
index 0000000..49017d7
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/75a1e5fde354d71dca9a0bd0d90a0c177fe496ecd6d65048ea77f2b46b4c4c41.tokens
@@ -0,0 +1,52 @@
+header link
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+keyword
+variable-2
+keyword
+keyword
+variable-2
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+string
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+keyword
+variable-2
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header string
+bracket
+meta
+bracket
+keyword
+variable-2
+keyword
+variable-2
+keyword
+keyword
+keyword
+keyword
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.tokens b/atest/fixtures/highlighting/tokens/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.tokens
new file mode 100644
index 0000000..d3569f1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/766f42a8c689f4a3dc55c9ba7cb7d5c5c53e3d835d5dad759b8a7898cd00d652.tokens
@@ -0,0 +1,24 @@
+header link
+header string
+keyword
+keyword
+string
+string
+bracket
+header string
+keyword
+keyword
+string
+string
+variable-2
+builtin
+variable-2
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.tokens b/atest/fixtures/highlighting/tokens/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.tokens
new file mode 100644
index 0000000..e1ad6e6
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/7ba3bd3e76ec30280f3b93616f7a9fe0d5d910e184bdd5e88accaa8ad8b3a15c.tokens
@@ -0,0 +1,35 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+variable-2
+builtin
+variable-2
+atom
+variable-2
+atom
+string
+string
+string
+keyword
+keyword
+keyword
+keyword
+string
+variable-2
+string
+operator
+string
+variable-2
+operator
+keyword
+keyword
+variable-2
+atom
+keyword
+keyword
+keyword
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.tokens b/atest/fixtures/highlighting/tokens/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.tokens
new file mode 100644
index 0000000..34615dd
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/7bf46b6d5812b6dd32ef9a4ebab7e61b0923a695b03db511ab535d897e2e6264.tokens
@@ -0,0 +1,59 @@
+header link
+comment
+header string
+keyword
+attribute
+operator
+string
+comment
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+string
+attribute
+operator
+string
+comment
+keyword
+string
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.tokens b/atest/fixtures/highlighting/tokens/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.tokens
new file mode 100644
index 0000000..1ce1ea3
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/7e9e17a259aec72a2990467109c927b18e8c1ef206285f85350bd248aa5c5ad8.tokens
@@ -0,0 +1,44 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+string
+keyword
+variable-2
+operator
+property
+bracket
+variable-2
+comment
+keyword
+variable-2
+operator
+variable-2
+number
+variable-2
+comment
+header string
+variable-2
+operator
+keyword
+keyword
+variable-2
+operator
+number
+variable-2
+keyword
+variable-2
+operator
+variable-2
+number
+variable-2
+comment
+keyword
+variable-2
+operator
+property
+bracket
+variable-2
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.tokens b/atest/fixtures/highlighting/tokens/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.tokens
new file mode 100644
index 0000000..de84431
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/7f7aff82879c76d0b98191118153ed2f7e6cf0d62bd66eeb149ccc3b75876569.tokens
@@ -0,0 +1,42 @@
+header link
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+string
+header link
+variable-2
+string
+string
+header link
+header string
+meta
+string
+string
+keyword
+variable-2
+keyword
+keyword
+string
+header string
+keyword
+keyword
+keyword
+variable-2
+string
+string
+header link
+def
+def
+meta
+variable-2
+keyword
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.tokens b/atest/fixtures/highlighting/tokens/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.tokens
new file mode 100644
index 0000000..c79f9ee
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/874704917cf5c4d3b0fef54dd73aa731eeae497eda7d4907caaf5d8ee1b751b8.tokens
@@ -0,0 +1,15 @@
+header link
+header string
+keyword
+variable-2
+attribute
+operator
+string
+keyword
+string
+variable-2
+variable-2
+keyword
+variable-2
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.tokens b/atest/fixtures/highlighting/tokens/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.tokens
new file mode 100644
index 0000000..16987ff
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8975555ee765d3df3e42871ae70b7c92d59d208e9eb1fa370cd4942849f216fd.tokens
@@ -0,0 +1,39 @@
+header link
+def
+def
+meta
+variable-2
+keyword
+string
+string
+variable-2
+def
+def
+meta
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+keyword
+string
+string
+variable-2
+number
+variable-2
+keyword
+string
+string
+variable-2
+number
+variable-2
+keyword
+string
+string
+variable-2
+number
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.tokens b/atest/fixtures/highlighting/tokens/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.tokens
new file mode 100644
index 0000000..3b6a566
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8bd3cf1fa009f5d9e1c27f0f382a854efef602300713d10586ae600d8f70a6d3.tokens
@@ -0,0 +1,47 @@
+header link
+meta
+string
+attribute
+operator
+string
+attribute
+operator
+string
+header link
+header string
+keyword
+keyword
+string
+attribute
+operator
+variable-2
+attribute
+operator
+string
+keyword
+keyword
+attribute
+operator
+string
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+header link
+def
+def
+meta
+variable-2
+operator
+string
+variable-2
+operator
+keyword
+keyword
+string
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.tokens b/atest/fixtures/highlighting/tokens/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.tokens
new file mode 100644
index 0000000..64fd8c2
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8bfe7b77d86188c23a880b441804d4d944ec8190ada40fb83d5fa7e37f6ce804.tokens
@@ -0,0 +1,36 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+variable-2
+builtin
+variable-2
+atom
+variable-2
+atom
+string
+string
+keyword
+keyword
+keyword
+string
+variable-2
+string
+operator
+string
+string
+string
+string
+variable-2
+operator
+keyword
+keyword
+variable-2
+atom
+keyword
+keyword
+keyword
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.tokens b/atest/fixtures/highlighting/tokens/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.tokens
new file mode 100644
index 0000000..ef36287
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8df77959c3c808ed3102f5c6c1fa49733ba4e773ddaf246710a2b797cd56a643.tokens
@@ -0,0 +1,14 @@
+header link
+header string
+keyword
+variable-2
+operator
+property
+variable-2
+string
+string
+string
+variable-2
+operator
+property
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.tokens b/atest/fixtures/highlighting/tokens/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.tokens
new file mode 100644
index 0000000..e2a1a10
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8e5140e8a3f637e0a4df37a4141af6acd5a17ac3dca15a7c67071de1e6a7b1ba.tokens
@@ -0,0 +1,31 @@
+bracket
+header link
+bracket
+bracket
+bracket
+bracket
+bracket
+header string
+bracket
+variable-2
+operator
+keyword
+keyword
+bracket
+string
+string
+string
+string
+string
+string
+bracket
+bracket
+bracket
+keyword
+keyword
+keyword
+bracket
+variable-2
+bracket
+string
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.tokens b/atest/fixtures/highlighting/tokens/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.tokens
new file mode 100644
index 0000000..e75ebc8
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/8fe96d3d4aec5eca5394e8e93118115b04470e35fbe2f4b46a3b65606fc01181.tokens
@@ -0,0 +1,35 @@
+header link
+header string
+atom
+variable-2
+variable-2
+variable-2
+atom
+bracket
+string
+string
+string
+bracket
+string
+string
+string
+bracket
+string
+string
+string
+keyword
+keyword
+keyword
+variable-2
+variable-2
+variable-2
+atom
+atom
+variable-2
+variable-2
+atom
+variable-2
+keyword
+variable-2
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.tokens b/atest/fixtures/highlighting/tokens/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.tokens
new file mode 100644
index 0000000..a4b6bdf
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/90546ad3f03c6d9dd4c49becff6a764c7b48c7338cde927dff2243261ec75ba5.tokens
@@ -0,0 +1,38 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header link
+def
+def
+def
+variable-2
+def
+keyword
+keyword
+variable-2
+attribute
+operator
+string
+def
+def
+def
+variable-2
+def
+def
+def
+variable-2
+def
+keyword
+keyword
+variable-2
+variable-2
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.tokens b/atest/fixtures/highlighting/tokens/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.tokens
new file mode 100644
index 0000000..db78c4b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/90bd912803b584e17e849080fd626ef144c6f9ccf282b648fbf39b57ddffd3f6.tokens
@@ -0,0 +1,22 @@
+header link
+header string
+keyword
+keyword
+variable-2
+keyword
+keyword
+variable-2
+keyword
+keyword
+string
+string
+string
+variable-2
+string
+keyword
+keyword
+string
+string
+string
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.tokens b/atest/fixtures/highlighting/tokens/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.tokens
new file mode 100644
index 0000000..4833d45
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/92ba7ffda8428e1761be331c36ee388868e4c74cb32c43dacb4b870eeae8d7c2.tokens
@@ -0,0 +1,21 @@
+header link
+meta
+string
+string
+atom
+bracket
+def
+meta
+string
+string
+atom
+bracket
+def
+meta
+string
+string
+string
+string
+atom
+bracket
+def
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.tokens b/atest/fixtures/highlighting/tokens/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.tokens
new file mode 100644
index 0000000..eeb0dd9
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/93ae646bc6372e44bb81813d04d11fa6fa379e162f65fa81b9b4d936253fc25a.tokens
@@ -0,0 +1,9 @@
+header link
+meta
+string
+header link
+header string
+keyword
+keyword
+keyword
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.tokens b/atest/fixtures/highlighting/tokens/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.tokens
new file mode 100644
index 0000000..086079d
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/9646aff3c29735e7d4190f239ad82ef5c4370d11103bce5fe3035279f15ba31e.tokens
@@ -0,0 +1,25 @@
+header link
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+variable-2
+builtin
+variable-2
+header string
+keyword
+keyword
+keyword
+variable-2
+variable-2
+builtin
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
+builtin
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.tokens b/atest/fixtures/highlighting/tokens/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.tokens
new file mode 100644
index 0000000..56ccced
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/97c08e4a04df19c3fda2bfcabb91474f246c1404b9136e399c8986f2c143a440.tokens
@@ -0,0 +1,11 @@
+header link
+header string
+keyword
+string
+string
+variable-2
+keyword
+variable-2
+builtin
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.tokens b/atest/fixtures/highlighting/tokens/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.tokens
new file mode 100644
index 0000000..2d1fd06
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/99a7515409d3919e877a32ad408a7bc231e6297ef3c45af189ebbcb4ba8e5126.tokens
@@ -0,0 +1,113 @@
+header link
+def
+def
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+number
+variable-2
+comment
+def
+def
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+string
+string
+attribute
+operator
+string
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.tokens b/atest/fixtures/highlighting/tokens/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.tokens
new file mode 100644
index 0000000..f85ea3e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/a66ddf2a13c2108d30af91be420d31de4e08118de296f4e308e1925e426253fd.tokens
@@ -0,0 +1,8 @@
+header link
+header string
+keyword
+string
+string
+header string
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.tokens b/atest/fixtures/highlighting/tokens/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.tokens
new file mode 100644
index 0000000..47328a5
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/a7596ec70c45490a4e819caf159823b81464e5f66897b5e1c718da7e23fea283.tokens
@@ -0,0 +1,33 @@
+header link
+header string
+keyword
+variable-2
+bracket
+number
+bracket
+variable-2
+bracket
+number
+bracket
+keyword
+keyword
+keyword
+string
+variable-2
+bracket
+number
+bracket
+string
+header string
+keyword
+variable-2
+bracket
+string
+number
+bracket
+header string
+keyword
+variable-2
+bracket
+variable-2
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.tokens b/atest/fixtures/highlighting/tokens/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.tokens
new file mode 100644
index 0000000..f800dc7
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/a7d7bfca50cfe793ef63c8cea2b534155a899b6c04300976d68699428dbe6ea7.tokens
@@ -0,0 +1,20 @@
+header link
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+string
+variable-2
+builtin
+variable-2
+string
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.tokens b/atest/fixtures/highlighting/tokens/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.tokens
new file mode 100644
index 0000000..25b6de2
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/a8115e316cc8dd5035c950f19a019b6f8d9ea7667a6fa851de29a93e131165a9.tokens
@@ -0,0 +1,34 @@
+header link
+header string
+keyword
+keyword
+keyword
+variable-2
+builtin
+variable-2
+builtin
+variable-2
+string
+string
+string
+string
+variable-2
+builtin
+variable-2
+string
+string
+string
+keyword
+keyword
+keyword
+string
+variable-2
+builtin
+variable-2
+builtin
+variable-2
+builtin
+variable-2
+builtin
+variable-2
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.tokens b/atest/fixtures/highlighting/tokens/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.tokens
new file mode 100644
index 0000000..37d71cf
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/aa22ae088af21b643640b58dec621d3d8d904e732b308446e849dd10adfd4fb4.tokens
@@ -0,0 +1,28 @@
+header link
+header string
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+bracket
+builtin em
+keyword
+keyword
+keyword
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.tokens b/atest/fixtures/highlighting/tokens/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.tokens
new file mode 100644
index 0000000..6b867e4
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/ab223eb46e8e9ad93b3510d6ec1c2a76ee92e02b5a6281aa267cf771085f4dae.tokens
@@ -0,0 +1,66 @@
+header link
+comment
+header string
+keyword
+comment
+header string
+keyword
+string
+comment
+keyword
+string
+string
+comment
+header string
+keyword
+attribute
+operator
+string
+comment
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+string
+attribute
+operator
+string
+comment
+keyword
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+header string
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+comment
+keyword
+attribute
+operator
+string
+attribute
+operator
+string
+attribute
+operator
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.tokens b/atest/fixtures/highlighting/tokens/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.tokens
new file mode 100644
index 0000000..728f696
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/b2ca9fedc1748d10b0ef401a0dfea4d336f70a16efb32fe55328504fb0524244.tokens
@@ -0,0 +1,19 @@
+header link
+meta
+string
+string
+string
+string
+string
+string
+string strong
+em string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.tokens b/atest/fixtures/highlighting/tokens/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.tokens
new file mode 100644
index 0000000..9bde6a0
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/b87d695c51ccc4f21e5820860bcbf4cc6851ad1166665833cfc319a1a423eb21.tokens
@@ -0,0 +1,53 @@
+header link
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+variable-2
+string
+string
+string
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+variable-2
+atom
+variable-2
+atom
+variable-2
+keyword
+keyword
+keyword
+keyword
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+bracket
+variable-2
+bracket
+atom
+header string
+atom
+variable-2
+variable-2
+atom
+variable-2
+variable-2
+keyword
+keyword
+keyword
+keyword
+variable-2
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.tokens b/atest/fixtures/highlighting/tokens/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.tokens
new file mode 100644
index 0000000..5ce0eb7
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/ba8686e4f09bc3b721279260eb268b42dbc680f0a0b07ba90ee7468a00b3f5a2.tokens
@@ -0,0 +1,51 @@
+header link
+header string
+meta
+string
+string
+keyword
+keyword
+header string
+meta
+string strong
+string
+em string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+header string
+meta
+string
+string
+variable-2
+string
+variable-2
+keyword
+keyword
+header string
+meta
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+header string
+meta
+string
+string
+string
+bracket
+string
+string
+string
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.tokens b/atest/fixtures/highlighting/tokens/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.tokens
new file mode 100644
index 0000000..b264b7f
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/bac9ffc20adf5c49fe2c1a0c093ab96d501297796d01d74337ed6766df7f2974.tokens
@@ -0,0 +1,49 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+keyword
+keyword
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+keyword
+keyword
+string
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.tokens b/atest/fixtures/highlighting/tokens/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.tokens
new file mode 100644
index 0000000..b60cc7e
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/bb93c8b4e9dffbad90ad5667eee7ce2e098f7828b2592df256e412959fbe4f0c.tokens
@@ -0,0 +1,20 @@
+header link
+header string
+keyword
+keyword
+string
+string
+string
+attribute
+operator
+string
+keyword
+keyword
+string
+string
+attribute
+operator
+string
+attribute
+operator
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.tokens b/atest/fixtures/highlighting/tokens/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.tokens
new file mode 100644
index 0000000..f6f0306
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c039ae1f15e242142ec0e88508deb8013e63236fce9b934181dbbf597bd1ba79.tokens
@@ -0,0 +1,21 @@
+header link
+variable-2
+string
+string
+string
+string
+string
+string
+string
+string
+variable-2
+attribute
+operator
+string
+string
+string
+bracket
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.tokens b/atest/fixtures/highlighting/tokens/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.tokens
new file mode 100644
index 0000000..21ad5bd
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c1b0768d04cb2ffd9c8357fffa052d5530dec6b582024789f7e390dcf46be3b9.tokens
@@ -0,0 +1,36 @@
+header link
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+comment
+keyword
+keyword
+string
+variable-2
+builtin
+variable-2
+comment
+header string
+keyword
+keyword
+variable-2
+builtin
+variable-2
+comment
+header string
+variable-2
+operator
+keyword
+keyword
+string
+comment
+keyword
+keyword
+keyword
+variable-2
+variable-2
+builtin
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.tokens b/atest/fixtures/highlighting/tokens/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.tokens
new file mode 100644
index 0000000..5186c7b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c201a52dc79270dcd0d55c528965114635500404fb3a412d4dca2f375f0bd40b.tokens
@@ -0,0 +1,15 @@
+header link
+header string
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.tokens b/atest/fixtures/highlighting/tokens/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.tokens
new file mode 100644
index 0000000..cdd4658
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c330fbac99b018d17cf3df78f09d5c9548b83dcf52b4e62e46c34e0154562932.tokens
@@ -0,0 +1,24 @@
+header link
+def
+def
+keyword
+keyword
+bracket
+meta
+bracket
+keyword
+string
+string
+def
+def
+meta
+string
+string
+string
+string
+keyword
+keyword
+bracket
+meta
+bracket
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.tokens b/atest/fixtures/highlighting/tokens/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.tokens
new file mode 100644
index 0000000..d8a1818
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c64b7d09f132dd7c2a9826fbeaf0de94534d1ddc852bf5e20df93bb4fb5a44af.tokens
@@ -0,0 +1,36 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header string
+keyword
+keyword
+string
+string
+string
+string
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.tokens b/atest/fixtures/highlighting/tokens/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.tokens
new file mode 100644
index 0000000..edb0300
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c74568d0a997b544bbad4342b930792a51b97e5198aee8c86bd9486fee742307.tokens
@@ -0,0 +1,35 @@
+header link
+header string
+bracket
+meta
+bracket
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+variable-2
+bracket
+string
+keyword
+string
+variable-2
+builtin
+variable-2
+bracket
+variable-2
+variable-2
+bracket
+variable-2
+builtin
+variable-2
+variable-2
+builtin
+variable-2
+bracket
+variable-2
+builtin
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.tokens b/atest/fixtures/highlighting/tokens/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.tokens
new file mode 100644
index 0000000..a030352
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c8c6ff813ce931a654305197bf0a54727c2d27e1f526b6fa7daaaefca33ddfe1.tokens
@@ -0,0 +1,37 @@
+header link
+meta
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+header link
+string
+string
+header string
+string
+variable-2
+header string
+variable-2
+string
+header string
+string
+string
+header string
+variable-2
+builtin
+variable-2
+variable-2
+header string
+variable-2
+variable-2
+builtin
+variable-2
+header string
+variable-2
+builtin
+variable-2
+variable-2
+builtin
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.tokens b/atest/fixtures/highlighting/tokens/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.tokens
new file mode 100644
index 0000000..fee4265
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c9b783d88d1e8ad70f8b8547822c97a5df506b19f0f4a9030850af503d895826.tokens
@@ -0,0 +1,14 @@
+header link
+header string
+keyword
+variable-2
+string
+string
+keyword
+variable-2
+variable-2
+string
+keyword
+variable-2
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.tokens b/atest/fixtures/highlighting/tokens/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.tokens
new file mode 100644
index 0000000..83ae077
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/c9e69339713700f43dee457a6e155bc30f5ff0e94cabedc07bb37132340ea08b.tokens
@@ -0,0 +1,83 @@
+bracket
+header link
+bracket
+bracket
+meta
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+meta
+bracket
+string
+bracket
+header link
+bracket
+bracket
+variable-2
+bracket
+string
+string
+bracket
+header link
+bracket
+bracket
+bracket
+bracket
+header string
+bracket
+meta
+bracket
+string
+string
+bracket
+bracket
+bracket
+keyword
+bracket
+variable-2
+bracket
+bracket
+bracket
+keyword
+keyword
+bracket
+string
+bracket
+bracket
+header string
+bracket
+keyword
+keyword
+keyword
+bracket
+variable-2
+bracket
+string
+string
+bracket
+header link
+bracket
+bracket
+bracket
+bracket
+header string
+bracket
+meta
+bracket
+variable-2
+bracket
+bracket
+bracket
+keyword
+keyword
+keyword
+bracket
+variable-2
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.tokens b/atest/fixtures/highlighting/tokens/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.tokens
new file mode 100644
index 0000000..651e8f2
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/cdc160e6f7e6916c58517f42a2213c0eb456ddb927ae6d60617deb63621d59d5.tokens
@@ -0,0 +1,10 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+attribute
+operator
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.tokens b/atest/fixtures/highlighting/tokens/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.tokens
new file mode 100644
index 0000000..2c1c7a8
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/cfac0bd38202344652998d8e761fe99e18eb3627e688c8ff4422fffaa14076e7.tokens
@@ -0,0 +1,20 @@
+header link
+def
+def
+meta
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+def
+def
+meta
+variable-2
+variable-2
+variable-2
+keyword
+keyword
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.tokens b/atest/fixtures/highlighting/tokens/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.tokens
new file mode 100644
index 0000000..b820ab4
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/cfbda18f03128c58940300219c051619419e49bbf48f8827ac8a468f9fc49dad.tokens
@@ -0,0 +1,9 @@
+header link
+variable-2
+string
+string
+variable-2
+string
+variable-2
+variable-2
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.tokens b/atest/fixtures/highlighting/tokens/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.tokens
new file mode 100644
index 0000000..752a243
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/d0b81911ad9aea4ae30bfc46af694e215b6f5b1570c6199d4af0a1a25acab272.tokens
@@ -0,0 +1,36 @@
+header link
+header string
+atom
+variable-2
+atom
+string
+string
+keyword
+variable-2
+keyword
+string
+string
+atom
+keyword
+string
+string
+header string
+atom
+variable-2
+atom
+string
+string
+variable-2
+number
+variable-2
+string
+variable-2
+bracket
+string
+string
+string
+string
+variable-2
+keyword
+variable-2
+atom
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.tokens b/atest/fixtures/highlighting/tokens/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.tokens
new file mode 100644
index 0000000..7dbc733
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/d6a0f25ab7382e810dd5d16a46617a85f4bf8d27ff03ee26269a49f80c08bbe1.tokens
@@ -0,0 +1,49 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+keyword
+string
+string
+string
+string
+keyword
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+keyword
+string
+string
+string
+string
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+keyword
+string
+string
+keyword
+keyword
+keyword
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.tokens b/atest/fixtures/highlighting/tokens/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.tokens
new file mode 100644
index 0000000..11aa943
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/d710c924030524c2271d27dcacc0b427ed39183dfd324bb4563df73013331777.tokens
@@ -0,0 +1,53 @@
+header link
+variable-2
+string
+string
+string
+variable-2
+string
+string
+string
+string
+variable-2
+variable-2
+number
+variable-2
+variable-2
+string
+string
+string
+string
+variable-2
+variable-2
+number
+variable-2
+variable-2
+variable-2
+number
+variable-2
+variable-2
+attribute
+operator
+variable-2
+number
+variable-2
+attribute
+operator
+variable-2
+number
+variable-2
+attribute
+operator
+variable-2
+number
+variable-2
+variable-2
+string
+string
+variable-2
+attribute
+operator
+string
+attribute
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.tokens b/atest/fixtures/highlighting/tokens/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.tokens
new file mode 100644
index 0000000..c712b43
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/d717f16613277fd934155e2611b4de039c800b57e7ee3b0d614d3e44066593fa.tokens
@@ -0,0 +1,68 @@
+header link
+header string
+keyword
+keyword
+keyword
+variable-2
+builtin
+variable-2
+bracket
+header string
+keyword
+keyword
+keyword
+variable-2
+builtin
+variable-2
+operator
+variable-2
+number
+variable-2
+bracket
+header string
+keyword
+keyword
+keyword
+variable-2
+builtin
+variable-2
+operator
+variable-2
+number
+variable-2
+bracket
+header string
+keyword
+keyword
+keyword
+string
+variable-2
+builtin
+variable-2
+string
+string
+string
+header string
+keyword
+keyword
+keyword
+string
+variable-2
+builtin
+variable-2
+operator
+variable-2
+number
+variable-2
+string
+string
+bracket
+string
+header string
+keyword
+keyword
+keyword
+variable-2
+builtin
+variable-2
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.tokens b/atest/fixtures/highlighting/tokens/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.tokens
new file mode 100644
index 0000000..3fc66f8
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/da59023552a7d45908c443c308952825cec834ad47b95c6b6a41d45b9085ff47.tokens
@@ -0,0 +1,103 @@
+header link
+meta
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+tag
+tag
+tag
+tag
+tag
+bracket
+tag
+tag
+tag
+tag
+header link
+variable-2
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+header link
+header string
+bracket
+meta
+bracket
+tag
+tag
+tag
+tag
+tag
+tag
+tag
+bracket
+tag
+tag
+tag
+tag
+keyword
+keyword
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+variable-2
+operator
+keyword
+keyword
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+string
+string
+string
+string
+string
+string
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.tokens b/atest/fixtures/highlighting/tokens/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.tokens
new file mode 100644
index 0000000..4ba00ea
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/dc4f2da5d432c1defb205f9d87ee28fbc1e98ec055465b8159df49deed5d8f17.tokens
@@ -0,0 +1,32 @@
+bracket
+header link
+bracket
+keyword
+bracket
+keyword
+bracket
+variable-2
+bracket
+string
+bracket
+string
+bracket
+string
+bracket
+bracket
+string
+bracket
+variable-2
+bracket
+bracket
+string
+bracket
+string
+string
+bracket
+bracket
+keyword
+bracket
+string
+string
+bracket
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.tokens b/atest/fixtures/highlighting/tokens/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.tokens
new file mode 100644
index 0000000..58f05fb
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/dd20d932dc93d6b9f61f6607985ae91b6cc12fc292279a882819ae9c1e891110.tokens
@@ -0,0 +1,14 @@
+header link
+meta
+string
+meta
+string
+meta
+variable-2
+string
+meta
+string
+string
+variable-2
+number
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.tokens b/atest/fixtures/highlighting/tokens/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.tokens
new file mode 100644
index 0000000..c612589
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/defcc7803fcf63c13b5ff1a7cf0d5969d8876a3f3e2b81e5ace65dbb8c987ab2.tokens
@@ -0,0 +1,24 @@
+header link
+meta
+keyword
+keyword
+header link
+header string
+keyword
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+keyword
+string
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.tokens b/atest/fixtures/highlighting/tokens/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.tokens
new file mode 100644
index 0000000..48c15a7
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e07efb6e3d60641f5d4bf0b29f5ec88400ce107ccc74b64cd9d705e70bba08a5.tokens
@@ -0,0 +1,18 @@
+header link
+header string
+keyword
+keyword
+attribute
+operator
+string
+comment
+header link
+def
+def
+meta
+variable-2
+keyword
+keyword
+string
+variable-2
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.tokens b/atest/fixtures/highlighting/tokens/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.tokens
new file mode 100644
index 0000000..fb7c363
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e0e51f49a26794416e8e4678fcaf772aadf53000240df723bc67cacce5b907c5.tokens
@@ -0,0 +1,12 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.tokens b/atest/fixtures/highlighting/tokens/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.tokens
new file mode 100644
index 0000000..00f5ce1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e121bcdf1a93f06906551fc8231b302edb252786bddeb7658cdd549dfa718b35.tokens
@@ -0,0 +1,115 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+keyword
+string
+keyword
+keyword
+variable-2
+header string
+variable-2
+operator
+keyword
+keyword
+string
+string
+variable-2
+operator
+keyword
+keyword
+string
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
+number
+variable-2
+variable-2
+operator
+keyword
+keyword
+string
+string
+variable-2
+keyword
+keyword
+keyword
+variable-2
+variable-2
+operator
+number
+variable-2
+header link
+def
+def
+def
+meta
+variable-2
+keyword
+keyword
+variable-2
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+keyword
+string
+string
+string
+string
+def
+def
+meta
+variable-2
+variable-2
+variable-2
+operator
+keyword
+keyword
+variable-2
+number
+variable-2
+atom
+variable-2
+atom
+variable-2
+keyword
+keyword
+keyword
+keyword
+string
+variable-2
+string
+operator
+string
+variable-2
+string
+variable-2
+variable-2
+operator
+keyword
+keyword
+variable-2
+operator
+variable-2
+number
+variable-2
+atom
+keyword
+keyword
+keyword
+variable-2
+operator
+number
+variable-2
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.tokens b/atest/fixtures/highlighting/tokens/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.tokens
new file mode 100644
index 0000000..4d0cdc1
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e34d205a920479f6e448b166b8ce08b02d875ca3352ee383e83a0f8d69022021.tokens
@@ -0,0 +1,78 @@
+header link
+def
+def
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+string
+string
+string
+string
+keyword
+keyword
+keyword
+keyword
+keyword
+def
+def
+def
+meta
+variable-2
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+keyword
+keyword
+variable-2
+def
+def
+def
+def
+meta
+variable-2
+variable-2
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+string
+string
+meta
+variable-2
+keyword
+keyword
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.tokens b/atest/fixtures/highlighting/tokens/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.tokens
new file mode 100644
index 0000000..04b6bba
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e387cc44e663e66585d3aac555ad217ca8be9b7b52aee4625610ca36d3771466.tokens
@@ -0,0 +1,30 @@
+header link
+meta
+string
+variable-2
+comment
+meta
+variable-2
+variable-2
+comment
+meta
+variable-2
+comment
+meta
+keyword
+keyword
+variable-2
+comment
+meta
+variable-2
+bracket
+variable-2
+bracket
+comment
+meta
+variable-2
+bracket
+comment
+meta
+variable-2
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.tokens b/atest/fixtures/highlighting/tokens/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.tokens
new file mode 100644
index 0000000..2da2e1f
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e63e1c99aa2717cc02f5713c5fa947d0f9644ecdb41ddb3f4496f8cfb84e4181.tokens
@@ -0,0 +1,32 @@
+header link
+header string
+variable-2
+operator
+keyword
+keyword
+attribute
+operator
+string
+attribute
+operator
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+operator
+string
+keyword
+keyword
+keyword
+variable-2
+string
+keyword
+keyword
+variable-2
+keyword
+variable-2
+operator
+property
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.tokens b/atest/fixtures/highlighting/tokens/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.tokens
new file mode 100644
index 0000000..cdd8500
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e8bad102a86a8bfadf5ad8c218003b5e1306f1be7a58ee85d01842d7d7340e90.tokens
@@ -0,0 +1,8 @@
+header link
+variable-2
+operator
+string
+string
+variable-2
+operator
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.tokens b/atest/fixtures/highlighting/tokens/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.tokens
new file mode 100644
index 0000000..edb95b9
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/e9469b86da7278b6235341d43d41256e6a33da5322f547913fda313af562fd9d.tokens
@@ -0,0 +1,8 @@
+header link
+meta
+string
+string
+string
+meta
+string
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.tokens b/atest/fixtures/highlighting/tokens/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.tokens
new file mode 100644
index 0000000..ca89a35
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/eb476d0680d3f6b723a44707c19fb386b70d8856cfb01d9e03d4c63647e8d907.tokens
@@ -0,0 +1,36 @@
+header link
+def
+def
+def
+def
+def
+bracket
+meta
+bracket
+tag
+tag
+tag
+keyword
+keyword
+def
+def
+def
+def
+meta
+string
+string
+string
+string
+string
+string
+string
+string
+bracket
+meta
+tag
+punctuation
+tag
+punctuation
+tag
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.tokens b/atest/fixtures/highlighting/tokens/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.tokens
new file mode 100644
index 0000000..0ae8bdc
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/ef92fc6d23046942bc803c50cb1ca6342b53ef08e89d9d9d4b61222ec33bdf48.tokens
@@ -0,0 +1,17 @@
+header link
+meta
+string
+meta
+string
+header link
+header string
+keyword
+keyword
+string
+comment
+keyword
+keyword
+keyword
+keyword
+string
+comment
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.tokens b/atest/fixtures/highlighting/tokens/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.tokens
new file mode 100644
index 0000000..5ea39a6
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/f11d6a7668d70b777258aa16146520ebffc9891b463cb53632afffd84ee02704.tokens
@@ -0,0 +1,18 @@
+header link
+meta
+string
+string
+meta
+string
+string
+string
+string
+string
+string
+string strong
+string
+string
+meta
+string
+string
+variable-2
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.tokens b/atest/fixtures/highlighting/tokens/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.tokens
new file mode 100644
index 0000000..4401cf4
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/f39b39b3cd3c439b7588bb415577dcc29dcfd5d2ce4523f6193360813cbcb9b8.tokens
@@ -0,0 +1,9 @@
+header link
+header string
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.tokens b/atest/fixtures/highlighting/tokens/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.tokens
new file mode 100644
index 0000000..a59e65a
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/fa420f6bccf5d261b63e20c73d18b8df664e7b9417de3adfa564237e159d4ba4.tokens
@@ -0,0 +1,30 @@
+header link
+meta
+string
+string
+string
+atom
+bracket
+def
+meta
+string
+string
+string
+atom
+bracket
+def
+header link
+header string
+keyword
+keyword
+string
+string
+string
+string
+keyword
+keyword
+string
+string
+string
+keyword
+keyword
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.tokens b/atest/fixtures/highlighting/tokens/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.tokens
new file mode 100644
index 0000000..bfe4637
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/fe8480f4197ffe02624f80c1f2d8c21e22c0b2e10fb7c8080240ff4dd21db486.tokens
@@ -0,0 +1,89 @@
+header link
+header string
+variable-2
+number
+variable-2
+bracket
+variable-2
+number
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+string
+string
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+string
+string
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+string
+string
+keyword
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+string
+string
+variable-2
+number
+variable-2
+bracket
+variable-2
+number
+variable-2
+bracket
+variable-2
+operator
+keyword
+keyword
+keyword
+keyword
+keyword
+keyword
+variable-2
+number
+variable-2
+variable-2
+number
+variable-2
+string
+string
+keyword
+keyword
+keyword
+variable-2
+bracket
+number
+bracket
+variable-2
+bracket
+number
+bracket
+string
+string
\ No newline at end of file
diff --git a/atest/fixtures/highlighting/tokens/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.tokens b/atest/fixtures/highlighting/tokens/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.tokens
new file mode 100644
index 0000000..f7a1f0b
--- /dev/null
+++ b/atest/fixtures/highlighting/tokens/rfug/fee50dc83ea12e719f26789ebd9fdcc0e910b3bd36663f80133030c70500d54b.tokens
@@ -0,0 +1,8 @@
+header link
+meta
+string
+meta
+string
+meta
+variable-2
+string
\ No newline at end of file
diff --git a/atest/resources/CodeMirror.robot b/atest/resources/CodeMirror.robot
index be284b0..cfa579d 100644
--- a/atest/resources/CodeMirror.robot
+++ b/atest/resources/CodeMirror.robot
@@ -2,6 +2,7 @@
*** Settings ***
Documentation JupyterLab Notebook activities
Library SeleniumLibrary
+Library Collections
Resource Lab.robot
*** Variables ***
@@ -18,7 +19,7 @@ Evaluate Cell CodeMirror
Set Cell Source
[Documentation] Set the source of a cell
[Arguments] ${code}
- ${result} = Evaluate Cell CodeMirror setValue(`${code}`)
+ ${result} = Evaluate Cell CodeMirror setValue(${code.split("\n")}.join("\\n"))
[Return] ${result}
Append to Cell Source
@@ -50,9 +51,36 @@ Cell Source Should Contain
${result} = Get Cell Source
Should Contain ${result} ${text}
+Cell Source Should Eventually Contain
+ [Documentation] Whether source of a cell contains given text (eventually)
+ [Arguments] ${text}
+ Wait Until Keyword Succeeds 5x 1s Cell Source Should Contain ${text}
+
+Cell Source Tokens Should Equal
+ [Documentation] Whether a cell is highlighted as expected
+ [Arguments] ${expected_tokens}
+ ${observed_tokens} = Get Cell Source Tokens
+ Should Be Equal As Numbers ${observed_tokens.__len__()} ${expected_tokens.__len__()}
+ FOR ${i} ${el} IN ENUMERATE @{observed_tokens}
+ Element Should Only Have Classes ${el} ${expected_tokens[${i}]}
+ END
+
+Get Cell Source Tokens
+ [Documentation] Extract the current cell tokens
+ ${tokens} = Create List
+ ${els} = Get WebElements css:${VISIBLE_NOTEBOOK} ${CELL_CSS} .CodeMirror-lines span[class^='cm-']
+ FOR ${el} IN @{els}
+ ${raw_classes} = Call Method ${el} get_attribute class
+ ${observed} = Set Variable ${raw_classes.replace("cm-", "").split(" ")}
+ ${sorted} = Evaluate sorted(${observed})
+ Run Keyword If "tab-wrap-hack" not in ${sorted} Append To List ${tokens} ${sorted}
+ END
+ [Return] ${tokens}
+
Trigger Cell Source Completion
[Documentation] Initiate Tab Complete
Press Key css:body \\9
+ Wait Until Kernel Is Idle
Completions Should Contain
[Documentation] Does the completer show the expected completions?
diff --git a/atest/resources/Elements.robot b/atest/resources/Elements.robot
new file mode 100644
index 0000000..de40a67
--- /dev/null
+++ b/atest/resources/Elements.robot
@@ -0,0 +1,12 @@
+*** Settings ***
+Documentation Keywords for checking things about WebElements
+Library SeleniumLibrary
+
+*** Keywords ***
+Element Should Only Have Classes
+ [Documentation] Does the given element only have the given CSS classes?
+ [Arguments] ${el} ${expected_classes}
+ ${raw_classes} = Call Method ${el} get_attribute class
+ ${observed} = Set Variable ${raw_classes.split(" ")}
+ ${difference} = Evaluate set(${expected_classes}).symmetric_difference(set(${observed}))
+ Should Be Empty ${difference}
diff --git a/atest/resources/Highlight.robot b/atest/resources/Highlight.robot
new file mode 100644
index 0000000..a01d195
--- /dev/null
+++ b/atest/resources/Highlight.robot
@@ -0,0 +1,30 @@
+*** Settings ***
+Resource Lab.robot
+Resource Browser.robot
+Resource Notebook.robot
+Resource LabRobot.robot
+Resource CodeMirror.robot
+Resource Elements.robot
+Library SeleniumLibrary
+Library OperatingSystem
+
+*** Keywords ***
+Robot Syntax Highlighting Should Yield Tokens
+ [Documentation] Makes sure some notebook highlighting tokens are correct
+ [Arguments] ${example}
+ Run Keyword And Ignore Error Click Element css:.jp-Dialog-button.jp-mod-accept
+ ${robot} = Get File ..${/}fixtures${/}highlighting${/}samples${/}${example}.robot
+ Add a Cell ${robot}
+ Run Keyword And Ignore Error Click Element ${SAVE}
+ ${observed} = Get Cell Source Tokens
+ ${cake} = Evaluate "\\n".join([" ".join(obs) for obs in ${observed}])
+ Create File ${OUTPUT DIR}${/}tokens${/}${example}.tokens ${cake}
+ ${raw} = Get File ..${/}fixtures${/}highlighting${/}tokens${/}${example}.tokens
+ ${expected} = Evaluate [line.strip().split(" ") for line in """${raw}""".strip().split("\\n")]
+ Should Be Equal ${observed} ${expected}
+
+Make a Highlighting Notebook
+ [Documentation] Make a notebook for testing syntax highlighting
+ Open JupyterLab with ${BROWSER}
+ Set Screenshot Directory ${OUTPUT_DIR}${/}robot${/}highlighting
+ Launch a new Robot Framework Notebook
diff --git a/atest/resources/Lab.robot b/atest/resources/Lab.robot
index 2c17392..60ebeca 100644
--- a/atest/resources/Lab.robot
+++ b/atest/resources/Lab.robot
@@ -4,21 +4,16 @@ Library Process
Library BuiltIn
Library SeleniumLibrary
Library OperatingSystem
+Library String
Resource Selectors.robot
Resource Commands.robot
-*** Variables ***
-${TOKEN} hopelesslyinsecure
-${LAB_CMD} jupyter-lab --no-browser --NotebookApp.token=${TOKEN} --port 18888 --debug --ip=0.0.0.0
-${BASE_URL} http://localhost:18888
-${LAB_URL} ${BASE_URL}/lab?token=${TOKEN}
-${TREE_URL} ${BASE_URL}/tree?token=${TOKEN}
*** Keywords ***
Wait for Splash Screen
[Documentation] Wait for the JupyterLab splash animation to run its course
- Wait Until Page Contains Element ${SPLASH_ID}
- Wait Until Page Does Not Contain Element ${SPLASH_ID}
+ Wait Until Page Contains Element ${SPLASH_ID} timeout=30s
+ Wait Until Page Does Not Contain Element ${SPLASH_ID} timeout=30s
Sleep 0.1s
Launch a new
@@ -32,10 +27,25 @@ Launch a new
Start JupyterLab
[Documentation] Start a Jupyter Notebook Server with JupyterLab
${notebooks} = Set Variable ${OUTPUT_DIR}${/}_notebooks
+ ${token} = Generate Random String 64
+ Set Suite Variable ${TOKEN} ${token} children=${True}
+ Set Suite Variable ${LAB_CMD} jupyter-lab --no-browser --NotebookApp.token=${TOKEN} --port 18888 children=${True}
+ Set Suite Variable ${BASE_URL} http://localhost:18888 children=${True}
+ Set Suite Variable ${LAB_URL} ${BASE_URL}/lab?token=${TOKEN} children=${True}
+ Set Suite Variable ${TREE_URL} ${BASE_URL}/tree?token=${TOKEN} children=${True}
+ Set Suite Variable ${SHUTDOWN_URL} ${BASE_URL}/api/shutdown?token=${TOKEN} children=${True}
${log} = Set Variable ${OUTPUT_DIR}${/}_lab.log
${cmd} = Set Variable ${LAB_CMD} --notebook-dir=${notebooks}
Create Directory ${notebooks}
- Start Process ${cmd} shell=true stderr=STDOUT stdout=${log}
+ ${proc} = Start Process ${cmd} shell=true stderr=STDOUT stdout=${log}
+ Set Suite Variable ${LAB_PROC} ${proc} children=True
+ Wait Until Keyword Succeeds 10x 1s Lab Was Started ${log}
+
+Lab Was Started
+ [Arguments] ${log}
+ [Documentation] Check whether the lab server was started and listening
+ ${text} = Get File ${log}
+ Should Contain ${text} The Jupyter Notebook is running
Click JupyterLab Menu
[Arguments] ${menu_label}
@@ -62,15 +72,15 @@ Open JupyterLab with
Reset Application State and Close
[Documentation] Try to clean up after doing some things to the JupyterLab state
Run Keyword And Ignore Error Click Element ${SAVE}
+ Execute JupyterLab Command Close All
Execute JupyterLab Command Reset Application State
Close All Browsers
Clean Up JupyterLab
[Documentation] Close all the browsers and stop all processes
- Open JupyterLab with ${BROWSER}
- Go to ${TREE_URL}
- Click Element css:#shutdown
Close All Browsers
+ Run Keyword and Ignore Error Execute __import__("urllib.request").request.urlopen("${SHUTDOWN_URL}", data=[])
+ Run Keyword and Ignore Error Wait For Process ${LAB_PROC} timeout=10s
Terminate All Processes kill=True
Maybe Accept a JupyterLab Prompt
diff --git a/atest/resources/Notebook.robot b/atest/resources/Notebook.robot
index 03a223c..0a55f66 100644
--- a/atest/resources/Notebook.robot
+++ b/atest/resources/Notebook.robot
@@ -8,7 +8,8 @@ Resource CodeMirror.robot
*** Variables ***
${VISIBLE_NOTEBOOK} .jp-NotebookPanel:not(.p-mod-hidden)
${BUSY_KERNEL} css:${VISIBLE_NOTEBOOK} .jp-Toolbar-kernelStatus.jp-FilledCircleIcon
-${BUSY_PROMPT} In [*]:
+${BUSY_PROMPT} [*]:
+${PROMPT} css:.jp-InputPrompt
*** Keywords ***
@@ -16,7 +17,7 @@ Add a Cell
[Documentation] Add a cell (probably code) with the given source
[Arguments] ${code}
Click Element css:${VISIBLE_NOTEBOOK} .jp-NotebookPanel-toolbar .jp-AddIcon
- Sleep 0.1s
+ Wait Until Page Contains Element css:${VISIBLE_NOTEBOOK} ${CELL_CSS}
Click Element css:${VISIBLE_NOTEBOOK} ${CELL_CSS}
Set Cell Source ${code}
@@ -35,4 +36,4 @@ Run Cell
Wait Until Kernel Is Idle
[Documentation] Wait for the kernel to be busy, and then stop being busy
Wait Until Page Does Not Contain Element ${BUSY_KERNEL}
- Wait Until Page Does Not Contain ${BUSY_PROMPT}
+ Wait Until Element Does Not Contain ${PROMPT} ${BUSY_PROMPT}
diff --git a/atest/tools/SyntaxCheckerLibrary.ipynb b/atest/tools/SyntaxCheckerLibrary.ipynb
new file mode 100644
index 0000000..cd96d5c
--- /dev/null
+++ b/atest/tools/SyntaxCheckerLibrary.ipynb
@@ -0,0 +1,249 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## A Widget for Inspecting Highlighting\n",
+ "Manually testing syntax highlighting is one approach for catching regressions. This widget will look at a token file created by `Get Cell Source Tokens`, and compare it with a known-good fixture.\n",
+ "\n",
+ "If it finds any difference, it will show a link to the sample in question which will pop open a new editor in JupyterLab. If you manually verify the output, you can `Trust` the sample and copy the token file into the expected location.\n",
+ "\n",
+ "### So What?\n",
+ "While this may not be _immediately_ useful to you unless you are writing a syntax highlighter, the pattern is useful for all kinds of automation/testing workflows:\n",
+ "\n",
+ "- write a test that generates some structured output\n",
+ "- compare the output to a known good example (if available)\n",
+ "- provide a way to incrementally (and interactively!) for a person to improve the fixture data\n",
+ "- repeat the test until you're done"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import shutil, re, traitlets as T, IPython.display as D, ipywidgets as W\n",
+ "from pathlib import Path\n",
+ "from difflib import context_diff\n",
+ "from robot.libraries.BuiltIn import BuiltIn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class SyntaxChecker(W.Widget):\n",
+ " sample_root = T.Instance(Path)\n",
+ " sample_glob = T.Unicode()\n",
+ " trusted_root = T.Instance(Path)\n",
+ " observed_root = T.Instance(Path)\n",
+ " blacklist = T.Tuple()\n",
+ "\n",
+ " samples = T.Dict()\n",
+ " trusted = T.Dict()\n",
+ " observed = T.Dict()\n",
+ " disagree = T.Dict()\n",
+ " \n",
+ " def __init__(self, *args, **kwargs):\n",
+ " super().__init__(*args, **kwargs)\n",
+ " self._ndlink([\"sample_root\", \"sample_glob\"], \"samples\", self._update_samples)\n",
+ " self._ndlink([\"observed_root\"], \"observed\", self._update_observed)\n",
+ " self._ndlink([\"trusted_root\"], \"trusted\", self._update_trusted)\n",
+ " self._ndlink([\"trusted\", \"observed\"], \"disagree\", self._update_disagree)\n",
+ " \n",
+ " def _ndlink(self, src, dest, handler):\n",
+ " [T.dlink((self, s), (self, dest), handler) for s in src]\n",
+ " \n",
+ " def _rel_stem(self, path, root):\n",
+ " return str(path.relative_to(root))[:-len(path.suffix)]\n",
+ " \n",
+ " def _stem_dict(self, root, pattern):\n",
+ " if root and pattern:\n",
+ " return {\n",
+ " self._rel_stem(p, root): p\n",
+ " for p in root.glob(pattern)\n",
+ " if all([b not in str(p) for b in self.blacklist])\n",
+ " }\n",
+ " else:\n",
+ " return {}\n",
+ " \n",
+ " \n",
+ " def _update_samples(self, _):\n",
+ " return self._stem_dict(self.sample_root, self.sample_glob)\n",
+ " \n",
+ " def _update_observed(self, _):\n",
+ " return self._stem_dict(self.observed_root, \"**/*.tokens\")\n",
+ " \n",
+ " def _update_trusted(self, _):\n",
+ " return self._stem_dict(self.trusted_root, \"**/*.tokens\")\n",
+ " \n",
+ " def _update_disagree(self, _):\n",
+ " disagree = {}\n",
+ " for k, v in self.observed.items():\n",
+ " observed = v.read_text()\n",
+ " if k in self.trusted:\n",
+ " trusted = self.trusted[k].read_text()\n",
+ " else:\n",
+ " trusted = \"\"\n",
+ " if observed != trusted:\n",
+ " disagree[k] = \"\\n\".join(\n",
+ " context_diff(observed.split(\"\\n\"), \n",
+ " trusted.split(\"\\n\")))\n",
+ " return disagree\n",
+ " \n",
+ " def _disagree_row(self, k, v):\n",
+ " link = W.Output()\n",
+ " link.layout.flex = \"1\"\n",
+ " btn = W.Button(description=\"Trust?\", button_style=\"primary\")\n",
+ " btn.layout.flex = \"0\"\n",
+ " btn.layout.min_width = \"10em\"\n",
+ " n = \"\\n\"\n",
+ " changes = W.HTML(f\"\"\"{len(v.split(n))} changes
\n",
+ " {v}