|
2 | 2 |
|
3 | 3 | - Cyan (green-blue, `#00ffff`) is commonly mixed into colours that would otherwise be shades of black, grey or white. |
4 | 4 | - **Reason:** On low-power screens, particularly laptop screens, purely grey shades look distractingly dull, and through testing, only reducing the red channel makes them look more natural. |
5 | | -- Orange is used as the primary accent colour, due it being the creator (Jack5)'s favourite colour. |
| 5 | +- Orange is used as the primary accent colour, due it being the creator (Jack Stringer)'s favourite colour. |
6 | 6 | - The chosen base shade, `#ff4200`, was voted on by his YouTube fans as being the most appealing orange. |
7 | 7 | - Alternate versions of this theme that use different accent colours may be created in the future, provided those colours are similarly voted on. |
8 | 8 | - This theme must be useable by those with protanopia colour-blindness. |
|
13 | 13 |
|
14 | 14 | - **Functions are blue.** |
15 | 15 | - Functions represent blocks of code, executed to increase the stability or scope of a program. Blue is a colour associated with cleanliness and stability, which functions should strive for. |
16 | | - - In Markdown, [links]() are treated the same. |
| 16 | + - *Exception:* In Markdown, [links](#) are treated the same, except for URL components, which are given the accent-defined link colour. |
17 | 17 | - **Variables are yellow.** |
18 | | - - Variables represent pieces of data that come together to form a picture of some aspect of a program. Yellow is a colour associated with creativity, but also danger, which is true for any use of variables. |
| 18 | + - Variables represent pieces of data that come together to form a picture of some aspect of a program. Yellow is a colour associated with creativity, but also danger (a trait inherited from orange), which is true for any use of variables. |
19 | 19 | - In Markdown, `single-line code blocks` are treated the same, as they are most commonly referring to a variable name and must be differentiated from normal text. |
20 | | - - For variables that are uppercase constants, their hue is shifted towards green, the colour of numbers. |
| 20 | + - *Exception:* For variables that are constants, their hue is shifted towards green, the colour of constant values. |
21 | 21 | - **Strings are white.** |
22 | | - - Strings represent text that is either displayed to the user or used in processing. In dark mode, this theme uses shades of white for text, as do documents and terminals, so strings should be white too. |
| 22 | + - Strings represent text that is either displayed to the user or used in processing. In dark mode, themes uses shades of white for text, as do documents and terminals, so strings should remain close to white for consistency. |
| 23 | + - *Exceptions:* |
| 24 | + - Escape characters are given the constant value colour to distinguish them from normal string characters. |
| 25 | + - In regular expressions, positional markers (e.g. `^` and `$`) are also given the constant value colour, as they are theoretically escape characters that represent empty strings. |
| 26 | + - In regular expressions, modifiers (e.g. `+`, `?` and `/g`) are given the control flow colour, as they are reserved characters that modify the behaviour of the regular expression. |
23 | 27 | - **Numbers and constant values are green.** |
24 | 28 | - Numbers and constant values represent data that quantifies aspects of a program. Green is associated with wealth and growth, which is often true for number usage, constants and iteratives respectively. |
25 | | - - In Markdown, *italics* are treated the same, due to the creator (Jack5) using it to emphasise approximate names and entities, and the variable colour being in use by single-line code blocks. |
| 29 | + - In Markdown, *italics* are treated the same, due to the creator (Jack Stringer) using it to emphasise approximate names and entities, and due to the variable colour already being used by single-line code blocks. |
26 | 30 | - **Classes are red.** |
27 | 31 | - Classes represent groups of functions and variables that form a rigid structure, inherited in many places throughout a program. Red is a colour associated with strength and anger, representing the power of classes and the maintenance pains caused by inheritance. |
28 | | - - In Markdown, **bold text** is treated the same, due to the creator (Jack5) using it to emphasise proven-true names and entities. |
| 32 | + - The red is not too dark, in order to differentiate itself from error red. |
| 33 | + - In Markdown, **bold text** is treated the same, due to the creator (Jack Stringer) using it to emphasise proven-true names and entities. |
29 | 34 | - **Keywords and control flow are pink.** |
30 | 35 | - Keywords and control flow direct the execution of a program. They lie somewhere between functions (blue) and classes (red), being rigidly-defined functions themselves. |
31 | | - - In Markdown, **Headings** are treated the same. |
| 36 | + - In Markdown, # Headings are treated the same. |
| 37 | + - *Exception:* Function parentheses are directly tied to their associated functions. In languages that support these being targeted with separate tokens, they are given the function colour, otherwise they use the control flow colour. |
32 | 38 | - **Types are orange.** |
33 | 39 | - Types objectify variables, rigidly defining their scope and usage. They lie somewhere between variables (yellow) and classes (red), being rigidly-defined variables themselves. |
34 | | -- **Imports are cyan.** |
35 | | - - Imports represent external code that is being brought into a program. Imports are essentially functionality (blue) and constants (yellow) being brought in from other sources, cyan being the logical mix of the two. |
36 | | - - *(This isn't possible in Python due to the Python extension's style of defining tokens. This may be implemented in other languages in the future.)* |
| 40 | + - The orange is not too saturated, in order to differentiate itself from warning orange. |
| 41 | + |
| 42 | +## Discarded |
| 43 | + |
| 44 | +- Imports represent external code that is being brought into a program. They essentially comprise functionality (blue) and constants (yellow) being brought in from other sources, cyan being the logical mix of the two. This isn't possible to implement due to many languages not having tokens for imports, so the variable colour is used instead. |
37 | 45 |
|
38 | 46 | # Text Style Philosophy |
39 | 47 |
|
| 48 | +If a language does not provide the tokens needed to make the below distinctions, normal text is used instead. |
| 49 | + |
40 | 50 | - **Definitions are bold.** |
41 | 51 | - Function and class definitions are important bodies of work in a program, so their names should be bold only in said definitions. |
42 | 52 | - In Markdown, **level 1 headings** are treated the same. |
43 | 53 | - **Single-line comments are italic.** |
44 | | - - Single-line comments are used to briefly explain the purpose of a line of code. As they are tangential thoughts of the developer, they should be italicised. The exception to this is multi-line comments, which are often detailed and need to be read carefully. |
| 54 | + - Single-line comments are used to briefly explain the purpose of a line of code. As they are tangential thoughts of the developer, they should be italicised. |
| 55 | + - *Exception:* Multi-line comments are often detailed and need to be read carefully, so they should use normal text. |
0 commit comments