├── spec
├── text.txt
├── php.php
├── properties.properties
├── ini.ini
├── xslt.xsl
├── yaml.yml
├── xml.xml
├── python.py
├── html.html
├── sql.sql
├── json.json
├── javascript.js
├── jsx.jsx
├── markdown.md
├── haml.haml
├── ruby.rb
├── css.css
├── less.less
├── coffeescript.coffee
├── sass.scss
├── COMMIT_EDITMSG
├── groovy.groovy
└── java.java
├── .gitignore
├── gruvbox.png
├── CONTRIBUTING.md
├── CHANGELOG.md
├── styles
├── languages
│ ├── cs.less
│ ├── ini.less
│ ├── python.less
│ ├── ruby.less
│ ├── gfm.less
│ ├── css.less
│ ├── java.less
│ ├── diff.less
│ └── json.less
├── colors.less
├── editor.less
├── syntax-variables.less
└── language.less
├── index.less
├── package.json
├── README.md
└── LICENSE.md
/spec/text.txt:
--------------------------------------------------------------------------------
1 | Just some text.
2 |
3 | Nothing more.
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | npm-debug.log
3 | node_modules
4 |
--------------------------------------------------------------------------------
/gruvbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/caleb/gruvbox-syntax-atom/HEAD/gruvbox.png
--------------------------------------------------------------------------------
/spec/php.php:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Just fork and make a pull request.
2 |
3 | It would help to have a screenshot of your changes, if applicable.
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 1.0.0 - First Release
2 | * Reworked the gruvbox theme off of the one-dark-syntax theme, which is more modular
3 |
--------------------------------------------------------------------------------
/spec/properties.properties:
--------------------------------------------------------------------------------
1 | # This is a commment
2 | user=root
3 | schedule=* * 3 * * *
4 | retries=4
5 | dotted.property=true
6 |
--------------------------------------------------------------------------------
/styles/languages/cs.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--cs {
2 | .syntax--keyword.syntax--operator {
3 | color: @gruvbox-bright-red;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/styles/languages/ini.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--ini {
2 | .syntax--keyword.syntax--other.syntax--definition.syntax--ini {
3 | color: @gruvbox-bright-blue;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/spec/ini.ini:
--------------------------------------------------------------------------------
1 | ; comment
2 | [user]
3 | email=johndoe@nowhere.com
4 | name=John Doe
5 | escape='a\=b\;'
6 |
7 | [database]
8 | server=10.0.0.1
9 | port=5452
10 | database="Orders"
11 |
--------------------------------------------------------------------------------
/styles/languages/python.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--python {
2 | .syntax--keyword.syntax--operator.syntax--logical.syntax--python {
3 | color: @gruvbox-bright-red;
4 | }
5 |
6 | .syntax--variable.syntax--parameter {
7 | color: @gruvbox-bright-purple;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/spec/xslt.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/styles/languages/ruby.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--ruby {
2 | .syntax--constant.syntax--other.syntax--symbol > .syntax--punctuation {
3 | color: inherit;
4 | }
5 |
6 | .syntax--punctuation.syntax--separator.syntax--namespace {
7 | color: @gruvbox-bright-yellow;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/spec/yaml.yml:
--------------------------------------------------------------------------------
1 | root:
2 | unquoted_string: lorem ipsem
3 | quotwed_string: "lorem ipsum"
4 | integer: 123
5 | float: 3.14
6 | boolean: true
7 | null: null
8 | list:
9 | - one
10 | - two
11 | - three
12 | map_list:
13 | - one: 1
14 | - two: "two"
15 | - three: 3.0
16 |
--------------------------------------------------------------------------------
/styles/languages/gfm.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--gfm {
2 | .syntax--markup {
3 | -webkit-font-smoothing: auto;
4 | &.syntax--heading {
5 | color: @gruvbox-bright-blue;
6 | }
7 |
8 | &.syntax--link {
9 | color: @gruvbox-bright-red;
10 | }
11 | }
12 |
13 | .syntax--link .syntax--entity {
14 | color: @gruvbox-bright-green;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/spec/xml.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | King
7 |
8 | 100000
9 | R&D
10 |
11 |
12 |
--------------------------------------------------------------------------------
/styles/languages/css.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--css {
2 | // highlight properties/values if they are supported
3 | .syntax--property-name {
4 | color: @gruvbox-light2;
5 | }
6 |
7 | .syntax--property-value {
8 | color: @gruvbox-light2;
9 | &.syntax--support {
10 | color: @syntax-fg;
11 | }
12 | &.syntax--constant {
13 | color: @gruvbox-bright-blue;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/index.less:
--------------------------------------------------------------------------------
1 |
2 | // Atom Syntax Theme: Gruvbox
3 |
4 | @import (reference) "styles/syntax-variables";
5 |
6 | @import 'editor';
7 | @import 'language';
8 |
9 | @import 'languages/cs';
10 | @import 'languages/css';
11 | @import 'languages/diff';
12 | @import 'languages/gfm';
13 | @import 'languages/ini';
14 | @import 'languages/java';
15 | @import 'languages/json';
16 | @import 'languages/ruby';
17 | @import 'languages/python';
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gruvbox",
3 | "theme": "syntax",
4 | "version": "1.0.7",
5 | "description": "A Gruvbox theme for Atom that aims to be just a little groovier",
6 | "keywords": [
7 | "dark",
8 | "green",
9 | "orange",
10 | "syntax"
11 | ],
12 | "repository": "https://github.com/caleb/gruvbox-syntax-atom",
13 | "license": "MIT",
14 | "engines": {
15 | "atom": ">0.50.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/spec/python.py:
--------------------------------------------------------------------------------
1 | @requires_authorization
2 | def somefunc(param1='', param2=0):
3 | r'''A docstring'''
4 | if param1 > param2: # interesting
5 | print 'Gre\'ater'
6 | return (param2 - param1 + 1) or None
7 |
8 | class SomeClass:
9 | def cats(arg):
10 | abc = 1
11 | deg = [1, 2, '3']
12 |
13 | def another(arg):
14 | pass
15 |
16 | >>> message = '''interpreter
17 | ... prompt'''
18 |
--------------------------------------------------------------------------------
/spec/html.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Title
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
HTML sample
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Gruvbox Syntax Theme for Atom 1.0
2 |
3 | A Gruvbox theme for Atom that adheres to the vim theme. Easy on the eyes, beautiful theme.
4 |
5 | A big thanks to Isaac Hess for creating the [original Gruvbox theme for Atom](https://github.com/isaachess/gruvbox-atom) on which this is based.
6 |
7 | Based on [https://github.com/morhetz/gruvbox](https://github.com/morhetz/gruvbox).
8 |
9 | 
10 |
--------------------------------------------------------------------------------
/spec/sql.sql:
--------------------------------------------------------------------------------
1 | -- full line comment
2 | SELECT
3 | d.name AS department, e.id, full_name, max(salary),
4 | CASE WHEN e.type = 'p'
5 | THEN 'part-time'
6 | WHEN e.type = 'f'
7 | THEN 'full-time'
8 | ELSE 'special'
9 | END
10 | FROM employees AS e
11 | INNER JOIN departments AS d ON e.department = d.id
12 | GROUP BY e.department
13 | WHERE salary > (SELECT avg(salary) FROM employees)
14 | AND e.department IS NOT NULL
15 | ORDER BY d.name -- inline comment
16 |
--------------------------------------------------------------------------------
/styles/languages/java.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--java {
2 | .syntax--storage {
3 | &.syntax--modifier.syntax--import {
4 | color: @gruvbox-bright-yellow;
5 | }
6 |
7 | &.syntax--type {
8 | color: @gruvbox-bright-yellow;
9 | }
10 | }
11 | }
12 |
13 | .syntax--source.syntax--java-properties {
14 | .syntax--meta.syntax--key-pair {
15 | color: @gruvbox-bright-blue;
16 |
17 | & > .syntax--punctuation {
18 | color: @syntax-fg;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/spec/json.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "apples",
4 | "count": [12000, 20000],
5 | "description": {"text": "...", "sensitive": false}
6 | },
7 | {
8 | "title": "oranges",
9 | "count": [17500, null, "String"],
10 | "description": {"text": "She said, \"Hello\"", "sensitive": false}
11 | },
12 | {
13 | "deeply_nested": {
14 | "key": {
15 | "key": {
16 | "key": {
17 | "array": [1, "two", null],
18 | "string": "hello"
19 | }
20 | }
21 | }
22 | }
23 | }
24 | ]
25 |
--------------------------------------------------------------------------------
/spec/javascript.js:
--------------------------------------------------------------------------------
1 | function $initHighlight(block, flags) {
2 | try {
3 | if (block.className.search(/\bno\-highlight\b/) != -1)
4 | return processBlock(block.function, true, 0x0F) + ' class=""';
5 | } catch (e) {
6 | /* handle exception */
7 | var e4x =
8 | ;
10 | }
11 | for (var i = 0 / 2; i < classes.length; i++) { // "0 / 2" should not be parsed as regexp
12 | if (checkCondition(classes[i]) === undefined)
13 | return /\d+[\s/]/g;
14 | }
15 | console.log(Array.every(classes, Boolean));
16 | }
--------------------------------------------------------------------------------
/spec/jsx.jsx:
--------------------------------------------------------------------------------
1 | function $initHighlight(block, flags) {
2 | try {
3 | if (block.className.search(/\bno\-highlight\b/) != -1)
4 | return processBlock(block.function, true, 0x0F) + ' class=""';
5 | } catch (e) {
6 | /* handle exception */
7 | var e4x =
8 | ;
10 | }
11 | for (var i = 0 / 2; i < classes.length; i++) { // "0 / 2" should not be parsed as regexp
12 | if (checkCondition(classes[i]) === undefined)
13 | return /\d+[\s/]/g;
14 | }
15 | console.log(Array.every(classes, Boolean));
16 | }
17 |
--------------------------------------------------------------------------------
/spec/markdown.md:
--------------------------------------------------------------------------------
1 | # hello world
2 | ## hello world
3 | ### hello world
4 | #### hello world
5 | ##### hello world
6 | ###### hello world
7 |
8 | you can write text [with links](http://example.com) inline or [link references][1].
9 |
10 | * one _thing_ has *em* phasis
11 | * two __things__ are **bold**
12 |
13 | [1]: http://example.com
14 |
15 | ---
16 |
17 | hello world
18 | ===========
19 |
20 | ```html
21 |
22 | ```
23 |
24 | > markdown is so cool
25 |
26 | so are code segments
27 |
28 | 1. one thing (yeah!)
29 | 2. two thing `i can write code`, and `more` wipee!
30 |
--------------------------------------------------------------------------------
/spec/haml.haml:
--------------------------------------------------------------------------------
1 | !!! XML
2 | !!!
3 | %html(xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en")
4 | %head
5 | %title= article.title
6 | %body
7 | - parameter = "value"
8 | /[if IE]
9 | %a{ :href => 'http://www.mozilla.com/en-US/firefox/' }
10 | %h1 Get Firefox
11 | -# Example comment
12 | -#
13 | This is a...
14 | multi-line comment
15 |
16 | %section.container
17 | - articles.each do |article|
18 | %article
19 | %h1= "Article: #{article.title}"
20 | %a{ :href => article.url } More Info...
21 | .content
22 | = article.content
23 | #copyright
24 | %p#copyright_statement Copyright 2015
25 | :javascript
26 | $(document).ready(function() {
27 | alert("Hello!");
28 | });
29 |
--------------------------------------------------------------------------------
/spec/ruby.rb:
--------------------------------------------------------------------------------
1 | class A < B; def self.create(object = User) object end end
2 | class Zebra; def inspect; "X#{2 + self.object_id}" end end
3 |
4 | module ABC::DEF
5 | include Comparable
6 |
7 | # @param test
8 | # @return [String] nothing
9 | def foo(test)
10 | Thread.new do |blockvar|
11 | ABC::DEF.reverse(:a_symbol, :'a symbol', :<=>, 'test' + ?\012)
12 | answer = valid?4 && valid?CONST && ?A && ?A.ord
13 | end.join
14 | end
15 |
16 | def [](index) self[index] end
17 | def ==(other) other == self end
18 | end
19 |
20 | class Car < ActiveRecord::Base
21 | has_many :wheels, class_name: 'Wheel', foreign_key: 'car_id'
22 | scope :available, -> { where(available: true) }
23 | end
24 |
25 | hash = {1 => 'one', 2 => 'two'}
26 |
27 | 2.0.0p0 :001 > ['some']
28 | => ["some"]
29 |
--------------------------------------------------------------------------------
/spec/css.css:
--------------------------------------------------------------------------------
1 | @media screen and (-webkit-min-device-pixel-ratio: 0) {
2 | body:first-of-type pre::after {
3 | content: 'highlight: ' attr(class);
4 | }
5 | body {
6 | background: linear-gradient(45deg, blue, red);
7 | }
8 | }
9 |
10 | @import url('print.css');
11 | @page:right {
12 | margin: 1cm 2cm 1.3cm 4cm;
13 | }
14 |
15 | @font-face {
16 | font-family: Chunkfive; src: url('Chunkfive.otf');
17 | }
18 |
19 | div.text,
20 | #content,
21 | li[lang=ru] {
22 | font: Tahoma, Chunkfive, sans-serif;
23 | background: url('hatch.png') /* wtf? */;
24 | color: #F0F0F0 !important;
25 | width: 100%;
26 | }
27 |
28 |
29 | /* Tests */
30 |
31 | .support-test {
32 | background: blue; /* <- valid properties/values should be highlighted more */
33 | invalid-property: invalid-color; /* <- invalid should be toned down */
34 | }
35 |
--------------------------------------------------------------------------------
/styles/languages/diff.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--diff {
2 | color: @gruvbox-light4;
3 |
4 | .syntax--meta {
5 | color: @gruvbox-bright-blue;
6 |
7 | &.syntax--header.syntax--from-file { color: @gruvbox-bright-aqua; }
8 | &.syntax--header.syntax--to-file { color: @gruvbox-bright-aqua; }
9 | &.syntax--diff.syntax--range { color: @gruvbox-bright-yellow; }
10 | &.syntax--diff.syntax--line-number { color: @gruvbox-bright-yellow; opacity: 1; }
11 | }
12 |
13 | .syntax--markup {
14 | &.syntax--deleted { color: @gruvbox-bright-red; }
15 | &.syntax--inserted { color: @gruvbox-bright-green; }
16 | }
17 | .syntax--punctuation {
18 | &.syntax--deleted { color: @gruvbox-bright-red; }
19 | &.syntax--inserted { color: @gruvbox-bright-green; }
20 | &.syntax--range { color: @gruvbox-bright-yellow; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/styles/languages/json.less:
--------------------------------------------------------------------------------
1 | .syntax--source.syntax--json {
2 | .syntax--meta.syntax--structure.syntax--dictionary.syntax--json {
3 | & > .syntax--string.syntax--quoted.syntax--json {
4 | & > .syntax--punctuation.syntax--string {
5 | color: @gruvbox-bright-blue;
6 | }
7 | color: @gruvbox-bright-blue;
8 | }
9 | }
10 |
11 | .syntax--meta.syntax--structure.syntax--dictionary.syntax--json, .syntax--meta.syntax--structure.syntax--array.syntax--json {
12 | & > .syntax--value.syntax--json > .syntax--string.syntax--quoted.syntax--json,
13 | & > .syntax--value.syntax--json > .syntax--string.syntax--quoted.syntax--json > .syntax--punctuation {
14 | color: @gruvbox-bright-yellow;
15 | }
16 |
17 | & > .syntax--constant.syntax--language.syntax--json {
18 | color: @gruvbox-bright-red;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/spec/less.less:
--------------------------------------------------------------------------------
1 | /*
2 | Using the most minimal language subset to ensure we
3 | have enough relevance hints for proper Less detection
4 | */
5 |
6 | @import "fruits";
7 |
8 | @rhythm: 1.5em;
9 |
10 | @media screen and (min-resolution: 2dppx) {
11 | body {font-size: 125%}
12 | }
13 |
14 | section > .foo + #bar:hover [href*="less"] {
15 | margin: @rhythm 0 0 @rhythm;
16 | padding: calc(5% + 20px);
17 | background: #f00ba7 url(http://placehold.alpha-centauri/42.png) no-repeat;
18 | background-image: linear-gradient(-135deg, wheat, fuchsia) !important ;
19 | background-blend-mode: multiply;
20 | }
21 |
22 | @font-face {
23 | font-family: /* ? */ 'Omega';
24 | src: url('../fonts/omega-webfont.woff?v=2.0.2');
25 | }
26 |
27 | .icon-baz::before {
28 | display: inline-block;
29 | font-family: "Omega", Alpha, sans-serif;
30 | content: "\f085";
31 | color: rgba(98, 76 /* or 54 */, 231, .75);
32 | }
33 |
--------------------------------------------------------------------------------
/spec/coffeescript.coffee:
--------------------------------------------------------------------------------
1 | grade = (student, period=(if b? then 7 else 6), messages={"A": "Excellent"}) ->
2 | if student.excellentWork
3 | "A+"
4 | else if student.okayStuff
5 | if student.triedHard then "B" else "B-"
6 | else
7 | "C"
8 |
9 | square = (x) -> x * x
10 |
11 | two = -> 2
12 |
13 | math =
14 | root: Math.sqrt
15 | square: square
16 | cube: (x) -> x * square x
17 |
18 | race = (winner, runners...) ->
19 | print winner, runners
20 |
21 | class Animal extends Being
22 | constructor: (@name) ->
23 |
24 | move: (meters) ->
25 | alert @name + " moved #{meters}m."
26 |
27 | hi = `function() {
28 | return [document.title, "Hello JavaScript"].join(": ");
29 | }`
30 |
31 | heredoc = """
32 | CoffeeScript subst test #{ 0o010 + 0xf / 0b10 + "nested string #{ /\n/ }"}
33 | """
34 |
35 | ###
36 | CoffeeScript Compiler v1.2.0
37 | Released under the MIT License
38 | ###
39 |
40 | OPERATOR = /// ^ (
41 | ?: [-=]> # function
42 | ) ///
43 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015 Caleb Land.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/spec/sass.scss:
--------------------------------------------------------------------------------
1 | @import "compass/reset";
2 |
3 | // variables
4 | $colorGreen: #008000;
5 | $colorGreenDark: darken($colorGreen, 10);
6 |
7 | @mixin container {
8 | max-width: 980px;
9 | }
10 |
11 | // mixins with parameters
12 | @mixin button($color:green) {
13 | @if ($color == green) {
14 | background-color: #008000;
15 | }
16 | @else if ($color == red) {
17 | background-color: #B22222;
18 | }
19 | }
20 |
21 | button {
22 | @include button(red);
23 | }
24 |
25 | div,
26 | .navbar,
27 | #header,
28 | input[type="input"] {
29 | font-family: "Helvetica Neue", Arial, sans-serif;
30 | width: auto;
31 | margin: 0 auto;
32 | display: block;
33 | }
34 |
35 | .row-12 > [class*="spans"] {
36 | border-left: 1px solid #B5C583;
37 | }
38 |
39 | // nested definitions
40 | ul {
41 | width: 100%;
42 | padding: {
43 | left: 5px; right: 5px;
44 | }
45 | li {
46 | float: left; margin-right: 10px;
47 | .home {
48 | background: url('http://placehold.it/20') scroll no-repeat 0 0;
49 | }
50 | }
51 | }
52 |
53 | .banner {
54 | @extend .container;
55 | }
56 |
57 | a {
58 | color: $colorGreen;
59 | &:hover { color: $colorGreenDark; }
60 | &:visited { color: #c458cb; }
61 | }
62 |
63 | @for $i from 1 through 5 {
64 | .span#{$i} {
65 | width: 20px*$i;
66 | }
67 | }
68 |
69 | @mixin mobile {
70 | @media screen and (max-width : 600px) {
71 | @content;
72 | }
73 | }
--------------------------------------------------------------------------------
/styles/colors.less:
--------------------------------------------------------------------------------
1 | // Gruvbox colors
2 | @gruvbox-dark0-hard: #1d2021;
3 | @gruvbox-dark0: #282828;
4 | @gruvbox-dark0-soft: #32302f;
5 | @gruvbox-dark1: #3c3836;
6 | @gruvbox-dark2: #504945;
7 | @gruvbox-dark3: #665c54;
8 | @gruvbox-dark4: #7c6f64;
9 |
10 | @gruvbox-medium: #928374;
11 |
12 | @gruvbox-light0-hard: #f9f5d7;
13 | @gruvbox-light0: #fbf1c7;
14 | @gruvbox-light0-soft: #f2e5bc;
15 | @gruvbox-light1: #ebdbb2;
16 | @gruvbox-light2: #d5c4a1;
17 | @gruvbox-light3: #bdae93;
18 | @gruvbox-light4: #a89984;
19 |
20 | @gruvbox-bright-red: #fb4934;
21 | @gruvbox-bright-green: #b8bb26;
22 | @gruvbox-bright-yellow: #fabd2f;
23 | @gruvbox-bright-blue: #83a598;
24 | @gruvbox-bright-purple: #d3869b;
25 | @gruvbox-bright-aqua: #8ec07c;
26 | @gruvbox-bright-orange: #fe8019;
27 |
28 | @gruvbox-neutral-red: #cc241d;
29 | @gruvbox-neutral-green: #98971a;
30 | @gruvbox-neutral-yellow: #d79921;
31 | @gruvbox-neutral-blue: #458588;
32 | @gruvbox-neutral-purple: #b16286;
33 | @gruvbox-neutral-aqua: #689d6a;
34 | @gruvbox-neutral-orange: #d65d0e;
35 |
36 | @gruvbox-faded-red: #9d0006;
37 | @gruvbox-faded-green: #79740e;
38 | @gruvbox-faded-yellow: #b57614;
39 | @gruvbox-faded-blue: #076678;
40 | @gruvbox-faded-purple: #8f3f71;
41 | @gruvbox-faded-aqua: #427b58;
42 | @gruvbox-faded-orange: #af3a03;
43 |
44 | // Base colors -----------------------------------
45 | @syntax-accent: @gruvbox-bright-red;
46 | @syntax-guide: fade(@syntax-fg, 15%);
47 | @syntax-guide-alt: fade(@syntax-fg, 25%);
48 | @syntax-fg: @gruvbox-light1;
49 | @syntax-bg: @gruvbox-dark0;
50 |
--------------------------------------------------------------------------------
/spec/COMMIT_EDITMSG:
--------------------------------------------------------------------------------
1 | This is the summary line. It can't be too long.
2 | After I can write a much more detailed description without quite the same restrictions on length.
3 | # Please enter the commit message for your changes. Lines starting
4 | # with '#' will be ignored, and an empty message aborts the commit.
5 | # On branch master
6 | # Your branch is up-to-date with 'origin/master'.
7 | #
8 | # Changes to be committed:
9 | # deleted: README.md
10 | # modified: index.less
11 | # new file: spec/COMMIT_EDITMSG
12 | #
13 | # ------------------------ >8 ------------------------
14 | # Do not touch the line above.
15 | # Everything below will be removed.
16 | diff --git c/README.md i/README.md
17 | deleted file mode 100644
18 | index 039c78e..0000000
19 | --- c/README.md
20 | +++ /dev/null
21 | @@ -1,11 +0,0 @@
22 | -## One Dark Syntax theme
23 | -
24 | -
25 | -
26 | -> The font used in the screenshot is [Fira Mono](https://github.com/mozilla/Fira).
27 | -
28 | -There is also a matching [UI theme](https://atom.io/themes/one-dark-ui).
29 | -
30 | -### Install
31 | -
32 | -This theme is installed by default with Atom and can be activated by going to the __Settings > Themes__ section and selecting it from the __Syntax Themes__ drop-down menu.
33 | diff --git c/index.less i/index.less
34 | index 64f6ac9..29dc35d 100644
35 | --- c/index.less
36 | +++ i/index.less
37 | @@ -1,4 +1,4 @@
38 | -
39 | +// hello
40 | // Atom Syntax Theme: One
41 |
42 | @import (reference) "styles/syntax-variables";
43 | diff --git c/spec/COMMIT_EDITMSG i/spec/COMMIT_EDITMSG
44 | new file mode 100644
45 | index 0000000..e69de29
46 |
--------------------------------------------------------------------------------
/spec/groovy.groovy:
--------------------------------------------------------------------------------
1 | package com.somedomain.here
2 |
3 | import java.io.File
4 | import java.util.List
5 |
6 | import static java.io.File.*
7 |
8 | /**
9 | * Class JAVA Doc
10 | *
11 | * @author Some Important Person
12 | */
13 | @Awesome("yeah baby!")
14 | public class Foo extends Bar implements SomeInterface {
15 |
16 | private static final int COUNT = 0x243
17 | private def myCount = 0
18 |
19 | public String myProperty = "value"
20 |
21 | @Cool(reason="because")
22 | public static staticMethod(String[] values, int n) {
23 | try {
24 | System.out.print(values[0])
25 | } catch (Exception e) {
26 | e.printStackTrace()
27 | }
28 |
29 | if (n > 0) {
30 | return COUNT // single line comment
31 | } else {
32 | return -COUNT
33 | }
34 | }
35 |
36 | public Foo(int count) {
37 | myCount = count
38 | }
39 |
40 | /* This is a multiple...
41 | ...line comment. */
42 |
43 | public int getMyCount() throws MyFavoriteException {
44 | return myCount
45 | }
46 |
47 | /**
48 | * Increment the count
49 | * @param by the amount to increment by
50 | */
51 | public void increment(int by) {
52 | myCount += by
53 | }
54 |
55 | public String describe() {
56 | switch (myCount) {
57 | case 0: return "0"
58 | case 1: return "1"
59 | default: return "other"
60 | }
61 | }
62 |
63 | public MyFooInterface createFooBar() {
64 | final String test = null
65 |
66 | return new MyFooInterface() {
67 | public boolean isValid() {
68 | return false
69 | }
70 | }
71 | }
72 |
73 | public static interface MyFooInterface {
74 | public boolean isValid()
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/spec/java.java:
--------------------------------------------------------------------------------
1 | package com.somedomain.here;
2 |
3 | import java.io.File;
4 | import java.util.List;
5 |
6 | import static java.io.File.*;
7 |
8 | /**
9 | * Class JAVA Doc
10 | *
11 | * @author Some Important Person
12 | */
13 | @Awesome("yeah baby!")
14 | public class Foo extends Bar implements SomeInterface {
15 |
16 | private static final int COUNT = 0x243;
17 | private int myCount = 0;
18 |
19 | @Cool(reason="because")
20 | public static int staticMethod(String[] values, int n) {
21 | try {
22 | System.out.print("This is the value:\n" + values[0]);
23 | } catch (Exception e) {
24 | e.printStackTrace();
25 | }
26 |
27 | if (n > 0) {
28 | return COUNT; // single line comment
29 | } else {
30 | return -COUNT;
31 | }
32 | }
33 |
34 | public Foo(int count) {
35 | myCount = count;
36 | }
37 |
38 | /* This is a multiple...
39 | ...line comment. */
40 |
41 | public int getMyCount() throws MyFavoriteException {
42 | return myCount;
43 | }
44 |
45 | /**
46 | * Increment the count
47 | * @param by the amount to increment by
48 | */
49 | public void increment(int by) {
50 | myCount += by;
51 | }
52 |
53 | public String describe() {
54 | switch (myCount) {
55 | case 0: return "0";
56 | case 1: return "1";
57 | default: return "other";
58 | }
59 | }
60 |
61 | public MyFooInterface createFooBar() {
62 | final String test = null;
63 |
64 | return new MyFooInterface() {
65 | public boolean isValid() {
66 | return false;
67 | }
68 | };
69 | }
70 |
71 | public static interface MyFooInterface {
72 | public boolean isValid();
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/styles/editor.less:
--------------------------------------------------------------------------------
1 | // Editor styles (background, gutter, guides)
2 |
3 | atom-text-editor {
4 | background-color: @syntax-background-color;
5 | color: @syntax-text-color;
6 |
7 | .line.cursor-line {
8 | background-color: @syntax-cursor-line;
9 | }
10 |
11 | .invisible {
12 | color: @syntax-text-color;
13 | }
14 |
15 | .cursor {
16 | border-left: 2px solid @syntax-cursor-color;
17 | }
18 |
19 | .selection .region {
20 | background-color: @syntax-selection-color;
21 | }
22 |
23 | .bracket-matcher .region {
24 | border-bottom: 2px solid @syntax-cursor-color;
25 | box-sizing: border-box;
26 | background-color: @syntax-bracket-matcher-background-color;
27 | }
28 |
29 | .invisible-character {
30 | color: @syntax-invisible-character-color;
31 | }
32 |
33 | .indent-guide {
34 | color: @syntax-indent-guide-color;
35 | }
36 | .indent-guide:nth-child(2n) {
37 | box-shadow: inset 1px 0 @syntax-guide-alt;
38 | }
39 |
40 | .wrap-guide {
41 | background-color: @syntax-wrap-guide-color;
42 | }
43 |
44 | .gutter {
45 | .line-number {
46 | color: @syntax-gutter-text-color;
47 | -webkit-font-smoothing: antialiased;
48 |
49 | &.git-line-removed:before {
50 | bottom: -3px;
51 | }
52 | &.git-line-removed:after {
53 | content: "";
54 | position: absolute;
55 | left: 0px;
56 | bottom: 0px;
57 | width: 25px;
58 | border-bottom: 1px dotted fade(@syntax-color-removed, 50%);
59 | pointer-events: none;
60 | }
61 |
62 | &.cursor-line {
63 | color: @syntax-gutter-text-color-selected;
64 | background-color: @syntax-gutter-background-color-selected;
65 | }
66 |
67 | &.cursor-line-no-selection {
68 | background-color: @syntax-gutter-background-color-selected;
69 | }
70 |
71 | .icon-right {
72 | color: @syntax-text-color;
73 | }
74 |
75 | .icon-right {
76 | color: @syntax-text-color;
77 | }
78 | }
79 | }
80 |
81 | .gutter .line-number.folded,
82 | .gutter .line-number:after,
83 | .fold-marker:after {
84 | color: @syntax-gutter-text-color-selected;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/styles/syntax-variables.less:
--------------------------------------------------------------------------------
1 | @import "colors";
2 |
3 | // Custom Syntax Variables -----------------------------------
4 |
5 | @syntax-cursor-line: fade(@gruvbox-light0-hard, 4%); // needs to be semi-transparent to show serach results
6 | @syntax-bracket-matcher-background-color: lighten(@syntax-background-color, 6%);
7 |
8 |
9 | // Official Syntax Variables -----------------------------------
10 |
11 | // General colors
12 | @syntax-text-color: @syntax-fg;
13 | @syntax-cursor-color: @gruvbox-light4;
14 | @syntax-selection-color: lighten(@syntax-background-color, 10%);
15 | @syntax-selection-flash-color: @syntax-accent;
16 | @syntax-background-color: @syntax-bg;
17 |
18 | // Guide colors
19 | @syntax-wrap-guide-color: @syntax-guide;
20 | @syntax-indent-guide-color: @syntax-guide;
21 | @syntax-invisible-character-color: @syntax-guide;
22 |
23 | // For find and replace markers
24 | @syntax-result-marker-color: @syntax-fg;
25 | @syntax-result-marker-color-selected: @syntax-accent;
26 |
27 | // Gutter colors
28 | @syntax-gutter-text-color: @gruvbox-medium;
29 | @syntax-gutter-text-color-selected: @gruvbox-light0-hard;
30 | @syntax-gutter-background-color: @syntax-bg; // unused
31 | @syntax-gutter-background-color-selected: @syntax-cursor-line;
32 |
33 | // Git colors - For git diff info. i.e. in the gutter
34 | @syntax-color-renamed: @gruvbox-bright-blue;
35 | @syntax-color-added: @gruvbox-bright-green;
36 | @syntax-color-modified: @gruvbox-bright-orange;
37 | @syntax-color-removed: @gruvbox-bright-red;
38 |
39 | // For language entity colors
40 | @syntax-color-variable: @gruvbox-bright-blue;
41 | @syntax-color-constant: @gruvbox-bright-purple;
42 | @syntax-color-property: @syntax-fg;
43 | @syntax-color-value: @syntax-fg;
44 | @syntax-color-function: @gruvbox-bright-green;
45 | @syntax-color-method: @gruvbox-bright-green;
46 | @syntax-color-class: @gruvbox-bright-yellow;
47 | @syntax-color-keyword: @gruvbox-bright-red;
48 | @syntax-color-tag: @gruvbox-bright-blue;
49 | @syntax-color-attribute: @gruvbox-bright-purple;
50 | @syntax-color-import: @gruvbox-bright-red;
51 | @syntax-color-snippet: @gruvbox-bright-yellow;
52 |
--------------------------------------------------------------------------------
/styles/language.less:
--------------------------------------------------------------------------------
1 | // Language syntax highlighting
2 |
3 | .syntax--comment {
4 | color: @gruvbox-medium;
5 | font-style: italic;
6 |
7 | /* Keywords inside comments (e.syntax--g. yard, javadoc, etc) should be more subdued
8 | than other keywords */
9 | .syntax--keyword, .syntax--keyword.syntax--punctuation { color: @gruvbox-light2; }
10 | .syntax--punctuation { color: @gruvbox-light3; }
11 | .syntax--string, .syntax--type, .syntax--parameter { color: @gruvbox-light3; }
12 | }
13 |
14 | .syntax--entity {
15 | &.syntax--name.syntax--type {
16 | color: @gruvbox-bright-yellow;
17 | }
18 |
19 | &.syntax--other.syntax--inherited-class {
20 | color: @gruvbox-bright-yellow;
21 | }
22 | }
23 |
24 | .syntax--keyword {
25 | color: @gruvbox-bright-red;
26 |
27 | &.syntax--control {
28 | color: @gruvbox-bright-red;
29 | }
30 |
31 | &.syntax--operator {
32 | color: @syntax-fg;
33 | }
34 |
35 | &.syntax--other.syntax--special-method {
36 | color: @gruvbox-bright-orange;
37 | }
38 |
39 | &.syntax--other.syntax--unit {
40 | color: @gruvbox-bright-purple;
41 | }
42 | }
43 |
44 | .syntax--storage {
45 | color: @gruvbox-bright-red;
46 |
47 | &.syntax--type {
48 | &.syntax--annotation,
49 | &.syntax--primitive {
50 | color: @gruvbox-bright-red;
51 | }
52 | }
53 |
54 | &.syntax--modifier {
55 | &.syntax--package,
56 | &.syntax--import {
57 | color: @syntax-fg;
58 | }
59 | }
60 | }
61 |
62 | .syntax--constant {
63 | color: @gruvbox-bright-purple;
64 |
65 | &.syntax--variable {
66 | color: @gruvbox-bright-purple;
67 | }
68 |
69 | &.syntax--character.syntax--escape {
70 | color: @gruvbox-bright-red;
71 | }
72 |
73 | &.syntax--numeric {
74 | color: @gruvbox-bright-purple;
75 | }
76 |
77 | &.syntax--other.syntax--color {
78 | color: @gruvbox-bright-red;
79 | }
80 |
81 | &.syntax--other.syntax--symbol {
82 | color: @gruvbox-bright-purple;
83 | }
84 | }
85 |
86 | .syntax--variable {
87 | color: @gruvbox-bright-blue;
88 |
89 | &.syntax--interpolation {
90 | color: @gruvbox-neutral-blue;
91 | }
92 |
93 | &.syntax--parameter {
94 | color: @syntax-fg;
95 | }
96 | }
97 |
98 | .syntax--invalid.syntax--illegal {
99 | background-color: @gruvbox-bright-blue;
100 | color: @syntax-background-color;
101 | }
102 |
103 | .syntax--string {
104 | color: @gruvbox-bright-green;
105 |
106 | &.syntax--regexp {
107 | color: @gruvbox-bright-red;
108 |
109 | .syntax--source.syntax--ruby.syntax--embedded {
110 | color: @gruvbox-bright-yellow;
111 | }
112 | }
113 |
114 | &.syntax--other.syntax--link {
115 | color: @gruvbox-bright-blue;
116 | }
117 | }
118 |
119 | .syntax--punctuation {
120 | &.syntax--definition {
121 | &.syntax--comment {
122 | color: @gruvbox-medium;
123 | }
124 |
125 | &.syntax--tag { color: @gruvbox-bright-blue; }
126 |
127 | &.syntax--method-parameters,
128 | &.syntax--function-parameters,
129 | &.syntax--parameters,
130 | &.syntax--separator,
131 | &.syntax--seperator,
132 | &.syntax--array {
133 | color: @syntax-fg;
134 | }
135 |
136 | &.syntax--heading,
137 | &.syntax--identity {
138 | color: @gruvbox-bright-green;
139 | }
140 |
141 | &.syntax--bold {
142 | color: @gruvbox-bright-yellow;
143 | font-weight: bold;
144 | }
145 |
146 | &.syntax--italic {
147 | color: @gruvbox-bright-red;
148 | font-style: italic;
149 | }
150 | }
151 |
152 | &.syntax--section {
153 | &.syntax--embedded {
154 | color: @gruvbox-bright-blue;
155 | }
156 |
157 | &.syntax--method,
158 | &.syntax--class,
159 | &.syntax--inner-class {
160 | color: @syntax-fg;
161 | }
162 | }
163 | }
164 |
165 | .syntax--support {
166 | &.syntax--type {
167 | color: @gruvbox-bright-orange;
168 | }
169 |
170 | &.syntax--class {
171 | color: @gruvbox-bright-yellow;
172 | }
173 |
174 | &.syntax--function {
175 | color: @gruvbox-bright-orange;
176 |
177 | &.syntax--any-method {
178 | color: @gruvbox-bright-green;
179 | }
180 | }
181 | }
182 |
183 | .syntax--entity {
184 | &.syntax--name.syntax--function {
185 | color: @gruvbox-bright-green;
186 | }
187 |
188 | &.syntax--name.syntax--class,
189 | &.syntax--name.syntax--type.syntax--class {
190 | color: @gruvbox-bright-yellow;
191 | .syntax--punctuation.syntax--separator {
192 | color: @syntax-fg;
193 | }
194 | }
195 |
196 | &.syntax--name.syntax--section {
197 | color: @gruvbox-bright-green;
198 | }
199 |
200 | &.syntax--name.syntax--tag {
201 | color: @gruvbox-bright-blue;
202 | }
203 |
204 | &.syntax--other.syntax--attribute-name {
205 | color: @gruvbox-bright-purple;
206 |
207 | &.syntax--id {
208 | color: @gruvbox-bright-green;
209 | }
210 | }
211 | }
212 |
213 | .syntax--meta {
214 | &.syntax--class {
215 | color: @gruvbox-bright-yellow;
216 |
217 | &.syntax--body {
218 | color: @syntax-fg;
219 | }
220 | }
221 |
222 | &.syntax--method-call,
223 | &.syntax--method {
224 | color: @syntax-fg;
225 | }
226 |
227 | &.syntax--definition {
228 | &.syntax--variable {
229 | color: @gruvbox-bright-blue;
230 | }
231 | }
232 |
233 | &.syntax--link {
234 | color: @gruvbox-bright-purple;
235 | }
236 |
237 | &.syntax--require {
238 | color: @gruvbox-bright-green;
239 | }
240 |
241 | &.syntax--selector {
242 | color: @gruvbox-bright-red;
243 | }
244 |
245 | &.syntax--separator {
246 | background-color: #373b41;
247 | color: @syntax-fg;
248 | }
249 |
250 | &.syntax--tag {
251 | color: @syntax-fg;
252 | }
253 | }
254 |
255 | .syntax--none {
256 | color: @syntax-fg;
257 | }
258 |
259 | // Languages -------------------------------------------------
260 |
261 | .syntax--markup {
262 | &.syntax--bold {
263 | color: @gruvbox-bright-purple;
264 | font-weight: bold;
265 | }
266 |
267 | &.syntax--changed {
268 | color: @gruvbox-bright-red;
269 | }
270 |
271 | &.syntax--deleted {
272 | color: @gruvbox-bright-blue;
273 | }
274 |
275 | &.syntax--italic {
276 | color: @gruvbox-bright-red;
277 | font-style: italic;
278 | }
279 |
280 | &.syntax--heading .syntax--punctuation.syntax--definition.syntax--heading {
281 | color: @gruvbox-bright-green;
282 | }
283 |
284 | &.syntax--inserted {
285 | color: @gruvbox-bright-yellow;
286 | }
287 |
288 | &.syntax--list {
289 | color: @gruvbox-bright-blue;
290 | }
291 |
292 | &.syntax--quote {
293 | color: @gruvbox-bright-purple;
294 | }
295 |
296 | &.syntax--raw.syntax--inline {
297 | color: @gruvbox-bright-yellow;
298 | }
299 | }
300 |
--------------------------------------------------------------------------------