Compare commits

...

2059 Commits

Author SHA1 Message Date
Arfon Smith
7174130e46 Bumping to v4.8.4 (#2973) 2016-04-29 14:26:54 -06:00
Arfon Smith
59f64c47b1 grammar update 2016-04-29 13:14:40 -06:00
Stephen Whipple
f3655e8a1e Add .app.src as Erlang extension. (#2964)
* Add .app.src as Erlang extension.

* Add .app.src sample.
2016-04-29 12:45:43 -06:00
Paul Chaignon
f97d796f90 Add new step required when adding a grammar (#2966)
Grammar licenses are now cached locally
Therefore, it is required to update the local cache when adding a new grammar
2016-04-29 12:43:55 -06:00
Peter Jas
d342aa4841 Classify builds, pkgproj, resx and sfproj as XML (#2954)
* Classify builds, pkgproj, resx and sfproj as XML

* Disambiguate .builds for XML and Text
2016-04-27 11:11:07 -06:00
Paul Chaignon
5c655e3b20 Grammar for AutoIt from Sublime Text package (#2961) 2016-04-27 11:09:36 -06:00
Paul Chaignon
9a0ac4a477 Makefile.frag as a Makefile filename (#2969) 2016-04-26 08:39:53 -06:00
Brandon Keepers
8ea9632ccf Merge pull request #2955 from github/verify-licenses
Verify licenses on CI
2016-04-16 10:46:23 -04:00
Brandon Keepers
03ef4f30e8 Remove licenses from removed grammars 2016-04-16 10:35:57 -04:00
Brandon Keepers
12228fb525 Proper exit status for script/licensed 2016-04-16 10:25:34 -04:00
Brandon Keepers
92897046ed Remove licenses from Rubygems licenses
We are still solidifying patterns around how licenses should be managed, but given the Gemfile.lock file is ignored, I don't think it makes sense for linguist to track licenses for Ruby dependencies. A consumer of this gem could end up with a different version of a dependency that has a different license.

In general, I think libraries should only track licenses for code that they vendor. Since linguist vendors the grammars, it makes sense for it to track the licenses for them.
2016-04-16 10:21:50 -04:00
Brandon Keepers
91aa843a4e Verify licenses with travis 2016-04-16 10:12:45 -04:00
Kepler Sticka-Jones
c3145d3c08 Add Forge Mod Loader Mod Info file as JSON (#2941)
* Add Forge Mod Loader Mod Info file as JSON

* Add Forge Mod Loader Mod Info File

* Rename samples/JSON/mcmod.info to samples/JSON/filenames/mcmod.info
2016-04-15 11:16:50 -07:00
Michael Zhou
1ad2123896 Add gradlew and a few other filenames to Shell (#2910) 2016-04-15 11:14:57 -07:00
Bruce
9b9a256c60 Added GLSL extensions .vsh & .fsh (#2951) 2016-04-15 08:06:11 -07:00
Arfon Smith
0f3644d23a Bumping Linguist to v4.8.3 (#2950) 2016-04-14 19:55:23 -07:00
Arfon Smith
04d3023f76 Grammar update 2016-04-14 18:51:15 -07:00
Arfon Smith
5c7aa5406a Adding license text for graphql 2016-04-13 21:08:47 -07:00
Garen Torikian
bce676e902 Add support for GraphQL (#2947)
* Add GraphQL to languages.yml

* Add graphql submodule

* Add graphql to grammars.yml

* Add GraphQL samples

* Updating licensed information
2016-04-13 21:03:02 -07:00
Arfon Smith
7c9fd59a99 Updating licensed information for APL 2016-04-13 20:59:36 -07:00
John Gardner
b89d1a2e77 Add "mkfile" as a recognised Makefile name (#2938)
* Add ".mkfile" as a recognised Makefile extension

* Add a test-fixture for the "mkfile" extension

* Replace mkfile fixture with rewritten source
2016-04-08 20:51:41 -06:00
John Gardner
f8c5015b20 Switch grammar used for APL highlighting (#2937)
* Swap language repository used for APL highlighting

* Remove previous repository from submodule list
2016-04-08 14:15:21 -06:00
Arfon Smith
f28cdc8a15 Merge pull request #2936 from github/idris
Idris
2016-04-03 07:55:26 -06:00
Arfon Smith
0e147f1f66 Merge branch 'master' into idris 2016-04-03 07:51:05 -06:00
Arfon Smith
a91705724d Adding atomic dreams license 2016-04-03 07:48:59 -06:00
PJB3005
5e3e8133fb Adds proper grammar for the DM language. 2016-04-03 07:46:21 -06:00
Arfon Smith
5a3758f1c7 Linguist license docs bump 2016-04-03 07:41:24 -06:00
Arfon Smith
57237106f3 Adding back Idris grammar 2016-04-03 07:41:10 -06:00
John Gardner
99ad2368b0 Add ISC to license whitelist
Add ISC to license whitelist
2016-03-31 09:19:30 -07:00
Arfon Smith
21d7f99a4e Cut release v4.8.2
* Updating grammars
* Bumping to v4.8.2
2016-03-29 17:02:30 -06:00
John Gardner
24b368a30c Add ".es" to recognised ECMAScript extensions
* Add ".es" to recognised JavaScript extensions
* Add heuristic to differentiate Erlang from ECMAScript
* Add test-case for .es heuristic
2016-03-29 13:36:13 -06:00
Arfon Smith
7c8bc8561d Merge pull request #2921 from Alhadis/protocol-fix
Fix protocol of Nix submodule's URL
2016-03-29 07:58:38 -06:00
Alhadis
ce37cd665d Fix protocol of Nix submodule's URL
This stops tests failing when running "bundle exec rake test".
2016-03-30 00:24:50 +11:00
Arfon Smith
bd0f4f6f78 Merge pull request #2914 from github/adding-back-nix
Adding back nix grammar
2016-03-27 20:35:30 -06:00
Arfon Smith
4867db8831 Adding back nix grammar 2016-03-27 20:31:02 -06:00
Arfon Smith
e6ab516fb7 Merge pull request #2911 from github/cut-release-v4.8.1
Cut release v4.8.1
2016-03-25 11:56:13 -06:00
Arfon Smith
7501b82df1 Updating licenses 2016-03-25 11:21:36 -06:00
Arfon Smith
aa6b881971 Bumping to v4.8.1 2016-03-25 11:20:24 -06:00
Arfon Smith
3928734d0f Updating grammars 2016-03-25 11:19:00 -06:00
James Ko
c7868a95bc Merge pull request #2902 from jamesqo/patch-2
Add App.config + NuGet.config to the XML file list
2016-03-23 20:11:36 -06:00
Kepler Sticka-Jones
2012647f78 Merge pull request #2907 from keplersj/clang-format
Add .clang-format as a YAML file
2016-03-23 20:09:34 -06:00
Arfon Smith
84471a5463 Merge pull request #2908 from github/grace
Adding grace grammar back in.
2016-03-23 15:00:46 -06:00
James Ko
57a3c14f2b Merge pull request #2906 from jamesqo/patch-3
Add .vssettings to the list of XML files
2016-03-22 11:57:48 -06:00
Arfon Smith
d9914307eb Merge pull request #2905 from github/ats
Adding ATS grammar
2016-03-21 13:13:52 -06:00
Arfon Smith
71cdf46197 Merge pull request #2903 from github/nesC
Adding nest grammar back
2016-03-21 09:25:02 -06:00
James Ko
8a27884c70 Merge pull request #2899 from jamesqo/patch-1
Add ReSharper's .dotsettings to the list of XML files
2016-03-20 20:16:39 -06:00
Arfon Smith
b881e3e6cb Merge pull request #2900 from github/gdscript
Adding back GDScript grammar
2016-03-20 20:16:01 -06:00
Arfon Smith
ca718d8f2a Fixing up script/licensed verify 2016-03-20 08:47:08 -06:00
Arfon Smith
c6625b1b8a Merge pull request #2898 from github/sourcepawn
Adding back sourcepawn
2016-03-20 08:34:05 -06:00
Arfon Smith
16a6d680c4 Adding Rubygems licenses. 2016-03-19 20:49:41 -06:00
Paul Chaignon
270fa8f5d3 Merge pull request #2894 from pchaigno/fix-warnings
Fix warnings
2016-03-19 20:42:32 -06:00
Arfon Smith
b1f5e93b4a Merge pull request #2897 from github/pig-latin
Adding back Pig Latin grammar
2016-03-19 20:41:13 -06:00
Arfon Smith
79a61c72e1 Restoring curated grammars 2016-03-19 20:33:55 -06:00
Arfon Smith
3f04c11537 Merge pull request #2895 from github/bring-back-boo
Adding back boo
2016-03-19 20:29:11 -06:00
Arfon Smith
b2270613d7 Merge pull request #2896 from github/bring-back-logos
Adding Logos grammar.
2016-03-19 20:26:36 -06:00
Arfon Smith
0fe854421b Merge pull request #2893 from github/extra-assembly
Adding back assembly grammar for object dumps
2016-03-19 08:00:53 -06:00
Arfon Smith
de074f421e Merge pull request #2891 from pchaigno/package-license
MIT license in package.json
2016-03-19 07:47:18 -06:00
Arfon Smith
27590c39bd Merge pull request #2892 from github/bringing-monkey-back
Bringing Monkey grammar back under MIT license
2016-03-19 07:45:05 -06:00
Arfon Smith
67191d4d5e Bringing Monkey grammar back under MIT license 2016-03-19 07:38:59 -06:00
Paul Chaignon
00764f3d59 MIT license in package.json 2016-03-19 13:16:32 +01:00
Arfon Smith
4a2cb32149 Merge pull request #2887 from github/assembly-highlight
Bringing back Assembly highlighting
2016-03-18 20:28:59 -06:00
Arfon Smith
1a11664239 Adding sublimeassembly to license whitelist. 2016-03-18 20:24:06 -06:00
Arfon Smith
9520cbb44c Bringing back Assembly highlighting 2016-03-18 20:15:38 -06:00
Arfon Smith
1aea6b2cdb Merge pull request #2886 from github/puppet-highlight
Adding replacement grammar for Puppet
2016-03-18 17:52:07 -06:00
Arfon Smith
6ff950341a Adding replacement grammar for Puppet 2016-03-18 17:44:05 -06:00
Arfon Smith
b9501e42b2 Merge pull request #2884 from github/licensor-mk2
[WIP] extracting license information
2016-03-18 17:29:05 -06:00
Arfon Smith
065c809dd5 Updating grammars based on script/licensed 2016-03-18 16:52:49 -06:00
Arfon Smith
5b9ea4a78f Updating grammar checks to ensure license compliance 2016-03-18 16:47:34 -06:00
Arfon Smith
b72c4d4400 Fix Ruby deprecation warning 2016-03-18 16:47:09 -06:00
Arfon Smith
d46e214985 Removing InnoSetup grammar 2016-03-18 16:45:56 -06:00
Arfon Smith
799c47ce7a Grammar update 2016-03-18 16:38:21 -06:00
Arfon Smith
b5121e59dd Updating papyrus scopes 2016-03-18 16:38:12 -06:00
Arfon Smith
f6a7b4929f Updating Papyrus grammar 2016-03-18 16:27:56 -06:00
Arfon Smith
162b77ab5a Removing unused grammar 2016-03-18 16:19:44 -06:00
Arfon Smith
92904efd45 Fixing Ruby warning 2016-03-18 16:19:35 -06:00
Arfon Smith
93fabe487f Removing openscad grammar 2016-03-18 16:14:54 -06:00
Arfon Smith
74d704bea2 Removing pig latin grammar 2016-03-18 16:13:46 -06:00
Arfon Smith
ee1bd50dd1 Removing oracle grammar 2016-03-18 16:12:17 -06:00
Arfon Smith
07096f84f5 Removing nix grammar 2016-03-18 16:10:33 -06:00
Arfon Smith
a9b3bd632b Removing puppet grammar 2016-03-18 16:08:55 -06:00
Arfon Smith
eec324890e Removing Idris grammar 2016-03-18 16:05:23 -06:00
Arfon Smith
ca6ac8f0db Removing nesC grammar 2016-03-18 16:03:54 -06:00
Arfon Smith
60ab4a5fe7 Removing SourcePawn grammar 2016-03-18 15:57:00 -06:00
Arfon Smith
10eb5830f0 Removing Monkey grammar 2016-03-18 15:19:32 -06:00
Arfon Smith
835ceae6f6 Removing x86 grammar 2016-03-18 15:18:17 -06:00
Arfon Smith
abe3aa47f6 Removing GDScript grammar 2016-03-18 15:16:18 -06:00
Arfon Smith
53e34072ed Removing Grace grammar 2016-03-18 15:15:08 -06:00
Arfon Smith
f83f761d0a Removing Boo grammar 2016-03-18 15:13:53 -06:00
Arfon Smith
9c18bf3a89 Removing AutoIt grammar 2016-03-18 15:11:03 -06:00
Arfon Smith
f6e1ab444e Removing ATS grammar 2016-03-18 14:55:11 -06:00
Arfon Smith
0ae8b2959d Removing Logos grammar 2016-03-18 14:51:22 -06:00
Arfon Smith
46b0b1e5e2 Removing Creole grammar 2016-03-18 14:48:31 -06:00
Arfon Smith
b44dfb4ab8 Removing Clips grammar 2016-03-18 14:43:18 -06:00
Arfon Smith
868e528810 Downcase 2016-03-18 14:30:07 -06:00
Arfon Smith
0a4c850ef1 Merge branch 'licensor-mk2' of github.com:github/linguist into licensor-mk2 2016-03-18 14:27:19 -06:00
Arfon Smith
b3c4232251 Removing old license 2016-03-18 14:27:06 -06:00
Brandon Keepers
0c38df47b9 Save config 2016-03-18 16:09:54 -04:00
Brandon Keepers
bfd4005760 Disable license caching for rubygems and npm 2016-03-18 16:06:02 -04:00
Arfon Smith
fc9fad15a3 Updating license information for dependencies 2016-03-18 14:02:18 -06:00
Arfon Smith
b5091e88ad Updating licensor -> licensed 2016-03-18 12:32:52 -06:00
Arfon Smith
2610808b6d Updating licenses 2016-03-17 20:30:44 -06:00
Arfon Smith
3cfee4f214 Bumping to licensee v6.0.0 2016-03-17 20:30:22 -06:00
Arfon Smith
70fd116eaf Merge branch 'master' into licensor-mk2 2016-03-17 20:24:23 -06:00
Arfon Smith
62aac9c2f7 Merge branch 'licensor' of github.com:github/linguist into licensor 2016-03-17 20:00:52 -06:00
Arfon Smith
afcf1c6c22 Merge branch 'master' into licensor 2016-03-17 19:57:29 -06:00
Arfon Smith
f3f0365b13 Merge pull request #2883 from williamd1k0/master
Fix regex in .rpy disambiguate
2016-03-17 17:32:32 -06:00
William Tumeo
9bc12843fe Fix regex in .rpy disambiguate 2016-03-17 18:01:32 -03:00
Arfon Smith
5e3ceddf69 Merge pull request #2882 from github/2512-local
Pawn TextMate-compatible grammar (take 2)
2016-03-17 14:05:24 -06:00
Arfon Smith
d377e23193 Merge branch 'master' into 2512-local 2016-03-17 14:00:34 -06:00
Arfon Smith
e6dabd59ad Merge pull request #2875 from github/2821-slim
Add Terra support
2016-03-17 10:40:19 -06:00
Arfon Smith
f0c7380132 Updating sublime-terra grammar 2016-03-17 10:27:39 -06:00
Arfon Smith
697ad4c568 Merge branch 'master' into 2821-slim 2016-03-17 10:23:59 -06:00
Arfon Smith
1efd9b384d Merge pull request #2880 from github/cut-release-v4.8.0
v4.8.0 release
2016-03-16 22:46:29 -06:00
Arfon Smith
c1e71dc215 Bumping to v4.8.0 2016-03-16 21:44:20 -06:00
Arfon Smith
d2c7d27d13 Grammar update 2016-03-16 21:30:18 -06:00
Arfon Smith
1efd4c83f9 Merge pull request #2341 from github/api-changes
Move Linguist::Language.detect to Linguist.detect
2016-03-16 21:15:50 -06:00
Arfon Smith
0f7677423f Merge pull request #2877 from pchaigno/fix-plpgsql-heuristic
Fix PLpgSQL heuristic rule
2016-03-12 06:01:59 -07:00
Paul Chaignon
2a0b0e9f93 Fix heuristic rule for PLpgSQL 2016-03-12 11:17:29 +01:00
Paul Chaignon
faec60188f Tests for .sql heuristic rules 2016-03-12 11:04:53 +01:00
Vicent Marti
709a688858 Merge pull request #2876 from github/vmg/git-debug
git-linguist: Print PWD
2016-03-11 10:33:09 +01:00
Vicent Marti
2448ff8314 git-linguist: Print PWD 2016-03-11 10:27:10 +01:00
Arfon Smith
311202102d Merge branch 'master' into 2821-slim 2016-03-10 06:51:35 -06:00
Arfon Smith
6812a22706 Slimming down Terra samples 2016-03-10 06:50:48 -06:00
Arfon Smith
fb727ce731 Merge pull request #2866 from jasonwilliams200OK/master
Classification of props file
2016-03-09 20:53:07 -06:00
Peter Jas
6af499e352 Classification of props file
* Initially treat as XML
* Disambiguate from ini (key-value pair style with `=`)
* If the file is neither XML-style nor INI, classify as SQL
2016-03-10 02:46:57 +00:00
Arfon Smith
66ec33cf8e Merge pull request #2873 from github/2427-local
2427 local
2016-03-09 19:55:29 -06:00
Arfon Smith
f2694f3a74 Merge branch 'master' into 2427-local 2016-03-09 19:49:32 -06:00
Arfon Smith
d069d0e444 Merge pull request #2870 from kusma/hlsl
make .hlsl the primary extension for HLSL
2016-03-09 07:02:11 -06:00
Erik Faye-Lund
56ee61b17c make .hlsl the primary extension for HLSL
When I submitted the HLSL-language, I accidentally missed that the
first extension was the primary one (as is documented in the source
code, which I unfortunately missed), and instead alphabetized the
whole list.

The primary extension should be .hlsl, so let's remedy this.
2016-03-09 12:49:29 +00:00
Arfon Smith
b945726017 Merge pull request #1965 from github/combine-gems
Merge github-linguist-grammars into github-linguist
2016-03-09 06:35:31 -06:00
Lars Brinkhoff
6f8a7d1070 Exclude 'filenames' from all_fixtures. 2016-03-09 13:28:00 +01:00
Lars Brinkhoff
b032886c21 Add .me and other text filenames.
click.me by Bram Moolenaar; VIM license.
2016-03-09 13:27:59 +01:00
Arfon Smith
988739d566 Merge branch 'master' into combine-gems 2016-03-09 06:25:35 -06:00
Arfon Smith
8cd80801e8 Fixing indentation 2016-03-09 06:15:41 -06:00
Arfon Smith
c3b7a1a6fb Merge pull request #2146 from pchaigno/norwegian
Support for two Norwegian text extensions
2016-03-09 06:02:58 -06:00
Arfon Smith
9d0eff75ad Merge pull request #2869 from pchaigno/sublime-syntax
Support for YAML .sublime-syntax extension
2016-03-09 06:02:00 -06:00
Paul Chaignon
3ccb548b6d Support for YAML .sublime-syntax extension 2016-03-09 11:29:25 +01:00
Paul Chaignon
eeedd53f32 Support for Text extension .no (Norwegian text) 2016-03-09 10:38:47 +01:00
Paul Chaignon
11a3b5b73c Support for Text extension .nb (Norwegian text) 2016-03-09 10:37:41 +01:00
Lars Brinkhoff
eacc48e8c7 Add .me to Groff file extensions. 2016-03-09 07:52:29 +01:00
Mike Linksvayer
5b72b4d353 move note about grammar repos from LICENSE to README.md 2016-03-08 21:05:55 -08:00
Arfon Smith
3f940ce8b8 Merge pull request #2868 from github/2603-local
2603 local
2016-03-08 22:03:30 -06:00
Arfon Smith
b2e3ea2334 Adding ace_mode back for M4Sugar 2016-03-08 21:56:01 -06:00
Arfon Smith
4637da8c32 Merge branch 'master' into 2603-local 2016-03-08 21:53:23 -06:00
Arfon Smith
6b88c5ba86 Merge pull request #2842 from kusma/hlsl
Add support for HLSL
2016-03-07 20:36:25 -06:00
Arfon Smith
5fdb596214 Merge pull request #2858 from williamd1k0/master
Fix "Ren'Py being detected as Python" #2849
2016-03-07 20:34:44 -06:00
Arfon Smith
c989b02285 Merge pull request #2857 from Dominator008/buck
Add BUCK filename to Python in languages.yml
2016-03-04 12:46:00 -06:00
Arfon Smith
c8301dc20b Merge pull request #2861 from jglick/Jenkinsfile
Recognizing Jenkinsfile as Groovy source
2016-03-04 11:12:00 -06:00
Jesse Glick
ca4ea03828 Recognizing Jenkinsfile as Groovy source. 2016-03-03 19:15:09 -05:00
Michael Zhou
ae27c71d5a Add BUCK filename to Python in languages.yml
BUCK is the filename for the build files of the Facebook Buck build
system. BUCK files are valid Python files.

Eg.:
  https://github.com/GerritCodeReview/gerrit/blob/master/BUCK

Also add a missing sample for Pants / Bazel BUILD files. They are also
valid Python files.
2016-02-29 20:43:55 -05:00
Arfon Smith
3d1555e278 Merge pull request #2856 from github/cut-release-v4.7.6
Cut release v4.7.6
2016-02-29 08:24:58 -07:00
Arfon Smith
54fab9eb4e Bumping to v4.7.6 2016-02-29 07:55:43 -07:00
Arfon Smith
8fea8a0b47 Grammar update 2016-02-29 07:54:29 -07:00
Arfon Smith
f14ae8e51b Merge pull request #2803 from c-lipka/master
Added support for the POV-Ray Scene Description Language.
2016-02-28 07:33:05 -07:00
William Tumeo
6b60e5e786 Remove wrong line in the sample 2016-02-27 23:57:46 -03:00
William Tumeo
40413dfcc7 Add class and def to regex 2016-02-27 23:55:53 -03:00
William Tumeo
07f5ad1daa Merge remote-tracking branch 'upstream/master'
Update fork 3
2016-02-27 23:22:04 -03:00
Arfon Smith
57f5a3e780 Merge pull request #2831 from FarbodSalamat-Zadeh/patch-1
Add CSV as data type to languages.yml
2016-02-27 15:54:44 -07:00
Farbod Salamat-Zadeh
3be007526c Fix fixture_blob("Data/cars.csv")
Changes `fixture_blob("Data/cars.csv")` to `sample_blob("CSV/cars.csv")`
2016-02-27 15:30:22 +00:00
Farbod Salamat-Zadeh
9bfbd0550c Move cars.csv from test/fixtures/Data to samples/CSV 2016-02-27 14:32:50 +00:00
Christoph Lipka
0301a5dcdf Merge remote-tracking branch 'upstream/master' 2016-02-27 06:24:30 +01:00
Farbod Salamat-Zadeh
db994a1197 Remove .txt extension for CSV format 2016-02-27 00:42:03 +00:00
Arfon Smith
855c13ea2a Merge pull request #2851 from edechter/master
Add .yap ext and yap interpreter for Prolog lang
2016-02-26 17:21:11 -07:00
William Claude Tumeo
bfa7eced44 Try fix "Ren'Py being detected as Python"
- Remove Ren'Py from Python group
- Add .rpy to Python + sample
2016-02-26 00:31:58 -03:00
William Claude Tumeo
b1d103b1f3 Merge remote-tracking branch 'upstream/master'
Update fork 2
2016-02-25 21:56:49 -03:00
Arfon Smith
fc816d3429 Merge pull request #2845 from kusma/uno
add support for Uno
2016-02-23 17:56:51 -07:00
William Tumeo
04a4e8c8e6 Merge pull request #1 from github/master
Update fork
2016-02-23 16:09:26 -03:00
Eyal Dechter
ab69fd01ac Add .yap ext and yap interpreter for Prolog lang 2016-02-22 15:59:40 -05:00
Erik Faye-Lund
cc6106f31b add sample ux-files 2016-02-22 18:45:59 +01:00
Erik Faye-Lund
ead85379ed add sample uno-files 2016-02-22 18:44:02 +01:00
Erik Faye-Lund
f8d6be55ee add .ux as an XML extension
This is used by Fusetools' UX markup:
https://www.fusetools.com/learn/fuse#hello-ux-markup
2016-02-20 14:45:31 +01:00
Arfon Smith
a241d75043 Merge pull request #2846 from Dominator008/bzl
Add .bzl extension to Python in languages.yml
2016-02-19 20:14:15 -07:00
Michael Zhou
864a6c0a20 Add .bzl extension to Python in languages.yml
.bzl is the extension for Skylark, a subset of Python that is used
to define build extensions for the Bazel build system.

Eg:
  https://github.com/bazelbuild/bazel/blob/master/tools/build_rules/closure/closure_js_binary.bzl
2016-02-19 19:11:36 -05:00
Arfon Smith
1c20c54191 Fixing ordering of makefile filenames 2016-02-19 16:55:38 -07:00
Arfon Smith
4d722d1fd1 Merge pull request #2838 from scop/makefile
Makefile: Add Makefile.am and Makefile.in filenames
2016-02-19 12:39:59 -07:00
Erik Faye-Lund
b67254e986 add support for Uno
Uno is a fast, native dialect of C#, that includes a lot of
specialized functionality for graphics programming.

https://www.fusetools.com/learn/uno
2016-02-19 18:52:12 +01:00
Arfon Smith
041cf9c94e Merge pull request #2837 from scop/shell-script
Shell: Add shell-script alias for recognizing Emacs modelines
2016-02-19 09:05:37 -07:00
Ville Skyttä
b08c5a8421 Shell: Add .sh.in extension 2016-02-19 17:56:50 +02:00
Arfon Smith
125eaa4cc3 Merge pull request #2844 from pchaigno/hacking.rst.txt
Move HACKING.rst.txt to sample directory
2016-02-19 08:44:01 -07:00
Erik Faye-Lund
6b001cf861 add support for HLSL/FX
Add support for DirectX HLSL / FX files. The FX files are
just HLSL files with some additional syntax to set
render-states and define multiple shader stages in one file.

Samples are either written by me, or taken from Chromium.
2016-02-19 11:32:46 +01:00
Paul Chaignon
5c4129f85b Move HACKING.rst.txt to sample directory
The file was incorrectly placed at the root of the repo
2016-02-19 08:50:01 +01:00
Brandon Keepers
fa56879790 WIP 2016-02-18 19:26:45 -05:00
Erik Faye-Lund
41713d7719 add a sample of FLUX code
These samples were taken from the paper "Flux: A Language for
Programming High-Performance Servers", by Burns et al and Flux V0.02
which can be found here:

https://plasma.cs.umass.edu/emery/flux.1.html
2016-02-18 23:38:56 +01:00
Ville Skyttä
17a9463588 Makefile: Add Makefile.am and Makefile.in filenames 2016-02-14 22:08:21 +02:00
Ville Skyttä
fb9f271720 Shell: Add shell-script alias for recognizing Emacs modelines 2016-02-14 22:00:16 +02:00
Arfon Smith
8de50edb41 ruby for example 2016-02-12 17:05:44 -07:00
Arfon Smith
ab33fccddd Merge pull request #2836 from github/cut-release-v4.7.5
Cut release v4.7.5
2016-02-12 16:58:11 -07:00
Arfon Smith
bd95ac0beb Bumping version 2016-02-12 16:27:29 -07:00
Arfon Smith
7b3efb185f Updating grammars 2016-02-12 16:25:05 -07:00
Farbod Salamat-Zadeh
a0065febe2 Add ace_mode and tm_scope for CSV 2016-02-06 16:34:33 +00:00
Arfon Smith
9374784651 Merge pull request #2805 from jamesqo/patch-1
Add .xproj to list of XML file extensions
2016-02-04 20:28:47 -07:00
Arfon Smith
aa6af3deed Merge pull request #2822 from AbigailBuccaneer/master
Add detection of GrammarKit-generated files
2016-02-04 20:28:12 -07:00
Arfon Smith
a19e501b44 Merge pull request #2833 from pchaigno/less-new-grammar
New grammar for Less
2016-02-03 08:45:08 -07:00
Paul Chaignon
889a395340 Grammar for Less from Atom package 2016-02-03 14:22:23 +01:00
Paul Chaignon
eb8eb28ca7 Remove Less grammar 2016-02-03 14:19:58 +01:00
Arfon Smith
697b3351e6 Merge pull request #2832 from github/better-perl6
Adding Perl6-specific grammar.
2016-02-02 22:43:12 -07:00
Arfon Smith
9fd80bfd67 Updating to latest perl6 grammar 2016-02-02 22:38:50 -07:00
Arfon Smith
7b58b1ea59 Adding Perl6-specific grammar. 2016-02-02 19:37:35 -07:00
Farbod Salamat-Zadeh
c454396c26 Add CSV as data type to languages.xml
Adds the .csv extension (and also .txt extension) so that this file type is shown when searching on GitHub.
2016-02-02 19:41:05 +00:00
Bayu Aldi Yansyah
2e9d8f5520 samples: remove empty file 2016-02-01 16:02:19 +07:00
Bayu Aldi Yansyah
c8ea3fba5a terra use #00004c 3 shades from Lua #000080
http://www.color-hex.com/color/000080
2016-02-01 15:11:46 +07:00
Bayu Aldi Yansyah
56af13047c grammar: add Terra 2016-02-01 15:11:24 +07:00
Arfon Smith
c46900396a Merge pull request #2827 from pchaigno/yang
Support for the YANG modeling language
2016-01-31 18:33:07 -06:00
Paul Chaignon
b235ed1223 Grammar for YANG from Atom package 2016-01-31 10:31:06 +01:00
Paul Chaignon
16d9612603 Support for YANG language 2016-01-31 10:29:06 +01:00
Abigail
721e5b4656 Add detection of GrammarKit-generated files
GrammarKit is a plugin by JetBrains for creating custom language plugins
for JetBrains IDEs (such as IntelliJ, RubyMine, CLion and more). It
defines a BNF parser language which can be used to generate a parser in
Java, and it also integrates JFLex for generating a lexer in Java.

Both of these generated Java files can be recognised by a comment on the
first line of the file, and so classifying them as generated is trivial.
2016-01-28 11:47:33 +00:00
Bayu Aldi Yansyah
9b8b39f444 samples: add Terra samples
source: https://github.com/zdevito/terra/tree/master/tests
2016-01-28 11:22:27 +07:00
Bayu Aldi Yansyah
e32a837fb2 languages.yml: add Terra 2016-01-28 10:52:03 +07:00
Arfon Smith
9961f8bc1c Merge pull request #2797 from lpil/erlang-leex-yecc
support for leex (.xrl) / yecc (.yrl) files
2016-01-23 11:36:43 -05:00
Arfon Smith
c066867d59 Merge pull request #2812 from chrisarcand/improved-vim-modeline-detection
Improved vim modeline detection
2016-01-21 20:12:26 -05:00
Arfon Smith
21093165e1 Merge pull request #2613 from ismailarilik/patch-2
Add colors for some languages.
2016-01-21 20:10:36 -05:00
James Ko
df88de14e3 Add .xproj to list of XML extensions 2016-01-20 19:01:19 -05:00
Arfon Smith
94de431aa5 Merge pull request #2811 from pchaigno/pod-heuristic
Heuristic for Pod vs. Perl
2016-01-18 07:59:47 -05:00
Arfon Smith
502557a97f Merge pull request #2808 from pchaigno/submodules-ssh
HTTPS links for submodules
2016-01-17 16:14:55 -05:00
Paul Chaignon
52938f6dbf Test submodules are using HTTPS links 2016-01-17 18:14:51 +01:00
chrisarcand
d87fad649c Improved vim modeline detection
TLDR: This greatly increases the flexibility of vim modeline detection
to manually set the language of a file.

In vim there are two forms of modelines:

[text]{white}{vi:|vim:|ex:}[white]{options}
examples: 'vim: syntax=perl', 'ex: filetype=ruby'

-and-

[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
examples: 'vim set syntax=perl:', 'Vim: se ft=ruby:'

As you can see, there are many combinations. These changes should allow
most combinations to be used. The two most important additions are the
use of the keyword 'syntax', as well as the addition of the first form
(you now no longer need to use the keyword 'set' with a colon at the end).
The use of first form with 'syntax' is very, very common across GitHub:

https://github.com/search?l=ruby&q=vim%3A+syntax%3D&ref=searchresults&type=Code&utf8=%E2%9C%93
2016-01-16 08:57:20 -05:00
Paul Chaignon
d8666e5309 Heuristic for Pod vs. Perl
.pod files classified as Pod if they contain any Pod syntax
2016-01-16 11:21:26 +01:00
Arfon Smith
0c071990cb Merge pull request #2809 from github/cut-release-v4.7.4
v4.7.4 release
2016-01-15 10:34:50 -05:00
Arfon Smith
77dfb19a50 Bumping to v4.7.4 2016-01-15 09:21:43 -05:00
Arfon Smith
49254f1f74 Grammar update 2016-01-15 09:19:24 -05:00
Arfon Smith
9dd952c175 Merge pull request #2807 from mrmonday/patch-1
Support .rs.in as a file extension for Rust files.
2016-01-15 09:11:36 -05:00
Robert Clipsham
0b9897db1f Support .rs.in as a file extension for Rust files.
When using syntax extensions in stable or beta Rust channels using the syntex package, it is common to use the file extension .rs.in for the source file, and .rs for the generated file.
2016-01-11 19:15:01 +00:00
Christoph Lipka
9d11128362 Updated POV-Ray SDL grammar sub-project 2016-01-10 21:24:02 +01:00
Christoph Lipka
ee17ab3e26 Empty commit to trigger re-run of build checks. 2016-01-10 21:14:17 +01:00
Christoph Lipka
06af36dac2 Fixed POV-Ray SDL entry in grammars.yml and Ace mode in languages.yml 2016-01-10 20:23:09 +01:00
Christoph Lipka
51d6d741e5 Fixed ordering of POV-Ray SDL in languages.yml 2016-01-10 20:11:26 +01:00
Christoph Lipka
b593a8ae67 Added more samples for the POV-Ray Scene Description Language 2016-01-10 18:40:29 +01:00
Christoph Lipka
7b30240a7f Added POV-Ray Scene Description Language 2016-01-10 13:05:41 +01:00
Paul Chaignon
71f124faa5 HTTPS links for submodules
When cloning the repository with all its submodules,
users without an SSH key registered will fail to clone
submodules with an SSH link
2016-01-10 10:10:41 +01:00
Arfon Smith
470bd34349 Merge pull request #2800 from github/2794-local
[UPDATED] Switch to a different (and better) grammar for Inform 7 source code
2016-01-07 16:37:28 -05:00
Arfon Smith
65087dd7b8 Merge branch 'master' into 2794-local 2016-01-07 16:28:54 -05:00
Arfon Smith
89c5361f25 Merge pull request #2772 from ibnfirnas/fix-copypasta-artifact
Remove copypasta artifact.
2016-01-07 16:26:10 -05:00
Arfon Smith
f82cc26e4f Merge pull request #2778 from pchaigno/wiki
New extensions for consistency with Markup
2016-01-07 16:25:47 -05:00
Louis Pilfold
15232fc072 Add the LFE lexer as an example of erlang .xrl 2016-01-04 12:17:31 +00:00
Louis Pilfold
0a7aab947c Add the Elixir parser as an example of erlang .yrl 2016-01-04 12:16:32 +00:00
Louis Pilfold
5906fa81bb support for Erlang leex (.xrl) / yecc (.yrl) files 2016-01-04 11:12:39 +00:00
Arfon Smith
1b2f574af2 Merge pull request #2782 from pchaigno/perl-heuristic-order
Reorder Perl heuristic rules
2016-01-03 07:44:54 -05:00
Paul Chaignon
ca4bc6110f Remove 'use strict' from Perl6 sample 2016-01-03 11:47:09 +01:00
Arfon Smith
a944769d61 Grammars update 2016-01-02 22:18:27 -05:00
Arfon Smith
98a31515ef Merge pull request #2796 from github/2703-local
MagicPython
2016-01-02 22:09:52 -05:00
Arfon Smith
3e665099ac Updating Python grammars 2016-01-02 22:04:16 -05:00
Arfon Smith
5400b534e4 Merge branch 'master' into 2703-local 2016-01-02 21:38:37 -05:00
Arfon Smith
6f2d4dc195 Merge pull request #2788 from nwolverson/update-purescript-submodule
Update PureScript submodule (moved repo, grammar tweak)
2016-01-02 21:33:21 -05:00
Arfon Smith
4f7fac3ba1 Merge pull request #2783 from jrnold/add-stan-extension
Add stan extension
2016-01-02 21:32:14 -05:00
Arfon Smith
fd6569830a Merge pull request #2792 from aqnouch/patch-1
Updated copyright to 2016
2016-01-02 21:23:52 -05:00
Andrew Plotkin
5d4cad6394 Remove the old submodule entry. 2016-01-01 22:40:23 -05:00
Andrew Plotkin
b790a49282 Remove the old Sublime-Inform grammar from the submodules list. 2016-01-01 22:25:11 -05:00
Andrew Plotkin
537b83c759 Switch from Sublime-Inform grammar to language-inform7 grammar
for Inform 7 source code.
2016-01-01 22:23:01 -05:00
Andrew Plotkin
c0b9e2c3f4 Update comment. 2016-01-01 21:52:51 -05:00
Andrew Plotkin
f488b9b9f7 Test strings and substs in a doc comment. 2016-01-01 17:22:06 -05:00
Andrew Plotkin
7060b116f4 Reword a little. 2016-01-01 16:54:55 -05:00
Andrew Plotkin
0f4cf11294 Wrong semicolon. 2016-01-01 16:34:23 -05:00
Andrew Plotkin
048496723b Include lots more forms of Inform7 syntax. Including embedded Inform6
syntax.
2016-01-01 16:15:03 -05:00
AQNOUCH Mohammed
70068f74f1 Updated copyright to 2016 2016-01-01 01:53:09 +00:00
Nicholas Wolverson
6f197bacc7 Update PureScript submodule (moved repo, grammar tweak)
Updated grammar to support triple-quoted strings properly:
0c53f8162e

atom-language-purescript repo has been moved to purescript-contrib org,
update the URL.
2015-12-29 23:22:53 +00:00
jrnold
24a89d2d75 add tm_grammar for Stan 2015-12-28 22:32:53 -08:00
jrnold
1ac16cbec7 add vendor for Stan 2015-12-28 22:31:49 -08:00
jrnold
8144438f39 Add color for Stan
Use the brick-red color of the [Stan logo](https://raw.githubusercontent.com/stan-dev/logos/master/logo.png).
2015-12-27 18:50:43 -08:00
jrnold
f141abbc73 add tm_scope for Stan 2015-12-24 16:05:06 -08:00
jrnold
5329b96793 add Stan samples 2015-12-24 15:55:14 -08:00
jrnold
7a70931066 add Stan to languages 2015-12-24 15:55:00 -08:00
Paul Chaignon
9a070d7bb3 Reorder Perl heuristic rules
Order heuristic rules by accuracy
Heuristic rules which are expected to generated
less false positives should be tested first
2015-12-23 21:43:55 +01:00
Paul Chaignon
189b2d684b .rst.txt and .rest.txt as reStructuredText extensions 2015-12-20 16:21:11 +01:00
Paul Chaignon
71dfac26fe .wiki extension as Mediawiki 2015-12-20 13:09:00 +01:00
Arfon Smith
efdc790374 Merge pull request #2776 from humzashah/minor-code-improvements
minor code improvements
2015-12-18 11:50:25 -05:00
Syed Humza Shah
a3613dc438 fixed a typo 2015-12-18 01:43:01 +00:00
Syed Humza Shah
97afedd861 removed usage of keyword as variable
this was done mainly to fix annoying syntax highlighting
2015-12-18 01:27:58 +00:00
Syed Humza Shah
00a436f175 used proper 'if/elsif/end' syntax 2015-12-18 01:24:05 +00:00
Siraaj Khandkar
aa2e3000cd Remove copypasta artifact. 2015-12-16 14:00:48 -05:00
Arfon Smith
10e0fa4360 Merge pull request #2771 from ibnfirnas/add-mathematica-test-file-extension
Add mathematica unit test file extension
2015-12-15 19:48:05 -05:00
Siraaj Khandkar
0473af368f Add sample Mathematica test files. 2015-12-15 13:37:55 -05:00
Siraaj Khandkar
b82f563c38 Add Mathematica test file extension: .mt 2015-12-15 13:33:03 -05:00
Arfon Smith
344297895b Merge pull request #2768 from williamd1k0/master
Add Ren'Py language and grammars
2015-12-14 09:41:45 -05:00
William Claude Tumeo
d3c525645b Fix sample folder name and language order 2015-12-13 15:58:14 -02:00
William Claude Tumeo
59d02e5138 Add language-renpy submodule 2015-12-13 00:20:25 -02:00
William Claude Tumeo
8522dc1d33 Add Ren'Py language and grammars 2015-12-13 00:16:09 -02:00
Vicent Marti
53d238f310 Merge pull request #2766 from github/piki/clear-cache
Catch `ENOENT` in `clear_cache`
2015-12-10 09:08:40 +01:00
Patrick Reynolds
92ed2d189e Catch ENOENT in clear_cache
There's no need for `clear_cache` to fail if the cache doesn't exist,
either because we call `clear_cache` twice or because no cache was
previously written on this particular repo.
2015-12-09 23:24:32 -06:00
Arfon Smith
7133c3b11a Merge pull request #2765 from github/cut-release-v4.7.3
Bumping version to v4.7.3
2015-12-08 23:17:35 -05:00
Arfon Smith
d72114083b Bumping version to v4.7.3 2015-12-08 22:30:17 -05:00
Arfon Smith
683925fcd5 Updating grammars 2015-12-08 22:28:46 -05:00
Arfon Smith
1c8bf32d35 Merge pull request #2759 from pchaigno/click
Support for the Click modular router language
2015-12-08 16:08:55 -05:00
Paul Chaignon
28913833f4 Merge branch 'master' into click 2015-12-08 22:00:49 +01:00
Arfon Smith
c6752be546 Merge pull request #2749 from Alhadis/maxscript
Add language support for MAXScript
2015-12-08 08:04:13 -05:00
Arfon Smith
395e474cad Merge pull request #2763 from github/2746-local
Jupyter notebook, version 2
2015-12-08 07:45:57 -05:00
Arfon Smith
16ea189aa6 Colour switch 2015-12-08 07:39:43 -05:00
marcelo-ramires
ac81fc5da9 Changing Jupyter Notebook color to a further darker shade to make it even more different from Mask's one 2015-12-07 14:12:18 -02:00
marcelo-ramires
58191c10b3 Changing Jupyter Notebook color to make it more different from Mask's one 2015-12-07 14:00:18 -02:00
marcelo-ramires
c2ca23d580 Removing extra leading space 2015-12-05 19:38:02 -02:00
marcelo-ramires
b5dfb40c7d Setting Jupyter Notebook's language property tm_scope to source.json 2015-12-05 18:57:40 -02:00
marcelo-ramires
7e647fd915 Renaming the sample folder to match Jupyter Notebook's, making the language type markup, and adding a real sample file instead of a dummy one 2015-12-05 18:48:17 -02:00
Paul Chaignon
5b9f9bc0e6 Grammar for Click from Atom package 2015-12-05 14:03:02 +01:00
Paul Chaignon
b1c057fa30 Support for the Click router config language 2015-12-05 13:58:14 +01:00
marcelo-ramires
ca348dd373 Moving .ipynb extension from python language to a new language called Jupyter Notebook 2015-12-05 03:25:38 -02:00
Arfon Smith
b802045c5c Grammar updates 2015-12-03 17:27:17 -06:00
Arfon Smith
3c244a9501 Merge pull request #2758 from github/2667-local
Add Ur/Web support
2015-12-03 16:03:12 -06:00
Arfon Smith
832a7b9b06 Merge branch 'master' into 2667-local 2015-12-03 15:41:25 -06:00
Arfon Smith
e7d856345f Merge pull request #2757 from scottclowe/octave-alias
Add octave as an alias for Matlab syntax
2015-12-03 15:35:55 -06:00
Scott Lowe
ac559effaa Add octave as an alias for Matlab syntax
Since Octave is a clone of Matlab, the syntax is exactly the same
and hence it is desirable for highlighting to be exactly the same
as well.
Adding octave as an alias for Matlab will trivially provide support
for highlighting Octave code, and will ensure the two languages
always use the same syntax highlighting rules.
2015-12-03 21:00:21 +00:00
Arfon Smith
95d0daba80 Merge pull request #2755 from github/add-elixir-interpreter
Adding elixir as an interpreter
2015-12-02 16:23:14 -06:00
Arfon Smith
a0ad1523a1 Adding elixir as an interpreter 2015-12-02 14:52:29 -06:00
Alhadis
06c049b8c0 Change ".ms" heuristic to accommodate MAXScript
Linguist currently uses the presence of "move" commands to differentiate
a GAS file from Groff. This is problematic with MAXScript, with includes
a built-in function of that name. Furthermore, because of the language's
exhaustive vocabulary, case insensitive nature and flexible syntax, it's
difficult to impose rigid criteria on classifying it.

This commit modifies the heuristic to assume the following flow:

    1. If a line contains ".include" or ".global"/".globl" which doesn't
       follow a non-whitespace character, assume GAS.

    2. Otherwise, if the line starts with a command like ".LG7E0" with a
       possible string of whitespace before it, assume it's also GAS.

       UNLESS either of the following conditions are true:
       2a. The token is enclosed by a string or /* multiline comment */
       2b. The previous line ends with a backslash to denote a statement
           broken between lines, with possible whitespace and/or comment
           sequences between the backslash and the actual newline.

    3. If neither of the above are met, assume the file is MAXScript.

This approach may appear overly-inclusive, but given real-world usage of
MAXScript includes writing brief files with few distinguishing keywords,
it's reasonable to permit this leniency.
2015-11-28 04:40:29 +11:00
marcelo-ramires
24c7380765 Adding .ipynb (Jupyter Notebook) extension to python, and a sample file 2015-11-26 02:55:39 -02:00
Alhadis
73ef1bf156 Update MAXScript submodule to version v1.0
This is the first "real" version of the language package, which I pushed
to Atom's packages repository earlier before.
2015-11-26 05:58:10 +11:00
Arfon Smith
c8b30a62f9 Merge pull request #2741 from github/cut-release-v4.7.2
Cut release v4.7.2
2015-11-23 15:24:29 -06:00
Arfon Smith
48dfdd2dfe Bumping version to v4.7.2 2015-11-23 14:04:48 -06:00
Arfon Smith
68727f724a Grammars update 2015-11-23 13:53:53 -06:00
Alhadis
f46e053633 Darken MAXScript's language colour
Rake's tests are failing because #0AA is too similar to the colour being
used by another language (Dart: #00B4AB). This commit increases contrast
enough to satisfy the build (with 00A6A6 being the closest shade allowed
by the current colour threshold).

See also: github/linguist@3c96f9e
2015-11-23 19:04:09 +11:00
Alhadis
d2e739ba8c Update MAXScript submodule to include license file
See also: Alhadis/language-maxscript@96dbacf5b
2015-11-23 19:02:50 +11:00
Alhadis
37174e1d2c Include MAXScript submodule in grammars directory 2015-11-23 17:34:43 +11:00
Alhadis
cdb5206def Define MAXScript's language traits
The colour chosen to represent the language is taken from Autodesk's own
colouring scheme, which should easily be recognised by their userbase.
2015-11-23 17:14:35 +11:00
Alhadis
d636eaf1e3 Add example MAXScript files from Autodesk reference 2015-11-23 17:12:18 +11:00
Arfon Smith
49f3eb1286 Merge pull request #2736 from ppwwyyxx/patch-1
add jquery.fancybox.css to vendor list
2015-11-22 21:16:45 -06:00
Yuxin Wu
8ab94a8643 Use one line for jquery fancybox in vendor
(just another commit to pass CLA check
2015-11-21 21:55:08 -05:00
Yuxin Wu
f72c337c5b add jquery.fancybox.css to vendor list
fancybox has both js and css
2015-11-21 21:48:03 -05:00
Arfon Smith
d22321de07 Merge pull request #2733 from github/cake
.cake
2015-11-19 20:34:36 -06:00
Arfon Smith
473e5db51f Adding sample for Coffeescript too 2015-11-19 20:24:23 -06:00
Arfon Smith
8b9fc4683a Merge branch 'master' into cake 2015-11-19 20:19:08 -06:00
Arfon Smith
3b4415cc3c Merge pull request #2729 from larsbrinkhoff/fortran
Recognise END statement in FORTRAN files.
2015-11-19 20:07:10 -06:00
Arfon Smith
2afce1754a Merge pull request #2731 from soc/patch-1
Change Scala language color to Scala language's main color
2015-11-19 20:06:22 -06:00
Arfon Smith
f232b93214 Merge pull request #2728 from larsbrinkhoff/fs
Add new .eam.fs sample for Formatted.
2015-11-19 20:05:45 -06:00
soc
db64f192fa Change Scala language color to Scala language's main color 2015-11-19 15:25:55 +01:00
Lars Brinkhoff
ca96ecdc55 Recognise END statement in FORTRAN files. 2015-11-19 08:51:13 +01:00
Lars Brinkhoff
2a06d1aa19 Add new sample for Formatted.
Sample from qingguang/lammps-sph; GPL v2 license.
2015-11-19 07:59:31 +01:00
Arfon Smith
b2fa2a1f46 Merge pull request #2655 from iblech/pickle
Detect Pickle data dumps (.p, .pkl, .pickle)
2015-11-16 17:57:53 -06:00
Ingo Blechschmidt
6839516b5c Only classify .pkl files as Pickle data dumps
It seems to be the dominant extension at the moment, even though several
Python resources use `.p` or `.pickle`. This was discussed in #2655.
2015-11-17 00:05:22 +01:00
Arfon Smith
7247c80fac Merge pull request #2722 from github/cut-release-v4.7.1
Cut release v4.7.1
2015-11-12 19:51:41 -06:00
Arfon Smith
01d05d1d4e Bumping to v4.7.1 2015-11-12 18:43:16 -06:00
Arfon Smith
8db4cc482e Grammar update 2015-11-12 18:42:24 -06:00
Arfon Smith
074f17ed98 Merge pull request #2712 from matiasinsaurralde/master
Support for JSCAD files
2015-11-12 18:18:52 -06:00
Arfon Smith
68b553ea55 Updating grammars 2015-11-10 09:57:04 +00:00
Arfon Smith
fd5da9cb15 Merge pull request #2690 from github/licensee-6
Upgrade to licensee 6
2015-11-10 09:41:09 +00:00
Arfon Smith
d081f687b0 Merge branch 'master' into licensee-6 2015-11-10 09:34:39 +00:00
Arfon Smith
34abe5b983 Merge pull request #2717 from meatballhat/supercollider-grammar
Add SuperCollider grammar
2015-11-10 09:31:24 +00:00
Arfon Smith
5765f1faf1 Merge pull request #2718 from meatballhat/travis-apt-update
Fetch libicu via Travis, switch back to container-based
2015-11-10 09:30:04 +00:00
Dan Buch
550b67215c Fetch libicu via Travis, switch back to container-based
This is a test.  I don't understand the details of how the `bundle config
build.charlock_holmes` bit works/fails, so the intent here is to get a PR posted
for purposes of getting feedback via the full Travis machinery.
2015-11-08 06:41:22 -05:00
Dan Buch
d7b2826113 Add SuperCollider grammar
plus a few minor language support updates including:

- recognize `sclang` and `scsynth` interpreters
- set `tm_scope: source.supercollider`
- reorder extensions so that `.sc` is primary
2015-11-08 06:28:14 -05:00
Arfon Smith
b4f94c7c25 Merge pull request #2706 from redroot/add-csl-as-xml-support
adding csl as an extension for XML, included sample
2015-11-05 09:07:49 -08:00
Arfon Smith
d24677adbb Merge pull request #2716 from github/faster-string-tokenizer
Use negative lookbehind when tokenizing string literals
2015-11-05 08:40:34 -08:00
Arfon Smith
04f981eeac Merge pull request #2714 from github/aroben-patch-1
Remove mentions of treatment of vendored files in diffs
2015-11-05 08:14:26 -08:00
Arfon Smith
b53d84d8ff Merge pull request #2600 from manveru/pony-language
Add Pony language
2015-11-05 08:08:38 -08:00
Adam Roben
fea8bb21a0 Use negative lookbehind when tokenizing string literals
This can double the speed of tokenizing large RTF files that use \'hh
escape sequences.
2015-11-05 10:18:44 -05:00
Adam Roben
996ed8a8b1 Remove mentions of treatment of vendored files in diffs
Vendored files are treated just like any other files when diffing on github.com.
2015-11-04 13:26:24 -05:00
Matias Insaurralde
daef164163 adding jscad sample file 2015-11-03 00:24:15 -03:00
Matias Insaurralde
61a5cab1f2 adding extension for OpenJSCAD 2015-11-03 00:03:00 -03:00
Redth
2fddaaf3d7 Reordered extensions so the primary .cs is first 2015-10-31 12:45:54 -04:00
Redth
741d246581 Add .cake extension for C#
This adds the .cake file extension to the C# language.

Here is a search in the wild: https://github.com/search?q=extension%3Acake+NOT+coffee&type=Code

Cake (C# Make) is a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages.

You can find out out more about cake here: http://cakebuild.net/
2015-10-30 15:06:38 -04:00
redroot
1b23e81541 adding csl as an extension for XML, included sample 2015-10-30 10:40:15 +00:00
Arfon Smith
362d300cb0 Blob not FileBlob 2015-10-26 09:06:42 +00:00
Dario Bertini
7b185cc2f3 Switch to MagicPython for Python sources 2015-10-23 20:49:05 +01:00
Arfon Smith
932726863f Merge branch 'master' into licensee-6 2015-10-23 10:29:47 +01:00
Arfon Smith
a35a3e98ce Merge pull request #2702 from github/drop-ruby-1.9.3
Dropping support for Ruby 1.9.3
2015-10-23 10:29:13 +01:00
Arfon Smith
7c404e72d2 Dropping support for Ruby 1.9.3 2015-10-23 10:20:31 +01:00
Arfon Smith
8736e2305d Merge pull request #2700 from pchaigno/django-alias
Django as an alias for HTML+Django
2015-10-22 20:39:14 +01:00
Paul Chaignon
a13664698f Django as an alias for HTML+Django 2015-10-22 20:28:40 +02:00
Arfon Smith
6e934067a8 Merge pull request #2698 from phase/master
Change D color to match the website
2015-10-22 09:26:31 +01:00
phase
3040642f97 Change D color to its logo 2015-10-21 16:42:43 -07:00
phase
dd7e44f957 Change D color to match the website
The original yellow color doesn't fit D very well, and it looks an awful lot like the color for JavaScript. This changes it to the color used on the website's sidebar, and nice dark maroon: http://www.colorpicker.com/2e2324
2015-10-21 15:34:25 -07:00
Arfon Smith
6b56a243e7 Merge pull request #2696 from github/cut-linguist-4.7.0
Bumping to version 4.7.0
2015-10-21 10:19:16 +01:00
Arfon Smith
5d08605aef Bumping to version 4.7.0 2015-10-21 09:04:17 +01:00
Arfon Smith
bf705cbaf2 Grammars update 2015-10-21 09:02:56 +01:00
Arfon Smith
fe827896e0 Merge pull request #2681 from miek/kicad-brd-extension
Add .brd extension for KiCad
2015-10-21 08:55:05 +01:00
Arfon Smith
317219e479 Merge branch 'master' into licensee-6 2015-10-21 08:51:10 +01:00
Arfon Smith
64e7df7596 Merge pull request #2694 from github/memory_blob
Memory blob
2015-10-21 08:49:42 +01:00
Brandon Keepers
33dc865c30 run script/licensor 2015-10-20 17:45:45 -04:00
Brandon Keepers
0d469e2966 Add licensor 2015-10-20 17:44:31 -04:00
Arfon Smith
b3ff84872b Merge branch 'master' into memory_blob 2015-10-20 19:24:43 +01:00
Arfon Smith
5d176a781c Fixing the build :-\ 2015-10-20 19:24:04 +01:00
Arfon Smith
e0c97f97ba Merge branch 'master' into memory_blob 2015-10-20 12:36:26 +01:00
Arfon Smith
83f358976e Fixing up some old MemoryBlob references 2015-10-20 12:33:43 +01:00
Arfon Smith
9ee6153891 Merge pull request #2676 from lucky/master
Support for files generated by Racc.
2015-10-19 12:05:12 +01:00
Arfon Smith
825e640061 Merge pull request #2684 from jeffkreeftmeijer/eex
Add EEx (Embedded Elixir)
2015-10-19 12:02:18 +01:00
Arfon Smith
e5ae213839 Merge pull request #2689 from edendramis/master
Add FreeMarker syntax highlighting
2015-10-19 12:00:38 +01:00
Arfon Smith
74e034c689 Merge pull request #2686 from pchaigno/metal
Support for Metal language
2015-10-19 11:49:36 +01:00
Evangelia Dendramis
a55a60a161 removing group and search term 2015-10-16 18:19:53 -07:00
Brandon Keepers
9d865ec018 license of factor grammar is now detected properly 2015-10-16 15:16:04 -04:00
Brandon Keepers
8b01e3dead Upgrade to licensee 6.0.0b1 2015-10-16 15:15:34 -04:00
edendramis
9e3cc01715 adding FreeMarker to grammars.yml 2015-10-16 09:54:17 -07:00
edendramis
0f204767a9 updating examples 2015-10-15 14:48:20 -07:00
edendramis
11e3251efd adding samples 2015-10-15 14:43:02 -07:00
edendramis
1f1416a5f7 adding freemarker grammar 2015-10-15 14:15:27 -07:00
edendramis
b3786f3825 Merge remote-tracking branch 'upstream/master' 2015-10-15 14:07:13 -07:00
Paul Chaignon
09c2eee91e Support for Metal language 2015-10-13 07:57:58 +02:00
Arfon Smith
dc78b14902 Merge pull request #2683 from hipikat/patch-1
Correct typo ("Any information you [c]an add")
2015-10-12 10:09:17 +01:00
Arfon Smith
500ce0959a Merge branch 'master' into memory_blob 2015-10-12 09:49:22 +01:00
Adam Wright
aa0c9e3572 Correct typo ("Any information you [c]an add") 2015-10-12 14:40:18 +08:00
Mike Walters
e6de75d48a Add .brd extension for KiCad 2015-10-11 23:50:29 +01:00
Arfon Smith
a5ad0a34f8 Merge pull request #2675 from fbonzon/master
Add .phps extension for PHP
2015-10-11 21:32:17 +01:00
Arfon Smith
6e609cc4e3 Merge pull request #2680 from k2b6s9j/patch-1
The Crystal Grammar repository has moved.
2015-10-11 21:31:55 +01:00
Kepler Sticka-Jones
27727a927f The Crystal Grammar repository has moved.
And I'm kinda thinking about changing my GitHub name...
2015-10-10 23:49:07 -06:00
Jared Kuolt
5ff580df0a Support for files generated by Racc.
This changeset includes a sample racc file from [this auto-generated
file](44e9bf0440/lib/rjson/parser.rb)
(MIT-licensed).

[Racc](https://github.com/tenderlove/racc) Racc is an LALR(1) parser
generator. It is written in Ruby itself, and generates ruby programs.
2015-10-09 16:20:59 -07:00
Jeff Kreeftmeijer
b34acac722 Add EEx (Embedded Elixir)
EEx is embedded Elixir: http://elixir-lang.org/docs/v1.0/eex/. Here's
some in-the-wild usage on Github: https://github.com/search?p=100&q=extension%3Aeex+NOT+nothack&ref=searchresults&type=Code&utf8=✓

This uses the "html_elixir" Ace mode, which was added in this pull
request on the Ace project: https://github.com/ajaxorg/ace/pull/2696
2015-10-10 00:20:38 +02:00
François B
37840856ed Add .phps extension for PHP
.phps stands for "PHP Source"

Useful to show examples of PHP code. A properly-configured server will
output a .phps file as is, with color-formated source code instead of
the HTML that would normally be generated.

Usage in GitHub:
https://github.com/search?utf8=%E2%9C%93&q=extension%3Aphps+NOT+nothack&
type=Code

Example taken from:
https://github.com/PHPMailer/PHPMailer/blob/master/examples/mail.phps
2015-10-09 14:43:22 +02:00
Brandon Keepers
acfad4371f Mention alphabetical order in contributing docs
Closes #2649
2015-10-07 19:41:37 -04:00
Arfon Smith
ae42cc0307 Merge pull request #2672 from github/cut-release-v4.6.4
Cut release v4.6.4
2015-10-05 11:15:35 +01:00
Arfon Smith
d06860df37 Bumping version to v4.6.4 2015-10-05 09:45:32 +01:00
Arfon Smith
7d5d162f6b Updating FSharp grammars to match 2015-10-05 09:45:05 +01:00
Arfon Smith
d39a75b68b Grammar updates 2015-10-05 09:41:56 +01:00
Arfon Smith
d72f7311f6 Merge pull request #2648 from jaredpetersen/master
Added .pck PLSQL file extension
2015-10-05 09:23:56 +01:00
Arfon Smith
3f81b7c179 Merge pull request #2640 from wizawu/master
Add new extension .tsx for TypeScript
2015-10-05 09:21:46 +01:00
Arfon Smith
33d1255a5a Merge pull request #2671 from pchaigno/change-stata-grammar-repo
Change Stata grammar repo
2015-10-05 09:15:15 +01:00
Paul Chaignon
0ebea6a0ff Use pschumm/Stata.tmbundle 2015-10-04 20:45:33 +02:00
Paul Chaignon
c28da3a4a9 Remove statatmbundle/Stata.tmbundle grammar 2015-10-04 20:42:29 +02:00
Julian Squires
538f479b60 Add sample Ur/Web files
Taken from tokenrove/parsur so I don't have to worry about license
hassles.  (You may relicense these samples as necessary.)

It would be nice to have an example of the embedded SQL syntax in a
sample.
2015-10-03 08:28:44 -04:00
Julian Squires
88cc73fa49 Add language definition for Ur/Web
I have omitted the related .urp extension because these are small
files (projects) in a different syntax.
2015-10-03 08:28:44 -04:00
wizawu
d6d368a65d Replace the sample file for .tsx extension
The sample file is from https://github.com/Microsoft/TypeScript/blob/master/tests/cases/conformance/jsx/tsxAttributeResolution9.tsx
2015-10-03 11:01:22 +08:00
wizawu
c5be9cc3e9 Add .tsx extension for XML
The sample file is from https://github.com/nyxcharon/tiled/blob/master/src/examples/water.tsx
2015-10-02 19:50:10 +08:00
E
c462c2bd31 add FreeMarker to languages.yml 2015-10-01 13:59:52 -07:00
wizawu
3426165621 Add a TypeScript sample with .tsx extension 2015-09-30 13:45:38 +08:00
Vicent Marti
98b99e38bb Merge pull request #2654 from github/vmg/git-linguist-fixes
Small fixes for git-linguist
2015-09-28 11:12:49 +02:00
Vicent Marti
d8e3bec499 Bump version 2015-09-28 01:45:49 -07:00
Vicent Marti
7c759d4d29 git-linguist: Do not write cache if repo is gone 2015-09-28 01:45:49 -07:00
Vicent Marti
41d438b47e repository: Do not attempt to scan large repos 2015-09-28 01:45:49 -07:00
Vicent Marti
41911d6921 git-linguist: Properly handle $GIT_DIR from git 2015-09-28 01:45:49 -07:00
Arfon Smith
dca18d77cb Merge pull request #2656 from iblech/better-test-description
Clarified that only nonprimary extensions should be sorted
2015-09-27 20:34:30 +01:00
Ingo Blechschmidt
040af5dad2 Clarify that only nonprimary extensions should be sorted 2015-09-25 19:23:06 +02:00
Ingo Blechschmidt
01bb6c37ab Detect Pickle data dumps (.p, .pkl, .pickle) 2015-09-25 19:06:50 +02:00
Jared Petersen
c624d68628 Added .pck PLSQL file extension 2015-09-24 07:59:06 -07:00
Arfon Smith
4867c49bd9 Merge pull request #2642 from github/license-in-gemspec
Include LICENSE in gem
2015-09-23 09:19:18 +01:00
Brandon Keepers
a354eddf4b Update github-linguist.gemspec 2015-09-22 16:33:08 -04:00
Vicent Marti
9b78c533a5 Merge pull request #2641 from github/js-syntax-fix
github-linguist-grammars 4.6.2
2015-09-21 21:56:33 +02:00
Mislav Marohnić
090ea576b9 github-linguist-grammars 4.6.2 2015-09-21 21:23:40 +02:00
Mislav Marohnić
6a2d33a4b3 Bump language-javascript for syntax highlighting fix
This is primarily to pull
https://github.com/atom/language-javascript/pull/227

Full changelog:
c5c381e...7b14bbb (diff-46d5c1ca71eaebb92619d6c7abc9388d)
2015-09-21 19:04:30 +02:00
wizawu
b54a9c7412 Add new extension .tsx for TypeScript
TypeScript 1.6 has introduced a new .tsx file extension.
2015-09-21 13:48:30 +08:00
Vicent Marti
2c62da7834 Merge pull request #2636 from github/vmg/git-linguist-oid
git-linguist: Delay loading @commit_oid
2015-09-16 16:48:12 +02:00
Vicent Marti
0145a0adb2 git-linguist: Delay loading @commit_oid 2015-09-16 05:50:35 -07:00
Vicent Marti
473282d64c Merge pull request #2630 from github/vmg/memory
4.6.0: Reduce memory pressure
2015-09-15 11:19:45 +02:00
Vicent Marti
c2c068e9db Bump version to 4.6.0 2015-09-14 08:43:10 -07:00
Vicent Marti
13d1f662d1 Add the git-linguist helper 2015-09-14 08:42:51 -07:00
Arfon Smith
bdd57f58a0 Merge pull request #2625 from github/handlebars-group
Adding Handlebars to the HTML group
2015-09-09 09:18:11 +01:00
Arfon Smith
b1bcabd6e6 Adding Handlebars to the HTML group 2015-09-08 12:25:05 +01:00
Arfon Smith
e128c3fa82 Merge pull request #2622 from miksen/patch-1
Language bar clarification in README.md
2015-09-08 12:08:42 +01:00
Arfon Smith
efac9fe750 Merge pull request #2624 from pchaigno/jsx-grammar
New JSX language under JavaScript group
2015-09-08 11:01:44 +01:00
Arfon Smith
2b8545a8fa Merge pull request #2567 from pcantrell/objc-import-statement
#import "*.h" detection for Objective-C
2015-09-08 10:53:32 +01:00
Vicent Marti
b275b5d728 Soften memory pressure 2015-09-07 22:03:29 +02:00
Paul Chaignon
1f46cfafa7 New JSX language under JavaScript group
A specific grammar is needed to highlight .jsx files
Thus, there are now in a distinct language but still in the JavaScript group
2015-09-05 13:31:17 +02:00
miksen
b1dcdf3418 Language bar clarification in README.md
Clarified what the percentages in the Language bar are based on.
2015-09-04 11:49:10 +02:00
Paul Cantrell
4bfd65deb8 #import "*.h" detection for Objective-C 2015-09-03 22:10:27 -05:00
Paul Chaignon
213cf322f5 Merge branch 'master' into blob_in_memory 2015-09-04 00:55:39 +02:00
Arfon Smith
61102812a0 Merge pull request #2619 from github/linguist-generated
Adding support for generated overrides
2015-09-03 15:02:16 +01:00
Arfon Smith
580cfce7fb Adding support for generated overrides 2015-09-03 14:39:27 +01:00
Arfon Smith
f1383d7a45 Merge pull request #2616 from scttnlsn/patch-1
Ignore spec fixtures
2015-09-02 18:35:07 +01:00
Scott Nelson
e4ce5bfe39 Ignore spec fixtures 2015-09-02 12:52:25 -04:00
ismail-arilik
4d2b38497d Remove color attributes of 'type: data's. 2015-09-02 18:53:29 +03:00
ismail-arilik
fc5ae1cfbc Revert colors of some languages.
Revert colors of some languages which have 'type: data' attribute.
2015-09-02 17:53:58 +03:00
ismail-arilik
7e76d1cc6b Update Pascal color to fix the closeness issue. 2015-09-02 17:01:38 +03:00
ismail-arilik
cf834e8a21 Update some colors to fix closeness. 2015-09-02 16:23:33 +03:00
ismail-arilik
ee61466042 Update some colors to fix closeness. 2015-09-02 15:58:46 +03:00
ismail-arilik
35884d482c Update some colors to fix closeness. 2015-09-02 15:38:41 +03:00
ismail-arilik
802de8112c Update some colors to fix closeness. 2015-09-02 14:39:19 +03:00
ismail-arilik
9a76cfc85f Update some colors to fix closeness.
I have used syntactic color values with respect to the table below:

A | B C | D | E | F G | H | I | J K | L M | N O | P Q | R S | T U | V W | X | Y Z
0     1     2   3     4     5   6   7      8        9      A      B     C       D    E     F

For example for Gradle the color should be 4B0283, for Cuda the color should be 1C201C(for six-letter CudaCu) and for reStructuredText the color should be B3BCBC(for six-letter reStru).
2015-09-02 14:16:12 +03:00
ismail-arilik
dc41dd888d Update Cuda color to fix closeness. 2015-09-02 13:31:51 +03:00
Arfon Smith
6ed64f25a2 Merge pull request #2607 from Alhadis/master
Add .geojson/.topojson as JSON extensions / Fix NCL colour
2015-09-02 10:13:31 +01:00
ismail-arilik
827ad80311 Update colors to fix collision.
Colors basically incremented.
2015-09-02 10:16:37 +03:00
ismail-arilik
9e3d8ac4e9 Update Batchfile color. 2015-09-02 09:58:14 +03:00
Alhadis
114a331106 Add ".topojson" as a JSON extension 2015-09-02 07:04:51 +10:00
Arfon Smith
9aa24a216a Merge pull request #2612 from github/cut-release-v4.5.15
Cut release v4.5.15
2015-09-01 21:04:40 +01:00
ismail-arilik
1b327e29ba Add colors for some languages.
These are effected languages and the reason behind the proposed colors:

- Ant Build System: The color of logo (http://ant.apache.org/images/project-logo.gif).
- AppleScript: AppleScript editor logo (https://en.wikipedia.org/wiki/AppleScript#/media/File:AppleScript_Editor_Logo.png).
- Batchfile: Batch file icon in Windows (https://en.wikipedia.org/wiki/Batch_file#/media/File:Batch_file_icon_in_Windows_Vista.png).
- Bison: A color taken from a bison (https://en.wikipedia.org/wiki/Bison#/media/File:Americanbison.jpg).
- Cucumber: Official logo color (https://cucumber.io/images/cucumber-logo.svg).
- Cuda: Nvidia(creator of CUDA) logo color (http://www.nvidia.com/content/includes/redesign2010/images/redesign10/nvidia_logo.png).
- Gradle: Official Gradle logo color (https://gradle.org/wp-content/uploads/2015/03/GradleLogoReg.png).
- Hack: Hack logo color (http://hacklang.org/wp-content/themes/hack/hack.png).
- Haml: Haml logo color (http://haml.info/images/haml.png).
- LLVM: Eye color of the dragon logo of LLVM (http://llvm.org/img/DragonMedium.png).
- Less: Less logo color (http://lesscss.org/public/img/logo.png).
- Markdown: The Daring Fireball logo color (http://daringfireball.net/graphics/logos/).
- Maven POM: The maven logo color (https://en.wikipedia.org/wiki/Apache_Maven#/media/File:Maven_logo.svg).
- Nginx: The nginx logo color (http://nginx.org/nginx.png).
- NumPy: The NumPy logo color (http://www.numpy.org/_static/numpy_logo.png).
- RDoc: I couldn'd find any logo, so have used the color of the name of RDoc in the official site (http://docs.seattlerb.org/rdoc/).
- SCSS: The Sass logo color (http://sass-lang.com/assets/img/logos/logo-b6e1ef6e.svg).
- Sass: The Sass logo color (http://sass-lang.com/assets/img/logos/logo-b6e1ef6e.svg).
- XML: A random color.
- XSLT: A random color.
- YAML: The color of the name of YAML in the official site (http://yaml.org/).
- Yacc: A random color.
- reStructuredText: The official logo color (http://docutils.sourceforge.net/rst.png).
2015-09-01 21:51:48 +03:00
Arfon Smith
13702451ab Bumping to v4.5.15 2015-09-01 19:13:02 +01:00
Arfon Smith
f0242f6f97 Updating grammars 2015-09-01 19:12:27 +01:00
Arfon Smith
9775820398 Merge pull request #2591 from jtbandes/master
Vendored definitions for Xcode-related files
2015-09-01 18:53:08 +01:00
Matěj Týč
26a35ea43d added aclocal to the generated files list 2015-09-01 17:51:18 +02:00
Matěj Týč
81ebef2e29 Added autoconf output, removed configure.ac 2015-09-01 17:49:01 +02:00
Arfon Smith
7daf26bcd0 Merge pull request #2604 from larsbrinkhoff/alphabetise-heuristics
Alphabetise heuristics.
2015-09-01 15:25:49 +01:00
Arfon Smith
231f705098 Merge pull request #2606 from thejameskyle/jsproj
Add .jsproj extension
2015-09-01 15:23:53 +01:00
Arfon Smith
893ab8fd8d Merge pull request #2610 from ismail-arilik/patch-1
Add color for the PL/SQL language.
2015-09-01 15:20:49 +01:00
ismail-arilik
5afdd2c533 Add color for the PL/SQL language.
I have added color to the PL/SQL language: #dad8d8. I take this color from a window background which evokes the interface of the language.
2015-09-01 14:23:59 +03:00
Lars Brinkhoff
e4f5c0066a Add checks to keep heuristics alphabetised. 2015-09-01 08:21:34 +02:00
Alhadis
a167f852dd Alphabetise JSON extensions 2015-09-01 07:33:07 +10:00
Alhadis
b428bce126 Quote NCL language's colour value
Without double-quotes, the hex colour is interpreted as a YAML comment.

Originally added in 2d39258.
2015-09-01 07:24:17 +10:00
Alhadis
e62d0e19a5 Add ".geojson" as a JSON extension 2015-09-01 07:12:18 +10:00
James Kyle
9b8bf9068f Move jsproj example to xml directory 2015-08-31 11:35:01 -07:00
James Kyle
6e05edc350 Add .jsproj extension 2015-08-31 10:26:29 -07:00
Lars Brinkhoff
dd8eaf2893 Alphabetise heuristics. 2015-08-31 08:53:51 +02:00
Matěj Týč
1068cfb4b5 Removed stray M4 attribute 2015-08-30 15:25:42 +02:00
Matěj Týč
73b1737dc7 Removed a typo 2015-08-30 15:09:45 +02:00
Matěj Týč
1d86f40fcd Added m4sugar language, moved samples to right locations. 2015-08-30 15:03:55 +02:00
Michael Fellinger
ecc750f445 Merge branch 'master' of https://github.com/github/linguist into origin/patch-1
* 'master' of https://github.com/github/linguist:
  Switch to Apache License.
  also add help for unapproved licenses
  Update X10 grammar license.
  add some help text to license test
  Fix typo in Obj-C heuristic keyword
  Add the X10 language (http://x10-lang.org/).
  Sublime Text workspace files as vendored
  Make Slick regexp more general
  Tests for new vendored files
  Test for new CodeMirror regexp
  New JS vendored files
  Fix CodeMirror regex for vendored files
  added *.lslp to samples/LSL folder
  added *.lslp as LSL(Linden Scripting Language)

Conflicts:
	.gitmodules
2015-08-28 14:08:31 -04:00
Michael Fellinger
cf5268a7d4 add Pony language 2015-08-28 14:04:10 -04:00
Matěj Týč
59fb481138 Added pure m4 example 2015-08-27 15:40:10 +02:00
Matěj Týč
16e22b3b77 Added M4 samples 2015-08-27 15:37:32 +02:00
Ben Balter
e24efad5ff Merge pull request #2594 from github/license-help
Add some additional help text to license test
2015-08-26 14:55:37 -04:00
Arfon Smith
58a34cdb7d Merge pull request #2589 from mandel/master
Add the X10 language.
2015-08-26 19:36:54 +01:00
Louis Mandel
b1c6b330e9 Switch to Apache License. 2015-08-26 14:26:30 -04:00
Ben Balter
7c3e265033 also add help for unapproved licenses 2015-08-26 12:31:29 -04:00
Louis Mandel
13695a716c Update X10 grammar license. 2015-08-26 09:46:02 -04:00
Ben Balter
c9e43804d6 add some help text to license test 2015-08-26 09:26:04 -04:00
Arfon Smith
1535e3553e Merge pull request #2580 from LeonaMorro/master
add *.lslp as an additional extension for LSL (LindenScriptingLanguage)
2015-08-26 14:09:48 +01:00
Arfon Smith
0ac05bbbeb Merge pull request #2582 from pchaigno/vendor-libraries
Vendored JS files
2015-08-26 14:02:57 +01:00
Arfon Smith
d3f979d640 Merge pull request #2592 from jtbandes/typo
Fix typo in Obj-C heuristic keyword
2015-08-26 12:52:05 +01:00
Jacob Bandes-Storch
0e9ded45dc Fix typo in Obj-C heuristic keyword
`synchronised` → `synchronized`
2015-08-26 00:34:00 -07:00
Jacob Bandes-Storch
a2ca886510 Vendored definitions for Xcode-related files 2015-08-25 23:42:20 -07:00
Matěj Týč
aa701c6766 Update languages.yml 2015-08-25 01:09:42 +02:00
Louis Mandel
25a1af3775 Add the X10 language (http://x10-lang.org/). 2015-08-24 13:26:43 -04:00
Paul Chaignon
0d8e0a2970 Sublime Text workspace files as vendored 2015-08-24 12:32:26 +02:00
Paul Chaignon
c0fff6c8a8 Make Slick regexp more general 2015-08-21 12:30:01 +02:00
Paul Chaignon
e6b4428614 Tests for new vendored files 2015-08-21 12:24:04 +02:00
Paul Chaignon
4e6e69833d Test for new CodeMirror regexp 2015-08-21 12:15:17 +02:00
Paul Chaignon
1d9faff4c6 New JS vendored files 2015-08-21 12:13:42 +02:00
Paul Chaignon
7025cbe760 Fix CodeMirror regex for vendored files 2015-08-21 12:12:52 +02:00
LeonaMorro
e922b7c2ca added *.lslp to samples/LSL folder 2015-08-21 11:44:23 +02:00
LeonaMorro
96518d2d0f added *.lslp as LSL(Linden Scripting Language) 2015-08-21 11:17:12 +02:00
Arfon Smith
1241b20ba1 Merge pull request #2578 from blakeembrey/correct-raml-type
Make RAML a markup language
2015-08-20 20:56:21 +01:00
Ben Balter
f03f5c1628 Merge pull request #2568 from github/licensee
Use Licensee to classify submodule licenses
2015-08-20 15:42:50 -04:00
Ben Balter
cb550a3662 remove some random submodules 2015-08-20 15:30:51 -04:00
Ben Balter
d1f90d61c5 Merge branch 'master' into licensee 2015-08-20 15:25:15 -04:00
Blake Embrey
16e65fe189 Make RAML a markup language
RAML was originally merged as a data language, but this seems like an incorrect definition. I changed it to be markup instead, which will also result in RAML appearing in repo statistics.
2015-08-20 10:07:44 -07:00
Ben Balter
62a0faa729 let us 2015-08-20 12:23:52 -04:00
Ben Balter
fbb3ab2292 batch license test output 2015-08-20 11:38:31 -04:00
Arfon Smith
b3b75e5ef8 Merge pull request #2574 from github/perl-t
Adding Perl/Perl6 heuristic for '.t'
2015-08-20 10:29:52 +01:00
Arfon Smith
8b36210db5 Merge pull request #2573 from a0viedo/patch-1
relativize link in readme
2015-08-20 10:25:02 +01:00
Arfon Smith
a74f3b3e46 Adding Perl/Perl6 heuristic for '.t' 2015-08-20 10:16:52 +01:00
Alejandro Oviedo
e214a52de5 relativize link in readme
...so it could link properly in other branches and forks.
2015-08-19 19:15:05 -03:00
Arfon Smith
0624a9395c Merge pull request #2571 from pchaigno/prolog-grammar
New grammars for Prolog and ECLiPSe
2015-08-19 21:44:13 +01:00
Arfon Smith
b2e7f7ffa6 Merge pull request #2570 from pchaigno/typescript-grammar
New grammar for Typescript
2015-08-19 21:41:15 +01:00
Arfon Smith
b312b39a10 Merge pull request #2572 from pchaigno/rmarkdown-tmscope
TextMate scope for RMarkdown
2015-08-19 21:38:42 +01:00
Paul Chaignon
80e2d112b2 tm_scope for RMarkdown 2015-08-19 22:07:23 +02:00
Paul Chaignon
519b169df0 New grammar for Typescript from Sublime Text package 2015-08-19 21:30:24 +02:00
Paul Chaignon
5c2cfbc334 Remove Typescript grammar 2015-08-19 21:27:40 +02:00
Paul Chaignon
7d91e4959a Dissociate ECLiPSe from Prolog
ECLiPSe syntax is slightly different from Prolog syntax
ECLiPSe is in the Prolog group so it will only be highlighted differently
2015-08-19 20:56:14 +02:00
Paul Chaignon
0c5aa2a7eb Merge branch 'master' into prolog-grammar 2015-08-19 20:46:15 +02:00
Paul Chaignon
0d7a264981 Update submodule for Prolog grammar 2015-08-19 20:43:16 +02:00
Arfon Smith
52ff2d2e74 Merge pull request #2557 from pchaigno/mozilla-public-license
Recognize the Mozilla Public License for grammars
2015-08-19 19:21:33 +01:00
Ben Balter
8a7ceaa845 bump licensee to support ruby 1.9.3 2015-08-19 13:22:31 -04:00
Ben Balter
fd9ce2d1cf use licensee to classify submodule licenses 2015-08-19 12:54:21 -04:00
Paul Chaignon
2c2b37bec3 Reorganize tests
Rename test_memory_blob.rb to test_blob.rb for consistence with last commit
2015-08-19 18:07:42 +02:00
Paul Chaignon
c777f2d388 Merge branch 'master' into blob_in_memory 2015-08-19 18:02:31 +02:00
Paul Chaignon
eca10056a8 Rename MemoryBlob to Blob 2015-08-19 17:29:35 +02:00
Arfon Smith
c7bab11ebe Merge pull request #2566 from github/cut-release-v4.5.14
v4.5.14 version bump
2015-08-19 10:36:52 +01:00
Arfon Smith
6995fc28b6 v4.5.14 version bump 2015-08-19 07:01:07 +01:00
Arfon Smith
102f14d0e9 Grammars update 2015-08-19 06:59:39 +01:00
Arfon Smith
aac168402b Merge pull request #2565 from pchaigno/aspectj-grammar
Grammar for AspectJ
2015-08-19 06:49:16 +01:00
Paul Chaignon
152d49513f Grammar for AspectJ from Sublime Text package 2015-08-19 00:11:34 +02:00
Arfon Smith
d5564c808d Merge pull request #2560 from larsbrinkhoff/sexp
Add .sexp to Common Lisp.
2015-08-18 21:15:46 +01:00
Lars Brinkhoff
82410e07b2 Add .sexp to Common Lisp.
config.sexp by Jeremie Dimino; Apache License 2.0.
rss.sexp by Dan Lentz; LGPL 2.1.
2015-08-18 12:45:47 +02:00
Arfon Smith
94d90b30b5 Merge pull request #2561 from pchaigno/labview-xml
Highlight LabVIEW files as XML
2015-08-18 12:25:38 +02:00
Paul Chaignon
06997f0da2 Fix scope of grammar for LabVIEW 2015-08-14 14:17:32 +02:00
Paul Chaignon
55aafa416d Highlight LabVIEW files as XML 2015-08-14 13:56:28 +02:00
Paul Chaignon
6226a46988 Recognize the Mozilla Public License for grammars 2015-08-13 17:35:01 +02:00
Paul Chaignon
8d216f0c43 Grammar for Prolog from Sublime Text package
MPLv2 License is currently unrecognized
2015-08-13 17:15:04 +02:00
Paul Chaignon
7f5bb25542 Remove grammar for Prolog from TextMate bundle 2015-08-13 16:56:21 +02:00
Arfon Smith
5fcdf6adc2 Merge pull request #2555 from larsbrinkhoff/zone
Add .arpa to DNS Zone.
2015-08-13 10:18:51 +01:00
Lars Brinkhoff
6a565a849b Add .arpa to DNS Zone.
sample.arpa by Freeswitch project; Mozilla Public License 1.1.
2015-08-13 07:38:17 +02:00
Arfon Smith
66fc67e34c Merge pull request #2554 from github/mcandre-master
DNS Zone files
2015-08-12 18:54:04 +01:00
Arfon Smith
7cf140940e Fixing up the build 2015-08-12 17:20:29 +01:00
Arfon Smith
60e90bab23 Removing un-used Bind bundle 2015-08-12 17:06:39 +01:00
Arfon Smith
4f58258186 Removing erroneous submodule 2015-08-12 17:05:57 +01:00
Arfon Smith
03e2904ebf Merge branch 'master' of https://github.com/mcandre/linguist into mcandre-master 2015-08-12 15:15:28 +01:00
Andrew Pennebaker
bea90b256e use st2-zonefile (MIT licensed) instead of Bind.tmbundle (unlicensed) 2015-08-11 14:01:45 -05:00
Arfon Smith
8eb37ba956 Merge pull request #2541 from github/reworking-documentation-paths
Reworking documentation paths
2015-08-11 09:44:19 +01:00
Arfon Smith
8d20c1fb59 More inclusive documentation matches for License and Readme files 2015-08-11 09:39:41 +01:00
Arfon Smith
9a1abf0c49 Merge branch 'master' into reworking-documentation-paths 2015-08-11 09:10:08 +01:00
Arfon Smith
5aae7a4000 Merge pull request #2552 from github/cut-release-v4.5.13
Bumping version to v4.5.13
2015-08-11 07:50:53 +01:00
Arfon Smith
d9509a1750 Bumping version to v4.5.13 2015-08-11 07:01:05 +01:00
Arfon Smith
978c448fb8 Merge pull request #2551 from github/name-checkin
Catching one more edge case
2015-08-11 06:53:25 +01:00
Arfon Smith
997c0fca10 Catching one more edge case 2015-08-11 06:48:54 +01:00
Arfon Smith
3ae6e68492 Merge pull request #2549 from github/name-checkin
Don't blow up if empty string/nil passed to alias methods
2015-08-10 22:17:07 +01:00
Arfon Smith
851c93a1f7 Don't blow up if empty string/nil passed to alias methods 2015-08-10 22:07:28 +01:00
Arfon Smith
a5f7355e16 Merge pull request #2547 from github/grammars
Grammar updates
2015-08-10 15:10:20 +01:00
Arfon Smith
18ffdbaa65 Grammar updates 2015-08-10 15:07:27 +01:00
Arfon Smith
c089222bc6 Merge pull request #2545 from pchaigno/yaml-tmlanguage
YAML extensions for TextMate and Sublime Text grammars
2015-08-10 09:54:20 +01:00
Arfon Smith
37f9535d27 Merge pull request #2546 from ammaraskar/master
Make regex for vim modeline more lenient
2015-08-10 09:53:46 +01:00
Ammar Askar
4650368bc2 Make regex for vim modeline more lenient
This change allows the filetype/language to be retrieved from more complex vim modelines. The current regex strictly allows a set line which contains only the filetype/ft parameter and nothing else
2015-08-10 00:42:14 -05:00
Paul Chaignon
88b14ed455 .syntax extension for YAML 2015-08-09 14:13:48 +02:00
Paul Chaignon
54a2a47bc0 YAML-tmLanguage extension for YAML 2015-08-09 14:11:01 +02:00
Arfon Smith
ffcc970140 Merge pull request #2542 from github/brewfile
Highlight Brewfile as Ruby
2015-08-07 22:26:55 +01:00
Joshua Peek
7a811e39e0 Add sample Brewfile 2015-08-07 14:01:08 -07:00
Joshua Peek
11f158cbb3 Highlight Brewfile as Ruby 2015-08-07 11:12:30 -07:00
Arfon Smith
5d5550c48b Moving vendored definitions to documentation 2015-08-07 10:42:31 +01:00
Arfon Smith
fd570d906a Adding examples path to documentation.yml 2015-08-07 10:35:18 +01:00
Arfon Smith
deab0662f9 Merge pull request #2447 from Ryman/rustup
Split on comma in language name if no match is found
2015-08-07 10:28:21 +01:00
Arfon Smith
7238f50a6b Merge pull request #2539 from rji/puppet-lang-updates
Updates for the Puppet language
2015-08-07 10:25:32 +01:00
Arfon Smith
499fcd1f3f Merge pull request #2540 from pchaigno/makefile.inc
Filename Makefile.inc for Makefile
2015-08-06 09:33:55 +01:00
Paul Chaignon
dc0ddc82d6 Filename Makefile.inc for Makefile 2015-08-06 10:08:30 +02:00
Arfon Smith
436fc34cb9 Merge pull request #2538 from BerkeleyTrue/patch-1
Add codemirror's demo directory
2015-08-06 09:01:01 +01:00
Roger Ignazio
f072cd96e3 Add hiera_include() sample for the Puppet language
Prior to this commit, some Puppet files were being incorrectly
identified as Pascal when they contained only the following content:

  hiera_include('classes')

This commit adds a hiera_include() sample to for the Puppet language to
correct this behavior.
2015-08-05 14:02:09 -07:00
Roger Ignazio
3441a001c7 Modify Puppet color based on style guide
Prior to this commit, the Puppet language was colored to #332A77. The
Puppet Labs style guide (https://puppetlabs.com/styleguide/brand)
specifies Puppet Dark Purple to be #302B6D. Alternately, Puppet Purple,
a lighter variant, may be used: #7C6AAB.

Keeping with the dark purple theme, this commit modifies the Puppet
language to use Puppet Dark Purple, hex #302B6D.
2015-08-05 14:00:08 -07:00
Berkeley Martinez
bc747844ea Add codemirror's demo directory
This accounts for about ~150 html files throwing off the statistics of one of my projects
2015-08-05 12:22:21 -07:00
Arfon Smith
a887f58bcc Merge pull request #2537 from imsys/xbase-extra
#2504 - xBase aliases and extension .prw
2015-08-05 14:06:24 +01:00
Arthur Helfstein Fragoso
f42afef6e0 order - .prw should come after .ch
1) Failure:
TestPedantic#test_extensions_are_sorted
[/home/arthur/Projects/linguist/test/test_pedantic.rb:15]:
.prw should come after .ch
2015-08-05 05:58:02 -03:00
Arthur Helfstein Fragoso
18eaf22cb9 Added xBase/AdvPL sample file 2015-08-05 05:19:41 -03:00
Arthur Helfstein Fragoso
d94f427e12 xBase: Add aliases and extension .prw
xBase: Add aliases:
* advpl
* clipper
* foxpro

And the extension .prw
2015-08-05 05:06:11 -03:00
Arfon Smith
b94eb42db6 Merge pull request #2536 from github/slim-grammar
Adding Slim tm_scope
2015-08-04 22:04:25 +01:00
Arfon Smith
d2297f5516 Adding Slim tm_scope 2015-08-04 21:56:11 +01:00
Arfon Smith
ef6f58b828 Merge pull request #2535 from pchaigno/heuristics-case-insensitive
Case-insensitive extension match for heuristic rules
2015-08-04 21:35:54 +01:00
Paul Chaignon
eb0bf16cce Case-insensitive extension match for heuristic rules 2015-08-04 17:28:52 +02:00
Arfon Smith
ca51415540 Merge pull request #2534 from github/cut-release-v4.5.11
Bumping version to v4.5.11
2015-08-04 14:05:10 +01:00
Arfon Smith
8ae32e1d47 Bumping version to v4.5.11 2015-08-04 13:29:52 +01:00
Arfon Smith
0a6165c4d9 Updating csharp scopes 2015-08-04 13:27:21 +01:00
Arfon Smith
cf8521a629 Grammar updates 2015-08-04 13:18:27 +01:00
Arfon Smith
b11c7f3dc0 Merge pull request #2513 from yyx990803/master
add syntax highlight for *.vue component files
2015-08-04 12:47:12 +01:00
Arfon Smith
01151aad5c Merge pull request #2533 from github/rrebol
Adding back R/Rebol heuristics
2015-08-04 12:45:44 +01:00
Arfon Smith
6b283068a9 Adding back R/Rebol heuristics 2015-08-04 12:20:15 +01:00
Arfon Smith
ccd7d4d89d Merge pull request #2532 from github/heuristic-fixes
Fixing up some new heuristics
2015-08-04 12:11:17 +01:00
Arfon Smith
208ec3906f Fixing up some new heuristics 2015-08-04 12:06:41 +01:00
Arfon Smith
84d4fccb4d Merge pull request #2441 from pchaigno/associate-heuristic-with-extension
Associate heuristic rules with file extensions
2015-08-04 12:00:47 +01:00
Arfon Smith
8d8ea959ee Merge pull request #2527 from radeksimko/hcl-as-ruby
Parse HCL as Ruby, not JavaScript
2015-07-30 14:42:46 +01:00
Radek Simko
1c73db499f Parse HCL as Ruby, not JavaScript 2015-07-30 11:31:06 +01:00
Arfon Smith
16a4b4947f Merge pull request #2526 from github/cut-releasev4.5.10
Bumping to v4.5.10
2015-07-29 15:21:31 +01:00
Arfon Smith
4b2abb2064 Bumping to v4.5.10 2015-07-29 14:50:11 +01:00
Arfon Smith
c581b6a5a7 Merge pull request #2525 from github/grammars-update
Grammars update
2015-07-29 14:37:08 +01:00
Arfon Smith
4c66582f87 Grammars update 2015-07-29 14:27:35 +01:00
Arfon Smith
11388a5355 Merge pull request #1899 from sethvargo/patch-1
Add HCL to languages.yml
2015-07-29 14:14:38 +01:00
Arfon Smith
24ca98b1a3 Merge pull request #2524 from github/more-encompassing-number-skips
More encompassing number skips
2015-07-29 14:07:04 +01:00
Arfon Smith
90a293727d Merge branch 'master' into more-encompassing-number-skips 2015-07-29 13:54:51 +01:00
Arfon Smith
e869f6c173 Merge pull request #2438 from edm00se/master
add support for XPages
2015-07-25 17:52:01 +01:00
Evan You
5b187d1f20 update vue-syntax-highlight version 2015-07-24 23:40:43 -04:00
Evan You
7b5d1c075d add syntax highlight for *.vue component files 2015-07-21 18:51:55 -04:00
Arfon Smith
07173d2238 Merge pull request #2515 from github/xbase-ch
xBase .ch
2015-07-21 15:26:45 +01:00
Arfon Smith
6b747f7d65 Adding Charity and heuristic for xBase .ch files 2015-07-21 14:59:47 +01:00
Arfon Smith
aef19d72f9 Merge branch 'master' into xbase-ch 2015-07-21 13:55:59 +01:00
Arfon Smith
e1a661bffc Merge pull request #2506 from hdgarrood/master
Use a different grammar for PureScript
2015-07-21 13:37:05 +01:00
Arfon Smith
560f9b15d7 Merge pull request #2510 from joelparkerhenderson/master
Add documentation categorization for CHANGELOG et. al.
2015-07-20 16:30:57 +01:00
Paul Chaignon
452fc59d4f Merge branch 'master' into associate-heuristic-with-extension 2015-07-20 13:08:13 +02:00
ziggi
ed4bbe97d1 Back to uppercase name 2015-07-20 12:07:27 +03:00
ziggi
f05c437221 Update submodule 2015-07-20 10:05:11 +03:00
Joel Parker Henderson
682cc2d82d Add documentation categorization for CHANGELOG et. al. 2015-07-19 19:36:12 -06:00
Harry Garrood
29197736c7 Use a different grammar for PureScript 2015-07-19 09:18:09 +01:00
ziggi
483488a2fa Add .inc extension for Pawn 2015-07-18 03:55:51 +03:00
ziggi
b36c4f2428 TextMate for Pawn 2015-07-18 03:27:07 +03:00
Arfon Smith
e1dbd68713 Merge branch 'master' of github.com:github/linguist 2015-07-16 14:43:21 -07:00
Arfon Smith
0ecb865797 Merge branch 'rpavlick-master' 2015-07-16 14:40:52 -07:00
Arfon Smith
1ced06483e Merge branch 'master' of https://github.com/rpavlick/linguist into rpavlick-master 2015-07-16 14:40:21 -07:00
Garen Torikian
861cee33d5 Merge pull request #2502 from vszakats/patch-1
CONTRIBUTING.md: minor URL cleanups
2015-07-15 15:40:51 -07:00
Viktor Szakats
6b882438b0 CONTRIBUTING.md: minor URL cleanups
use `https://` and `.svg`, follow a redirect.
2015-07-15 13:39:27 +02:00
Arfon Smith
c570646c2d Merge pull request #2500 from github/cut-release-v4.5.9
Cut release v4.5.9
2015-07-14 16:22:23 -07:00
Arfon Smith
75f72578ad Bumping version to v4.5.9 2015-07-14 08:59:32 -07:00
Arfon Smith
4dc566e13f Updating OpenEdge-ABL grammars 2015-07-14 08:58:59 -07:00
Arfon Smith
bcfdbe3616 Grammars update 2015-07-14 08:56:44 -07:00
Arfon Smith
314b7f134d Merge pull request #2499 from vszakats/xgramm
add grammar for xbase and harbour languages
2015-07-14 08:48:24 -07:00
Eric McCormick
87eb4577ea trying this again 2015-07-13 21:31:02 -05:00
Eric McCormick
7563bf43e9 Revert "removed samples"
This reverts commit ce8cfed7ff.
2015-07-13 21:28:36 -05:00
Eric McCormick
ce8cfed7ff removed samples 2015-07-13 21:22:54 -05:00
Eric McCormick
8742de9a88 pulling .xsp, .form, .view from PR
Per comment in [PR 2438](https://github.com/github/linguist/pull/2438#issuecomment-120588670), pulling all but .xsp-config and .xsp.metadata for uniqueness and non-overlapping assignment based on file extension. This should be set / overridden in the `.gitattributes` file, [as demonstrated here](https://github.com/edm00se/AnAppOfIceAndFire/blob/master/.gitattributes), to assign the XPages language to the project files.
2015-07-13 21:11:06 -05:00
Arfon Smith
9c0af2ea5b Merge pull request #2488 from github/code-of-conduct
Add code of conduct to contributing guidelines
2015-07-13 15:14:20 -07:00
Viktor Szakats
4c81c0d904 add grammar for xbase and harbour languages 2015-07-13 15:28:42 +02:00
Viktor Szakats
4dcdb0c79c xBase: add .ch extension + sample 2015-07-13 10:32:08 +02:00
Paul Chaignon
5a646384f6 FileBlob extends MemoryBlob 2015-07-12 20:56:51 +02:00
Paul Chaignon
8917f1a91a MemoryBlob class: wrapper around the content of a file
Makes it possible to detect the language of a snippet of code
without having an actual file on disk
Will allow github-markup to use Linguist without restricting its API
2015-07-12 20:28:42 +02:00
Arfon Smith
d459f7289e Merge pull request #2493 from miek/patch-1
Add .kicad_pcb extension for KiCad PCB design files
2015-07-12 13:44:17 +01:00
Arfon Smith
d2c4104d30 Merge pull request #2494 from k2b6s9j/crystal-grammar
Use a Crystal grammar over the Ruby grammar for Crystal files.
2015-07-12 13:42:53 +01:00
Kepler Sticka-Jones
89fabd9a89 Use a Crystal grammar over the Ruby grammar for Crystal files.
The Crystal does have several little differences which distinguish it from Ruby. Thus it needs it's own grammar.
2015-07-11 09:24:22 -07:00
Mike Walters
3f7ce832ab Add .kicad_pcb extension for KiCad PCB design files 2015-07-11 16:34:05 +01:00
Arfon Smith
3fdc904b18 Merge pull request #2487 from thorade/issue2486_Modelica
more samples for Modelica language,
2015-07-11 07:59:48 +01:00
Arfon Smith
cf471af677 Merge pull request #2483 from github/cut-release-v4.5.8
v4.5.8 release
2015-07-10 22:57:07 +01:00
rpavlick
2d392581e2 adding NCL language 2015-07-09 07:17:01 -07:00
Arfon Smith
79a428ab8d Merge pull request #2180 from pchaigno/inc-extension
.inc file extension
2015-07-08 19:25:50 +01:00
Brandon Keepers
7ed1b9b0b1 Add code of conduct to contributing guidelines 2015-07-08 14:10:59 -04:00
thorade
58fd8a5d87 more samples for Modelica language,
see issue #2486
2015-07-07 12:40:37 +02:00
Paul Chaignon
9f8c15ed6c Merge branch 'master' into inc-extension 2015-07-05 14:45:35 +02:00
Paul Chaignon
b94eda18ab New .inc Pascal samples 2015-07-05 12:48:22 +02:00
Paul Chaignon
849eb28b01 New .inc SourcePawn samples 2015-07-05 12:48:12 +02:00
Paul Chaignon
b0073d461c New .inc C++ samples 2015-07-05 12:47:57 +02:00
Paul Chaignon
25d160e850 Merge branch 'master' into associate-heuristic-with-extension 2015-07-04 23:03:32 +02:00
Paul Chaignon
e688c865bc Merge branch 'master' into associate-heuristic-with-extension 2015-07-04 22:48:06 +02:00
Arfon Smith
21e97cc65c Merge pull request #2170 from pchaigno/mod-extension
.mod extension
2015-07-04 20:57:40 +01:00
Paul Chaignon
06c1033952 Fix error from merge conflicts 2015-07-04 18:04:19 +02:00
Paul Chaignon
8c54f68040 Fix conflicts from merging master into 'mod-extension' 2015-07-04 18:01:56 +02:00
Arfon Smith
4c1f5c490f Merge pull request #2484 from pchaigno/fix-g-code-samples
Remove incorrect G-code samples
2015-07-04 16:58:42 +01:00
Arfon Smith
117735ffb9 Merge pull request #2179 from pchaigno/symlinks
Ignore symbolic links
2015-07-04 16:57:43 +01:00
Paul Chaignon
f98e6bdac7 Use proper format for symlinks, submodules and trees 2015-07-04 17:14:30 +02:00
Paul Chaignon
19d76306d3 Remove incorrect samples 2015-07-04 12:33:41 +02:00
Arfon Smith
a63a609ce1 v4.5.8 release 2015-07-04 10:36:45 +01:00
Arfon Smith
95fce2024d Merge pull request #2482 from github/grammar-updates
Grammar updates
2015-07-04 07:02:29 +01:00
Arfon Smith
f3b65015f4 Grammar updates 2015-07-04 06:55:51 +01:00
Arfon Smith
5431298b0d Merge pull request #2481 from github/1823-local
Isabelle ROOT support (updated PR)
2015-07-04 06:19:02 +01:00
Arfon Smith
8f651bca03 Adding PHP sample file for completeness 2015-07-04 06:01:06 +01:00
Arfon Smith
6c45e5ec19 Merge branch 'master' into 1823-local 2015-07-04 05:46:23 +01:00
Arfon Smith
95d394642c Merge pull request #2478 from mattn/perl-test-more
Append Test::More into strict.t
2015-07-04 05:32:30 +01:00
mattn
6a185a3d3a remove some text contents from test.pl since it affect to heuristic search. 2015-07-04 02:29:01 +09:00
Arfon Smith
6ae353706d Merge pull request #2479 from SRI-CSL/master
SMT-LIB language support
2015-07-01 14:10:28 -05:00
Ian A. Mason
77bc72be14 Added an ace mode, and put the SMT entry in the correct place, maybe. 2015-07-01 11:22:04 -07:00
Bruno Dutertre
0585c880de Example smt2 files 2015-07-01 10:38:17 -07:00
mattn
da5189e7fb Append Test::More into strict.t. Because, most of tap scripts on Perl5 are detected as Perl6. 2015-07-01 16:23:38 +09:00
Ian A. Mason
5f456d8b22 Some part way through the adding a language checklist. 2015-06-30 15:29:02 -07:00
Vicent Marti
a351cdd486 Merge pull request #2477 from github/vmg/release-4.5.7
Rrelease 4.5.7
2015-06-30 14:58:18 +02:00
Arfon Smith
6e71663fd6 Merge pull request #2463 from pchaigno/doc-add-extension
Instructions to add a new extension to a language
2015-06-29 21:18:47 -05:00
Arfon Smith
0b2e43cdee Merge pull request #2457 from drewcrawford/master
Adding some more vendered expressions
2015-06-29 21:16:08 -05:00
Paul Chaignon
9cbd280f79 New .inc SourcePawn sample 2015-06-28 16:05:47 +02:00
Paul Chaignon
947be9db0f New .inc Pascal sample 2015-06-28 15:54:25 +02:00
Paul Chaignon
dd55f929d4 New .inc HTML sample 2015-06-28 15:27:59 +02:00
Paul Chaignon
8b5399d568 New C++ .inc sample 2015-06-28 14:33:54 +02:00
Paul Chaignon
1b8b0c6229 New .inc Assembly samples 2015-06-28 13:24:42 +02:00
Vicent Marti
ee3081fb4c Bump to 4.5.7 2015-06-26 03:34:18 -07:00
Vicent Marti
119770a038 Update grammars 2015-06-26 03:33:37 -07:00
Vicent Marti
9d61487403 gemspec: Loosen up the restriction on Rugged betas 2015-06-26 03:11:31 -07:00
Paul Chaignon
56dec47561 Merge branch 'master' into inc 2015-06-21 14:20:53 +02:00
Paul Chaignon
3e793ab5b7 Precision on requirements to add a language 2015-06-21 10:07:18 +02:00
Garen Torikian
f6b50a67f9 Change Haxe and Ragel colors to pass tests 2015-06-20 09:55:33 -07:00
Zalim Bashorov
cd47798d13 try to fix conflicts 2015-06-20 09:49:51 -07:00
Zalim Bashorov
3b54df2cde Change color for Kotlin based on color in logo
IMHO it's more suitable.
2015-06-20 09:49:51 -07:00
Paul Chaignon
8bf1defdc1 Merge branch 'master' into associate-heuristic-with-extension
Conflicts:
	lib/linguist/heuristics.rb
2015-06-18 21:54:59 +02:00
Drew Crawford
8845b266de Adding some more vendered expressions
* `Vendor/`, the capitalized path
* Crashlytics, a common iOS framework
* Fabric, a common iOS framework
2015-06-17 21:25:54 -05:00
Arfon Smith
4757da73f0 Merge pull request #2456 from github/cut-release-v4.5.6
Cut release v4.5.6
2015-06-17 09:45:38 -05:00
Arfon Smith
468fd425fc Bumping to v4.5.6 2015-06-17 09:03:29 -05:00
Arfon Smith
5604d658b2 Bringing dart scopes up to date 2015-06-17 08:59:27 -05:00
Arfon Smith
37222d5622 Updating grammars 2015-06-17 08:54:56 -05:00
Arfon Smith
ec38b54023 Merge pull request #2449 from larsbrinkhoff/picolisp
Add PicoLisp language
2015-06-16 09:10:21 -05:00
Lars Brinkhoff
260e90401d Add samples for .l.
array.l by NANRI southly; MIT license.
simul.l by Alexander Burger; MIT license.
2015-06-16 06:51:58 +02:00
Lars Brinkhoff
8c66f0a5da Heuristic for PicoLisp. 2015-06-16 06:51:58 +02:00
Lars Brinkhoff
78efc2d0de Add PicoLisp language. 2015-06-16 06:51:57 +02:00
Arfon Smith
656c1e6ba6 Merge branch 'rneatherway-move-fsharp-grammar' 2015-06-15 16:09:19 -05:00
Arfon Smith
65e932016b Merge branch 'move-fsharp-grammar' of https://github.com/rneatherway/linguist into rneatherway-move-fsharp-grammar 2015-06-15 16:08:07 -05:00
Arfon Smith
fc602b1d42 Merge pull request #2383 from larsbrinkhoff/troff
More file extensions for Groff
2015-06-15 15:40:45 -05:00
Lars Brinkhoff
0e882900d7 Samples for .ms.
hello.ms by FSF; GPL license.
fsinterface.ms by the NetBSD project; BSD license.
2015-06-15 07:18:43 +02:00
Lars Brinkhoff
28103ee25b Add .ms to GAS. 2015-06-15 07:18:43 +02:00
Lars Brinkhoff
0a0d2ddb1a Heuristics for Groff and Nemerle. 2015-06-15 07:18:43 +02:00
Lars Brinkhoff
3bf4cb721e Add .n Groff sample.
From the Tcl/Tk project; BSD-like license.
2015-06-15 07:18:43 +02:00
Lars Brinkhoff
ba1ab64b56 More Groff file extensions. 2015-06-15 07:18:43 +02:00
Paul Chaignon
786d1e4cfc Instructions to add a new extension to a language 2015-06-12 21:22:55 +02:00
Arfon Smith
eb82e022ba Merge pull request #2443 from wcandillon/patch-4
Improved XQuery and JSONiq support
2015-06-12 11:35:53 -05:00
William Candillon
753bfd1dc5 ⬆️ 2015-06-11 19:07:19 +02:00
Kevin Butler
bc8d65e7d3 Add 1.0 rust sample and add file with extern crate usage 2015-06-10 17:58:36 +01:00
Kevin Butler
3180c5d554 Allow delimiting by comma in the language name 2015-06-10 15:37:31 +01:00
Robin Neatherway
6b11655db8 Switch to using atom-fsharp language definition
The previous definition used at fsharpbinding is no longer maintained.
That repository has been split into separate parts for each editor. Atom
now has the most complete compatible grammar.
2015-06-09 18:07:51 +01:00
William Candillon
d1ae098c08 ⬆️ 2015-06-08 15:22:32 +02:00
William Candillon
e1a8b5db1d 🆕 XQuery & JSONiq support based on the Atom language-jsoniq package 2015-06-08 14:50:28 +02:00
William Candillon
302cfea295 Update languages.yml 2015-06-08 14:32:07 +02:00
Paul Chaignon
be122ca1a5 Fix test for Perl heuristic
Improve heuristic rule for Perl6
Separate heuristic rules for .pl (with Prolog) and .pm (without Prolog)
2015-06-06 19:55:04 +02:00
Paul Chaignon
b05f6f0018 Test for the new heuristic definitions 2015-06-06 18:49:36 +02:00
Paul Chaignon
e811021806 Fix tests to use the correct extension in heuristic rules
Extand a few tests where only one file was tested for a language
2015-06-06 18:27:59 +02:00
Paul Chaignon
656f4f440d Several extensions can be associated to a heuristic rule 2015-06-06 17:44:02 +02:00
Paul Chaignon
7fb62de4d7 Associate each heuristic rule to a file extension 2015-06-06 15:37:41 +02:00
Garen Torikian
0946fecd82 Merge pull request #2439 from alexweber/patch-1
fix anchor link to vim & emacs modelines section
2015-06-05 09:43:21 -07:00
Eric McCormick
26a5325dc3 undoing color
apparently a bad idea, Travis CI didn't like it
2015-06-05 11:04:34 -05:00
Alex Weber
9afdcddfc9 fix anchor link to vim & emacs modelines section
regression introduced in 5382c1b795
2015-06-05 12:53:15 -03:00
Eric McCormick
4881e0aa51 added color to languages.yml 2015-06-05 10:36:40 -05:00
Eric McCormick
743f7c76de resorted entry in languages.yml to be consistent with other blocks 2015-06-05 06:19:02 -05:00
Eric McCormick
f8ef01f557 updated tm_scope to none in languages.yml
It looks like it helps to read the comments at the top of the file, who knew!
2015-06-05 06:13:36 -05:00
Eric McCormick
402fa5c2cd added navbar.xsp, xsp-config, xsp.metadata for completeness of file extensions and corrected xsp.metadata extension in languages.yml 2015-06-04 22:51:55 -05:00
Eric McCormick
5ac1e847a5 samples added for XPages design elements (.xsp) and affiliated NSF-based elements (.form, .view)
- demoServerRESTconsumption, src: https://gist.github.com/edm00se/15249dba8ff3fea38312, license: Creative Commons 3.0
- house.form, houses.view, house.xsp, src: https://github.com/edm00se/AnAppOfIceAndFire, license: Creative Commons 3.0
- UnpMainxsp, src: https://github.com/teamstudio/xcontrols-domino/blob/master/sampler-app/XPages/UnpMain.xsp, license: Apache v2.0
- xLogin.xsp, src: http://openntf.org/XSnippets.nsf/snippet.xsp?id=xpages-form-login-with-session-variable, license: Apache 2.0
2015-06-04 22:09:49 -05:00
Eric McCormick
0737a21e38 XPages added as programming language
XPages design element extensions and NSF-based design elements (Form, View) extensions added (all readable when marked up using XML settings for ACE); .jss (Domino SSJS) already aliased under JavaScript
2015-06-04 21:37:58 -05:00
Arfon Smith
4d162f88bd Merge pull request #2432 from jakepetroules/qbs
.qbs extension for QML.
2015-06-04 11:45:16 -05:00
Jake Petroules
2806987f2f .qbs extension for QML. 2015-06-02 00:46:56 -07:00
Arfon Smith
f380aa2e5e Merge pull request #2426 from tamird/generated-go-bindata
Detect Go files generated by go-bindata
2015-05-31 15:53:49 +02:00
Arfon Smith
a2ce1972ec Merge pull request #2429 from larsbrinkhoff/kbuild
Make filename: Kbuild
2015-05-31 15:51:51 +02:00
Arfon Smith
aa8cf7e6bb Merge pull request #2431 from pchaigno/al-perl
New .al extension for Perl
2015-05-31 15:49:53 +02:00
Paul Chaignon
ec61a6974f .al extension for Perl 2015-05-30 15:07:56 +02:00
Lars Brinkhoff
21e249bd2c Add makefile sample.
Kbuild by Sam Ravnborg; GPL 2 license.
2015-05-29 09:22:26 +02:00
Lars Brinkhoff
8e550f7093 'Kbuild' is a common makefile name. 2015-05-29 07:18:31 +02:00
Arfon Smith
53e53880bd Merge pull request #2419 from evgenyneu/master
Treat Carthage path as vendored
2015-05-28 13:33:47 -05:00
Arfon Smith
671b5788ed Merge pull request #2413 from yegortimoschenko/jruby-executable
Add JRuby executable example, fixes #2412
2015-05-28 10:27:53 -05:00
Arfon Smith
76d10cd85c Merge pull request #2422 from CalebFenton/master
Add Smali language
2015-05-28 10:17:48 -05:00
Arfon Smith
42c155d667 Merge pull request #2425 from larsbrinkhoff/fix-rust
Fix Rust heuristic.
2015-05-28 10:16:24 -05:00
Tamir Duberstein
d17222ec91 Detect Go files generated by go-bindata 2015-05-28 11:03:36 -04:00
Tamir Duberstein
a1ea55d006 Trim whitespace 2015-05-28 11:03:36 -04:00
Tamir Duberstein
f32b7bb978 Fix duplicate key warning 2015-05-28 11:03:36 -04:00
Lars Brinkhoff
38aa7bae3f Fix Rust heuristic. 2015-05-28 07:10:25 +02:00
Caleb Fenton
0021b9532b Update Smali submodule 2015-05-27 11:19:29 -07:00
Caleb Fenton
788fac7c43 Add Smali language 2015-05-27 10:37:17 -07:00
Arfon Smith
71934152e4 Merge pull request #2378 from Mailaender/patch-1
Added support for .mdpolicy XML files
2015-05-27 08:41:22 -05:00
Matthias Mailänder
e20d6fc04a add .mdpolicy XML files 2015-05-23 21:32:17 +02:00
Evgenii Neumerzhitckii
a1e8fc4f97 Treat Carthage path as vendored 2015-05-23 21:54:25 +10:00
Yegor Timoschenko
9dc8a10e2a Use real-world samples for JRuby and Rubinius executables
https://github.com/shoes/shoes4/blob/master/shoes-swt/bin/shoes-swt
https://github.com/txus/rexpl/blob/master/bin/rexpl
2015-05-23 05:36:26 +00:00
Yegor Timoschenko
43a2da46f9 Add jruby and rbx interpreters for Ruby 2015-05-21 19:35:45 +00:00
Yegor Timoschenko
f95ca13073 Add JRuby executable example, fixes #2412 2015-05-21 18:56:38 +00:00
Arfon Smith
b92b3af602 Merge pull request #2390 from larsbrinkhoff/lex-yacc
Add Lex and Yacc languages
2015-05-21 12:47:08 -05:00
Arfon Smith
83b76cde34 Merge pull request #2203 from pchaigno/vhost-nginx
.vhost as a Nginx extension
2015-05-21 11:34:45 -05:00
Arfon Smith
5ff0d488d2 Merge pull request #2392 from vighnesh1987/apache-thrift
Add Apache thrift support to generated? check
2015-05-20 12:43:55 -05:00
Arfon Smith
f89adf6e53 Merge pull request #2410 from SimenB/iml
Display IntelliJ configurations files as XML
2015-05-20 12:34:14 -05:00
Simen Bekkhus
efd34d8cb0 Display IntelliJ configurations files as XML
Fixes #2409
2015-05-20 14:18:01 +02:00
Lars Brinkhoff
3defb60fd7 Add .l samples.
zend_ini_scanner.l by Zend Technologies; New BSD license.
common.l by Toshihiro MATSUI, Electrotechnical Laboratory; New BSD license.
create_view.l by PostgreSQL Global Development Group; MIT license.
2015-05-20 08:16:26 +02:00
Lars Brinkhoff
869c9d2fdd Add .l to Groff. 2015-05-20 08:16:26 +02:00
Lars Brinkhoff
912e465193 Add .l to Common Lisp. 2015-05-20 08:16:26 +02:00
Lars Brinkhoff
e7c1419390 Add Yacc language. 2015-05-20 08:16:26 +02:00
Lars Brinkhoff
b19cd037b7 Add Lex language. 2015-05-20 08:16:26 +02:00
Arfon Smith
42f7bc2160 Merge pull request #2407 from github/welcome-back-handlebars
Adding back Handlebars grammar
2015-05-19 15:44:38 -05:00
Arfon Smith
542a0d79fd Adding back Handlebars grammar 2015-05-19 13:27:37 -05:00
Arfon Smith
4b9b09f7bf Merge pull request #2405 from github/fix-handlebars-grammar
Fix Handlebars grammar
2015-05-19 10:46:21 -05:00
Adam Roben
57429f3194 Don't warn if a package contains multiple copies of a grammar
This is pretty common (e.g., if the package contains the grammar in both
XML and JSON).
2015-05-19 09:27:13 -04:00
Adam Roben
9bdf890fd8 Fix nil NoMethodError when converting a duplicated grammar
We were sticking a nil value into the grammars Array when we encountered
a duplicate scope. Now we strip out nils before returning the Array.
2015-05-19 09:27:13 -04:00
Arfon Smith
9240f30f28 Merge pull request #2401 from github/cut-release-v4.5.5
Cut release v4.5.5
2015-05-18 16:15:40 -05:00
Arfon Smith
6062d3b25c Temporarily removing Handlebars highlighting 2015-05-18 14:41:36 -05:00
Arfon Smith
3878afa2e0 Bumping to v4.5.5 2015-05-15 10:56:36 -05:00
Arfon Smith
fa8998c6b6 Fixing up grammars 2015-05-15 10:55:50 -05:00
Arfon Smith
99dcd501aa Grammars update 2015-05-15 10:50:05 -05:00
Vighnesh Rege
ed23c6ef75 Fixed broken file reference 2015-05-13 23:22:24 -07:00
Vighnesh Rege
90b59876d0 Added extension restrictions 2015-05-13 23:20:51 -07:00
Arfon Smith
da7d019df3 Merge pull request #2388 from mephaust/add-unity3d
Add Unity3D Asset and Metadata files
2015-05-13 16:02:30 -05:00
Paul Handly
4fc0c90cff Add Unity3D Asset samples 2015-05-13 15:59:11 -04:00
Arfon Smith
4ecb6425d2 Merge pull request #2373 from pchaigno/remove-unused-grammars
Remove unused grammars/submodules
2015-05-13 09:50:32 -05:00
Arfon Smith
6dfab80df7 Merge pull request #2394 from github/vim-modeline-fix
Improving Vim modeline regex
2015-05-13 09:03:43 -05:00
Arfon Smith
1ebf1e77e5 Merge pull request #2387 from aivus/patch-1
Change PHP group to HTML for TWIG
2015-05-13 09:03:35 -05:00
Arfon Smith
0c810cc016 Merge pull request #2393 from KrauseFx/patch-1
Added fastlane configuration files
2015-05-13 08:45:23 -05:00
Arfon Smith
7e32b45aa8 Removing whitespace matching 2015-05-13 08:31:45 -05:00
Felix Krause
4c1a84716a Merge branch 'master' into patch-1 2015-05-13 11:03:13 +01:00
Felix Krause
fd4111cdbe Added Example Ruby Files 2015-05-13 11:02:26 +01:00
Arfon Smith
2fac182a90 Improving Vim modeline regex 2015-05-12 16:49:14 -05:00
Vighnesh Rege
6d2aa601cd Added tests 2015-05-12 12:53:59 -07:00
Felix Krause
f87c3c4996 Added fastlane configuration files
[fastlane](https://fastlane.tools) is an established Continuous Delivery solution for iOS/Mac projects. The configuration files are similar to a `Podfile`, also Ruby based. 

Some examples:
- https://github.com/wikimedia/apps-ios-wikipedia/blob/master/fastlane/Fastfile
- https://github.com/wikimedia/apps-ios-wikipedia/blob/master/fastlane/Deliverfile
- https://github.com/artsy/eidolon/blob/master/fastlane/Fastfile
- https://github.com/fastlane/examples/blob/master/MindNode/Fastfile

The configuration files added with this pull request: `Fastfile`, `Deliverfile` and `Snapfile` 👍
2015-05-12 20:29:24 +01:00
Vighnesh Rege
1811465abb Add Apache thrift support to generated? check 2015-05-12 12:25:06 -07:00
Paul Handly
7631db2183 Treat Unity3D metadata as an asset 2015-05-10 18:19:34 -04:00
Paul Handly
da5bc18d64 Add Unity3D Metadata files as generated 2015-05-10 18:19:33 -04:00
Paul Chaignon
0c2aeae00d .inc extension for PHP, Pascal, Assembly, SQL, C++, HTML and SourcePawn 2015-05-10 20:36:41 +02:00
Paul Handly
f2af2156fa Add language for Unity3D Asset files 2015-05-09 14:15:59 -04:00
Arfon Smith
5bf8cf50ae Merge pull request #2386 from larsbrinkhoff/modeline
Vim and Emacs modelines are two alternatives
2015-05-06 15:55:36 -05:00
Ilya Antipenko
dc22b0f869 Change PHP group to HTML for TWIG 2015-05-06 20:41:37 +03:00
Lars Brinkhoff
5382c1b795 Make it more clear that Vim and Emacs modelines are two alternatives. 2015-05-06 07:46:42 +02:00
Arfon Smith
dbe851726e Merge pull request #2368 from m-click/geography-markup-language
Add languages.yml entry and sample files for OGC Geography Markup Language (#2366)
2015-05-05 08:18:37 -05:00
Arfon Smith
3720e49618 Merge pull request #2372 from pchaigno/use-original-ada-grammar
Use original Ada grammar
2015-05-05 08:17:38 -05:00
Paul Chaignon
a4f187efd2 Merge branch 'master' into vhost-nginx 2015-05-04 21:58:22 +02:00
Paul Chaignon
b6ee02f313 Merge branch 'master' into mod-extension 2015-05-04 21:44:23 +02:00
Paul Chaignon
380a51e4a4 Merge branch 'master' into use-original-ada-grammar 2015-05-04 21:35:40 +02:00
Arfon Smith
459b1034a7 Merge pull request #2363 from danielgtaylor/master
Add support for API Blueprint
2015-05-04 09:47:11 -05:00
Arfon Smith
c2f567770c Merge pull request #2375 from mbdoud/master
Add HyPhy as language to Linguist
2015-05-04 08:17:33 -05:00
Andrew Pennebaker
03369b8a6c use https url for travis support 2015-05-03 12:51:52 -05:00
Volker Grabsch
c94c908d5d Add languages.yml entry and sample files for OGC Geography Markup Language (#2366) 2015-05-03 19:15:54 +02:00
Mike Doud
585d74ecc9 add better HyPhy samples 2015-05-02 13:24:43 -07:00
Arfon Smith
d8422e63f6 Merge pull request #2374 from pchaigno/travis-submodules-ssh
Handle SSH links to submodules in Travis
2015-05-02 06:38:28 -05:00
Paul Chaignon
ca12a99970 Handle SSH links to submodules 2015-05-01 21:03:02 +02:00
Mike Doud
1fdcafb1ae Update languages.yml 2015-05-01 11:28:11 -07:00
Andrew Pennebaker
3b2ddb1a18 classify DNS zone as a data format 2015-05-01 11:25:16 -05:00
Paul Chaignon
2eede37248 Remove unused grammars/submodules 2015-05-01 17:28:34 +02:00
Paul Chaignon
6489f7009d Use original repository for Ada grammar 2015-05-01 16:42:37 +02:00
Paul Chaignon
bdfe2aa6e4 Remove grammar for Ada 2015-05-01 16:39:48 +02:00
Mike Doud
007de4691b removing incorrect samples 2015-04-30 16:07:19 -07:00
Mike Doud
141e495447 Merge branch 'master' of https://github.com/mbdoud/linguist 2015-04-30 15:38:12 -07:00
Mike Doud
5e68714ae5 add HyPhy examples 2015-04-30 15:37:59 -07:00
Mike Doud
4ae6455e0e Update languages.yml 2015-04-30 15:25:04 -07:00
Mike Doud
f393ea307d Add 'HyPhy Batch Language' 2015-04-30 15:14:53 -07:00
Andrew Pennebaker
1e20b12241 zone: add ace_mode 2015-04-30 15:40:44 -05:00
Andrew Pennebaker
81c41df15c zone: add tm_scope 2015-04-30 15:39:32 -05:00
Andrew Pennebaker
8b736189e0 better name for DNS zone 2015-04-30 15:34:43 -05:00
Andrew Pennebaker
188d2367df add sample zone file 2015-04-30 15:25:52 -05:00
Andrew Pennebaker
5aeac500da list zone in grammars.yml 2015-04-30 15:24:46 -05:00
Andrew Pennebaker
5730ab28ab list zone in languages.yml 2015-04-30 15:23:31 -05:00
Andrew Pennebaker
1c56b03a28 highlight DNS zone (BIND) files 2015-04-30 15:14:26 -05:00
Daniel G. Taylor
828fc7a19b Add support for API Blueprint
This adds a grammar and samples for [API Blueprint][] based on the
[Sublime Text plugin][] from Apiary. The [Atom language][] is also based
on the Sublime plugin.

API Blueprint is now used in over [3,600 repositories][] on GitHub and has
[several][Aglio] [open source][Dredd] [tools][Drakov] available.

Here's an [example using Lightshow][Lightshow] to highlight a small API.

[3,600 repositories]: https://github.com/search?utf8=%E2%9C%93&q=FORMAT+1A+extension%3Aapib+extension%3Amd&type=Code&ref=advsearch&l=
[Aglio]: https://github.com/danielgtaylor/aglio
[API Blueprint]: https://apiblueprint.org/
[Drakov]: https://www.npmjs.com/package/drakov
[Atom language]: https://github.com/danielgtaylor/atom-language-api-blueprint
[Dredd]: https://github.com/apiaryio/dredd
[Lightshow]: https://github-lightshow.herokuapp.com/?utf8=%E2%9C%93&scope=from-url&grammar_url=https%3A%2F%2Fgithub.com%2Fapiaryio%2Fapi-blueprint-sublime-plugin%2Fblob%2Fmaster%2FAPIBlueprint.tmLanguage&grammar_text=&code_source=from-url&code_url=https%3A%2F%2Fraw.githubusercontent.com%2Fapiaryio%2Fapi-blueprint%2Fmaster%2Fexamples%2F12.%2520Advanced%2520Action.md&code=
[Sublime Text plugin]: https://github.com/apiaryio/api-blueprint-sublime-plugin
2015-04-28 22:21:30 -07:00
Paul Chaignon
fc1f8083ad Heuristic rules for XML and Modula-2 2015-04-25 23:36:15 +02:00
Paul Chaignon
af5e799a45 Merge branch 'master' into mod-extension 2015-04-22 21:14:24 +02:00
Arfon Smith
accf734a74 Merge pull request #2346 from larsbrinkhoff/public-key
Add support for SSH2 and OpenSSH public keys
2015-04-21 08:22:05 -05:00
Arfon Smith
6bd86ad46b Merge pull request #2330 from larsbrinkhoff/link-script
Add 'Linker Script' language
2015-04-21 08:19:53 -05:00
Lars Brinkhoff
d7207f3399 Linker Script samples.
vmlinux.lds by Martin Mares; license GPL v2.
link.ld by Anthony Zbierajewski; license GPL v2.
ld.script by Wu Zhangjink; license GPL v2.
2015-04-21 10:11:40 +02:00
Lars Brinkhoff
e018b4322e Improve .asc heuristic for Public Key. 2015-04-21 10:10:27 +02:00
Lars Brinkhoff
415c7d32a2 More .asc samples for Public Key.
sshkey1.asc by Joseph Galbraith; Sleepycat license (GPL compatible).
2015-04-21 10:10:27 +02:00
Lars Brinkhoff
164caa2755 Add 'Linker Script' language. 2015-04-21 07:17:08 +02:00
Arfon Smith
ec2f0cb82a Merge pull request #2335 from DavidJFelix/patch-1
Change Salt to programming per #2307
2015-04-20 16:57:15 -05:00
David J. Felix
604918b6ad Add python-logo grey color to SaltStack config 2015-04-20 12:29:09 -04:00
David J. Felix
eb7e72a4a9 Change Salt to programming per #2307
- Remove group
2015-04-19 18:24:27 +00:00
Paul Chaignon
e073e91d62 Detect GFortran module files as generated 2015-04-19 16:56:38 +02:00
Paul Chaignon
da9bda0e27 Detect KiCAD module files as generated 2015-04-19 16:19:52 +02:00
Paul Chaignon
0e996e4bb7 Grammar for Modula-2 from Sublime Text package 2015-04-19 12:41:41 +02:00
Paul Chaignon
63fbbd6e0a .mod file extension for AMPL, Linux Kernel Module, Modula-2 and XML 2015-04-19 12:39:21 +02:00
Brandon Keepers
1ac694f149 Merge pull request #2340 from github/remove-script-ext
Remove .script! hack
2015-04-19 08:58:07 +12:00
Brandon Keepers
924fddf698 Move Linguist::Language.detect to Linguist.detect 2015-04-17 14:56:08 +12:00
Brandon Keepers
ef49fe417f fix samples after renaming script 2015-04-17 14:37:40 +12:00
Brandon Keepers
d28828b7d7 Merge pull request #2334 from thomasvandoren/update-chapel-grammar
Update submodule for Chapel grammar.
2015-04-17 14:20:16 +12:00
Brandon Keepers
8a42f76f03 Remove .script! hack 2015-04-17 14:09:05 +12:00
Brandon Keepers
745ce14d47 Merge pull request #2333 from 3flex/2318-add-puppet-samples
Add additional Puppet sample
2015-04-17 13:57:07 +12:00
Arfon Smith
dc41ca23c6 Merge pull request #2339 from ampl/nl
Improve NL/NewLisp disambiguation heuristic
2015-04-16 17:42:08 -05:00
vitaut
9da42fba5b Improve NL/NewLisp disambiguation heuristic
NL files start with either 'b' or 'g' followed by an unsigned integer.
2015-04-16 15:19:22 -07:00
Ted Nyman
fac4633337 Move .odd file to the right directory 2015-04-15 18:37:36 -07:00
Thomas Van Doren
3ab0de831f Update Chapel samples. 2015-04-15 07:43:25 -07:00
Thomas Van Doren
599d146118 Use chapel-lang/chapel-tmbundle for Chapel grammar. 2015-04-15 07:43:25 -07:00
Matthew Haughton
5cdbb2b113 Add additional Puppet samples 2015-04-14 23:18:45 -04:00
Arfon Smith
611584a414 Merge pull request #2322 from larsbrinkhoff/lisp
Make Common Lisp heuristic case insensitive.
2015-04-13 08:49:37 -05:00
Lars Brinkhoff
33478b2d23 Make Common Lisp heuristic case insensitive. 2015-04-11 19:58:02 +02:00
Lars Brinkhoff
46ca8e93c2 New upper-case sample for Common Lisp. 2015-04-11 19:24:01 +02:00
Arfon Smith
da58febc3e Merge pull request #2328 from github/specflow
Specflow
2015-04-10 20:16:05 -05:00
Arfon Smith
7ca2384e03 Test for Specflow feature 2015-04-10 20:11:11 -05:00
Arfon Smith
6b2bb52dcd Merge branch 'master' into specflow 2015-04-10 20:07:43 -05:00
Arfon Smith
000a42ef3d Merge pull request #2326 from github/dcl
Add DCL and MMS
2015-04-10 15:54:04 -05:00
Arfon Smith
03e40718ff Bringing languages.yml keys up to date 2015-04-10 15:47:37 -05:00
Arfon Smith
4386fb7f28 Merge branch 'master' into dcl 2015-04-10 15:41:04 -05:00
Arfon Smith
0db4d05671 Merge pull request #2325 from github/clarion
Adding support for Clarion
2015-04-10 15:32:46 -05:00
Arfon Smith
d113e98915 Grammar update 2015-04-10 15:27:02 -05:00
Arfon Smith
e9acecf71f Colour update 2015-04-10 15:15:03 -05:00
Arfon Smith
76b84decfe Removing .inc from Clarion 2015-04-10 15:09:00 -05:00
Arfon Smith
80148ae4e4 Merge branch 'master' into clarion 2015-04-10 15:06:33 -05:00
Arfon Smith
4af679c27f Merge pull request #2324 from pchaigno/batch-group
Remove Batch from Shell group
2015-04-10 14:29:10 -05:00
Arfon Smith
ba86d9fff0 Merge pull request #2266 from Dorian/patch-1
Add .ruby to the list of ruby file extensions
2015-04-10 14:15:42 -05:00
Paul Chaignon
3a07410569 Remove test for group of Batch 2015-04-10 20:59:10 +02:00
Brandon Keepers
b43828db9b Merge pull request #2323 from lsf37/jflex-lang
Add JFlex grammars (language & syntax highlighting)
2015-04-10 14:57:03 -04:00
Gerwin Klein
8251588088 choose more distinct color for JFlex 2015-04-10 21:16:32 +10:00
Gerwin Klein
22ff4898a5 add textmate grammar for JFlex 2015-04-10 19:25:24 +10:00
Gerwin Klein
9c4c6d908a add language recognition for JFlex grammars
JFlex is a lexical analyzer generator for Java, see also
http://jflex.de or https://github.com/jflex-de/jflex
2015-04-10 19:17:58 +10:00
Paul Chaignon
3f9d98974c Remove Batch from Shell group 2015-04-08 21:39:10 +02:00
Arfon Smith
98a23c6a53 Merge pull request #2314 from larsbrinkhoff/ocaml
Tighten up OCaml heuristic
2015-04-07 07:56:16 -05:00
Lars Brinkhoff
3086326d12 Tighten up OCaml heuristic: only match at start of line. 2015-04-07 08:54:39 +02:00
Arfon Smith
ac4594e3b1 Merge pull request #2298 from github/add-proximity-test
Add proximity test for colors
2015-04-06 13:15:32 -05:00
Arfon Smith
47dcca839e Merge pull request #2312 from larsbrinkhoff/for
New sample for Formatted.
2015-04-06 13:15:04 -05:00
Arfon Smith
572078a708 Merge pull request #2306 from powerman/limbo
add Limbo: language, samples
2015-04-06 13:14:32 -05:00
Lars Brinkhoff
0442f4bd06 One more sample for Formatted.
By Sean Carroll; license GPLv2.
2015-04-06 20:06:15 +02:00
Arfon Smith
2861a8f19c Fixing up colours to match languages.yml 2015-04-06 12:41:49 -05:00
Arfon Smith
1d0028fd53 Merge pull request #2311 from pchaigno/saltstack-samples
New samples for SaltStack
2015-04-06 12:36:19 -05:00
Alex Efros
c3288543af add heuristic for Limbo 2015-04-06 20:17:52 +03:00
Garen Torikian
3c96f9eb53 Bump threshold to 0.05 2015-04-06 09:44:10 -07:00
Garen Torikian
6bd8d3a3b7 Some slight test improvements 2015-04-06 09:43:36 -07:00
Garen Torikian
63e017fbaa Rename to TestColorProximity 2015-04-06 08:32:23 -07:00
Paul Chaignon
f993b7358b New samples for SaltStack 2015-04-06 14:58:20 +02:00
Arfon Smith
4239d5453c Merge pull request #2309 from pchaigno/sch-kicad
KiCad language with .sch extension
2015-04-05 19:37:08 -05:00
Arfon Smith
b0e6f17612 Merge pull request #2308 from pchaigno/contribution-guideline-update
Update guideline on syntax highlighting fixes
2015-04-05 10:56:19 -05:00
Alex Efros
c97c10623b add .b Brainfuck sample 2015-04-05 18:08:20 +03:00
Paul Chaignon
d566ccd0be Update guideline on syntax highlighting fixes 2015-04-05 16:55:27 +02:00
Paul Chaignon
8b4daefbde KiCad language with .sch extension 2015-04-05 16:45:35 +02:00
Alex Efros
bbea29be55 add Limbo to test_languages 2015-04-05 03:03:45 +03:00
Alex Efros
f016867e1a Limbo: fix tm_scope 2015-04-05 02:56:36 +03:00
Alex Efros
35f2699eb3 add Limbo: language, samples 2015-04-05 02:34:02 +03:00
Garen Torikian
3ad66da2bf Adjust existing colors to pass tests
A lot of these were taken from official websites. For obscurer
languages, I just changed a few digits of the hex value.
2015-04-03 18:46:45 -07:00
Garen Torikian
004f9b4710 Use new color-proximity gem for better visual matching 2015-04-03 18:25:13 -07:00
Arfon Smith
3e06b95f98 Merge pull request #2304 from github/clarify-docs
Explaining gitattributes behavior.
2015-04-03 15:02:23 -04:00
Arfon Smith
8591dffcae Explaining gitattributes behavior. 2015-04-03 14:53:38 -04:00
Garen Torikian
3d69c047f0 Merge branch 'master' into add-proximity-test 2015-04-02 17:32:00 -07:00
Arfon Smith
78a1183c26 Merge pull request #2301 from dpiddy/erlang-rebar
Add rebar-related files as erlang.
2015-04-02 19:09:38 -04:00
Arfon Smith
58ea517b32 Merge pull request #2296 from phase/master
Add colors to semi-popular languages
2015-04-02 19:06:30 -04:00
Dan Peterson
0722b6855b Add rebar-related files as erlang. 2015-04-02 15:41:24 -03:00
Arfon Smith
a6a745d99d Merge pull request #2299 from github/shebang-fixing
Fixing up shebang detection to match new tokenizer behaviour
2015-04-02 14:14:29 -04:00
Arfon Smith
7394e9400b Adding explicit test for new shebang parsing 2015-04-02 14:00:03 -04:00
Garen Torikian
15f0366e12 Adjust color schemes slightly
- Make Perl6 a distinct blue (using Camelia’s wing as an aide)
- VCL is part of the Perl group
- Brighten Slim a bit so it does not conflict with Ada
2015-04-02 08:25:19 -07:00
Garen Torikian
07e3d9d3b3 Improve error output 2015-04-02 08:24:04 -07:00
Arfon Smith
55eaf03afb Merge pull request #2300 from github/build-boot
Adding in a Makefile.boot filename for .boot detection
2015-04-01 20:41:27 -05:00
Arfon Smith
7a6849b3ac Adding in a Makefile.boot filename for .boot detection 2015-04-01 20:33:13 -05:00
Arfon Smith
fa5496eef4 Fixing up shebang detection to match new tokenizer behaviour 2015-04-01 20:23:16 -05:00
Arfon Smith
893bd7e204 Merge pull request #1604 from geoff-codes/#!--"
Comment styles; don't choke on `#!/usr/bin/env foo=bar`
2015-04-01 15:18:40 -05:00
Garen Torikian
8a54ce57a5 Drop threshold back down to a passing 10 2015-04-01 10:15:10 -07:00
Garen Torikian
3851b7c016 Add test for detecting color proximity 2015-04-01 10:14:52 -07:00
phase
3dbcfa8af8 Add color for ABAP 2015-03-31 20:05:42 -07:00
phase
9936a30879 Add color for Crystal 2015-03-31 20:02:52 -07:00
phase
59e935b05d Add color for Brainfuck 2015-03-31 20:00:53 -07:00
phase
53f93f68db Add color to Makefile 2015-03-31 19:55:25 -07:00
phase
66f9bd1ab4 Add color to Kotlin 2015-03-31 19:53:36 -07:00
Arfon Smith
78d4abe808 Merge pull request #2295 from github/cut-release-v4.5.4
Bumping version to v4.5.4
2015-03-31 20:16:53 -05:00
Arfon Smith
cb97417af8 Bumping version to v4.5.4 2015-03-31 19:48:34 -05:00
Arfon Smith
d1c94c75ea Merge pull request #2294 from github/grammars
Grammars update
2015-03-31 19:45:16 -05:00
Arfon Smith
0c8c6c9814 Merge pull request #2293 from github/sphinx-docs-tests
Some tests to go with #2290
2015-03-31 19:39:45 -05:00
Arfon Smith
3270a8896d Grammars update 2015-03-31 19:37:08 -05:00
Arfon Smith
20f19bf049 Some tests to go with #2290 2015-03-31 19:33:50 -05:00
Arfon Smith
0cc33fd560 Merge pull request #2290 from untitaker/patch-1
Ignore assets from Sphinx docs
2015-03-31 19:29:23 -05:00
Arfon Smith
fa54fc2735 Merge pull request #2233 from tesch1/tesch1-emacs-patch-1
fix emacs modeline parsing
2015-03-31 19:27:33 -05:00
Arfon Smith
216e0457ff Merge pull request #2291 from iFarbod/patch-1
Added Color for the Squirrel Language
2015-03-31 19:25:40 -05:00
iFarbod
678f90acf7 Added Color for the Squirrel Language
Picked the color from the Squirrel Language's website.
2015-04-01 01:23:59 +04:30
Arfon Smith
dd0d5c08bb Merge pull request #2289 from lepture/patch-fixtures
add tests/fixtures to vendor.yml
2015-03-31 11:43:39 -05:00
Markus Unterwaditzer
3837fed59e Ignore assets from Sphinx docs 2015-03-31 15:21:40 +02:00
Hsiaoming Yang
e4ce4edd5c add tests/fixtures to vendor.yml 2015-03-31 20:08:18 +08:00
Arfon Smith
a0fb54fe70 Merge pull request #2286 from github/puphpet
Adding puphpet to vendored list
2015-03-30 16:57:43 -05:00
Arfon Smith
e946ceaa6f Grammar 2015-03-30 16:24:55 -05:00
Arfon Smith
285af6512e Adding puphpet to vendored list 2015-03-30 16:24:11 -05:00
Arfon Smith
5ae5108a69 Merge pull request #2247 from larsbrinkhoff/renderscript
Add RenderScript and Filterscript
2015-03-30 16:08:42 -05:00
Lars Brinkhoff
02ae60f434 Samples for RenderScript and Filterscript.
All files are from The Android Open Source Project; license APL 2.0.
2015-03-28 12:34:20 +01:00
Lars Brinkhoff
03dc4e1ff4 Add RenderScript and Filterscript. 2015-03-28 12:34:20 +01:00
Arfon Smith
c39b42abba Merge pull request #2075 from philix/patch-1
Add cpplint.py to vendor.yml
2015-03-27 11:02:36 -07:00
Arfon Smith
661972f585 Merge pull request #2275 from github/bump-escape-utils
Bump escape-utils to 1.1.0
2015-03-27 09:25:29 -07:00
Arfon Smith
078aff6ee3 Merge pull request #2276 from MakeNowJust/patch-1
Fix ada aliases
2015-03-27 09:24:31 -07:00
Arfon Smith
4fed108b2c Merge pull request #2279 from joewiz/patch-1
Add .odd to XML extensions
2015-03-26 11:21:47 -07:00
Joe Wicentowski
fc9beb58aa Add sample TEI ODD file (.odd) 2015-03-26 14:00:17 -04:00
Joe Wicentowski
4623b4a83e Add .odd to XML extensions
See discussion at #2238. 

[ODD](http://en.wikipedia.org/wiki/Text_Encoding_Initiative#ODD) is an XML-based vocabulary for defining schemas for Text Encoding Initiative (TEI) projects, used widely in the humanities.  ODD should be rendered using XML syntax but is currently displayed as plain text (see [this example](https://github.com/wolfgangmm/tei-simple-pm/blob/master/odd/teisimple.odd)).  There are [nearly 500 ODD files](https://github.com/search?q=extension%3Aodd+NOT+djfhdirijdskqdhd&type=Code&utf8=%E2%9C%93) in GitHub, and this number is projected to grow.
2015-03-26 13:18:49 -04:00
TSUYUSATO Kitsune
2ba6ecefe5 Fix ada aliases 2015-03-26 12:08:46 +09:00
Garen Torikian
91c2a4682d Merge pull request #2274 from csimons/master
intro.wisp: Fixed typographical error ('rather then' -> 'rather than').
2015-03-25 13:24:10 -07:00
Patrick Toomey
738be195ef Bump escape-utils to 1.1.0 2015-03-25 14:18:46 -06:00
Christopher L. Simons
5dcc4d74ec intro.wisp: Fixed typographical error ('rather then' -> 'rather than'). 2015-03-25 14:35:16 -04:00
Arfon Smith
4213bec62a Merge pull request #2272 from lpil/master
Elixir: Add mix.lock filename
2015-03-25 09:04:07 -05:00
Louis Pilfold
babe733bf4 Elixir: Add mix.lock filename 2015-03-25 13:52:52 +00:00
Arfon Smith
ab5f60555e Merge pull request #2270 from larsbrinkhoff/ocaml
Add interpreters for OCaml.
2015-03-25 08:39:49 -05:00
Lars Brinkhoff
b61e33a49e Add interpreters for OCaml. 2015-03-25 08:11:40 +01:00
Arfon Smith
a0d5a8338b Merge pull request #2269 from stuartpb/patch-2
Use #000080 for Lua color
2015-03-24 19:24:34 -05:00
Arfon Smith
eec321f013 Merge pull request #2265 from github/cut-release-v4.5.3
Bumping to v4.5.3
2015-03-24 19:08:59 -05:00
Stuart P. Bentley
e538f72b63 Use #000080 for Lua color
This is the color of the official Lua logo, as seen at http://www.lua.org/images/
2015-03-24 14:34:13 -07:00
Dorian Marié
bde843b67f Add .ruby to the list of ruby file extensions
Can be found in Rails partial, eg `.html.ruby`
2015-03-24 18:59:53 +01:00
Arfon Smith
44c3d47b30 Bumping to v4.5.3 2015-03-24 12:33:35 -05:00
Arfon Smith
f1d3f396bb Merge pull request #2264 from github/grammar-update
Updating grammars
2015-03-24 12:28:29 -05:00
Arfon Smith
65ae444791 Updating grammars 2015-03-24 12:26:40 -05:00
Arfon Smith
e9916c644d Merge pull request #2263 from github/NetLinx
Net linx
2015-03-24 12:09:15 -05:00
Arfon Smith
1940a9ea92 Merge branch 'master' into NetLinx 2015-03-24 11:41:26 -05:00
Arfon Smith
c9f8a2677a Merge pull request #2261 from ntkme/storyboard-xib-xml
.storyboard and .xib as XML
2015-03-24 11:38:39 -05:00
Arfon Smith
5b6b3f74b5 Merge pull request #2262 from drautb/master
Fix categorization for Racket shell scripts.
2015-03-24 11:38:21 -05:00
Vicent Marti
f9ccac4240 Merge pull request #2259 from github/bump-rugged
Bump rugged to latest release
2015-03-24 08:36:52 -07:00
Ben Draut
aa7aae7808 Fix categorization for Racket shell scripts.
The current implementation categorizes shell scripts written in Racket
as Scheme, which is incorrect.

For example:

```racket
\#!/usr/bin/env racket

\#lang racket

"Hello World!"
```

This should be categorized as Racket, not Scheme. [This file][1]
demonstrates the problem in an existing repository.

[1]: https://github.com/drautb/sketchbook/blob/master/racket/sublime-project-generator/generate-sublime-project.rkt
2015-03-24 08:22:00 -06:00
なつき
7c66301583 .storyboard and .xib as XML 2015-03-24 01:58:55 -07:00
michael tesch
a5b0b333b0 Merge branch 'master' into tesch1-emacs-patch-1 2015-03-24 09:44:08 +01:00
Andy Delcambre
7df872eb7f Bump rugged to latest release 2015-03-23 14:33:03 -06:00
Arfon Smith
6a4f4c724c Merge pull request #2253 from larsbrinkhoff/dtrace-script-mode
Fix Emacs modeline in DTrace sample.
2015-03-23 15:30:03 -05:00
Lars Brinkhoff
76828c45c7 Fix Emacs modeline in DTrace sample.
Apparently, the DTrace mode for Emacs is called dtrace-script:
https://github.com/dotemacs/dtrace-script-mode
2015-03-23 19:43:32 +01:00
Arfon Smith
27215f148b Merge pull request #2257 from Oldes/rebol_grammar_scope
Adding tm_scope for REBOL language and removing REBOL from LICENSE_WHITE...
2015-03-23 11:30:48 -05:00
Arfon Smith
77d52463ad Merge pull request #2256 from Oldes/red_grammar
Added grammar submodule for Red language
2015-03-23 11:30:06 -05:00
Oldes
0f6c2afbf6 Sublime-REBOL submodule updated. 2015-03-23 15:58:01 +01:00
Oldes
cbaa3ca6f4 Adding tm_scope for REBOL language and removing REBOL from LICENSE_WHITELIST as now is license available in the Sublime-REBOL project. 2015-03-23 11:38:07 +01:00
Oldes
63f54bdf06 Added grammar submodule for Red language 2015-03-23 10:43:39 +01:00
Alex McLain
b302863a4d Added additional sample files. 2015-03-21 20:22:46 -07:00
Alex McLain
ec46b1a92e Added NetLinx language. 2015-03-21 18:58:09 -07:00
Arfon Smith
ed65040539 Merge pull request #2250 from shaneog/patch-2
Add Neovim config file names to VimL language
2015-03-21 16:56:00 -05:00
Arfon Smith
cc1a420bc5 Merge pull request #2254 from shaunlebron/master
add .boot to clojure extensions
2015-03-21 16:54:20 -05:00
Shaun Williams
8555b20380 add .boot Clojure sample 2015-03-21 12:02:20 -05:00
Shaun Williams
6462ba70f9 put .boot after primary .clj extension 2015-03-21 11:48:52 -05:00
Shaun Williams
1ac43e0d7d reorder .boot to be in order 2015-03-21 11:32:29 -05:00
Shaun Williams
6ac51968c6 add .boot to clojure extensions 2015-03-21 11:20:48 -05:00
Shane O'Grady
cbcadf8e45 Add Neovim config file names to VimL language
Neovim uses configuration files named `.nvimrc` rather than `.vimrc`

See this PR for details neovim/neovim#330
2015-03-21 09:53:21 -03:00
Arfon Smith
74b111501d Merge pull request #2213 from ntkme/source-map
Detect generated source maps
2015-03-20 09:26:40 -05:00
なつき
67e4212f64 Test detecting generated source maps 2015-03-19 19:50:40 -07:00
Arfon Smith
55559a1020 Merge pull request #2246 from ampl/nl
Add a heuristic to disambiguate between NL and NewLisp
2015-03-19 20:26:56 -05:00
なつき
b103232e0e Detect generated source maps 2015-03-19 17:38:59 -07:00
vitaut
b587379f4a Add a heuristic to disambiguate between NL and NewLisp 2015-03-19 17:33:52 -07:00
Arfon Smith
ba654b2a1d Merge pull request #2242 from larsbrinkhoff/types
Fix the type classification of some languages.
2015-03-19 08:46:55 -05:00
Lars Brinkhoff
ae39475133 Fix the type classification of some languages. 2015-03-19 07:09:42 +01:00
Arfon Smith
c641ea833f Merge pull request #2241 from github/cut-release-v4.5.2
v4.5.2
2015-03-18 10:45:42 -05:00
Arfon Smith
ebf10c2cd6 v4.5.2 2015-03-18 09:50:57 -05:00
Arfon Smith
29ef8beb3f Grammar submodule update 2015-03-18 09:47:43 -05:00
Arfon Smith
2b5f38264b Merge pull request #2222 from chriskuehl/master
languages.yml: don't assume .conf is Apache
2015-03-18 09:27:32 -05:00
Arfon Smith
5850716eb3 Merge pull request #2236 from Phasesaber/master
Give Diff a color
2015-03-18 09:24:46 -05:00
Arfon Smith
3db6c4a5b6 Merge pull request #2227 from samoht/OCaml
Disambiguate between OCaml and Standard ML
2015-03-18 09:05:12 -05:00
Thomas Gazagnaire
e79607372b Disambiguate between OCaml and Standard ML
Fix #2208
2015-03-18 09:58:14 +00:00
Arfon Smith
b5472ab753 Merge pull request #2123 from larsbrinkhoff/for
Some .for files are text.
2015-03-17 14:59:53 -05:00
Lars Brinkhoff
013188dcd9 Add new language Formatted for .for.
Sample file wksst8110.for is from the Climate Prediction Center at the
National Weather Service of the USA, and is in the public domain.
2015-03-17 20:44:06 +01:00
Jαdon Fowler
3cf7bfbee2 Give Diff a color 2015-03-16 23:44:08 -07:00
michael tesch
5f647f2236 more realistic emacs modeline for dtrace sample 2015-03-16 19:56:06 +01:00
Arfon Smith
3bb740fe9f Merge pull request #2198 from tarebyte/handlebars_color
Assign handlebars a color for the language bar.
2015-03-16 07:58:05 -05:00
michael tesch
50db5c012e disable modelines strategy for webidl sample 2015-03-15 20:18:57 +01:00
michael tesch
dcb14d0fc7 disable modelines strategy for webidl sample 2015-03-15 20:06:41 +01:00
michael tesch
419cfe54e0 disable modelines strategy match for dtrace sample 2015-03-15 13:05:43 +01:00
michael tesch
ce1f51a34f forgot a | 2015-03-15 12:51:14 +01:00
michael tesch
5fd7992f98 dont save useless matches, thanks to pchaigno 2015-03-15 12:40:31 +01:00
Arfon Smith
3f5a96a15b Merge pull request #2017 from github/revert-2014-revert-1976-path-for-fileblob
Cut 4.5.0 release
2015-03-14 20:42:20 -05:00
Arfon Smith
840bdf95e3 v4.5.1 2015-03-14 20:32:18 -05:00
Arfon Smith
01deb07ae9 Return false for empty file. 2015-03-14 20:19:11 -05:00
michael tesch
fda0f2a042 detect emacs modeline for fundamental as Text 2015-03-14 23:53:17 +01:00
michael tesch
6af4ab6db1 harder test 2015-03-14 23:26:08 +01:00
michael tesch
6aab682728 fixed case with multiple other file vars before and after mode: 2015-03-14 23:24:41 +01:00
Arfon Smith
6c37613bf0 Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob 2015-03-14 17:18:36 -05:00
Arfon Smith
188c7364f8 Merge pull request #2209 from chezwicker/master
Add .plsql as extension for PL/SQL
2015-03-14 17:17:52 -05:00
Arfon Smith
09ead55502 Merge pull request #2232 from pchaigno/cython-generated-files
Detect Cython generated files
2015-03-14 17:16:45 -05:00
michael tesch
a364e4a2dc tests for emacs modeline regex 2015-03-14 23:13:59 +01:00
Arfon Smith
f7f9513fba Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob 2015-03-14 17:13:31 -05:00
Arfon Smith
dd2d2389c8 Cobol grammars fix. 2015-03-14 17:11:44 -05:00
Michael Tesch
1bb639617c Create seeplusplusEmacs1
one type of emacs modeline
2015-03-14 22:44:02 +01:00
Chris Zwicker
03b43a85c8 Change sorting of extensions to fix failing test 2015-03-14 20:16:31 +00:00
Chris Zwicker
fb709e2e10 Add sample file for .plsql extension 2015-03-14 19:59:25 +00:00
Chris Zwicker
dad653492a Merge remote-tracking branch 'upstream/master' 2015-03-14 19:56:27 +00:00
Paul Chaignon
0db133ffb2 Detect Cython generated files 2015-03-14 19:43:17 +01:00
Arfon Smith
6d1682911b Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob 2015-03-14 13:14:26 -05:00
Arfon Smith
d1de479c49 Merge branch 'master' of github.com:github/linguist 2015-03-14 13:13:07 -05:00
Arfon Smith
ad7e231f39 Updating grammars 2015-03-14 13:12:37 -05:00
Arfon Smith
f36d239b85 Merge pull request #2229 from pchaigno/perl6-grammar
Grammar for Perl6
2015-03-14 13:08:29 -05:00
Arfon Smith
540865d045 Merge pull request #2231 from pchaigno/description-group
Description of group attribute
2015-03-14 13:08:06 -05:00
Arfon Smith
5ed0da7b08 v4.5.0 2015-03-14 13:06:55 -05:00
Michael Tesch
068c8a341d better regex for matching emacs modeline
the emacs modeline is actually a per-file variable setting mechanism, which means it can have other flags in it.

this regex extracts the part that corresponds to the file's language ("mode:" - ie emacs major mode)

http://ergoemacs.org/emacs_manual/emacs/Specifying-File-Variables.html
2015-03-14 18:35:57 +01:00
Paul Chaignon
e61be66d4f Grammar for Perl and Perl6 from TextMate bundle 2015-03-14 11:47:44 +01:00
Paul Chaignon
d263f0c91a Remove submodule for Perl grammar 2015-03-14 11:42:30 +01:00
Arfon Smith
fee0cebcec Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob 2015-03-13 11:42:24 -07:00
Arfon Smith
3745308642 Merge pull request #2224 from github/bin-linguist
Simplifying requires
2015-03-12 11:13:37 -07:00
Arfon Smith
8843fa3ed4 Merge pull request #2218 from xPaw/patch-1
Detect *.sma files as SourcePawn
2015-03-12 11:13:24 -07:00
Arfon Smith
464d6e9ec4 Simplifying requires 2015-03-12 10:41:34 -07:00
Chris Kuehl
02ced24751 languages.yml: don't assume .conf is Apache
The assumption that `.conf` files are Apache is causing many projects to
be detected incorrectly as being primarily "ApacheConf".

The `.conf` extension is widely used by software; Apache accounts for
only a very tiny proportion of its overall use. The addition of `.conf`
for ApacheConf has resulted in projects which contain none (or almost
no) Apache config being marked as primarily containing it.

The problem was introduced by 18a3ef9e5e
2015-03-10 22:19:22 -07:00
Pavel
8b9ad131d1 Create foo.sma 2015-03-10 16:20:59 +02:00
Pavel
5ef944e8b8 Detect *.sma files as SourcePawn 2015-03-10 11:16:17 +02:00
Mark Tareshawty
ea0145fda5 Merge branch 'master' into handlebars_color 2015-03-09 10:04:51 -04:00
Adam Roben
53c3cb382c Merge pull request #2207 from github/update-popular
Update popular languages
2015-03-09 09:15:30 -04:00
Brandon Keepers
179c557e5b Merge pull request #2215 from github/apt-get-update
apt-get update before downloading deps
2015-03-08 16:35:06 -07:00
Brandon Keepers
8da458e1a8 apt-get update before downloading deps 2015-03-08 16:24:05 -07:00
Mark Tareshawty
b009c85b64 inverted color 2015-03-08 15:31:52 -04:00
Brandon Keepers
3eb3dd7d4b Merge pull request #2178 from munrocape/patch-1
Standardized color hexcode length to 6
2015-03-07 19:57:24 -08:00
Chris Zwicker
c9a1159a2e Add .plsql as extension for PL/SQL 2015-03-07 08:51:16 +00:00
Paul Chaignon
17f75e64ba .vhost as an Apache extension 2015-03-06 21:19:28 +01:00
Adam Roben
8664668524 Update popular languages
I took all non-fork repositories on github.com, grouped them by their
primary language, and took the 25 most popular.
2015-03-06 14:26:09 -05:00
Arfon Smith
3ba4cf699a Merge pull request #2202 from pchaigno/jbuilder
.jbuilder as a Ruby extension
2015-03-06 07:33:51 -06:00
Arfon Smith
8bc39ce44f Merge pull request #2204 from aquileia/patch-1
Exclude gettext catalogues from statistics
2015-03-06 07:26:39 -06:00
aquileia
2d03eae413 Exclude gettext catalogues from statistics
Gettext catalogues are used for translations and are thus essentially prose, but were classified as "programming" in 507d191d7d.

In large projects like e.g. wesnoth/wesnoth, gettext can dominate the language statistics with about 95% although the actual code is C++.
2015-03-06 13:34:19 +01:00
Paul Chaignon
0157b9eb37 .vhost as a Nginx extension 2015-03-06 07:38:54 +01:00
Paul Chaignon
0d848b342f .jbuilder as a Ruby extension 2015-03-06 07:07:41 +01:00
Arfon Smith
ad6030b0e8 Merge pull request #2200 from github/cut-release-v4.4.3
Bumping version to 4.4.3
2015-03-05 16:37:40 -06:00
Arfon Smith
bdb2a221a5 Bumping version to 4.4.3 2015-03-05 15:13:54 -06:00
Arfon Smith
44f505e687 Grammars update 2015-03-05 15:08:05 -06:00
Arfon Smith
d931dacd47 Merge pull request #2196 from larsbrinkhoff/glsl-group
GLSL should not be in the C group.
2015-03-05 15:03:45 -06:00
Arfon Smith
1da425ae2f Merge pull request #2162 from github/instrumentation
Add instrumentation to detection and classification
2015-03-05 15:03:30 -06:00
Arfon Smith
9ceea4ac81 Merge pull request #2173 from github/moar-instrumentation
Instrument all calls and pass the blob, strategy and language candidates in the payload.
2015-03-05 15:02:42 -06:00
Arfon Smith
a1010b8cf8 Actually return the strategy 2015-03-05 13:21:07 -06:00
Paul Chaignon
19a300a4ba Description of group attribute 2015-03-05 20:14:15 +01:00
Arfon Smith
1bc1803628 Check for block here too 2015-03-05 12:50:12 -06:00
Brandon Keepers
7fdead0100 Only yield if block given 2015-03-05 10:11:08 -08:00
Brandon Keepers
3dcdc11c1b Avoid passing block to detected instrumenter 2015-03-05 10:03:51 -08:00
Brandon Keepers
e8326529b5 Pass blob to instrumentation 2015-03-05 10:03:01 -08:00
Brandon Keepers
2d5476f6c8 Yield the block in LocalInstrumenter 2015-03-05 10:01:28 -08:00
Mark Tareshawty
781133d0d3 assign handlebars a color 2015-03-04 19:42:32 -05:00
Lars Brinkhoff
c7b4cf636f GLSL should not be in the C group. 2015-03-04 21:26:55 +01:00
Arfon Smith
d81c796dc0 Merge pull request #2193 from pchaigno/nl
Support for NL file format
2015-03-03 21:43:55 -06:00
Arfon Smith
1a3680bba6 Merge pull request #2189 from pchaigno/qml-programming-type
QML as a programming language
2015-03-03 11:50:49 -06:00
Arfon Smith
600bca149a Merge pull request #2192 from graymalkin/master
Added XC syntax
2015-03-03 11:50:29 -06:00
Simon Cooksey
3a56d632e1 Fixed build by removing duplicate C syntax definition 2015-03-03 13:09:19 +00:00
Simon Cooksey
7f3f0327c2 Added XC syntax 2015-03-03 12:45:08 +00:00
Paul Chaignon
cc0c71b277 New sample for NL 2015-03-02 22:13:17 +01:00
Paul Chaignon
e5ce286c63 NL file format with .nl extension 2015-03-02 21:55:41 +01:00
Arfon Smith
86a0cf9424 Merge pull request #2188 from graymalkin/patch-1
Add colour for XMOS XC in linguist
2015-03-02 11:11:40 -06:00
Paul Chaignon
eaea6ac837 QML as a programming language 2015-03-02 18:09:09 +01:00
Simon Cooksey
4efc3ff822 Add colour for XMOS XC in linguist
Adds a colour matching the XMOS colour scheme for .xc files.
2015-03-02 17:04:18 +00:00
Arfon Smith
c22a6563d9 Writing some (failing) tests for instrumentation 2015-03-01 22:13:26 -06:00
Arfon Smith
f9683efb74 Merge pull request #2184 from redj/ec-lang-color
Add designated color of eC language for display in language bar.
2015-03-01 19:21:27 -06:00
Rejean Loyer
08945923e6 Add designated color of eC language in lib/linguist/languages.yml for display in repository page's language bar. 2015-03-01 18:54:47 -05:00
Arfon Smith
4745c62853 Merge pull request #2181 from pchaigno/prolog-heuristic
More specific heuristic for Prolog
2015-03-01 11:13:58 -06:00
Paul Chaignon
7c593899e7 Make heuristic for Prolog more specific 2015-03-01 12:43:35 +01:00
Arfon Smith
9151e7066a Merge pull request #2175 from github/sqlllll
Sqlllll
2015-02-28 20:45:08 -06:00
Paul Chaignon
730be65514 Ignore symlinks in repository statistics 2015-02-28 16:08:16 +01:00
Zach Munro-Cape
b358a22d32 Standardized color hexcode length to 6
C was the only language to have a hex code length of 3. 
#555555 == #555 == rgb(85, 85, 85)
2015-02-27 23:02:13 -04:00
Arfon Smith
8a0ff14d22 Merge pull request #2112 from nwellnhof/patch-1
Mark XS files as "type: programming"
2015-02-27 14:19:42 -06:00
Arfon Smith
7604a2d80b Merge pull request #2176 from github/2073-local
2073 local
2015-02-27 14:16:03 -06:00
Arfon Smith
78b1c8a430 Merge branch 'master' into 2073-local 2015-02-27 14:12:23 -06:00
Arfon Smith
4ef925d8be Merge pull request #2087 from pchaigno/case-sensitivity
Detection by extension made case-insensitive
2015-02-27 14:06:50 -06:00
Arfon Smith
7ba4f0c571 Oracle grammar now has a license 2015-02-27 13:51:23 -06:00
Arfon Smith
63fc9dd6a5 Updating grammars 2015-02-27 13:50:29 -06:00
Arfon Smith
b350f1572b Reformatting 2015-02-27 13:36:20 -06:00
Arfon Smith
e24a9ba602 Ordering 2015-02-27 13:36:12 -06:00
Arfon Smith
a338228b57 Merge branch 'master' into sqlllll 2015-02-27 13:32:09 -06:00
Arfon Smith
d6d232ec37 Merge pull request #2154 from pchaigno/kicad-files
Support for .pro INI files (KiCad project files)
2015-02-27 10:14:20 -06:00
Brandon Keepers
b723405e9f Merge pull request #2174 from github/2171-local
2171 local
2015-02-27 01:00:54 -10:00
Arfon Smith
cecb125b0b Merge branch 'master' into 2171-local 2015-02-26 21:13:18 -06:00
Arfon Smith
2177ff1806 Merge pull request #2024 from halirutan/feature-Mathematica10Extensions
New Mathematica (aka Wolfram Language) extensions added
2015-02-26 21:10:00 -06:00
Arfon Smith
674eb31cfe Merge pull request #2145 from larsbrinkhoff/muf
Add MUF - Multi-user Forth
2015-02-26 21:04:13 -06:00
Arfon Smith
9783710adf Merge pull request #2160 from brandonwamboldt/use-vcl
Use correct VCL syntax highlighting
2015-02-26 21:02:35 -06:00
Arfon Smith
8888555f71 Merge pull request #2102 from phillipberndt/master
Added a sample of a C header file that is currently recognized as C++
2015-02-26 21:00:52 -06:00
Arfon Smith
13a6180507 Merge pull request #2128 from larsbrinkhoff/d
Add to .d: DTrace and Makefile dependencies
2015-02-26 20:52:41 -06:00
Arfon Smith
9a86b9ad75 Instrument all calls and pass the blob, strategy and language candidates in the payload. 2015-02-26 15:27:33 -06:00
Paul Chaignon
65260e3aaa Grammar for OpenScad from TextMate bundle 2015-02-26 21:59:03 +01:00
Victor Zverovich
51af1bd162 Use AMPL grammar 2015-02-26 10:40:56 -08:00
Victor Zverovich
e093ac843f Remove AMPL samples using .mod, .dat and .run extensions 2015-02-25 14:22:45 -08:00
Victor Zverovich
13eb7c796e Remove .dat, .mod and .run AMPL extensions as they are ambiguous
As discussed in #2073 adding these extensions will require more work
to avoid incorrect language detection.
2015-02-25 12:59:23 -08:00
Victor Zverovich
1cdd3c55ab Add AMPL grammar 2015-02-25 12:56:02 -08:00
Victor Zverovich
407dbbb7fb Mark AMPL with tm_scope: none because it doesn't have grammar info 2015-02-25 12:54:31 -08:00
Victor Zverovich
0bccf97d16 Add support for the AMPL modeling and script language 2015-02-25 12:54:31 -08:00
Lars Brinkhoff
c6e16ee6bd MUF sample files.
39.m by Revar; license GPL v2.
cmd-say.muf by Natasha Snunkemeox; license MIT.
2015-02-25 19:29:57 +01:00
Lars Brinkhoff
2b25bb6d1c Add MUF language - Multi-user Forth. 2015-02-25 19:29:57 +01:00
Lars Brinkhoff
e791a71566 Add DTrace and Makefile dependency includes.
Sample file mpq.d by Georg Lukas; license GPL 2.
Sample file counts.d by Kate Turner; public domain.
Sample file javascript-race.d by unknown; license MPL 1.1/GPL 2.0/LGPL 2.1.
Sample file probes.d by momjian; license TBD.
2015-02-25 19:29:56 +01:00
Arfon Smith
739b512cee Prefer 'statistics' 2015-02-25 08:18:45 -06:00
Arfon Smith
effcab4297 Merge pull request #2165 from deviantintegral/attr-highlight-note
Issue #2140: Note that only modelines control syntax highlighting.
2015-02-25 08:17:55 -06:00
Nick Wellnhofer
2e1161e061 Add sample XS file 2015-02-25 15:14:34 +01:00
Andrew Berry
649a5987e7 Issue #2140: Note that only modelines control syntax highlighting. 2015-02-25 08:54:41 -05:00
Brandon Wamboldt
71e0e2bc8e Use actual VCL syntax highlighting 2015-02-24 17:54:23 -08:00
Charlie Somerville
fd7633518f add instrumentation to detection and classification 2015-02-25 12:34:07 +11:00
Garen Torikian
04252c28f2 Merge pull request #2153 from github/enforce-type
Test that languages have a type
2015-02-24 13:34:22 -08:00
Arfon Smith
94be1ab277 documentation? should use path too 2015-02-24 15:20:58 -06:00
Arfon Smith
8561f2a6b0 Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob
Conflicts:
	lib/linguist/version.rb
2015-02-24 14:54:14 -06:00
Arfon Smith
2bd050657d Merge pull request #2151 from soonhokong/master
add support for Lean Theorem Prover
2015-02-24 14:34:59 -06:00
Arfon Smith
c7d8f39ad8 Merge pull request #2158 from github/overrides-should-support-aliases-too
Finding by alias too.
2015-02-24 14:32:21 -06:00
Arfon Smith
ad4b5bdc16 Merge pull request #2157 from hoosierEE/master
Add a color code for J language to languages.yml.
2015-02-24 14:31:53 -06:00
Arfon Smith
ef5eff45aa Merge pull request #2152 from pchaigno/generated-go
Detect Go files generated by Protocol Buffers
2015-02-24 14:30:37 -06:00
Arfon Smith
d18c8614ba Merge pull request #2147 from pchaigno/tcc-interpreter
tcc interpreter for C
2015-02-24 14:25:38 -06:00
Arfon Smith
29192e8d5f Finding by alias too. 2015-02-24 14:10:41 -06:00
Soonho Kong
c2e894c48c add ace-mode support for Lean 2015-02-24 14:45:15 -05:00
Alex Shroyer
2cc6e5bfe6 Update languages.yml
Add a color for J language.  This color is the average of the colors of the [J wiki icon](http://www.jsoftware.com/jwiki/moin_static194/common/jwlogo.png).
2015-02-24 10:58:33 -05:00
Soonho Kong
2d15ea54cb add support for Lean Theorem Prover 2015-02-23 11:32:22 -05:00
Garen Torikian
6b26386a81 Improve "no type found" error message 2015-02-22 20:21:02 -08:00
CodingAnarchy
525e886d79 Comments added to one sample 2015-02-22 11:00:14 -08:00
CodingAnarchy
05f73df064 Brainfuck samples 2015-02-22 11:00:14 -08:00
Paul Chaignon
e592381a54 Support for .pro INI files (KiCad project files)
Update the heuristic for .pro to include both INI and QMake files
Fixes #2116
2015-02-22 19:33:06 +01:00
Garen Torikian
fecf0cc137 There is no "other" 2015-02-22 10:32:01 -08:00
Garen Torikian
507d191d7d Add missing types 2015-02-22 10:27:24 -08:00
Garen Torikian
8420e4b044 Test that languages have a type 2015-02-22 10:23:48 -08:00
Paul Chaignon
2ca5868610 Detect Go files generated by Protocol Buffers 2015-02-22 10:50:47 +01:00
Paul Chaignon
6d8559eccb Add test file for C interpreter tcc 2015-02-21 17:16:33 +01:00
Paul Chaignon
53d020f7b0 tcc interpreter for C 2015-02-21 17:10:43 +01:00
Adam Roben
ad9a2d231e Merge pull request #2141 from github/release-4.4.2
Release v4.4.2
2015-02-20 15:51:24 -05:00
Adam Roben
7bbb3da010 Bump version to 4.4.2 2015-02-20 15:00:42 -05:00
Adam Roben
76a85b7637 Merge pull request #2139 from github/stats-improvements
Improve repository language statistics
2015-02-20 15:00:06 -05:00
Adam Roben
80f72a5093 Classify the .google_apis/ directory as vendored
This is used in Android projects that use certain Google SDKs to store
the SDKs locally.
2015-02-20 10:36:47 -05:00
Adam Roben
df552c241e Classify XML as a data language
While XML is technically a markup language, in the majority of cases it
is just a serialization format for a tool (e.g., project files for IDEs)
rather than hand-authored markup. As such it isn't really useful to
include it in repository language statistics. A C# project doesn't
really care whether Visual Studio uses XML, JSON, or some other format
to serialize its project files, for example.
2015-02-20 10:30:44 -05:00
Adam Roben
9e020dd15d Classify "documentation/" directories (lowercase) as documentation
This is used in repositories like jashkenas/coffeescript.
2015-02-20 10:24:59 -05:00
Adam Roben
c7c0c30ecf Classify javadoc/ directories as documentation 2015-02-20 10:24:38 -05:00
Adam Roben
60deead669 Add a couple more documentation patterns
These are used in repositories like jashkenas/coffeescript and
tj/git-extras.
2015-02-20 09:53:07 -05:00
Adam Roben
6d843eca60 Merge pull request #2136 from github/release-4.4.1
Release v4.4.1
2015-02-20 09:35:32 -05:00
Stefan Johnson
885b5aab41 Changed tokenizer number literals to be more encompassing
Number literals now skips hexadecimal, and C style literals.
2015-02-20 14:08:39 +11:00
Adam Roben
12c22d0311 Bump version to 4.4.1 2015-02-19 16:56:20 -05:00
Adam Roben
d28f5e87c0 Merge pull request #2135 from github/rollback-clojure
Roll back to language-clojure v0.10.0
2015-02-19 16:55:44 -05:00
Adam Roben
471fabfff5 Roll back to language-clojure v0.10.0
v0.11.0 seems to have introduced deeply nested meta.expression.clojure
scopes.

* vendor/grammars/language-clojure cfc8a5c...bae6eee (6):
  < Prepare 0.12.0 release
  < Merge pull request #14 from joelash/master
  < Prepare 0.11.0 release
  < Merge pull request #13 from hanjos/proposed
  < Add initial spec
  < Add initial Travis CI config
2015-02-19 16:53:57 -05:00
Adam Roben
2e1a6d9d43 Merge pull request #2133 from github/update-grammars
Update grammar submodules
2015-02-19 11:19:44 -05:00
Adam Roben
d2d22e849e Update grammar submodules
* vendor/grammars/Modelica f2b1242...e1fd853 (1):
  > Some string improvements

* vendor/grammars/NimLime 58a1e0c...fac6b18 (2):
  > Added support for ST3
  > Merge pull request #15 from fenekku/master

* vendor/grammars/SublimePapyrus 152c7b7...2731300 (1):
  > Updated INI path setting behavior

* vendor/grammars/actionscript3-tmbundle d69fcc8...d24ad7d (1):
  > all contexts

* vendor/grammars/dart-sublime-bundle c1afc62...d55b1d4 (4):
  > Merge pull request #458 from guillermooo-forks/prep-release
  > Merge pull request #457 from guillermooo-forks/refactor
  > Merge pull request #455 from guillermooo-forks/fix-stagehand-unavailable
  > Merge pull request #452 from guillermooo-forks/improve-syntax-def

* vendor/grammars/grace-tmbundle c342d35...acbf9a2 (9):
  > Add simple block parameter highlighting
  > Track open braces for better interpolation
  > Add highlighting for full import syntax
  > Check for extra word characters after var keyword
  > Remove built-ins and change storage to support
  > Highlight untyped block parameters
  > Highlight interpolation braces as keywords
  > Highlight only capitalised words with generic args
  > Include comment highlighting in every construct

* vendor/grammars/language-javascript ac37d2a...d58edec (2):
  > Prepare 0.57.0 release
  > Merge pull request #101 from postcasio/iojs-shebang

* vendor/grammars/latex.tmbundle 0441781...669040b (1):
  > Fix doctest for `run_biber` in `texmate`

* vendor/grammars/mako-tmbundle e039636...da79638 (1):
  > Merge pull request #7 from seedofjoy/patch-1

* vendor/grammars/sublime-text-ox bdd03e0...10ca883 (5):
  > Update README.md
  > Update README.md
  > Moved license to separate md-file.
  > Ctrl+B executes on a single core instaed of two.
  > Added patterns for 'foreach' and 'delete'.
2015-02-19 10:50:00 -05:00
Brandon Keepers
6c41bfa44d Merge pull request #2118 from xbony2/patch-1
Made assembly color more noticeable
2015-02-18 11:51:57 +13:00
Brandon Keepers
d54bcc85e7 Merge pull request #2119 from pchaigno/new-grammars
Grammars for 4 languages
2015-02-18 11:39:13 +13:00
Brahn Partridge
ef22eee4d9 updating submodule to latest with license 2015-02-17 13:18:19 +01:00
Brahn Partridge
b609f24bbc added ace_mode 2015-02-17 13:09:00 +01:00
Brahn Partridge
83b03df98b Merge branch 'master' of https://github.com/github/linguist
Conflicts:
	grammars.yml
2015-02-17 12:56:19 +01:00
Arfon Smith
6d94ddb114 Merge pull request #2120 from github/ascii
Ascii
2015-02-16 11:23:08 -08:00
Arfon Smith
7fd720bf39 Merge branch 'master' into ascii 2015-02-16 11:18:31 -08:00
Arfon Smith
e10558e444 Fall back to classifier 2015-02-16 11:14:40 -08:00
Adam Roben
7c48d5ee1f Merge pull request #2114 from github/release-4.4.0
Release v4.4.0
2015-02-16 10:19:41 -05:00
Adam Roben
10ffd870e2 Update to latest version of season
This is needed to parse the Clojure grammar.
2015-02-16 09:50:04 -05:00
Adam Roben
3a4ab156b0 Update all grammars
* vendor/grammars/GDScript-sublime 99a0d51...44ac5c4 (3):
  > Merge pull request #7 from erbridge/null-keyword
  > Merge pull request #6 from erbridge/assert-keyword
  > Merge pull request #5 from erbridge/update-yaml

* vendor/grammars/Modelica d7e50e3...f2b1242 (8):
  > Update README.md
  > Update README.md
  > Update README.md
  > Update README.md
  > Update README.md
  > Update README.md
  > Delete .gitattributes
  > Create .gitattributes

* vendor/grammars/NimLime 7581153...58a1e0c (5):
  > Merge pull request #13 from fenekku/master
  > Refactored a bit nimsuggest service hosting a bit more robust
  > Print error if nimsuggest does not respond
  > Close test sock Turn off autoreload
  > Merge pull request #14 from Varriount/update-to-sockets

* vendor/grammars/Sublime-SQF-Language 708c78a...0313fbe (1):
  > Merge pull request #12 from DenVdmj/master

* vendor/grammars/SublimePapyrus 5a7b3e7...152c7b7 (1):
  > Added setting

* vendor/grammars/ats.sublime d954ef6...2565468 (2):
  > fix record/tuple/then/else with {
  > fix bugs for single quote char

* vendor/grammars/c.tmbundle f825425...f6048af (1):
  > Add syntax highlight for CoreGraphics types

* vendor/grammars/dart-sublime-bundle fecdbc5...c1afc62 (4):
  > Merge pull request #450 from guillermooo-forks/prep-release
  > Merge pull request #449 from guillermooo-forks/fix-analysis-server-init
  > Merge pull request #448 from guillermooo-forks/prep-release
  > Merge pull request #446 from guillermooo-forks/new-analysis-server-integration-linting

* vendor/grammars/elixir-tmbundle dcf1fc1...9c63ff0 (1):
  > Merge pull request #34 from bharendt/master

* vendor/grammars/factor 4ada328...ec896cd (17):
  > images.tiff: Fix partial refactor rollback and offeset typo.
  > images.tiff: Fix infinite loop bug exposed by AFL test suite. IDFs are found at certain offsets, then the next offset is after the IDF. If a next-offset is its own previous offset, then it would loop. Now we record the offset and stop if it would loop.
  > alien.libraries: Cannot include alien.libraries.finder here for docs.
  > Explicitly reference find-library in alien docs
  > Fix typo in hash-set documentation
  > opencl: remove <size_t> (use size_t <ref> instead).
  > forestdb.ffi: Update ffi.
  > forestdb: Embrace the forestdb handle vs kvs handle idiom. Update tests.
  > stack-checker.state: Fix error in docs. Tweak doc grammar.
  > bootstrap.image.upload: Use pscp on Windows for uploading boot images since c:\ paths are treated as hostnames and the command fails.
  > stack-checker: minor help-lint fixes.
  > compiler.tree.*: more compiler tree docs
  > stack-checker.*: misc doc additions
  > stack-checker.known-words: docs and tests
  > stack-checker.values: docs and tests
  > stack-checker.state: docs and tests
  > stack-checker.backend: docs and  tests

* vendor/grammars/fsharpbinding 92d969b...0cd6439 (2):
  > revert typo, typo is actually upstream in monodevelop
  > bump version number

* vendor/grammars/java.tmbundle a74cb83...ccdebdf (1):
  > Highlight volatile like synchronized

* vendor/grammars/javadoc.tmbundle 484d468...5276d7a (1):
  > Grammar: Be strict on what can start an HTML tag

* vendor/grammars/language-clojure bae6eee...cfc8a5c (6):
  > Prepare 0.12.0 release
  > Merge pull request #14 from joelash/master
  > Prepare 0.11.0 release
  > Merge pull request #13 from hanjos/proposed
  > Add initial spec
  > Add initial Travis CI config

* vendor/grammars/language-csharp fba368a...d07ba8f (4):
  > Prepare 0.5.0 release
  > Merge pull request #19 from atom/ks-remove-deprecations
  > Prepare 0.4.0 release
  > Merge pull request #16 from damieng/master

* vendor/grammars/language-gfm 18400b2...5f5df30 (3):
  > Prepare 0.64.0 release
  > Add heading spec with no space
  > Merge pull request #77 from jonathandelgado/master

* vendor/grammars/language-python 0141d44...8daa100 (4):
  > Prepare 0.32.0 release
  > Merge pull request #54 from nicktimko/binary-literals
  > Prepare 0.31.0 release
  > Merge pull request #53 from nicktimko/python-3-octals

* vendor/grammars/latex.tmbundle 16154ce...0441781 (16):
  > Remove unnecessary code from tests
  > Try to read tex file using different encodings
  > Recognize errors in files containing spaces
  > Prepend `lib` to path in Python scripts
  > Fix minor style issues reported by `flake8`
  > Tell `flake8` to ignore “relative” imports
  > Use `format` instead of `sprintf`
  > Use encoding `latin_1` to open log files
  > Add “LaTeX Tidy” to the bundle again
  > Add `YAML::Tiny` library to the bundle
  > Use `texdoc` to show documentation for single word
  > Determine `TEXMFMAIN` only once in `texdoc`
  > Autoupdate cache for “Documentation for Package”
  > Update “Documentation for Package”
  > Use direct imports in `texdoc`
  > Add folding markers for sections

* vendor/grammars/objective-c.tmbundle 8387be8...1bade8a (1):
  > Add syntax highlight for the typedefs in NSObjCRuntime.h

* vendor/grammars/php.tmbundle 1ae104d...7178a10 (4):
  > Doc Snippet: Allow for static keyword in declarations
  > Further work on escapes in single-quoted regular expressions
  > Grammar: Correct improper '\' escaping
  > Improve/simplify escaping rules for single-quoted regexps

* vendor/grammars/sublime-nix 412f7e1...217ffe5 (1):
  > Fix comma-first
2015-02-16 09:45:24 -05:00
Paul Chaignon
651d863069 Grammar for PigLatin from Sublime Text package 2015-02-15 17:45:25 +01:00
Paul Chaignon
a3c595a4a9 Grammar for AsciiDoc from TextMate bundle 2015-02-15 17:30:19 +01:00
Paul Chaignon
7660714a9e Stylus grammar from Sublime Text package 2015-02-15 17:24:56 +01:00
Paul Chaignon
71002dfb65 Grammar for BrightScript from TextMate bundle 2015-02-15 17:16:10 +01:00
xbony2
013cfdcdaf Made assembly color more noticeable 2015-02-15 11:12:40 -05:00
Adam Roben
5ad6add91e Bump version to 4.4.0 2015-02-13 16:44:10 -05:00
Adam Roben
2f5b49f4ae Merge pull request #2097 from github/detect-all-markup
Detect all markup languages when computing language statistics
2015-02-13 16:43:41 -05:00
Adam Roben
353479fe72 Add a color for HTML
Courtesy of @fabianperez and the HTML5 logo.
2015-02-13 16:20:14 -05:00
Adam Roben
6f5c935837 Clarify the difference between vendored and documentation files 2015-02-13 14:52:30 -05:00
Adam Roben
1bf91d4281 Use .html files in some #documentation? tests
This is what we were trying to classify in the twbs/bootstrap
repository, for example.
2015-02-13 14:31:40 -05:00
Adam Roben
8d2dd55c94 Categorize INSTALL files as documentation too 2015-02-13 14:30:44 -05:00
Adam Roben
6a86e8ea97 Add BlobHelper#include_in_language_stats?
This just extracts some logic from Repository#compute_stats and makes it
testable.
2015-02-13 14:27:20 -05:00
Adam Roben
a817d95d6c Fix CSS/SVG grammar names 2015-02-13 11:57:21 -05:00
Nick Wellnhofer
7cdb5ccba8 Mark XS files as "type: programming"
I'd actually prefer to treat Perl XS files as C code, but this fix shouldn't be controversial.
2015-02-13 15:37:39 +01:00
Arfon Smith
22b8d462c2 Merge pull request #2076 from larsbrinkhoff/nasm
Add .nasm extension for Assembly files.
2015-02-12 10:51:37 -06:00
Adam Roben
066052ddd2 Exclude documentation files from language statistics
Documentation is an important part of a software project but is not
generally thought of as part of the code for that project. Repository
language statistics are used to quantify the project's code, so it makes
sense to exclude documentation from those computations.

Documentation files are recognized similarly to vendored files.
lib/linguist/documentation.yml contains regular expressions to match
common names for documentation files. A new linguist-documentation Git
attribute can be used to override those conventions.
2015-02-12 10:20:47 -05:00
Lars Brinkhoff
d673010420 Add .nasm extension for Assembly files.
Sample file by Chris Hinsley.
2015-02-12 08:24:44 +01:00
Arfon Smith
fffd1b986d Merge pull request #2085 from github/shebang-first
Shebang first
2015-02-11 16:00:25 -06:00
Phillip Berndt
dc852b6398 Added a sample of a C header file that is currently recognized as C++
See https://github.com/github/linguist/issues/1626#issuecomment-73870081
Taken from 469fe63df4/pqiv.h
2015-02-11 13:00:11 +01:00
Arfon Smith
64471be009 Merge pull request #2100 from honzabrecka/feature-as3-highlighting
change submodule url for proper AS3 syntax highlighting
2015-02-10 15:08:47 -06:00
Arfon Smith
d43ffe09b3 Merge pull request #2098 from larsbrinkhoff/fortran
Tweak heuristic for free-form Fortran.
2015-02-10 15:06:44 -06:00
Adam Roben
e0c1107a25 Classify SVG files as data
This keeps SVG files (which are really just images, even though they
happen to be represented as text) out of repository language statistics.
2015-02-10 15:36:08 -05:00
Jan Brecka
3475aefd04 change submodule url 2015-02-10 21:15:45 +01:00
Adam Roben
4e4a18c71a Classify CSS as a markup language
It was the only language in Language.detectable_markup that wasn't
actually classified as "markup".
2015-02-10 14:08:58 -05:00
Lars Brinkhoff
9a2f2c1fb2 Tweak heuristic for free-form Fortran. 2015-02-10 20:06:00 +01:00
Adam Roben
b2ee2cc7b8 Detect all markup languages when computing language statistics
Originally, only "programming" languages were included in repository
language statistics. In 33ebee0f6a we
started detecting a few selected "markup" languages as well. We didn't
include all "markup" languages because at the time formats like Markdown
and AsciiDoc were labeled as "markup" languages, and we thought that
including those prose (i.e., non-code) languages in repository
statistics on github.com was misleading for repositories that are
largely about code but also contain a lot of documentation (e.g.,
rails/rails).

This hand-picked set of whitelisted "markup" languages can cause strange
categorization for some repositories. For example, it includes CSS (and
some variants) but not HTML. This results in repositories that contain
the source code for a static website being classified as either a
JavaScript (programming) or CSS (markup) repository, with no mention of
HTML anywhere.

Fast-forward to today, and prose languages are no longer "markup"
languages; they're now "prose" languages. So now we can include all
"markup" languages in repository language statistics without worrying
about undesirable effects for documentation-heavy repositories.
2015-02-10 13:39:42 -05:00
Adam Roben
ee0b4f96a8 Merge pull request #2089 from pchaigno/new-grammars
Grammar for 5 languages
2015-02-09 17:27:31 -05:00
Paul Chaignon
665f9ee5b5 Merge branch 'master' into new-grammars 2015-02-09 23:19:37 +01:00
Paul Chaignon
4eb8903bed Comment for GAP grammar in whitelist 2015-02-09 23:01:24 +01:00
Paul Chaignon
d11b2f05bb Detection of zlib license 2015-02-09 22:57:19 +01:00
Paul Chaignon
11f7e6e1b4 Add Papyrus and GAP grammars to whitelist 2015-02-09 21:29:53 +01:00
Adam Roben
72acbc567b Update Lightshow's URL
This is the public URL going forward. The old URL will redirect to the new one.
2015-02-09 13:37:54 -05:00
Brandon Keepers
1170ac6105 Merge pull request #2092 from github/perl-use-5
Add  "use 5.xxx" to Perl Heuristic
2015-02-09 10:24:00 -05:00
Brandon Keepers
bdc724d548 Detect "use 5.xxx" as Perl 2015-02-09 10:19:36 -05:00
Brandon Keepers
74cd03de0b Remove old link in docs 2015-02-09 09:57:24 -05:00
David Pyke Le Brun
5e9bb67d10 temporary add grammer to whitelist until license gets added 2015-02-09 14:27:14 +00:00
David Pyke Le Brun
e969172543 recode heuristic to use existing style. add additional sample 2015-02-09 14:16:25 +00:00
David Pyke Le Brun
f570260dfe Merge remote-tracking branch 'upstream/master' into plsql
Conflicts:
	.gitmodules
2015-02-09 12:04:21 +00:00
David Pyke Le Brun
7ecf65551e re-add oracle grammer module using https 2015-02-09 11:58:50 +00:00
David Pyke Le Brun
fb6ec8aaa7 remove oracle grammer. (to be readded) 2015-02-09 11:46:14 +00:00
Arfon Smith
0ba6a7adf0 Merge pull request #2086 from pchaigno/mediawiki-grammar
Grammar for Mediawiki
2015-02-08 11:16:37 -06:00
Paul Chaignon
0019abe5e7 Opal grammar from Sublime Text package 2015-02-08 11:45:54 +01:00
Paul Chaignon
30d2883436 Grammar for PogoScript from TextMate bundle 2015-02-08 11:44:11 +01:00
Paul Chaignon
cc5881dca2 Grammar for Propeller Spin from Sublime Text package 2015-02-08 11:20:40 +01:00
Paul Chaignon
d17f5dfd9e Papyrus grammar from Sublime Text package 2015-02-08 11:14:18 +01:00
Paul Chaignon
4c037c644f Grammar for GAP from TextMate bundle 2015-02-08 10:43:45 +01:00
Paul Chaignon
a08f0da30d Grammar for Mediawiki from TextMate bundle 2015-02-07 19:58:49 +01:00
Arfon Smith
654cfd7a47 Merge pull request #2078 from pchaigno/innosetup-grammar
Grammar for Inno Setup
2015-02-07 10:46:11 -06:00
Arfon Smith
88e79cd3a8 Adding fixtures to test shebang strategy ordering 2015-02-07 10:24:03 -06:00
Arfon Smith
4543c7a0b3 Use the shebang strategy first 2015-02-07 08:47:17 -06:00
Brandon Keepers
f5bc9735af Merge pull request #2002 from github/rewrite-readme
Rearrange docs
2015-02-06 16:45:01 -05:00
Brandon Keepers
107a27aa25 Fix formatting of example 2015-02-06 16:41:57 -05:00
Brandon Keepers
5c29ce0695 Add usage and link to contributing 2015-02-06 16:26:55 -05:00
Paul Chaignon
41e1b7bd4e Detection by extension made case-insensitive 2015-02-06 22:14:22 +01:00
Brandon Keepers
462a570d3c Friendly welcome 2015-02-06 16:04:32 -05:00
Brandon Keepers
7f1af4215a Merge remote-tracking branch 'origin/master' into rewrite-readme
* origin/master: (97 commits)
  Modifying some modeline fixtures to test case InSeNsItivitY
  Making modelines case-insensitive
  Missing whitespace
  Vim and Emacs modelines
  Update README.md
  Update URL for AutoHotkey grammar
  Remove grammar for AutoHotkey
  Bumping version to v4.3.1
  Grammar update
  'Text' doesn't qualify as a valid modeline language.
  Add .4TH Forth extension.
  Grammar for eC from TextMate bundle
  Sample for eC
  Grammar for Ox from Sublime Text package
  Grammar for Grace from TextMate bundle
  Grammar for G-Code from Sublime Text package
  Grammar for TXL from Sublime Text package
  Grammar for J from Sublime Text package
  Sample for J
  Grammar for Golo from Sublime Text package
  ...

Conflicts:
	README.md
2015-02-06 15:53:19 -05:00
Arfon Smith
7a141a923c Merge pull request #2083 from github/case-insensitive-modelines
Making modelines case-insensitive
2015-02-06 09:06:28 -06:00
Arfon Smith
0db1d1c8ca Modifying some modeline fixtures to test case InSeNsItivitY 2015-02-06 08:48:59 -06:00
Arfon Smith
201b0ba53c Making modelines case-insensitive 2015-02-06 08:41:37 -06:00
David Pyke Le Brun
3e54d6651c update of old PL/SQL PLpgSQL and SQLPL patch based on current version
see [linguist] add support for oracle PLSQL (#1003)
2015-02-06 13:36:40 +00:00
Arfon Smith
6d770ab68f Merge pull request #2079 from lqez/patch-1
Missing whitespace
2015-02-05 11:27:08 -06:00
Park Hyunwoo
6ca149de1d Missing whitespace 2015-02-05 10:27:14 +09:00
Paul Chaignon
2e76ce740e Grammar for Inno Setup from Sublime Text package 2015-02-04 21:28:36 +01:00
Paul Chaignon
a664b9dd0c Sample for Inno Setup 2015-02-04 21:26:42 +01:00
Arfon Smith
d49701f470 Merge pull request #2071 from pchaigno/new-grammars
Grammars for 6 languages
2015-02-04 14:14:54 -06:00
Arfon Smith
67fae52b32 Vim and Emacs modelines 2015-02-04 13:52:08 -06:00
Arfon Smith
bb9f6ff082 Update README.md 2015-02-04 13:51:25 -06:00
Paul Chaignon
ad7fc977df Merge conflict fixed 2015-02-04 20:01:27 +01:00
Paul Chaignon
0479a89982 Update URL for AutoHotkey grammar 2015-02-04 19:57:48 +01:00
Paul Chaignon
d7b9791514 Remove grammar for AutoHotkey 2015-02-04 19:47:23 +01:00
Arfon Smith
832d379ace Merge pull request #2077 from github/cut-release-v4.3.1
Cut release v4.3.1
2015-02-04 09:20:30 -06:00
Arfon Smith
b8f3078966 Bumping version to v4.3.1 2015-02-04 08:31:36 -06:00
Arfon Smith
d496aaae55 Grammar update 2015-02-04 08:28:55 -06:00
Brandon Keepers
87e60cfd78 Merge pull request #2063 from larsbrinkhoff/modeline
'Text' shouldn't qualify as a valid modeline language.
2015-02-04 09:18:38 -05:00
Lars Brinkhoff
2077fa3837 'Text' doesn't qualify as a valid modeline language. 2015-02-04 08:20:19 +01:00
Felipe Oliveira Carvalho
96c2f86613 Add cpplint.py to vendor.yml
`cpplint.py` is Google's Python script used for linting C++ files.
I have a small C++ project with `cpplint.py` included mistakenly making
Python the main language of my project.
2015-02-04 02:22:08 -03:00
Edmundo Ruiz
eaa03e15ed Improved Heuristics for .asc files. 2015-02-03 21:09:32 -08:00
Arfon Smith
95bedf0bfc Merge pull request #2072 from larsbrinkhoff/4TH
Add .4TH Forth extension.
2015-02-03 19:49:46 -06:00
Lars Brinkhoff
3a1b17f1f9 Add .4TH Forth extension. 2015-02-03 13:04:06 +01:00
Paul Chaignon
9fe9bf617f Grammar for eC from TextMate bundle 2015-02-03 12:52:35 +01:00
Paul Chaignon
3c34da8bd3 Sample for eC 2015-02-03 12:52:06 +01:00
Edmundo Ruiz
9fa7adaa61 #1638 New heuristics to distinguish between AsciiDoc, AGS Script, and Public Key. 2015-02-03 00:43:53 -08:00
Edmundo Ruiz
54a2f5347a Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/linguist/heuristics.rb
2015-02-02 22:13:00 -08:00
Edmundo Ruiz
a716d3ad49 Reverted name Adventure Game Studio back to AGS Script. 2015-02-02 21:48:36 -08:00
Paul Chaignon
8f70604466 Grammar for Ox from Sublime Text package 2015-02-02 21:50:49 +01:00
Paul Chaignon
2044e191a2 Grammar for Grace from TextMate bundle 2015-02-02 21:48:27 +01:00
Paul Chaignon
8fe9ec0521 Grammar for G-Code from Sublime Text package 2015-02-02 21:37:24 +01:00
Paul Chaignon
034e510ba5 Grammar for TXL from Sublime Text package 2015-02-02 21:24:22 +01:00
Arfon Smith
bdec1ac64d Merge pull request #2064 from pchaigno/new-grammars
Grammars for 8 languages
2015-02-01 14:09:42 -08:00
Paul Chaignon
36a0d760e9 Grammar for J from Sublime Text package 2015-02-01 21:52:24 +01:00
Paul Chaignon
a901e85c3c Sample for J 2015-02-01 21:50:34 +01:00
Paul Chaignon
6e9dc2339d Grammar for Golo from Sublime Text package 2015-02-01 21:41:22 +01:00
Paul Chaignon
3864e712ef Grammar for GDScript from Sublime Text package 2015-02-01 21:37:07 +01:00
Paul Chaignon
8376f1e4a4 Grammar for Creole from Sublime Text package 2015-02-01 21:34:10 +01:00
Paul Chaignon
1b0fd752d3 Grammar for CLIPS from Sublime Text package 2015-02-01 21:29:03 +01:00
Paul Chaignon
bef473a48b Samples for CLIPS 2015-02-01 21:27:14 +01:00
Paul Chaignon
0c60078d27 Grammar for APL from Sublime Text package 2015-02-01 21:16:45 +01:00
Arfon Smith
2f65462ce0 Trailing slash fix. 2015-02-01 11:39:59 -08:00
Arfon Smith
ace6156c65 Merge pull request #2058 from pchaigno/move-autohotkey-grammar
Update URL for AutoHotkey grammar
2015-02-01 11:24:54 -08:00
Paul Chaignon
ada8feba34 Merge branch 'master' into move-autohotkey-grammar 2015-02-01 20:12:22 +01:00
Arfon Smith
75d685a7f4 Merge pull request #2000 from jayphelps/patch-2
Added `htmlbars` as an alias for Handlebars
2015-02-01 11:03:13 -08:00
Arfon Smith
6b7f20323b Merge pull request #2057 from steinwaywhw/master
Adding ATS language support by converting existing SublimeText syntax def
2015-01-31 19:03:05 -06:00
Steinway Wu
c2ab5bc09d Merge remote-tracking branch 'upstream/master'
Conflicts:
	.gitmodules
2015-01-31 17:24:23 -05:00
Arfon Smith
95d5b8bdbc Merge pull request #2059 from pchaigno/modelica
Support of Modelica language
2015-01-31 15:17:38 -06:00
Steinway Wu
da7b3182e8 update to newer ats-mode-sublime 2015-01-31 16:00:00 -05:00
Paul Chaignon
08790f2f0a Grammar for Modelica 2015-01-31 13:44:11 +01:00
Paul Chaignon
896270e617 Support for Modelica 2015-01-31 13:37:42 +01:00
Paul Chaignon
fb40ee986f Update URL for AutoHotkey grammar 2015-01-31 12:16:41 +01:00
Paul Chaignon
20b82e4bc9 Remove grammar for AutoHotkey 2015-01-31 12:14:36 +01:00
Steinway Wu
513347911e update ats grammar to the latest commits 2015-01-30 13:25:22 -05:00
Arfon Smith
1a3960e95d Merge pull request #2056 from github/cut-release-v4.3.0
Cut release v4.3.0
2015-01-30 12:15:55 -06:00
Steinway Wu
7d9a47b7c3 remove atxt support 2015-01-30 13:02:37 -05:00
Steinway Wu
c80d085e33 revise git module 2015-01-30 12:56:17 -05:00
Steinway Wu
98518e5c8c add ats mode from sublime package 2015-01-30 12:52:38 -05:00
Arfon Smith
2b7a488d64 Bumping version to 4.3.0 2015-01-30 11:25:50 -06:00
Arfon Smith
25aa6669be Updating grammars 2015-01-30 11:17:13 -06:00
Arfon Smith
ef9e1c4e4f Merge pull request #2055 from github/cp-cpp
Adding cp as a C++ extension
2015-01-30 11:04:21 -06:00
Arfon Smith
cf483c28e3 Adding cp as a C++ extension 2015-01-30 10:56:06 -06:00
Arfon Smith
fecc39d97d Merge pull request #1652 from github/objc-mercury
Disambiguate Matlab, Objective-C, Mathematica, M, and Mercury
2015-01-30 08:51:51 -06:00
Arfon Smith
339370a703 Extracting ObjectiveC regex into a constant 2015-01-30 08:48:26 -06:00
Arfon Smith
359e5157a8 Merge branch 'master' into objc-mercury 2015-01-30 08:34:50 -06:00
Arfon Smith
207bd8d77c Merge pull request #2001 from rusthon/master
added Rusthon to languages list for syntax highlighting in md.
2015-01-30 08:28:27 -06:00
Arfon Smith
ba5454808e Merge pull request #1916 from Mailaender/dot-desktop-files
Added support for Linux .desktop and .emacs.desktop files
2015-01-30 08:24:27 -06:00
Arfon Smith
9196ba91bb Merge pull request #2041 from github/emacs-vim-mode-lines
Emacs vim modelines
2015-01-29 20:12:47 -06:00
Arfon Smith
5ff1b02e49 1.9.3 reprieve 2015-01-29 20:03:18 -06:00
Brandon Keepers
4f92d620eb Simplify detect 2015-01-29 16:28:54 -06:00
Brandon Keepers
e7f5779659 Break modelines into two regular expressions
This makes them easier to read and maintains Ruby 1.9 compatibility
2015-01-29 16:28:54 -06:00
Arfon Smith
512cfc4858 Dropping 1.9.3 2015-01-29 15:45:07 -06:00
Brandon Keepers
437ba70b9e Find modeline anywhere in the data 2015-01-29 13:14:06 -06:00
Brandon Keepers
fadca563bc Move regex to a constant 2015-01-29 13:09:12 -06:00
Brandon Keepers
7a601b196e Fix regex syntax 2015-01-29 13:07:18 -06:00
Arfon Smith
bf6bd246fd Syntax tweak 2015-01-28 16:52:26 -06:00
Arfon Smith
168ff4c050 Merge pull request #2048 from infininight/master
Update Swift grammar
2015-01-28 07:02:49 -06:00
Arfon Smith
d6fdbafa3c Merge pull request #2047 from vors/powershell
Replace vendor powershell.tmBundle by SublimeText powershell
2015-01-28 07:00:18 -06:00
Michael Sheets
3e1570a716 Update Swift grammar 2015-01-28 04:12:05 -06:00
Sergei Vorobev
160c0b4ac0 Replace vendor powershell.tmBundle by SublimeText powershell. Improve samples for PS. 2015-01-27 18:31:17 -08:00
Arfon Smith
cf0bc3914f Merge pull request #2044 from pchaigno/liquid-grammar
Grammar for Liquid
2015-01-27 09:45:24 -06:00
Arfon Smith
96154627d3 Clearer regex 2015-01-27 09:42:24 -06:00
Arfon Smith
6f07b62a3f New year. 2015-01-27 08:18:34 -06:00
Paul Chaignon
cae17b91b8 Grammar (TextMate bundle) for Liquid 2015-01-27 13:02:13 +01:00
Arfon Smith
69b68f3a44 Extracting common methods into helper. 2015-01-26 16:22:55 -06:00
Arfon Smith
20a3e7e4b8 Update docs 2015-01-26 16:12:20 -06:00
Arfon Smith
119a8fff1e Emacs modeline fixtures 2015-01-26 15:38:19 -06:00
Arfon Smith
8094b1bd92 Test strategy and language 2015-01-26 15:38:07 -06:00
Arfon Smith
98fc4d78aa Slightly reworked regex. 2015-01-26 15:37:45 -06:00
Arfon Smith
d773c2e90d Escape the * 2015-01-26 15:18:40 -06:00
Arfon Smith
7929e7ab9c Adding Emacs modes 2015-01-26 15:11:55 -06:00
Arfon Smith
e8e95f113c Modeline should come first (as it's an override) 2015-01-26 15:03:22 -06:00
Arfon Smith
429c791377 Testing Vim modeline support 2015-01-26 14:39:07 -06:00
Arfon Smith
e536eea5b6 Basic Vim modeline detection strategy 2015-01-26 14:22:09 -06:00
Adam Roben
0a5b5eadeb Merge pull request #1986 from pchaigno/remove-lexer
Remove last mentions of lexer
2015-01-26 10:28:11 -05:00
Arfon Smith
12351d3a8a Merge pull request #2037 from pchaigno/asp-tm_scope
Change TextMate scope for ASP
2015-01-25 19:24:15 -06:00
halirutan
aa8eb955e9 Removed .mt file extension and example since there are more languages that use this. 2015-01-26 01:44:45 +01:00
halirutan
8e52c18200 Merge branch 'master' into feature-Mathematica10Extensions 2015-01-26 01:43:13 +01:00
Paul Chaignon
7421b2e553 Change TextMate scope for ASP 2015-01-25 19:04:00 +01:00
Arfon Smith
8aa4dce6f4 Merge pull request #1723 from techhat/pythonmultiline
Python also supports triple single-quotes for comments
2015-01-24 10:54:30 -06:00
Joseph Hall
feeceefe99 Merge pull request #1 from pchaigno/pythonmultiline
Multiline comments for Python during tokenization
2015-01-24 09:00:00 -07:00
Arfon Smith
60483e3216 Merge pull request #1143 from pchaigno/newlisp
NewLisp language added with some heuristics
2015-01-24 08:58:07 -06:00
Arfon Smith
49837e0c20 Merge pull request #2031 from pchaigno/fix-pascal-samples
Better samples for Pascal
2015-01-24 08:51:26 -06:00
Paul Chaignon
c7668ad882 Better samples for Pascal 2015-01-24 01:32:56 +01:00
Paul Chaignon
4f37563be1 Remove mention of lexer for GAP in languages.yml 2015-01-24 01:02:58 +01:00
halirutan
e468723abc Reordered the extensions entries for Mathematica
Added examples for newly introduces file extensions
2015-01-24 01:00:41 +01:00
Paul Chaignon
9c3ab95048 Merge branch 'master' into remove-lexer 2015-01-24 00:57:20 +01:00
halirutan
99bfde32a8 Merge branch 'master' into feature-Mathematica10Extensions 2015-01-24 00:54:03 +01:00
Paul Chaignon
bf5651e127 Merge branch 'master' into newlisp 2015-01-24 00:15:52 +01:00
Arfon Smith
f854a12043 Merge pull request #2025 from hyperair/scad
Specify ace_mode for OpenSCAD
2015-01-23 15:29:57 -06:00
Arfon Smith
dd09f02f53 Adding some samples to verify new heuristics 2015-01-23 15:25:36 -06:00
Arfon Smith
268f43d668 Merge pull request #2030 from github/tst
GAP and Scilab
2015-01-23 14:50:31 -06:00
Arfon Smith
d95b7504ab Merge branch 'master' into tst
Conflicts:
	lib/linguist/heuristics.rb
	lib/linguist/language.rb
	lib/linguist/languages.yml
2015-01-23 14:35:27 -06:00
Arfon Smith
4d2b6ee99e Updating heuristic order 2015-01-23 13:22:45 -06:00
Arfon Smith
6ad6984fe7 Merge branch 'master' into mmmmmm
Conflicts:
	lib/linguist/heuristics.rb
2015-01-23 11:02:25 -06:00
Chow Loong Jin
97d48a204a Specify ace_mode for OpenSCAD 2015-01-23 14:14:15 +08:00
halirutan
c6e8915627 Added Wolfram Language extensions to the Mathematica section. I checked whether other languages have the same extensions I indroduced which is not the case.
Added a sample .wlt file for a Wolfram Unit Test
2015-01-23 04:40:47 +01:00
Arfon Smith
496b3e5a78 Bumping to 4.3.0 beta 2015-01-20 14:48:25 -06:00
Arfon Smith
01be9e68ee Revert "Revert "Use path for Generated?"" 2015-01-20 14:34:36 -06:00
Arfon Smith
cc56ddb354 Merge pull request #2015 from github/cut-release-v4.2.7
Cut release v4.2.7
2015-01-20 10:40:38 -06:00
Arfon Smith
3ce527b0b9 Updating version.rb 2015-01-20 09:29:26 -06:00
Arfon Smith
94d4d92cc0 Merge branch 'master' into cut-release-v4.2.7 2015-01-20 09:22:55 -06:00
Arfon Smith
72b268b253 Updating grammars 2015-01-20 09:17:46 -06:00
Arfon Smith
2c7885bbc1 Merge pull request #2014 from github/revert-1976-path-for-fileblob
Revert "Use path for Generated?"
2015-01-20 09:12:33 -06:00
Arfon Smith
36120a9122 Revert "Use path for Generated?" 2015-01-20 08:58:11 -06:00
Maximo Dominguez
56c3b8c3fe Added generated rule for SpecFlow's *.feature.cs
More info about specFlow here http://www.specflow.org/
2015-01-18 19:31:47 -04:00
Arfon Smith
6305ec3f31 Merge pull request #2005 from JJ/master
Adds Rexfile
2015-01-18 08:44:00 -06:00
Juan Julián Merelo Guervós
b319731a2d Adds Rexfile
That's a Vagrantfile-like file for the Rex provisioning tool.
2015-01-18 13:16:33 +01:00
Arfon Smith
885740dad6 Merge pull request #1944 from pchaigno/revert-1438
Revert #1438: add file extensions with multiple segments
2015-01-17 16:12:56 -06:00
hartsantler
b178268cbc changed to make rusthon a python alias.
https://github.com/github/linguist/pull/2001
2015-01-17 13:34:12 -08:00
Arfon Smith
3ae556893f Merge pull request #1900 from dalehenrich/master
Use source.smalltalk to hightlight STON file
2015-01-17 09:15:57 -06:00
Arfon Smith
43b297636d Merge pull request #2003 from pchaigno/cs-heuristics
Heuristics for .cs files: C# and Smalltalk
2015-01-17 09:10:58 -06:00
Paul Chaignon
8cd17698fe Slightly improve heuristic for C# 2015-01-17 13:34:06 +01:00
Brandon Keepers
3886c406ab Add section on fixing misclassifications 2015-01-16 10:28:09 -05:00
Brandon Keepers
b56671c20d Lists are easier to follow than walls of text 2015-01-16 10:15:47 -05:00
Brandon Keepers
f3cbad065f Merge remote-tracking branch 'origin/master' into rewrite-readme
* origin/master: (104 commits)
  Added shebang sample for Pike.
  Added interpreter "pike" for Pike.
  Add support for FXML files.
  Add support for Turtle and SPARQL
  Fixed issues for web ontology to pass tests
  Added Web Ontology Language Support
  Simplify blob tests
  Use the original FileBlob path for filesystem access
  Sample sagews file, as requested
  Update languages.yml with *.sagews
  New grammar for Racket
  Remove grammar for Racket
  Modifying BlobHelper and FileBlob to use path
  Sample file for .cmake.in
  Restore the .cmake.in extension.
  More CMake samples.
  Updating file regex to support unlicense.txt
  Updating ref to include license
  Remove pry
  Start using path with LazyBlob
  ...

Conflicts:
	CONTRIBUTING.md
	README.md
2015-01-16 09:35:33 -05:00
Brandon Keepers
4b3b1a80f6 Rearrange docs 2015-01-16 09:02:51 -05:00
hartsantler
7abcc39c8c added Rusthon to languages list for syntax highlighting in md. 2015-01-16 04:32:52 -08:00
Jay Phelps
a5b915d571 Added htmlbars as an alias for Handlebars
See tildeio/htmlbars
2015-01-15 22:13:06 -08:00
Arfon Smith
0fcdca653a Merge pull request #1995 from phuicy/master
Support for web ontology language (OWL)
2015-01-15 20:26:19 -06:00
Adam Roben
9ec801d495 Merge pull request #1976 from github/path-for-fileblob
Use path for Generated?
2015-01-15 21:20:00 -05:00
Arfon Smith
4ccbdcb93c Merge pull request #1999 from github/more-relative-paths
More relative paths
2015-01-15 16:41:36 -06:00
Arfon Smith
53f909f2a1 Merge pull request #1998 from Frigolit/master
Added interpreter "pike" for Pike.
2015-01-15 16:07:22 -06:00
Pontus Rodling
f8603705a8 Added shebang sample for Pike. 2015-01-16 09:56:13 +13:00
Pontus Rodling
3bc1b97a68 Added interpreter "pike" for Pike. 2015-01-16 09:18:55 +13:00
Arfon Smith
27ed17e62e Merge pull request #1996 from aoetk/fxml
Add FXML to languages.yml
2015-01-15 09:30:02 -06:00
Arfon Smith
f3d5090d51 Merge pull request #1841 from danmichaelo/turtle
Add support for Turtle and SPARQL
2015-01-15 09:28:26 -06:00
AOE Takashi
d030f9be99 Add support for FXML files. 2015-01-15 17:42:47 +09:00
Dan Michael O. Heggø
774d18ed8f Add support for Turtle and SPARQL 2015-01-14 23:45:25 +01:00
Guy Burroughes
d39f5eedf1 Fixed issues for web ontology to pass tests 2015-01-14 19:18:25 +00:00
phuicy
1a1e21f344 Added Web Ontology Language Support
As syntax is only xml, it is a very simple fix.
2015-01-14 18:11:33 +00:00
Adam Roben
96c7bc30d8 Simplify blob tests
Now that FileBlobs with relative paths can still access their files on
disk, we can use relative paths for all FileBlobs in the test. This more
closely matches the behavior in github.com's codebase, where all blobs
use relative paths.
2015-01-14 08:57:53 -05:00
Adam Roben
0328b1cb3c Use the original FileBlob path for filesystem access
FileBlob now remembers the full path that was passed to its constructor,
and uses that for performing filesystem access. FileBlob#path continues
to return a relative path as before. This ensures that you can call
methods like #size and #mode on FileBlobs with relative paths,
regardless of the current working directory.
2015-01-14 08:54:49 -05:00
Arfon Smith
ad0cc7f39d Merge pull request #1989 from davidabian/patch-1
Update languages.yml with *.sagews
2015-01-12 08:12:45 -06:00
David Abián
42a491ab8b Merge branch 'patch-1' of https://github.com/davidabian/linguist into patch-1 2015-01-11 22:09:48 +01:00
David Abián
ef4b25591b Sample sagews file, as requested 2015-01-11 22:08:56 +01:00
David Abián
fbc99cf7e6 Update languages.yml with *.sagews 2015-01-11 19:43:20 +01:00
Paul Chaignon
5d0e9484ce Remove last mentions of lexer 2015-01-11 10:02:52 +01:00
Brandon Keepers
1bc6a6dfe5 Merge pull request #1955 from pchaigno/zephir-generated-samples
Reclassify three samples files generated from Zephir code
2015-01-10 10:43:00 -08:00
Arfon Smith
30be3265fb Merge pull request #1982 from pchaigno/racket-grammar
New grammar for Racket
2015-01-10 09:18:45 -06:00
Paul Chaignon
ecaad7979f New grammar for Racket 2015-01-10 14:40:58 +01:00
Paul Chaignon
d638edbeae Remove grammar for Racket 2015-01-10 13:10:04 +01:00
Brandon Keepers
91779b6de9 Merge pull request #1978 from larsbrinkhoff/cmake_samples
More CMake samples
2015-01-09 15:53:25 -08:00
Adam Roben
3abb0e80d5 Merge pull request #1963 from github/aroben-patch-1
Recommend updating grammars when releasing
2015-01-09 16:20:30 -05:00
Arfon Smith
f4c1cc576b Modifying BlobHelper and FileBlob to use path 2015-01-09 15:15:34 -06:00
Paul Chaignon
986235dce7 Sample file for .cmake.in 2015-01-09 20:02:01 +01:00
Lars Brinkhoff
1f0c88a934 Restore the .cmake.in extension. 2015-01-09 20:02:01 +01:00
Lars Brinkhoff
94f7dd2238 More CMake samples. 2015-01-09 20:02:01 +01:00
Arfon Smith
79fd12eb75 Merge branch 'master' into path-for-fileblob 2015-01-09 11:56:11 -06:00
Arfon Smith
05a98be1e5 Merge pull request #1977 from github/auto
Auto
2015-01-09 11:50:01 -06:00
Arfon Smith
24eb1d3fe2 Updating file regex to support unlicense.txt 2015-01-09 11:43:34 -06:00
Brandon Keepers
75d1bcdc69 Merge pull request #1912 from 0a-/master
vendor.yml: improved & added more regex for auto-generated stylesheets
2015-01-09 08:09:57 -08:00
Arfon Smith
7549eff9c1 Merge branch 'master' into auto
Conflicts:
	.gitmodules
2015-01-08 17:00:45 -06:00
Arfon Smith
6e2b4f7514 Updating ref to include license 2015-01-08 16:59:43 -06:00
Arfon Smith
846cff5721 Remove pry 2015-01-08 15:10:05 -06:00
Arfon Smith
efd25ec4d2 Start using path with LazyBlob 2015-01-08 15:08:28 -06:00
Arfon Smith
5c94b50386 Merge pull request #1975 from github/http
Http
2015-01-08 14:19:38 -06:00
Arfon Smith
c0fbc9ef8c Updating Sublime-HTTP reference 2015-01-08 14:11:04 -06:00
Arfon Smith
1f429fb488 Whitespace 2015-01-08 14:06:00 -06:00
Arfon Smith
ec28ea299f Use path for Generated? 2015-01-08 14:03:35 -06:00
Arfon Smith
08558aa118 Merge branch 'master' into http
Conflicts:
	.gitmodules
2015-01-08 13:13:07 -06:00
Adam Roben
7e319b797f Merge pull request #1970 from larsbrinkhoff/fr
Add missing ^ in regexp for Frege heuristic
2015-01-08 13:43:14 -05:00
Lars Brinkhoff
3957a11f25 Add to sample to show that a false positive goes away. 2015-01-08 19:35:02 +01:00
Adam Roben
743922d45a Merge pull request #1974 from github/hy-grammar
Update Hy support by adding a reference to an Atom grammar.
2015-01-08 11:13:59 -05:00
Bob Tolbert
5f70776cf3 Update Hy support by adding a reference to an Atom grammar. 2015-01-08 11:09:28 -05:00
Adam Roben
289f91997c Merge pull request #1973 from github/nit-grammar
Add a language grammar for Nit
2015-01-08 11:01:05 -05:00
Lucas Bajolet
163ea9ecdd Added a few samples for the Nit language
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
2015-01-08 10:52:45 -05:00
Lucas Bajolet
9be941acc8 Added support for the nit language in grammars.yml, updated languages.yml for .nit source files highlighting
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
2015-01-08 10:51:51 -05:00
Adam Roben
e95314f072 Recognize WTFPL-licensed grammars 2015-01-08 10:49:54 -05:00
Adam Roben
6fef6b578a Fix script/convert-grammars --add 2015-01-08 10:49:01 -05:00
Adam Roben
dd59814563 Merge pull request #1905 from joaquincasares/cql_support
Add support for cql and ddl files
2015-01-08 10:45:15 -05:00
Adam Roben
b704b20695 Merge pull request #1888 from MattDMo/master
reorganized Sublime Text extensions, added some
2015-01-08 10:42:56 -05:00
Adam Roben
23e55e92ca Mention grammar licenses in LICENSE 2015-01-08 09:19:18 -05:00
Lars Brinkhoff
71885b8a79 Add missing ^ in Frege heuristic regexp. 2015-01-08 13:02:04 +01:00
Adam Roben
0cfdbfb91c Merge github-linguist-grammars into github-linguist
Now that all our grammars are licensed (or grandfathered in), we can
distribute them as part of the standard github-linguist gem. This makes
it easier for projects to get up and running with Linguist.
2015-01-07 14:47:26 -05:00
Adam Roben
59a6963a89 Say that you should commit the submodule update 2015-01-07 14:26:23 -05:00
Adam Roben
6e9dfdff30 Recommend updating grammars when releasing
This will help ensure we keep pulling in fixes from the grammar repos.
2015-01-07 14:16:23 -05:00
Adam Roben
470419d732 Merge pull request #1962 from github/bump-4.2.6
Bump to v4.2.6
2015-01-07 10:57:29 -05:00
Adam Roben
5b05653881 Bump to v4.2.6 2015-01-07 10:30:51 -05:00
Adam Roben
899dc07883 Merge pull request #1938 from floscher/carto-grammar
Add grammar for CartoCSS
2015-01-07 09:31:34 -05:00
Florian M. Schäfer
83dfd408e9 Update carto-grammar to current version (2ec5a89) 2015-01-07 15:27:40 +01:00
Florian M. Schäfer
417171cfe1 Don't pass JSON-files through csonc 2015-01-07 15:27:40 +01:00
Florian Schäfer
e8e82a1ca3 Add grammar for CartoCSS 2015-01-07 15:27:40 +01:00
Florian Schäfer
6843aa7cc8 Enable file extension .json for grammar files 2015-01-07 15:27:40 +01:00
Adam Roben
952acc983d Merge pull request #1958 from floscher/fix-convert-script
Fixes script/convert-grammars: require thread-gem and solve problem with visibility of variable p
2015-01-07 08:58:34 -05:00
Adam Roben
650f267be7 Merge pull request #1959 from floscher/licence
Allow British-English spelled LICENCE-files
2015-01-07 08:56:20 -05:00
Florian M. Schäfer
3ace4c57f7 Allow British-English LICENCE-files 2015-01-06 22:51:08 +01:00
Florian M. Schäfer
ab1b603c78 Require thread-gem and solve problem with visibility of variable p in convert-grammars
* The `thread`-gem is required for the script, because otherwise Ruby throws an error that `Queue` in line 259 is an uninitialized constant
* The variable `p` was previously in the same method with the status message saying `OK ‹path› ‹converted scopes›`. But `p` is now defined in load_grammars() and thus not visible when showing the OK-message in install_grammars(). This was solved by adding a path-parameter to install_grammars().
2015-01-06 22:06:55 +01:00
Adam Roben
8430f694e5 Merge pull request #1954 from github/test-grammar-licenses
Test that all grammar submodules have an appropriate license
2015-01-06 13:59:52 -05:00
Adam Roben
71f0cafc78 Update all submodules
This was done via `git submodule update --remote`.

Since Scalate.tmbundle now has a license we can remove it from the
whitelist.

* vendor/grammars/NimLime 9cef4b6...a7067c6 (1):
  > Added 'nim' to tmpl sublimetext highlighting

* vendor/grammars/Scalate.tmbundle 4f85314...0307535 (1):
  > Merge pull request #3 from aroben/patch-1

* vendor/grammars/fsharpbinding d097476...99d2e9a (2):
  > Merge pull request #917 from 7sharp9/CleanMacProjects
  > Merge pull request #916 from 7sharp9/ToolTipsLessBlocky

* vendor/grammars/language-clojure d649d9f...bae6eee (2):
  > Prepare 0.10.0 release
  > Rename scoped-properties/ to settings/

* vendor/grammars/language-coffee-script c6e8d33...d86c896 (2):
  > Prepare 0.39.0 release
  > Rename scoped-properties/ to settings/

* vendor/grammars/language-gfm 7b62290...6af44a0 (2):
  > Remove unneeded newline
  > Merge pull request #65 from braver/line-break

* vendor/grammars/language-javascript 6690feb...5157519 (2):
  > Prepare 0.53.0 release
  > Rename scoped-properties/ to settings/

* vendor/grammars/language-python f518e49...46072e3 (2):
  > Prepare 0.29.0 release
  > Rename scoped-properties/ to settings/

* vendor/grammars/language-shellscript cbec163...9839719 (2):
  > Prepare 0.12.0 release
  > Rename scoped-properties/ to settings/

* vendor/grammars/language-yaml eddd079...ce8b441 (2):
  > Prepare 0.22.0 release
  > Rename scoped-properties/ to settings/
2015-01-06 13:46:04 -05:00
Adam Roben
4614287a55 Test that all grammar submodules have an appropriate license
We require all grammars to have a license that permits redistribution. A
few existing grammars have been grandfathered in without a license (and
we're working to remedy that), but no new grammars should be added
without a license.
2015-01-06 13:44:11 -05:00
Adam Roben
f477f811df Extract TestGrammars#submodule_paths method 2015-01-06 13:43:50 -05:00
Adam Roben
95bb5a1ae4 Switch to the master branch of tenbits/sublime-mask
The master branch contains a license while the release branch does not.
Other than that they're nearly identical.
2015-01-06 13:43:37 -05:00
Adam Roben
70699037ae Merge pull request #1909 from github/scopes-test
Test that grammars.yml lists the right scopes for each submodule
2015-01-06 13:41:44 -05:00
Adam Roben
7edddec920 Make convert-grammars a little quieter
No need to say "Done" at the end. We're obviously done; the script is
exiting.
2015-01-06 13:39:18 -05:00
Adam Roben
8f3779c94c Update grammars.yml to match submodules
I should have done this in 2c2c4740a8.
2015-01-06 13:36:51 -05:00
Adam Roben
917bc48348 Use File.directory? to test for local directories
Some of our submodules end in ".tmLanguage", which we used to think
meant it was a file rather than a directory.
2015-01-06 13:31:26 -05:00
Adam Roben
581dc36c47 Ruby 1.9 compatibility for convert-grammars 2015-01-06 13:28:26 -05:00
Adam Roben
a4286ba950 Show stderr output when running convert-grammars
This will let us see why it's failing.
2015-01-06 13:28:26 -05:00
Adam Roben
5fa85f268f Ruby 1.9 compatibility 2015-01-06 13:28:26 -05:00
Adam Roben
ada6f6882a Test that grammars.yml lists the right scopes for each submodule
convert-grammars now supports a few flags that we can use to make it
dump out the YAML just for the local grammar submodules. We can then
compare this to the YAML that's actually in grammars.yml to check that
they're the same. If they aren't, grammars.yml needs to be updated.
This will help catch mistakes like using the wrong scope name.
2015-01-06 13:28:25 -05:00
Adam Roben
78a0030d46 download-grammars -> convert-grammars
Downloading is only a small part of what this script does. The main
thing it does is convert grammars to JSON.
2015-01-06 13:28:25 -05:00
Adam Roben
e2d6aecd81 Merge pull request #1956 from github/new-sass-grammar
Switch Sass grammar to nathos/sass-textmate-bundle
2015-01-06 13:26:09 -05:00
Patrik Affentranger
a2e99e8ddb Switch Sass grammar to nathos/sass-textmate-bundle
This provides better highlighting in many cases than the previous
grammar. See https://github.com/github/linguist/pull/1852.
2015-01-06 13:18:30 -05:00
Adam Roben
b499a074cf Merge pull request #1931 from github/travis-container
Opt in to container-based Travis CI builds
2015-01-06 13:02:53 -05:00
Adam Roben
188e579df7 Use a single git fetch invocation in CI 2015-01-06 12:56:08 -05:00
Adam Roben
d82e4801ff Use --with-icu-dir everywhere but Ruby 2.0
--with-icu-dir is broken on Ruby 2.0 due to
https://bugs.ruby-lang.org/issues/8074. Specifying
--with-icu-include/--with-icu-lib is broken on Ruby 2.1 and newer due to
https://github.com/bundler/bundler/pull/3338. So now we use
--with-icu-dir everywhere but Ruby 2.0.
2015-01-06 12:44:39 -05:00
Adam Roben
d258d146b8 Move before_install steps to a separate script 2015-01-06 12:44:14 -05:00
Paul Chaignon
96e6b3f53e Reclassify samples generated from Zephir code 2015-01-06 17:00:16 +01:00
Adam Roben
ae6b0f0d40 Merge pull request #1953 from github/update-grammars
Update all grammar submodules
2015-01-06 10:18:52 -05:00
Adam Roben
2c2c4740a8 Update all grammar submodules
This was performed via `git submodule update --remote`.

* vendor/grammars/Agda.tmbundle 784f435...68a218c (1):
  > Merge pull request #1 from aroben/patch-1

* vendor/grammars/IDL-Syntax 9473b7f...3baeaea (1):
  > Merge pull request #3 from aroben/patch-1

* vendor/grammars/NimLime 7a2fb4e...9cef4b6 (4):
  > Updated command names
  > Updated generated documentation
  > renamed more from nimrod to nim
  > Renamed several files

* vendor/grammars/SCSS.tmbundle d6188e5...4147502 (1):
  > Merge pull request #181 from redgluten/master

* vendor/grammars/Sublime-VimL 6ab7e19...366fdc6 (1):
  > Merge pull request #2 from yous/fix-single-quoted-string

* vendor/grammars/factor 2dc5590...2453a78 (38):
  > json.writer: make sure we make hex values two digits zero padded.
  > json.writer: support escaping unicode > 0x10000.  Thanks @jonenst!
  > mason.git: fix status check.
  > compiler.cfg.*: new unit test vocabs
  > compiler.cfg.*: more docs
  > compiler.cfg.*: refactoring away the compute-global-sets word
  > compiler.cfg.*: docs and more tests
  > compiler.cfg.stacks.local: refactoring making stack-changes and height-changes take and return stuff instead of using variables and the make building
  > compiler.cfg.parallel-copy: docs
  > compiler.cfg.stacks.height: these words are unused
  > compiler.cfg.*: more compiler docs
  > compiler.cfg.stacks.finalize: initial docs
  > io.launcher: fix stack effects.
  > io.launcher: fix docs for with-process-reader and with-process-writer.
  > io.launcher: add versions of with-process that preserve process and status.
  > mason.git: fix use.
  > mason.git: fix for rename.
  > io.launcher: cleanup public interface, make some things private or internal.
  > gopher: set 1 minute timeout by default.
  > brainfuck: cleanup tests.
  > json.writer: don't escape spaces, thats weird.
  > unix: some using cleanups.
  > python: rename startup/shutdown hooks.
  > math.extras: adding the Möbius function.
  > alien.c-types: move definitions of stdint.h from unix.types.
  > gopher: use contents now that it works.
  > io.ports: Make buffered-port not have a length because of Linux virtual files and TCP sockets. Related to issues #1256 and #1259.
  > tools.deploy.backend: add word for deleting cached staging images.
  > command-line: save the executable in a variable so that people don't use (command-line) directly if possible.
  > bootstrap: fix this use of (command-line).
  > tools.deploy.shaker: set the rest of the args to preserve current behavior.
  > vm: store full command-line including executable first argument.
  > gopher: fix bug where empty lines weren't printed properly in menus.
  > gopher: simplify.
  > gopher: change gopher-text to use split1.
  > io.encodings.detect: simplify prolog-tag.
  > gopher: add way to get result without converting to objects.
  > tools.disassembler: allow disassemble of compose and curry.

* vendor/grammars/fsharpbinding af755c8...d097476 (24):
  > Merge pull request #909 from cbowdon/issue877-vim-73-support
  > Merge pull request #913 from 7sharp9/Move_GetColourizations_toBg
  > Merge pull request #912 from 7sharp9/TryFind_opt
  > Merge pull request #911 from 7sharp9/FoldingParser
  > Merge pull request #908 from 7sharp9/TooltipOverhaul_AutoParamFix
  > Merge pull request #907 from 7sharp9/Movegetdefinestomodule
  > Merge pull request #906 from 7sharp9/tooltipfixforclosures
  > Merge pull request #905 from 7sharp9/ResolverProvider_singletimeout
  > Merge pull request #904 from fsharp/revert-903-ResolverProvider_singletimeout
  > Merge pull request #903 from 7sharp9/ResolverProvider_singletimeout
  > Merge pull request #902 from 7sharp9/ParameterCompletion_gatherTimeout
  > Merge pull request #901 from 7sharp9/Changed_invalidate_project
  > Merge pull request #900 from 7sharp9/Syntaxmode_removeextraoperation
  > Merge pull request #899 from 7sharp9/tooltips_ensureTimout
  > Merge pull request #898 from 7sharp9/pathextension_useAddRange
  > Merge pull request #897 from 7sharp9/resolverprovider_ensuretimout
  > Merge pull request #896 from 7sharp9/completion_ensuretimout
  > Merge pull request #895 from cbowdon/894-Vim-fix-for-no-completions-stacktrace
  > Merge pull request #890 from wangzq/gotodecl
  > Merge pull request #893 from 7sharp9/fixfortooltipvaltypes
  > Merge pull request #892 from 7sharp9/fixforprojecttypechecking
  > Added correct indentation
  > Merge pull request #891 from 7sharp9/ImproveImplementInterface
  > Merge pull request #888 from VincentDondain/master

* vendor/grammars/haxe-sublime-bundle 58cad47...e2613bb (4):
  > fixed goto definition / find type
  > clean
  > adaptations for toplevel completion
  > first test

* vendor/grammars/language-gfm c6df027...7b62290 (7):
  > Prepare 0.59.0 release
  > scoped-properties -> settings
  > Prepare 0.58.0 release
  > Merge pull request #67 from davidcelis/master
  > Prepare 0.57.0 release
  > Prepare 0.56.0 release
  > Merge pull request #64 from atom/mb-new-cpp-scope-name

* vendor/grammars/language-javascript 15dc5d1...6690feb (5):
  > Prepare 0.52.0 release
  > Merge pull request #82 from Hurtak/feature/snippets-for
  > Merge pull request #80 from Hurtak/feature/snippets-querySelector
  > Merge pull request #79 from Hurtak/feature/snippets-switch-indentation-fix
  > Merge pull request #81 from Hurtak/feature/snippets-iife

* vendor/grammars/language-python 476a353...f518e49 (5):
  > Prepare 0.28.0 release
  > Use trailing scope name
  > Merge pull request #48 from msabramo/patch-1
  > Prepare 0.27.0 release
  > Add pattern for nonlocal keyword

* vendor/grammars/language-sass 064a8b5...33efa33 (2):
  > Prepare 0.29.0 release
  > Allow + and - in selector argument

* vendor/grammars/language-shellscript e2d62af...cbec163 (2):
  > Prepare 0.11.0 release
  > Merge pull request #4 from hd-deman/patch-1

* vendor/grammars/latex.tmbundle 682c4b7...52b2251 (42):
  > Replaced `python` with `python2.7` in shebangs
  > Make the preferences compatible with Python 3
  > Handle manual spacing in “Reformat” (Table)
  > Fix: Reformatting of table containing empty cells
  > Use more descriptive variable names in `format`
  > Add documentation to `reformat`
  > Fix doctest in `refresh_viewer`
  > Add tests for `reformat`
  > Ignore “exit discard” status in `cramtests`
  > Remove print statements from `reformat` function
  > Fix: Close log window option ignored
  > Automatically scroll to bottom in “HTML Output”
  > Handle “\” signs in the notification window
  > Fix missing logname in default error message
  > Extend list of auxiliary files
  > Remove unused code from `latex_watch`
  > Display default message in notification window
  > Sort error messages by line number
  > Do not store duplicate error messages anymore
  > Close notification window on cleanup
  > Improve reopening of closed notification windows
  > Improve rewrap code in `texparser`
  > Improve readability of verbose log output
  > Only parse log file if there were changes
  > Remove unnecessary function call in “LaTeX Watch”
  > Properly close file in `guess_tex_engine`
  > Handle log messages containing double quotes
  > Left justify severity in notification window
  > Handle manual closing of notification window
  > Add additional information to notification window
  > Remove unused code from `texparser`
  > Close notification when typesetting succeeds
  > Add support for notifications to “LaTeX Watch”
  > Update bundle preference values instantly
  > Make “Reformat” (Table) compatible with Ruby 2
  > Ignore escaped ampersand `\&` in “Format” (Table)
  > Remove warnings reported by `RuboCop`
  > Format code for “Reformat” (Table)
  > Move code for “Reformat” into separate script
  > Save “Reformat” command with TextMate 2
  > Remove unused import
  > Use explicit import in “Itemize Lines In Selection”

* vendor/grammars/mercury-tmlanguage b5a4fd6...eaef0b0 (8):
  > Add require_* and some, all keywords
  > Highlight %f format specifiers, `` as op
  > Correct implementation of '''', """" and 0'<char>
  > README.md: Mention GitHub grammar compatability
  > README.md: add resources and demonstration
  > reformatted whitespace; added foreign mods; missing keywords
  > Highlight variables, determ decls, more pragmas
  > no highlighting of variables, function names, type names, inst's, etc.

* vendor/grammars/sublime-mask 2f59519...632ff3c (4):
  > v0.8.7
  > v0.8.7
  > + expression in component nodes
  < v0.8.6

* vendor/grammars/swift.tmbundle 81a0164...3c7eac5 (9):
  > Use constant scope for booleans
  > Use storage scope instead of keyword
  > Correct typo in include
  > Revamp string literal matching
  > Improve punctuation scopes
  > Allow for functions without a body
  > Add simple folding markers for swift
  > Improved matching of capture specifiers
  > Add Support for UInt, Int[8|16|32|64] & Float80
2015-01-06 10:09:53 -05:00
Paul Chaignon
14740e8a89 Grammar for HTTP 2015-01-06 11:57:28 +01:00
Paul Chaignon
b357257f4d Grammar for AutoHotkey 2015-01-06 09:51:51 +01:00
Adam Roben
4428e62b99 Merge pull request #1950 from github/upstream-c-bundle
Switch back to textmate/c.tmbundle
2015-01-05 15:24:42 -05:00
Adam Roben
575ad0d8a2 Switch back to textmate/c.tmbundle
We were using a fork to get the fix for
https://github.com/textmate/c.tmbundle/pull/24 before it was merged
upstream. Now it's been merged so we can go back to the upstream
repository.
2015-01-05 15:07:28 -05:00
Joaquin Casares
5ad9deb199 Added sample files 2015-01-05 13:50:54 -06:00
MattDMo
e99f6edb56 Put .sublime_* after .sublime-* 2015-01-05 13:41:58 -05:00
MattDMo
3149d1232b Moved .sublime_metrics after .sublime-mousemap due to failing Travis test 2015-01-05 13:36:57 -05:00
Paul Chaignon
3c6218f20e Heuristics for .cs files: Smalltalk and C# 2015-01-04 22:07:29 +01:00
Matthias Mailänder
68f04a50aa add support for Emacs desktop files 2015-01-03 19:22:54 +01:00
Arfon Smith
ec01672f6c Merge pull request #1866 from github/cpp-c-improvements
Better C++ regex
2015-01-03 11:23:20 -06:00
Arfon Smith
be6b1bb3ee Merge branch 'master' into cpp-c-improvements 2015-01-03 11:12:55 -06:00
Arfon Smith
6f4557a103 Updating Objective-C matchers and adding a sample C++ file 2015-01-03 11:10:24 -06:00
Matthias Mailänder
dc96f62f9e add support for Linux .desktop files 2015-01-03 14:00:07 +01:00
Paul Chaignon
2f86bd8bda Sample file for .html.hl 2015-01-03 09:37:50 +01:00
Paul Chaignon
fbe43b61d4 Sample file for .cmake.in 2015-01-03 09:37:40 +01:00
Paul Chaignon
546d4163a9 Remove unnecessary file extensions 2015-01-03 09:27:43 +01:00
Arfon Smith
55132f2955 Merge pull request #1945 from thotypous/bluespec
Add Bluespec SystemVerilog grammar
2015-01-02 21:14:52 -06:00
Paulo Matias
ebdd2d4a23 Add Bluespec SystemVerilog Sublime Text grammar 2015-01-03 00:55:19 -02:00
Arfon Smith
4c63827517 Merge pull request #1942 from pchaigno/xml.dist
Add .xml.dist as a XML file extension
2015-01-02 17:07:32 -06:00
Paul Chaignon
401067f637 Revert #1438: add file extensions with multiple segments 2015-01-02 22:57:20 +01:00
Paul Chaignon
8e6609c192 .xml.dist as an XML file extension 2015-01-02 22:29:44 +01:00
Adam Roben
1f1ffcbfa6 Merge pull request #1930 from github/minitest
Switch to Minitest::Test instead of Test::Unit::TestCase
2015-01-02 16:27:43 -05:00
Adam Roben
065dd713c1 Assert that generated files are detected correctly 2015-01-02 16:15:55 -05:00
Arfon Smith
71132d48ff Merge pull request #1922 from Mailaender/patch-2
Added support for Mono .dll.config XML files
2015-01-02 11:10:46 -06:00
Matthias Mailänder
d77e0c62c1 add a DllMap example file
www.mono-project.com/docs/advanced/pinvoke/dllmap/#example
2015-01-02 17:28:37 +01:00
Matthias Mailänder
e853c36039 Update languages.yml
add support for Mono .dll.config XML files
2015-01-02 17:28:36 +01:00
Brandon Keepers
2be3220824 Merge pull request #1940 from github/fix-multiple-extensions
Fix for extensions with multiple segments
2015-01-02 10:59:30 -05:00
Lars Brinkhoff
6ae39e50ae Fix #1731 to allow samples with multiple file extension segments. 2015-01-02 10:41:22 -05:00
Arfon Smith
c783acc973 Merge pull request #1937 from github/hack-highlighting
Update languages.yml for Hack syntax-highlighting
2015-01-02 07:38:24 -06:00
Arfon Smith
e5210b5137 Update languages.yml 2015-01-02 06:53:58 -06:00
Arfon Smith
41f0950c04 Merge pull request #1933 from floscher/patch-1
Added CartoCSS to languages.yml
2015-01-01 13:46:22 -06:00
Florian Schäfer
9f439cd7fb Added support for CartoCSS
Code sample was taken from https://github.com/gravitystorm
/openstreetmap-carto/blob/ae990905790a26ae8af107441ce9e85b60ea1266
/amenity-points.mss
2015-01-01 17:15:22 +01:00
Arfon Smith
c911c5c045 Merge pull request #1932 from deadfoxygrandpa/elm
Update Elm support by adding its own syntax highlighting
2015-01-01 09:16:29 -06:00
Alex Neslusan
27a7873e08 Add color to Elm language definition 2015-01-01 20:41:05 +08:00
Alex Neslusan
5fe233384e Update Elm support 2015-01-01 20:24:13 +08:00
Adam Roben
d42ad45423 Turn on the bundler cache
This should allow us to skip installing gems in most builds, shaving off
~40 seconds.
2014-12-31 15:42:34 -05:00
Adam Roben
84235478ef Download and install libicu-dev without using sudo
We tell apt-get to download it to vendor/apt and then install it into a
vendor/icu directory.

We should be able to just specify --with-icu-dir, but apparently Ruby
2.0 (but not 1.9 or 2.1 or 2.2) has a bug that requires us to use
--with-icu-include/--with-icu-lib instead. Otherwise it can't find the
ICU libraries.
2014-12-31 15:42:34 -05:00
Adam Roben
509b35a19f Opt in to container-based Travis CI builds
This should speed up our builds by providing lower latency, better
caching, and more resources on the build machine. See
http://docs.travis-ci.com/user/workers/container-based-infrastructure/.
2014-12-31 15:42:34 -05:00
Adam Roben
65296e86a3 Switch to Minitest::Test instead of Test::Unit::TestCase
This gives us a consistent test framework across all Ruby versions which
should help avoid errors that are only found when CI runs the tests on
different Rubies. (And this fixes an immediate bug where there's no
`skip` method in the version of test-unit we're currently using only on
Ruby 2.2.)
2014-12-31 15:26:26 -05:00
Adam Roben
c9b7bb73b9 Use test/helper.rb in test_file_blob.rb 2014-12-31 15:19:56 -05:00
Adam Roben
795f42cbaa Merge pull request #1832 from pchaigno/optimize-generated
Optimization of generated?
2014-12-31 15:19:43 -05:00
Arfon Smith
d540ec0cb8 Merge pull request #1928 from github/contributing-update
Update including explicit steps to resolve conflicts.
2014-12-31 11:38:48 -06:00
Arfon Smith
202cba1a14 Update CONTRIBUTING.md 2014-12-31 11:38:03 -06:00
Arfon Smith
20d5b81085 Merge pull request #1929 from github/1304-local
Take 2: Add support for .sls YAML files (SaltStack states)
2014-12-31 09:45:14 -06:00
Arfon Smith
d8b806592d Removing trailing slash 2014-12-31 08:27:40 -06:00
Arfon Smith
84f9b83fc2 Fixing up grammars 2014-12-31 08:25:56 -06:00
Arfon Smith
7cb5106656 Adding atom-salt gitsubmodule 2014-12-31 07:48:48 -06:00
Arfon Smith
6f21df7624 Merge branch 'master' into 1304-local
Conflicts:
	grammars.yml
2014-12-30 22:15:55 -06:00
Arfon Smith
4c7dc565e7 Update including explicit steps to resolve conflicts. 2014-12-30 20:52:48 -06:00
Adam Roben
3c60fba430 Merge pull request #1926 from github/sas-grammar
Added support for SAS syntax.
2014-12-30 07:26:32 -05:00
Roy Pardee
224eef9ffa Added support for SAS syntax. 2014-12-30 06:34:37 -05:00
Paul Chaignon
42beadcf34 Use an exception for tests on Generated.generated? 2014-12-28 17:00:13 +01:00
Brandon Keepers
80ed2d6d30 Merge pull request #1920 from pchaigno/webidl-grammar
Grammar for WebIDL
2014-12-27 14:55:47 -05:00
Paul Chaignon
c2bf6fe7f5 Grammar for WebIDL 2014-12-27 16:54:41 +01:00
Gerwin Klein
f18ae4f99f add support for Isabelle ROOT file syntax 2014-12-27 10:13:02 +11:00
archy
084a9ab976 vendor.yml: added stylesheets imported from packages 2014-12-26 04:45:37 +08:00
archy
356b942114 vendor.yml: added less, scss, styl suffixes for popular stylesheets 2014-12-26 04:45:30 +08:00
archy
2c5d720146 vendor.yml: added imported bootstrap files 2014-12-26 04:45:18 +08:00
archy
64f83eee07 vendor.yml: added styl 2014-12-26 04:45:09 +08:00
archy
542cf9c52b vendor.yml: added custom bootstrap 2014-12-26 04:44:47 +08:00
Joaquin Casares
0bbccc1bc1 Properly order extensions 2014-12-22 16:48:22 -06:00
Adam Roben
6f014f8638 Merge pull request #1896 from github/grammar-submodules
Move all grammars that use Git repos to submodules
2014-12-22 17:17:40 -05:00
Adam Roben
66ca5aca89 Init submodules in CI 2014-12-22 17:07:37 -05:00
Adam Roben
33afa30c30 Don't use question marks in struct fields
Apparently it doesn't work in Ruby 1.9.
2014-12-22 17:06:49 -05:00
Adam Roben
1634d787ec Use fast-submodule-update in CI
Hopefully this will speed up CI builds.
2014-12-22 16:58:59 -05:00
Adam Roben
df7b529e23 Set tracking branches for submodules that aren't tracking master
This will let us use `git submodule update --remote` to update the
submodules to the latest commit from the relevant branch.
2014-12-22 16:41:22 -05:00
Adam Roben
56d90bedd0 Sort grammars.yml 2014-12-22 16:36:35 -05:00
Brandon Keepers
8369d253f8 Move grammar sources to vendor/grammars 2014-12-22 16:28:58 -05:00
Adam Roben
516d3e226c Suggest adding/removing submodules from the repo 2014-12-22 15:50:33 -05:00
Joaquin Casares
f4208cb27d Add support for cql and ddl files 2014-12-19 17:51:59 -06:00
Adam Roben
47b785a8fd Initialize submodules before updating them
Initialization cannot happen in parallel because every submodule has to
get written to .git/config.
2014-12-19 16:05:17 -05:00
Adam Roben
6a2bf3fd2f Update submodules in parallel to speed up bootstrap
This runs 8 `git submodule update` processes in parallel, speeding up
bootstrap from 2 minutes to 30 seconds for me. (Obviously this is
dependent on bandwidth.)
2014-12-19 16:05:17 -05:00
Adam Roben
ff678642e6 Suggest running script/bootstrap before building gems
This ensures all our submodules are up to date as well.
2014-12-19 16:05:17 -05:00
Adam Roben
e3eb1b90c5 Test that grammars.yml agrees with the list of submodules
If any submodules are missing from grammars.yml, or are listed in
grammars.yml but missing from the repo, the test will fail.

Eventually it would be good to test that the scopes for each submodule
are accurate, but that will take some more work.
2014-12-19 16:05:17 -05:00
Adam Roben
49125f077c Update grammars.yml
This is just the result of running script/download-grammars.
2014-12-19 15:39:02 -05:00
Adam Roben
324031cb68 Sort grammars.yml 2014-12-19 15:39:02 -05:00
Adam Roben
f2ab426d38 Move all grammars that use Git repos to submodules
This makes it so we don't have to redownload all the grammars every time
we build the grammars gem. It will also let us verify that grammars.yml
is accurate in the future by checking it against the submodules on disk.

script/bootstrap now updates the submodules.
2014-12-19 15:39:02 -05:00
Brandon Keepers
587ab35d65 Merge pull request #1904 from github/remove-cached-gems
Remove cached gems
2014-12-19 11:27:10 -05:00
Brandon Keepers
16a6dda3dd Remove cached gems 2014-12-19 10:52:29 -05:00
Dale Henrichs
034137f533 Use source.smalltalk to hightlight STON files.
While not perfect, source.smalltalk is a better fit for highlighting STON files than source.json. When STON departs from pure JSON (often) the hightlighting is pretty bad.
2014-12-18 21:19:38 -08:00
Dale Henrichs
6f75e18bfa Merge pull request #1 from github/master
update with latest master
2014-12-18 20:29:28 -08:00
Seth Vargo
5217f19faa Alphabetize order 2014-12-18 17:53:53 -05:00
Seth Vargo
296d170ba9 Add sample for HCL 2014-12-18 17:52:30 -05:00
Seth Vargo
a97fd74399 Add HCL to languages.yml
More information on HCL: https://github.com/hashicorp/hcl
2014-12-18 17:46:26 -05:00
Arfon Smith
15191b068d Merge pull request #1890 from github/cut-release-v4.2.4
Updating Linguist version for v4.2.4
2014-12-18 14:31:21 -08:00
Arfon Smith
ee9cc24e52 Longer timeout 2014-12-18 14:28:33 -08:00
Arfon Smith
0584fbf42b 4.2.5 2014-12-18 14:17:36 -08:00
Adam Roben
f5f9ccee7f Merge pull request #1895 from github/bootstrap-script
Add script/bootstrap
2014-12-18 12:20:26 -05:00
Adam Roben
0d183e2e89 Ignore vendor/gems
This is where script/bootstrap places the bundle.
2014-12-18 12:14:45 -05:00
Adam Roben
b9eacfefc8 Add script/bootstrap
This just runs Bundler with the right options. Maybe it will do more in
the future, like update submodules.
2014-12-18 12:13:32 -05:00
Arfon Smith
0239127db4 4.2.5b1 2014-12-18 08:02:24 -08:00
Arfon Smith
281d1ea91c Merge branch 'master' into cut-release-v4.2.4 2014-12-17 15:37:46 -08:00
Arfon Smith
df92ecaa55 Merge pull request #1891 from github/fix-grammars
Fix some bugs in grammars.yml
2014-12-17 15:35:30 -08:00
Adam Roben
60d40c8ad8 Update grammars.yml
I just ran script/download-grammars and these are the changes it made.
The most notable one is that we had the wrong scope listed for Markdown.
2014-12-17 16:39:03 -05:00
Adam Roben
f428c561c9 Remove the WebIDL grammar
This grammar uses the same scope name (source.idl) as our existing IDL
grammar. The wrong scope name was listed in grammars.yml which masked
this problem. https://github.com/andik/IDL-Syntax/pull/2 tracks getting
the grammar to use a different scope name; in the meantime we just won't
highlight these files.
2014-12-17 16:39:03 -05:00
Adam Roben
8fbb7a1d93 Sort grammars.yml 2014-12-17 16:39:03 -05:00
Adam Roben
e98223b2b3 Use raw links as little as possible
It's much cleaner and more robust to specify the repo URL instead of a
URL to an individual file. If the file gets moved we'll still be able to
find it if we're using the repo URL.

Where we do need raw links, we now use github.com/owner/repo/raw/*
because it looks a bit nicer and sorts better with non-raw links.
2014-12-17 16:39:03 -05:00
Adam Roben
410fe2843d Add some tests for grammars.yml
It must be sorted, because it will get re-sorted when
script/download-grammars is next run and that would clutter up diffs.
And it must not contain any duplicate scopes.
2014-12-17 16:39:02 -05:00
Arfon Smith
dc8d69e0f4 Updating Linguist version for v4.2.4 2014-12-17 10:31:51 -08:00
Arfon Smith
a056765e38 Merge pull request #1886 from Dadido3/patch-1
Add PureBasic
2014-12-17 10:28:46 -08:00
MattDMo
97cd1e3886 Reorganized Sublime files, added more extensions. Moved those in JSON to JavaScript, as comments are allowed, and added several. Added 2 to XML. 2014-12-17 11:49:54 -05:00
Adam Roben
4e7da98bfa Merge pull request #1875 from arctic5/patch-1
change ace mode of game maker language to c++
2014-12-17 08:59:21 -05:00
David Vogel
0a56f5282d Create Example_Sine.pb 2014-12-17 12:00:16 +01:00
Arfon Smith
04b9ca2fd4 Merge pull request #1797 from github/cs-smalltalk
Cs smalltalk
2014-12-17 04:47:37 -06:00
Arfon Smith
ddbe3df6de Merge pull request #1876 from Mailaender/patch-2
Added support for StyleCop XML configuration files
2014-12-16 21:29:55 -06:00
Arfon Smith
ab5c88a7f3 Merge pull request #1881 from hawkw/master
Add support for Jasmin JVM assembly
2014-12-16 21:29:19 -06:00
Arfon Smith
4046a0efe9 Merge pull request #1877 from sebgod/change-mercury-grammar
Added a more suitable grammar for Mercury
2014-12-16 21:27:10 -06:00
Arfon Smith
5aefc7cdff Merge pull request #1885 from github/gjtorikian-patch-1
Use atom/language-atom for the YAML grammar
2014-12-16 21:25:02 -06:00
David Vogel
70eb779ce5 Reduced PureBasic to .pb and .pbi 2014-12-16 22:19:56 +01:00
David Vogel
39f5d28348 Added PureBasic example 2014-12-16 21:12:13 +01:00
David Vogel
e70407f16b Added PureBasic 2014-12-16 20:34:32 +01:00
Garen Torikian
c25475296d Use atom/language-atom for the YAML grammar 2014-12-16 08:17:07 -08:00
Paul Chaignon
1363af0317 Remove defactor keyword for .lsp heuristic 2014-12-16 11:02:23 -05:00
Vicent Marti
e97b7454e9 grammars: Temporarily use vmg's fork for C.tmbundle 2014-12-16 17:02:09 +01:00
Paul Chaignon
2418356eff Merge branch 'master' into newlisp 2014-12-16 10:52:17 -05:00
Hawk Weisman
735caa03b1 Fix empty sample file. 2014-12-15 22:47:11 -05:00
Hawk Weisman
f577aece08 Add Objective-J samples 2014-12-15 22:40:02 -05:00
Hawk Weisman
b7f1bfdb92 Put Jasmin entry in the right place. 2014-12-15 22:37:17 -05:00
Hawk Weisman
b5301e280b Add some samples of Jasmin assembly 2014-12-15 21:35:14 -05:00
Hawk Weisman
741816db52 Add Jasmin to languages.yml 2014-12-15 21:29:26 -05:00
Hawk Weisman
546a6e2a68 Add Jasmin textmate language 2014-12-15 21:27:06 -05:00
Sebastian Godelet
1be5e8c63e Added a more suitable grammar for Mercury 2014-12-15 10:31:50 +08:00
Matthias Mailänder
917a25317a sort alphabetically 2014-12-14 15:27:39 +01:00
Matthias Mailänder
949167e6ad add support for StyleCop XML configuration files 2014-12-14 13:04:31 +01:00
arctic
a359905a06 change ace mode of game maker language to c++ 2014-12-13 23:41:31 -08:00
Arfon Smith
4ce606306d Merge pull request #1871 from github/fish
Fish
2014-12-12 11:24:40 -06:00
Arfon Smith
707fcd29ea Merge branch 'master' into fish
Conflicts:
	grammars.yml
	lib/linguist/languages.yml
2014-12-12 11:22:24 -06:00
Arfon Smith
970cbe35b8 :blank: -> \t 2014-12-12 08:23:17 -06:00
Arfon Smith
fa9e8aa5c0 Merge branch 'master' into cpp-c-improvements 2014-12-12 08:21:32 -06:00
Brandon Keepers
a5e6d37049 Merge pull request #1859 from pchaigno/rc-interpreter
rc as a Shell interpreter for Plan 9
2014-12-11 22:49:27 -05:00
Arfon Smith
dacac135fb Merge pull request #1868 from github/no-language
No language
2014-12-11 21:23:02 -06:00
Arfon Smith
0ddf0d5d0d Merge branch 'master' into no-language
Conflicts:
	lib/linguist/heuristics.rb
2014-12-11 21:17:38 -06:00
Arfon Smith
90a5251fa7 Merge branch 'master' into cpp-c-improvements 2014-12-11 21:11:32 -06:00
Arfon Smith
a97c69e06f BitBake ace_mode 2014-12-11 21:10:57 -06:00
Arfon Smith
a323eb43ed Better C++ regex 2014-12-11 21:06:35 -06:00
Arfon Smith
79243b77fd Merge pull request #1129 from pchaigno/bitbake
Support of the BitBake language
2014-12-11 20:58:06 -06:00
Arfon Smith
5ab2720ddc Merge pull request #1865 from github/webidl
Webidl
2014-12-11 20:56:05 -06:00
Arfon Smith
c72a49b77f Whitespace 2014-12-11 20:52:44 -06:00
Arfon Smith
a0d92b80df Merge branch 'master' into webidl
Conflicts:
	grammars.yml
2014-12-11 20:52:17 -06:00
Arfon Smith
1a32a6252b Merge pull request #1861 from github/aroben-patch-1
Suggest reproducing highlighting errors in text editors
2014-12-11 20:45:33 -06:00
Arfon Smith
6df7cbaf6e Merge pull request #1864 from github/robrix-patch-1
Use atom/language-gfm’s Markdown grammar.
2014-12-11 20:44:37 -06:00
Rob Rix
0a90cd3a0a Remove the accidental “m”. 2014-12-11 16:38:10 -05:00
Rob Rix
c529939481 Use atom/language-gfm’s Markdown grammar.
We render [GitHub Flavoured Markdown](https://help.github.com/articles/github-flavored-markdown/) on the site. We can use Atom’s grammar to ensure that syntax highlighting uses the same dialect.
2014-12-11 16:29:36 -05:00
Paul Chaignon
db70630eaa Renamed text in Text 2014-12-11 12:51:09 -05:00
Adam Roben
24862d9759 Merge pull request #1863 from github/popular-integrity
Test that all popular languages exist
2014-12-11 12:31:08 -05:00
Adam Roben
cb5f2685cd Test that all popular languages exist
popular.yml listed "Bash" but should have been listing "Shell" instead.
There is no "Bash" language. Now CI will fail if this happens again.
2014-12-11 11:47:52 -05:00
Brandon Keepers
baa298873a Merge pull request #1854 from github/more-shebang-fixes
More shebang fixes
2014-12-11 10:40:11 -05:00
Adam Roben
a8f57d37bf Merge pull request #1860 from github/atom-sass-grammar
Use atom/language-sass's Sass grammar
2014-12-11 09:52:14 -05:00
Adam Roben
d97ee52f4e Suggest reproducing highlighting errors in text editors
This will make for more useful upstream bug reports.
2014-12-11 09:39:24 -05:00
Adam Roben
1cfdb6decd Use atom/language-sass's Sass grammar
This works better than the old Ruby Sass.tmbundle we were pulling from
svn.textmate.org.

atom/language-sass also contains an SCSS grammar, but I didn't switch to
using that grammar because it isn't obviously better than our current
one and I'm not an SCSS expert.
2014-12-11 09:35:33 -05:00
Paul Chaignon
f93272f0bd Move text files from fixtures to samples when possible 2014-12-10 20:09:14 -05:00
Paul Chaignon
e783e953d9 Merge branch 'master' into data-fixture-folder 2014-12-10 19:15:41 -05:00
Paul Chaignon
39cac919c7 rc as a Shell interpreter for Plan 9 2014-12-10 19:12:28 -05:00
Arfon Smith
fec82173d9 Merge pull request #1856 from lutoma/xelix-c-samples
Add a bunch of C header samples for the Bayesian classifier
2014-12-10 15:29:18 -06:00
Lukas Martini
35efed73d4 Add a bunch of C header samples for the Bayesian classifier 2014-12-10 20:28:20 +01:00
Brandon Keepers
21b8e16afc Use #start_with? for clarity 2014-12-10 12:05:37 -05:00
Brandon Keepers
6efee51101 Add missing test cases 2014-12-10 11:00:46 -05:00
Brandon Keepers
1490425ecb document shebang code 2014-12-10 11:00:41 -05:00
Brandon Keepers
afac6a918d Handle empty shebang with whitespace 2014-12-10 11:00:32 -05:00
Brandon Keepers
bf0e488c06 Test case for case causing error 2014-12-10 10:58:14 -05:00
othree
37c2bee3ae Follow #1831, change WebIDL ace_mode to 'text' 2014-12-10 14:18:25 +08:00
othree
4debcabb88 Add syntax define for WebIDL 2014-12-10 12:03:59 +08:00
Garen Torikian
5a0c637ad0 Merge pull request #1831 from github/return-nil-on-no-ace-mode
Set "missing" ace modes to `text`
2014-12-09 10:53:47 -08:00
othree
d91215680a Add WebIDL support and two sample file 2014-12-10 01:28:23 +08:00
Garen Torikian
0cbcbd4614 Set Public Key ace_mode to text 2014-12-09 09:16:51 -08:00
Garen Torikian
19135f08c3 Merge branch 'master' into return-nil-on-no-ace-mode 2014-12-09 09:13:02 -08:00
Brandon Keepers
855cc52f0f Merge pull request #1844 from pchaigno/pgp
Public Key as a language with .asc and .pub extensions
2014-12-09 11:24:18 -05:00
Garen Torikian
4e5da23474 Add warn message indicating deprecation 2014-12-09 08:20:15 -08:00
Arfon Smith
3cca4ec0ac Merge pull request #1848 from larsbrinkhoff/again_with_the_fortran
Improve FORTRAN heuristic.
2014-12-08 16:02:58 -06:00
Lars Brinkhoff
e393f7feb4 Improve FORTRAN heuristic. 2014-12-08 13:53:19 +01:00
Arfon Smith
b76ac7bab0 Merge pull request #1845 from lostcolony/patch-1
Adding 'erlang.mk' to vendor.yml exclusion list.
2014-12-07 17:45:48 -06:00
lostcolony
a3c842ba18 Adding erlang.mk to exclusion list.
Adding 'erlang.mk' to list of erlang bundles; it's seeing some adoption in the Erlang community for building Erlang apps, and at 1k lines of code at present can dominate an initial check-in, project skeleton, or small library.

See https://github.com/ninenines/erlang.mk for further details.
2014-12-07 16:41:56 -05:00
Paul Chaignon
1640370c9d Add Public Key as a language with .asc and .pub extensions 2014-12-07 10:37:25 -05:00
Garen Torikian
b6427fa05a Set text's ace_mode to text 2014-12-07 14:48:36 +02:00
Garen Torikian
2a04d854cc Merge branch 'master' into return-nil-on-no-ace-mode 2014-12-07 14:45:27 +02:00
Jorge Bucaran
6d190d7d7c Add Fish. (Fix* ace_mode: none) 2014-12-07 16:24:16 +09:00
Jorge Bucaran
b8a2bd595a Add Fish. (Update) 2014-12-07 15:57:46 +09:00
Paul Chaignon
8b7d5546f7 Merge branch 'master' into newlisp 2014-12-06 20:04:18 -05:00
Paul Chaignon
b63423ce37 Merge branch 'master' into newlisp 2014-12-06 19:56:29 -05:00
Paul Chaignon
0b02b68538 Heuristic for .lsp and .lisp (Common Lisp, NewLisp) 2014-12-06 19:51:45 -05:00
Paul Chaignon
bbd1646ae5 Add .lisp as a NewLisp file extension 2014-12-06 19:51:20 -05:00
Arfon Smith
299a9c7bc9 Merge pull request #1835 from tenbits/master
MaskLang: Use proper tm scope
2014-12-06 17:14:06 -06:00
Arfon Smith
37f8d5b5e1 Merge pull request #1834 from karel-brinda/master
Python syntax highlighting for Snakemake files
2014-12-06 17:11:51 -06:00
Arfon Smith
2a6a59c047 Merge pull request #1842 from pchaigno/ts
Add .ts as a XML extension for Qt translation files
2014-12-06 17:06:09 -06:00
Paul Chaignon
c4da2dd557 Merge branch 'master' into newlisp 2014-12-06 17:50:37 -05:00
Paul Chaignon
583392d179 Heuristic for .ts (TypeScript, XML) 2014-12-06 16:31:14 -05:00
Paul Chaignon
1488796779 .ts as a XML extension for Qt translation files 2014-12-06 15:41:13 -05:00
Paul Chaignon
7458a2f9ff Heuristic for .bb (BitBake, BlitzBasic) 2014-12-06 15:26:30 -05:00
Garen Torikian
348dab4b9f Update test to account for using text 2014-12-06 11:59:31 +02:00
Paul Chaignon
5c824e0771 Ace mode and grammar to none for BitBake after merge with master 2014-12-05 21:20:55 -05:00
Paul Chaignon
b9c88a758c Merge branch 'master' into bitbake 2014-12-05 19:35:48 -05:00
Paul Chaignon
a51d637e58 Error messages for tests on Generated 2014-12-05 17:53:19 -05:00
Karel Brinda
d002dfa70c Snakemake => Snakefile (Snakemake ... program, Snakefile ... file) 2014-12-05 23:46:37 +01:00
Karel Brinda
d118017d27 Correction of alphabet sorting of filenames 2014-12-05 23:36:25 +01:00
Alex Kit
d10d328eb1 MaskLang: Use proper tm scope 2014-12-05 23:13:01 +01:00
Karel Brinda
e472d7b8b1 Python syntax highlighting for Snakemake files 2014-12-05 20:00:52 +01:00
Brandon Keepers
a54d6f3a8a Merge pull request #1779 from larsbrinkhoff/fr
Disambiguate .fr between Frege, Forth, and plain text files
2014-12-05 08:18:24 -08:00
Paul Chaignon
67ccb24b41 Require test helper in generated test 2014-12-05 10:29:19 -05:00
Paul Chaignon
42ff3f58d9 Tests for Generated.generated? optimization 2014-12-05 11:38:03 -05:00
Garen Torikian
ad778571a2 This reject is no longer necessary 2014-12-05 16:57:55 +02:00
Garen Torikian
bb12b86445 Set missing ace_mode values to text
This makes it much easier to deal with when iterating over all the
languages, since `text` is a valid, non-highlighting lexer.
2014-12-05 16:56:55 +02:00
Garen Torikian
ab61b06c34 Reject Ace modes that are lacking a mode 2014-12-05 16:25:14 +02:00
Lars Brinkhoff
de6b2f3307 Add 'text' language with samples, and heuristics for .fr. 2014-12-05 12:19:36 +01:00
Lars Brinkhoff
5fd56c75d5 Add Forth extension .fr; and a sample. 2014-12-05 11:52:00 +01:00
Paul Chaignon
6aa70a3e93 Reorganize the methods called in generated? to only load the data in last resort 2014-12-05 01:22:38 -05:00
Paul Chaignon
93186947c2 Move binaries and text files from samples folder to fixtures 2014-12-04 23:48:05 -05:00
Paul Chaignon
77444284e3 Data folder in fixtures for files with no language 2014-12-04 19:14:44 -05:00
Paul Chaignon
6950b028df Ace mode for SaltStack 2014-12-04 15:06:35 -05:00
Paul Chaignon
565767ef42 Merge branch 'master' into saltstack-states 2014-12-04 15:05:52 -05:00
Garen Torikian
a1f26d64d5 Merge pull request #1762 from github/add-missing-ace-modes-for-popular-languages
Add missing `ace_mode` values wherever necessary
2014-12-04 21:46:58 +02:00
Paul Chaignon
be30e1c658 Grammar for .sls SaltStack files 2014-12-04 14:42:24 -05:00
Garen Torikian
3aec4dd2ea Adjust to ignore generated 2014-12-04 21:27:07 +02:00
Paul Chaignon
ed34caa565 Merge branch 'master' into saltstack-states 2014-12-04 14:14:05 -05:00
Garen Torikian
81b8c57bae Add Loomscript exclusion 2014-12-04 21:10:28 +02:00
Garen Torikian
0780b7239a Merge branch 'master' into add-missing-ace-modes-for-popular-languages 2014-12-04 21:09:46 +02:00
Arfon Smith
1d626f7378 Merge pull request #1821 from github/cut-release-v4.2.3
v4.2.3
2014-12-03 15:09:42 -06:00
Arfon Smith
ff3438b810 v4.2.3 2014-12-03 13:52:45 -06:00
Arfon Smith
1762c2cefd Merge pull request #1816 from github/FS-samples
Adding more F# .fs samples. Fixes #1814
2014-12-03 13:47:18 -06:00
Arfon Smith
7aaf99c9b1 Merge branch 'FS-samples' of github.com:github/linguist into FS-samples 2014-12-03 13:09:00 -06:00
Arfon Smith
07cd9aa994 Merge branch 'master' into FS-samples 2014-12-03 13:08:41 -06:00
Arfon Smith
6ae4aa50e2 Merge pull request #1817 from pchaigno/fix-fs-heuristic
Fix .fs heuristic
2014-12-03 13:08:08 -06:00
Brandon Keepers
22fbcc244b Merge pull request #1820 from github/cut-release-v4.2.2
v4.2.2
2014-12-03 10:55:09 -08:00
Garen Torikian
1a3177409c Merge master 2014-12-03 20:15:55 +02:00
Garen Torikian
de4b538d82 Update comment at the top of the file 2014-12-03 20:14:20 +02:00
Brandon Keepers
70b1ec97db Clean before running janky build 2014-12-03 10:07:59 -08:00
Brandon Keepers
a97e328484 v4.2.2 2014-12-03 09:58:08 -08:00
Brandon Keepers
e446b86b90 Merge pull request #1813 from github/invalid-shebang
Fix detection for invalid shebang
2014-12-03 09:48:48 -08:00
Arfon Smith
901e8da911 Merge pull request #1818 from github/remove-scss-from-sass
SCSS isnt SASS
2014-12-03 10:13:32 -06:00
Arfon Smith
e9036d675e SCSS isnt SASS 2014-12-03 10:12:58 -06:00
Paul Chaignon
351e348ac0 New F# sample to test fix for .fs heuristics 2014-12-03 10:07:54 -05:00
Paul Chaignon
feea9bfd30 Fix heuristic for .fs 2014-12-03 09:48:54 -05:00
Arfon Smith
f1282b857d Better output for failing test 2014-12-03 08:46:45 -06:00
Arfon Smith
70e0ce1d73 Adding more F# .fs samples. Fixes #1814 2014-12-03 08:36:58 -06:00
Brandon Keepers
a5673e7fb6 Fix detection for invalid shebang 2014-12-02 21:03:39 -06:00
Arfon Smith
d06529fd14 Merge pull request #1812 from github/cut-release-v4.2.1
Bumping linguist version
2014-12-02 20:30:30 -06:00
Arfon Smith
a02f19f5a3 Bumping linguist version 2014-12-02 20:06:36 -06:00
Arfon Smith
a9a62fff15 Merge pull request #1809 from pchaigno/fix-matches-heuristics
Fix error when matching languages against heuristics
2014-12-02 20:05:22 -06:00
Paul Chaignon
7625c92307 Remove .module extension for PHP 2014-12-02 20:37:09 -05:00
Paul Chaignon
7dd318ca76 Use namespace.js for the heuristic test with no match 2014-12-02 20:36:18 -05:00
Paul Chaignon
e5bc2845cd Fix for fixture tests: fixture files were not tested at all 2014-12-02 20:26:15 -05:00
Paul Chaignon
4ddd8d9d2b Unit test for fix #1809 on heuristics 2014-12-02 20:06:12 -05:00
Paul Chaignon
37ffdb9020 Fix error when matching languages against heuristics: if no language, no heuristic rule should be used 2014-12-02 16:41:39 -05:00
Arfon Smith
39037d5bfb Merge pull request #1803 from github/cut-release-v4.2.0
Bumping to v4.2.0
2014-12-02 12:36:05 -06:00
Arfon Smith
31d882b07e Merge branch 'master' into cut-release-v4.2.0
Conflicts:
	grammars.yml
2014-12-02 10:57:53 -06:00
Arfon Smith
fd9275b213 Merge pull request #1702 from ellemenno/loomscript-support
add language declaration and samples for LoomScript
2014-12-02 10:54:36 -06:00
Arfon Smith
cfa63cff35 Merge pull request #900 from hoelzro/master
Update Perl 6 samples
2014-12-02 10:52:45 -06:00
Arfon Smith
5e6fd11cc2 Updating Oz tmbundle 2014-12-01 15:08:22 -06:00
Arfon Smith
62a8b52df4 Bumping to v4.2.0 2014-12-01 14:19:08 -06:00
Adam Roben
783670095c Merge pull request #1802 from wmertens/master
Add grammar for Nix
2014-12-01 13:05:24 -05:00
Wout Mertens
23cfa86f93 Add grammar for Nix 2014-12-01 18:50:56 +01:00
Garen Torikian
dce00d01d9 Add missing ace_mode values 2014-12-01 15:54:33 +02:00
Garen Torikian
768ec76ff0 Merge master 2014-12-01 15:52:37 +02:00
ellemenno
211cb9567a refactor heuristic tests to use new helper 2014-12-01 01:37:55 -05:00
ellemenno
1e68a45515 add test of ls disambiguation 2014-12-01 01:30:14 -05:00
ellemenno
72c00f869c add textmate scope for loomscript 2014-12-01 01:30:14 -05:00
ellemenno
c76137efc0 improve regex for loomscript 2014-12-01 01:30:13 -05:00
ellemenno
88f196e4d4 add a heuristic to disambiguate LiveScript from LoomScript
Keying off of `package {`, since LoomScript code must be enclosed in a
package definition, whereas that would be invalid LiveScript
2014-12-01 01:28:33 -05:00
ellemenno
4fe5980065 add language declaration and samples for LoomScript
LoomScript is the scripting language for the Loom SDK.
It has an ActionScript3-like syntax with added C#-esque capabilities.

Loom SDK: https://github.com/LoomSDK/LoomSDK
2014-12-01 01:03:03 -05:00
Rob Hoelz
7c7b1fb9c4 Reorder extensions for Perl 6 2014-11-30 22:35:52 -06:00
Rob Hoelz
ed3d38cf05 Create Perl6 heuristic 2014-11-30 22:35:52 -06:00
Rob Hoelz
837e9a6325 Add a bunch of Perl 6 sample files 2014-11-30 22:28:06 -06:00
Rob Hoelz
1364e9be51 Add .t as a valid Perl/Perl6 file extension 2014-11-30 22:28:06 -06:00
Arfon Smith
2fbfaf448d Merge pull request #1800 from github/isabelle-grammar
Isabelle grammar
2014-11-30 21:58:08 -06:00
Arfon Smith
bf82caccfc Merge branch 'master' into isabelle-grammar
Conflicts:
	grammars.yml
2014-11-30 21:53:02 -06:00
Arfon Smith
325dbc8e16 Merge pull request #1698 from sebgod/add-mercury-interpreter
languages.yml: added an interpreter entry to Mercury section
2014-11-30 21:28:04 -06:00
Arfon Smith
bd2fb0af51 Merge pull request #1790 from pchaigno/gradle
Support for gradle files
2014-11-30 21:24:30 -06:00
Arfon Smith
3c904dff61 Merge pull request #1798 from github/google-apps
Google apps
2014-11-30 21:16:50 -06:00
Arfon Smith
9b22b2973f Merge branch 'master' into google-apps
Conflicts:
	lib/linguist/heuristics.rb
	lib/linguist/samples.json
2014-11-30 21:11:59 -06:00
Arfon Smith
025bb35ac7 Merge pull request #1673 from blakeembrey/support-raml
Add spport for RAML language
2014-11-30 21:05:10 -06:00
Arfon Smith
7fb5d0cadd Merge pull request #1782 from anpar/master
Add Oz to recognized languages
2014-11-30 20:57:55 -06:00
Arfon Smith
8157c6f56b Merge pull request #1796 from github/cool
Cool
2014-11-30 20:49:26 -06:00
Arfon Smith
0154c21c3d Adding Cool grammar 2014-11-30 20:45:24 -06:00
Arfon Smith
8c841903a5 Merge branch 'master' into cs-smalltalk
Conflicts:
	lib/linguist/languages.yml
	lib/linguist/samples.json
2014-11-30 15:35:16 -06:00
Arfon Smith
648596dbb2 Be explicit about tm_scope 2014-11-30 15:24:33 -06:00
Arfon Smith
212c74d8a3 Merge branch 'master' into cool
Conflicts:
	lib/linguist/heuristics.rb
	lib/linguist/languages.yml
	lib/linguist/samples.json
2014-11-30 15:23:09 -06:00
Antoine Paris
4495e15fa7 Misspelling correction 2014-11-30 22:07:55 +01:00
Antoine Paris
da96e11b37 Add grammar for Oz 2014-11-30 22:01:39 +01:00
Antoine Paris
b7a9843770 Corrections by @pchaigno 2014-11-30 21:18:23 +01:00
Arfon Smith
55432774c7 Merge pull request #1795 from github/mercury-vendor
Removing Mercury directory from vendor.yml
2014-11-30 08:00:36 -06:00
Arfon Smith
ca76802ee4 Removing Mercury directory from vendor.yml 2014-11-30 07:55:55 -06:00
Gerwin Klein
cec54837bc add language grammar for Isabelle theorem prover 2014-11-30 17:17:13 +11:00
Arfon Smith
e0c35b0665 Merge pull request #1706 from pchaigno/mm-xml
Add .mm as an XML extension with heuristic rule
2014-11-29 23:07:58 -06:00
Brandon Keepers
865980b8f7 Merge pull request #1791 from pchaigno/remove-old-heuristic
Remove old test forgotten in #1788
2014-11-29 12:32:28 -06:00
Paul Chaignon
9367a4797f Remove old test forgotten in #1788 2014-11-28 23:14:17 -05:00
Paul Chaignon
4ed58c743d Support for gradle files 2014-11-28 23:00:35 -05:00
Arfon Smith
cfd95360cb Merge pull request #1627 from github/1036-local
Disambiguate C, C++, Objective-C
2014-11-28 18:05:16 -06:00
Brandon Keepers
22144e79d3 Merge pull request #1787 from github/move-shebang
Move shebang (updated)
2014-11-28 18:02:04 -06:00
Brandon Keepers
3acbf06beb Merge pull request #1788 from github/refactor-heuristics
Refactor heuristics (updated)
2014-11-28 17:59:43 -06:00
Brandon Keepers
7b41346db8 Merge branch 'refactor-heuristics' into 1036-local
* refactor-heuristics: (43 commits)
  update docs
  Clean up heuristic logic
  Allow disambiguate to return an Array
  Rename .create to .disambiguate
  docs
  Remove inactive heuristics
  Refactor heuristics
  Not going back
  docs
  Move call method into existing Classifier class
  Try strategies until one language is returned
  Remove unneded empty blob check
  Add F# and GLSL samples.  Add Forth and GLSL extension .fs. Add heuristic to disambiguate between F#, Forth, and GLSL.
  byebug requires ruby 2.0
  Remove test for removed extension
  Fix typo in test
  add rake interpreter
  add python3 interpreter
  Remove old wrong_shebang.rb sample
  Add byebug
  ...

Conflicts:
	lib/linguist/heuristics.rb
	test/test_heuristics.rb
2014-11-28 17:58:00 -06:00
Brandon Keepers
878b321b89 Merge remote-tracking branch 'origin/master' into move-shebang
* origin/master:
  Tweak docs
2014-11-28 17:41:10 -06:00
Brandon Keepers
a903123cb8 Merge pull request #1663 from github/strategies
Refactor detection into strategies
2014-11-28 17:40:12 -06:00
Brandon Keepers
577fb95384 Tweak docs 2014-11-28 17:36:14 -06:00
Brandon Keepers
770a1d4553 update docs 2014-11-28 17:07:15 -06:00
Brandon Keepers
c038b51941 Clean up heuristic logic 2014-11-28 17:03:01 -06:00
Brandon Keepers
4bebcef6ef Allow disambiguate to return an Array 2014-11-28 16:55:00 -06:00
Jorge Bucaran
d4888098e5 Add source.fish scope reference. 2014-11-29 07:39:19 +09:00
Jorge Bucaran
a349daeaeb Add fish tmBundle source. 2014-11-29 07:38:00 +09:00
Brandon Keepers
b8685103d0 Rename .create to .disambiguate 2014-11-28 14:41:52 -06:00
Brandon Keepers
26d789612b docs 2014-11-28 14:40:02 -06:00
Garen Torikian
7a57a0b594 What is this, Lisp? 2014-11-28 12:35:42 -08:00
Garen Torikian
66eabd8bdc Prefer Yajl.load 2014-11-28 12:34:02 -08:00
Garen Torikian
be82b55408 Simplify rescue catching 2014-11-28 12:33:43 -08:00
Garen Torikian
526ca1761a This require is no longer used 2014-11-28 12:33:37 -08:00
Brandon Keepers
10de952ed6 Remove Linguist.interpreter_from_shebang 2014-11-28 14:14:40 -06:00
Brandon Keepers
2517650ecb Fix shebang without path 2014-11-28 14:14:10 -06:00
Brandon Keepers
47b739527a Treat lines as enumerator and not array 2014-11-28 13:55:55 -06:00
Garen Torikian
8655d966ad Make corrections from a bade merge resolution 2014-11-28 11:50:46 -08:00
Garen Torikian
3fb4973aab Add missing ace_modes (introduced from master) 2014-11-28 11:48:39 -08:00
Garen Torikian
1d4149168d Add Rake task to fetch ace_modes, and skip test if there's no internet 2014-11-28 11:48:26 -08:00
Garen Torikian
26ab33754f Merge master 2014-11-28 11:04:53 -08:00
Brandon Keepers
88f08803ee require shebang when building samples 2014-11-28 12:34:41 -06:00
Brandon Keepers
c05717d15c docs 2014-11-28 12:27:48 -06:00
Brandon Keepers
bc66f558b9 Remove inactive heuristics
We can add these back when we’re ready to enable them.
2014-11-28 12:17:52 -06:00
Antoine Paris
71e1bd9af2 Misspelling correction 2014-11-28 17:42:54 +01:00
Antoine Paris
57b0739219 Add some examples for Oz 2014-11-28 17:40:49 +01:00
Antoine Paris
d60241cc86 Add grammar for Oz 2014-11-28 17:28:22 +01:00
Antoine Paris
d725e8e385 Add Oz to languages.yml 2014-11-28 17:16:32 +01:00
Brandon Keepers
034cb25099 Refactor heuristics 2014-11-28 09:43:59 -06:00
Brandon Keepers
fbc0947420 Not going back 2014-11-28 08:14:30 -06:00
Brandon Keepers
9020d7c044 Deprecate find_by_shebang
This class doesn’t need to know about shebangs.
2014-11-27 13:18:51 -05:00
Brandon Keepers
ffe2ccf1f6 Don't bother creating an instance 2014-11-27 13:17:28 -05:00
Brandon Keepers
434ab9f2c0 Add tests for shebangs 2014-11-27 13:09:05 -05:00
Brandon Keepers
cd3defda42 Simplify shebang detection 2014-11-27 12:44:55 -05:00
Brandon Keepers
fd85f7f112 consolidate shebang logic 2014-11-27 12:18:23 -05:00
Brandon Keepers
e42ccf0d82 docs 2014-11-27 11:40:48 -05:00
Brandon Keepers
bf4baff363 Move call method into existing Classifier class 2014-11-27 11:29:38 -05:00
Brandon Keepers
c1a9737313 Try strategies until one language is returned 2014-11-27 11:12:47 -05:00
Brandon Keepers
a4081498f8 Remove unneded empty blob check 2014-11-27 10:55:03 -05:00
Brandon Keepers
9efd923382 Merge remote-tracking branch 'origin/master' into strategies
* origin/master: (165 commits)
  Add F# and GLSL samples.  Add Forth and GLSL extension .fs. Add heuristic to disambiguate between F#, Forth, and GLSL.
  byebug requires ruby 2.0
  Remove test for removed extension
  Fix typo in test
  add rake interpreter
  add python3 interpreter
  Remove old wrong_shebang.rb sample
  Add byebug
  Link to Lightshow in CONTRIBUTING.md
  Switch to a better F# grammar
  Bump Rugged again
  Checkout the master for testing
  Rugged 0.22.0b3
  Reordering
  Bump version to 4.0.3
  Add some docs for tm_scope
  Change NONE to none
  Checking other case for Chart.jS
  Test that all languages have grammars
  Fix RHTML's tm_scope
  ...

Conflicts:
	lib/linguist/language.rb
2014-11-27 10:52:44 -05:00
Arfon Smith
b16149d641 Merge pull request #1758 from larsbrinkhoff/fsharp-glsl
Disambiguate .fs between F#, Forth, and GLSL
2014-11-27 07:41:14 -06:00
Brahn Partridge
43ee45d9b6 Merge branch 'master' of https://github.com/github/linguist
Conflicts:
	grammars.yml
2014-11-27 13:47:56 +01:00
Brahn Partridge
02db72515f removed less common extensions and better examples 2014-11-27 13:41:21 +01:00
Lars Brinkhoff
2d940e72c2 Add F# and GLSL samples. Add Forth and GLSL extension .fs.
Add heuristic to disambiguate between F#, Forth, and GLSL.
2014-11-27 06:56:26 +01:00
Brandon Keepers
9f103abfb5 Merge pull request #1750 from github/interpreters-in-samples
Fix for interpreters from samples
2014-11-26 16:51:08 -05:00
Brandon Keepers
689a209ed9 Merge remote-tracking branch 'origin/master' into interpreters-in-samples
* origin/master:
  byebug requires ruby 2.0
  Remove test for removed extension
  Merge branch 'master' into 1233-local
  Removing pry runtime dependency
  Moving to fixtures
  Language detection test for non-sample files
  Refactoring of Language.detect
  Try shebang detection if the extension is unknown
  Change unknown extension of PHP sample file
2014-11-26 16:25:15 -05:00
Brandon Keepers
d91a451fc7 Merge pull request #1776 from github/fix-failures
Fix failure from #1731
2014-11-26 16:24:25 -05:00
Brandon Keepers
1ae4672230 byebug requires ruby 2.0 2014-11-26 16:12:43 -05:00
Brandon Keepers
3edf5fd770 Remove test for removed extension
This existed when the test was written, but was removed in https://github.com/github/linguist/pull/1734 and the test got lost in a merge somewhere.
2014-11-26 15:59:16 -05:00
Arfon Smith
412af86cb8 Merge pull request #1538 from github/1233-local
Detection based on the shebang (updated)
2014-11-26 14:47:12 -06:00
Brandon Keepers
5b41ab4774 Fix typo in test 2014-11-26 15:40:51 -05:00
Brandon Keepers
06c0cb916b add rake interpreter 2014-11-26 15:40:40 -05:00
Brandon Keepers
b3a49ce627 add python3 interpreter 2014-11-26 15:40:33 -05:00
Brandon Keepers
0651568bfb Remove old wrong_shebang.rb sample
This was added in a69118bd17, but that test has since been removed.
2014-11-26 15:34:03 -05:00
Brandon Keepers
ce31e23006 Merge remote-tracking branch 'origin/master' into interpreters-in-samples
* origin/master: (30 commits)
  Add byebug
  Link to Lightshow in CONTRIBUTING.md
  Switch to a better F# grammar
  Bump Rugged again
  Checkout the master for testing
  Rugged 0.22.0b3
  Reordering
  Bump version to 4.0.3
  Add some docs for tm_scope
  Change NONE to none
  Checking other case for Chart.jS
  Test that all languages have grammars
  Fix RHTML's tm_scope
  Chart JS is vendored
  Switch to a better grammar for Bro
  reorder again…
  put cjsx at the top
  Use a SQF grammar for SQF files
  move cjsx before iced
  move cjsx before iced
  ...

Conflicts:
	lib/linguist/languages.yml
2014-11-26 15:17:08 -05:00
Brandon Keepers
7ccd8caf71 Merge pull request #1774 from github/byebug
Add byebug
2014-11-26 15:16:06 -05:00
Brandon Keepers
598a7028ea Add byebug 2014-11-26 15:12:55 -05:00
Brandon Keepers
4ed1efe9ce Merge pull request #1741 from github/test-helper
Add test helper to make test env consistent
2014-11-26 15:10:24 -05:00
Brandon Keepers
6a4bf3fa65 Merge pull request #1731 from github/multiple-ext-segments
Support for multiple file extension segments
2014-11-26 15:09:15 -05:00
Brandon Keepers
5b2b3a2b53 Merge remote-tracking branch 'origin/master' into test-helper
* origin/master: (31 commits)
  Link to Lightshow in CONTRIBUTING.md
  Switch to a better F# grammar
  Bump Rugged again
  Checkout the master for testing
  Rugged 0.22.0b3
  Reordering
  Bump version to 4.0.3
  Add some docs for tm_scope
  Change NONE to none
  Checking other case for Chart.jS
  Test that all languages have grammars
  Fix RHTML's tm_scope
  Chart JS is vendored
  Switch to a better grammar for Bro
  reorder again…
  put cjsx at the top
  Use a SQF grammar for SQF files
  move cjsx before iced
  move cjsx before iced
  change component name
  ...

Conflicts:
	test/test_language.rb
2014-11-26 15:07:27 -05:00
Adam Roben
596cd9368f Merge pull request #1773 from github/introduce-lightshow
Link to Lightshow in CONTRIBUTING.md
2014-11-26 11:44:05 -05:00
Adam Roben
f8d50faedb Link to Lightshow in CONTRIBUTING.md
This is a tool for testing grammars with GitHub's syntax highlighter.
2014-11-26 11:21:05 -05:00
Adam Roben
ccc9c197ae Merge pull request #1771 from github/better-fsharp-grammar
Switch to a better F# grammar
2014-11-26 09:35:55 -05:00
Brahn Partridge
af9b5f0e98 remove sample that is no longer used 2014-11-26 15:11:23 +01:00
Brahn Partridge
a145bd92f7 remove tpl extension to avoid conflict with smarty language 2014-11-26 15:07:28 +01:00
Brahn Partridge
20204cd9fc fix test_pedantic failure 2014-11-26 15:01:25 +01:00
Adam Roben
ed2dcc35e8 Switch to a better F# grammar
This fixes many bugs with F# highlighting, and the grammar is being
actively developed and maintained by the fsharp organization on GitHub.
2014-11-26 08:56:02 -05:00
Brahn Partridge
3445e55744 additional samples and fixed extensions list 2014-11-26 14:51:47 +01:00
Paul Chaignon
c5a654e692 Tests for Python multiline comments during tokenization 2014-11-25 20:01:24 -05:00
Paul Chaignon
3ac69ed4e0 Merge branch 'master' into pythonmultiline 2014-11-25 19:53:40 -05:00
Arfon Smith
208a3ff480 Merge branch 'master' into 1233-local
Conflicts:
	lib/linguist/language.rb
2014-11-25 17:04:43 -06:00
Paul Chaignon
6739a1471b Remove samples.json following merge with master 2014-11-25 15:46:51 -05:00
Paul Chaignon
230d91ecd8 Merge branch 'master' into saltstack-states 2014-11-25 15:41:25 -05:00
Arfon Smith
8de2cd15ed Merge branch 'master' into 1036-local
Conflicts:
	lib/linguist/heuristics.rb
	lib/linguist/languages.yml
	test/test_heuristics.rb
2014-11-25 13:06:11 -06:00
Garen Torikian
4603f3b2e7 Update languages.yml to always include ace_mode 2014-11-24 11:38:51 -08:00
Garen Torikian
9d6b8b4715 Add test for catching missing ace_mode values 2014-11-24 10:58:13 -08:00
Brandon Keepers
7cbc4bc144 Merge pull request #1751 from roodboi/master
add .cjsx extension for Facebook’s JSX in coffescript
2014-11-24 11:30:04 -05:00
Vicent Marti
d239e71826 Merge pull request #1765 from github/vmg/rugged-22b3
Rugged 0.22.0b3
2014-11-24 13:37:09 +01:00
Vicent Marti
ecaa2a41c9 Bump Rugged again 2014-11-24 13:32:37 +01:00
Vicent Marti
fc71805489 Checkout the master for testing 2014-11-24 13:25:49 +01:00
Vicent Marti
74d94781cb Rugged 0.22.0b3 2014-11-24 13:05:42 +01:00
Brahn Partridge
036b9c4094 Hello world sample 2014-11-24 11:32:53 +01:00
Brahn Partridge
ce928d8b64 Add support for the Clarion language 2014-11-24 11:30:25 +01:00
Garen Torikian
897c2c5ab6 Add missing ace_mode values wherever necessary 2014-11-23 21:16:21 -08:00
Arfon Smith
b556425037 Reordering 2014-11-21 13:10:45 -06:00
Arfon Smith
6131d17c02 Merge pull request #1748 from mrego/xht-extension
Add support for .xht extension which is used in some XHTML files
2014-11-21 12:48:58 -06:00
Adam Roben
875b3157bf Merge pull request #1757 from github/cut-release-v4.0.3
Bump version to 4.0.3
2014-11-21 12:06:38 -05:00
Adam Roben
4ce9048f8d Bump version to 4.0.3 2014-11-21 11:56:17 -05:00
Adam Roben
04f1b1df48 Merge pull request #1756 from github/test-for-grammars
Test that all languages have grammars
2014-11-21 11:54:46 -05:00
Adam Roben
f9c36345c3 Add some docs for tm_scope 2014-11-21 11:53:52 -05:00
Adam Roben
ec3967d080 Change NONE to none
NONE is a little shouty.
2014-11-21 11:52:29 -05:00
Arfon Smith
05a88b5b7e Merge pull request #1754 from github/chart-js
Chart js
2014-11-21 09:30:20 -06:00
Arfon Smith
b6b2cf04a7 Checking other case for Chart.jS 2014-11-21 09:29:28 -06:00
Adam Roben
49247e9ec2 Test that all languages have grammars
This will make CI fail if someone adds a new language but neglects to
add a new grammar for it. This should make it easier for people to
review PRs, as CI will help them to make sure a new grammar gets added.

However, we currently support some languages that have no grammars, and
we may support more in the future. So you can explicitly mark the
language as having no grammar by setting `tm_scope: NONE` in
languages.yml.
2014-11-21 09:48:52 -05:00
Adam Roben
6629b75aa6 Merge pull request #1755 from github/fix-rhtml-scope
Fix RHTML's tm_scope
2014-11-21 09:31:07 -05:00
Adam Roben
e702b453ec Fix RHTML's tm_scope
I missed this back in 9595e2ba7e.
2014-11-21 09:29:06 -05:00
Arfon Smith
38190d92fc Chart JS is vendored 2014-11-21 08:24:33 -06:00
Adam Roben
109ca5735b Merge pull request #1753 from github/better-bro-grammar
Switch to a better grammar for Bro
2014-11-21 09:23:28 -05:00
Adam Roben
4dde499f51 Switch to a better grammar for Bro
This grammar seems to be replacing the other ones out there and is
maintained by the Bro organization.
2014-11-21 09:17:19 -05:00
Vicent Marti
5fd18a215e Merge pull request #1752 from github/sqf-grammar
Use a SQF grammar for SQF files
2014-11-21 11:31:50 +01:00
Dimitri Kennedy
b283548c0f reorder again… 2014-11-20 18:36:08 -05:00
Dimitri Kennedy
2352ce77c9 put cjsx at the top 2014-11-20 17:38:38 -05:00
Adam Roben
2054afc741 Use a SQF grammar for SQF files
This produces better highlighting than using the C++ grammar.

The grammar is licensed under the Apache 2.0 license.
2014-11-20 17:22:55 -05:00
Dimitri Kennedy
9d3b9964b5 move cjsx before iced 2014-11-20 17:08:21 -05:00
Dimitri Kennedy
79c1d21a0f move cjsx before iced 2014-11-20 17:08:10 -05:00
Dimitri Kennedy
1d69228872 change component name 2014-11-20 16:49:48 -05:00
Dimitri Kennedy
f5953a09da add example cjsx file 2014-11-20 16:48:22 -05:00
Dimitri Kennedy
a17f6c8ae1 add .cjsx extension for Facebook’s JSX in coffescript 2014-11-20 14:56:09 -05:00
Max Horn
f9ad5dda56 Add heuristic distinguishing GAP and Scilab .tst files 2014-11-20 12:52:13 -07:00
Max Horn
ff6a10698e Pass name of file being analyzed to find_by_heuristics
Some languages are sensitive to file names in the sense that
different kinds of files contain somewhat different data.
Example: GAP .tst files contain test cases, which add some
extra data compared to regular code, and as a consequence are
not directly interchangeable with regular source code.

Heuristics may need to take this into account, thus may need
to know the name of the file being analyzed.
2014-11-20 12:48:28 -07:00
Max Horn
6072a63f99 Add GAP .tst extension plus two sample files 2014-11-20 12:47:15 -07:00
Max Horn
1bd935b2b4 Set 'lexer: GAP' for GAP
My Pygments patch adding support for GAP was merged in April, and I
verified that it is live on GitHub.
2014-11-20 12:47:15 -07:00
Brandon Keepers
9823af0cb4 Fix for shebang with relative bin
`#!/usr/bin/env bin/linguist` is a valid shebang
2014-11-20 12:50:35 -05:00
Brandon Keepers
45384bd498 More missing interpreters 2014-11-20 12:29:16 -05:00
Brandon Keepers
56bfde998b Only strip minor version off of interpreters
This used to turn `python2.4` into `python`, which causes trouble with
`perl6`, which is a different language definition.
2014-11-20 12:28:30 -05:00
Brandon Keepers
870feb8592 Add missing interpreters 2014-11-20 11:27:54 -05:00
Brandon Keepers
2670e2b035 Test that interpreters are defined in languages.yml 2014-11-20 11:21:52 -05:00
Brandon Keepers
eccea65641 Fix for interpreters not getting add to samples.json 2014-11-20 11:14:05 -05:00
Brandon Keepers
231ad86176 sync cached gems 2014-11-20 08:51:56 -05:00
Florian Kaiser
9658b02502 add Chart.js as vendor
http://www.chartjs.org
2014-11-20 10:02:45 +01:00
Manuel Rego Casasnovas
30c6b6e5a1 Add XHTML example file 2014-11-20 00:30:21 +01:00
Manuel Rego Casasnovas
b44e58dd7f Add support for .xht extension which is used in some XHTML files 2014-11-19 23:08:51 +01:00
Vicent Marti
bce31e8b51 Merge pull request #1747 from github/cut-release-v4.0.2
Cut release v4.0.2
2014-11-19 18:12:07 +01:00
Adam Roben
011c654c2a Bump version to v4.0.2 2014-11-19 12:08:49 -05:00
Adam Roben
2457b52658 Update grammars.yml 2014-11-19 12:08:43 -05:00
Arfon Smith
a3adaa6a7b Merge pull request #1745 from github/f-case
Fix failures on case-insensitive filesystem
2014-11-19 07:04:58 -06:00
Brandon Keepers
a6f168d1ac Rename file to avoid case-insensitive collision 2014-11-18 23:22:10 -05:00
Arfon Smith
f792029a20 Merge pull request #1743 from github/codemirror
Codemirror should be considered vendored
2014-11-18 20:02:12 -06:00
Arfon Smith
2a5dd5b224 Adding test for codemirror 2014-11-18 19:34:41 -06:00
Martín Gaitán
fb7dcfd62d Exclude codemirror
An example of a wrong detection due to codemirror is my project.  https://github.com/mgaitan/waliki
2014-11-18 20:17:15 -03:00
Brandon Keepers
245a1a92cf Merge remote-tracking branch 'origin/master' into test-helper
* origin/master:
  Add Gemfile.lock sample
  Remove deprecated method
  #all_extensions already includes primary extension
  typo
  remove unused assertion
  Symlink ant.xml to build.xml
  Avoid shadowing variable name
  Update comment
  Make missing sample failure message similar
  Remove blank extensions property
  Fix sample tests
  Add Forth extensions .f and .for; add heuristics for Forth and FORTRAN.
  Add FORTRAN and Forth samples.
  Extensions aren't actually required
  Fix errors from pedantic test
  Make pedantic test actually pedantic
  Removing extensions when they should be filenames
  Adding sample pom.xml files
  Link to contributing docs
  require samples if filename matches multiple languages

Conflicts:
	test/test_pedantic.rb
2014-11-18 16:48:26 -05:00
Brandon Keepers
aa7ab2065b Add test helper to make test env consistent 2014-11-18 16:46:09 -05:00
Brandon Keepers
719f6e876b Merge pull request #1732 from github/filename-matches-multiple-langages
Require samples if filename matches multiple languages
2014-11-18 16:31:19 -05:00
Brandon Keepers
8724dc8ccc Merge pull request #889 from larsbrinkhoff/fortran
FIX: .f misidentified as Fortran
2014-11-18 16:05:23 -05:00
Brandon Keepers
63f9d0bdeb Add Gemfile.lock sample
Gemfile.lock should not actually get classified as Ruby, but we can fix that in another PR.
2014-11-18 15:36:42 -05:00
Brandon Keepers
d7fd12cb32 Remove deprecated method 2014-11-18 15:19:23 -05:00
Brandon Keepers
850ab6dedb #all_extensions already includes primary extension 2014-11-18 15:10:07 -05:00
Brandon Keepers
b20fa497b9 typo 2014-11-18 15:07:36 -05:00
Brandon Keepers
1abc7ee2ef remove unused assertion 2014-11-18 15:04:12 -05:00
Brandon Keepers
d7a032afcd Symlink ant.xml to build.xml
We require samples for explicitly defined filenames that matches multiple languages. This is generally a good thing, but in this case they will be identical.
2014-11-18 15:02:59 -05:00
Brandon Keepers
587c764950 Avoid shadowing variable name 2014-11-18 14:57:39 -05:00
Brandon Keepers
1abbcb6435 Update comment 2014-11-18 14:57:32 -05:00
Brandon Keepers
17f3d7005a Make missing sample failure message similar 2014-11-18 14:55:15 -05:00
Brandon Keepers
ac59620728 Remove blank extensions property 2014-11-18 14:48:43 -05:00
Brandon Keepers
ba8b55391d Fix sample tests 2014-11-18 14:48:21 -05:00
Lars Brinkhoff
03c1e725ce Add Forth extensions .f and .for; add heuristics for Forth and FORTRAN. 2014-11-18 20:21:19 +01:00
Lars Brinkhoff
4cefaf2808 Add FORTRAN and Forth samples. 2014-11-18 20:12:39 +01:00
Brandon Keepers
757801e32f Merge remote-tracking branch 'origin/master' into filename-matches-multiple-langages
* origin/master:
  Allow mime-types 2.x to be used with Linguist
  Upgrade to rugged 0.22.0b1
  Mention that languages need to be quite popular
  fix vendor/cache
  Gemfile.lock is nolonger considered generated
  Tests for BlobHelper#empty?
  remove reference to empty.js
  Remove more empty samples
  Bail earlier if the file is empty.
  Moving comments
  Use heuristics earlier to inform the rest of the classification process
  Removing inconsistency of `find_by_heuristics` (was sometimes returning nil and sometimes returning and empty array)
  Removing unused array of candidate languages.
  Reworking most heuristics to only return one match
2014-11-18 14:09:15 -05:00
Brandon Keepers
749ea2a580 Merge pull request #1734 from github/just-filenames
Removing extensions when they should be filenames
2014-11-18 14:01:57 -05:00
Adam Roben
dc373fb51f Merge pull request #1737 from github/relax-mime-types
Allow mime-types 2.x to be used with Linguist
2014-11-18 11:47:35 -05:00
Arfon Smith
0443c4db2d Merge pull request #1674 from github/rework-heuristics
Rework heuristics
2014-11-18 10:43:01 -06:00
Adam Roben
d699ba3a98 Allow mime-types 2.x to be used with Linguist
The API is compatible for our purposes, and this allows Linguist to be
used in apps that pull in newer versions of mime-types through other
gems.
2014-11-18 10:46:04 -05:00
Adam Roben
92d2782ceb Merge pull request #1738 from github/update-rugged
Upgrade to rugged 0.22.0b1
2014-11-18 10:45:38 -05:00
Adam Roben
e76ebb1a74 Upgrade to rugged 0.22.0b1
0.21.2 was just released but doesn't contain the Repository::Attributes
code we depend on. 0.22.0b1 has this code.
2014-11-18 10:40:37 -05:00
Arfon Smith
cacde403c0 Merge pull request #1736 from github/aroben-patch-1
Mention that languages need to be quite popular
2014-11-18 08:07:51 -06:00
Adam Roben
906b0ee30e Mention that languages need to be quite popular
The precedent seems to be "hundreds of repos".
2014-11-18 08:48:00 -05:00
Brandon Keepers
cd7549390e Extensions aren't actually required 2014-11-17 20:00:09 -05:00
Brandon Keepers
f30cab30f4 fix vendor/cache 2014-11-17 19:42:22 -05:00
Paul Chaignon
1356d4e579 Remove heuristic rules for .mm files 2014-11-17 19:20:45 -05:00
Brandon Keepers
63c83d014b Fix errors from pedantic test 2014-11-17 18:53:14 -05:00
Brandon Keepers
b8e426d3a3 Make pedantic test actually pedantic
What do you call someone that thinks they are pedantic but actually
aren’t? All the crazy custom parsing in this test was making so it
wasn’t actually doing anything.
2014-11-17 18:52:53 -05:00
Arfon Smith
c5344da2ba Removing extensions when they should be filenames 2014-11-17 16:44:39 -06:00
Arfon Smith
7606a70bb8 Merge pull request #1733 from github/gemfile-lock-not-generated
Gemfile.lock is nolonger considered generated
2014-11-17 16:35:07 -06:00
Arfon Smith
7d850d7c09 Gemfile.lock is nolonger considered generated 2014-11-17 16:31:47 -06:00
Arfon Smith
c1b704075e Adding sample pom.xml files 2014-11-17 16:25:03 -06:00
Brandon Keepers
07a6411a75 Link to contributing docs 2014-11-17 16:30:39 -05:00
Brandon Keepers
b32bc5ef47 require samples if filename matches multiple languages 2014-11-17 16:18:56 -05:00
Brandon Keepers
6c106b88c0 Avoid using singular #extension 2014-11-17 15:47:21 -05:00
Adam Roben
f2c9581bac Merge pull request #1730 from github/more-docs
Add CONTRIBUTING.md
2014-11-17 15:28:32 -05:00
Brandon Keepers
c46667581d Use the first extension with languages defined 2014-11-17 15:15:39 -05:00
Adam Roben
59e5ba351c Mention that grammars should be licensed 2014-11-17 15:14:36 -05:00
Adam Roben
a8a710f863 Add a link to CONTRIBUTING.md from the README 2014-11-17 15:10:09 -05:00
Adam Roben
f603b731a9 Add CONTRIBUTING.md
This document tries to explain how to file various common kinds of bug
reports or enhancements.
2014-11-17 15:05:33 -05:00
Brandon Keepers
3ca872cea8 Support for multiple file extension segments 2014-11-17 14:54:22 -05:00
Adam Roben
970953ca12 Merge pull request #1727 from pchaigno/lexer-inform7
Lexer for Inform 7
2014-11-17 14:45:46 -05:00
Vicent Marti
7cf6372519 Version 4.0.1 2014-11-17 18:09:26 +01:00
Paul Chaignon
1d381233e0 Update tm_scope to match case used in Sublime-Inform 2014-11-17 11:19:23 -05:00
Paul Chaignon
6f0c24b90b Remove grammar for Inform 6 2014-11-17 10:56:38 -05:00
Brandon Keepers
f29c172267 Merge pull request #1726 from github/makefile-tests
Fix tests for Makefile change
2014-11-17 10:52:39 -05:00
Paul Chaignon
e9c5598254 Add lexer for Inform 7 using download-grammars script 2014-11-17 10:50:03 -05:00
Adam Roben
dd5728a441 Merge pull request #1728 from github/new-pike-url
Update the URL for the source.pike grammar
2014-11-17 10:45:48 -05:00
Adam Roben
ec1d77c32e Update the URL for the source.pike grammar
It's now hosted on GitHub and has a clearer license.
2014-11-17 10:43:36 -05:00
Paul Chaignon
40887930f9 Lexer for Inform 7 2014-11-17 09:41:35 -05:00
Brandon Keepers
6bf8243014 Fix tests for Makefile change 2014-11-17 08:15:17 -05:00
Brandon Keepers
419805ce9f Merge pull request #1724 from pchaigno/make-type
Programming type for Makefile
2014-11-16 23:17:30 -05:00
Paul Chaignon
81089416a2 Makefile set to programming type 2014-11-16 23:13:31 -05:00
Vicent Marti
efc7799960 Clojure grammar from Atom 2014-11-16 18:29:58 +01:00
Joseph Hall
7702583314 Python also supports triple single-quotes for comments 2014-11-16 07:19:55 -07:00
Vicent Marti
fcbef97e39 Typo in README 2014-11-16 14:42:56 +01:00
Vicent Marti
8beef260da Merge pull request #1722 from github/vmg/grammar-fixes
Misc. grammar fixes
2014-11-16 14:41:40 +01:00
Vicent Marti
618a5b62ee Revert the changes in download-grammars 2014-11-16 14:40:48 +01:00
Vicent Marti
c579924485 DOCS 2014-11-16 14:25:11 +01:00
Vicent Marti
9b9fadfa19 Use a Racket grammar for Racket 2014-11-16 13:47:19 +01:00
Vicent Marti
daf64010f9 Merge pull request #1714 from github/vmg/new-languages
Some new TM powered languages
2014-11-14 20:24:21 +01:00
Vicent Marti
f0bd24f810 DOT was already a thing 2014-11-14 19:20:47 +01:00
Vicent Marti
5969a8b679 More samples 2014-11-14 19:18:43 +01:00
Vicent Marti
6b3ba29558 Reindent 2014-11-14 19:11:11 +01:00
Vicent Marti
f217047ac0 Rename 2014-11-14 19:06:41 +01:00
Vicent Marti
935c852364 Add Dockerfile sample 2014-11-14 19:05:42 +01:00
Vicent Marti
9e28965259 Rename Dockerfile 2014-11-14 19:04:11 +01:00
Vicent Marti
a829f3143a Add DOT sample 2014-11-14 19:04:06 +01:00
Vicent Marti
3fc01d09ce Hah Parrot was already a thing 2014-11-14 19:00:21 +01:00
Vicent Marti
a4ae90e2e9 Add Thrift 2014-11-14 18:58:30 +01:00
Vicent Marti
4928828874 Add Ninja 2014-11-14 18:56:34 +01:00
Vicent Marti
af90ac3758 add Maven buildfiles 2014-11-14 18:54:27 +01:00
Vicent Marti
d4e6798ba8 add Graphviz 2014-11-14 18:48:19 +01:00
Vicent Marti
03b250990d Add Cap'n Proto 2014-11-14 18:46:16 +01:00
Vicent Marti
5bc0ce0888 Add Bison 2014-11-14 18:44:12 +01:00
Vicent Marti
a0bbf7df6f Add Ant 2014-11-14 18:41:36 +01:00
Vicent Marti
6b90f22cef Add Parrot IR 2014-11-14 18:37:54 +01:00
Vicent Marti
d290576543 Add Docker Files as a language 2014-11-14 18:16:51 +01:00
Vicent Marti
75871e52ea Merge pull request #1707 from github/vmg/lol-pygments
Remove the Pygments dependency
2014-11-14 17:39:51 +01:00
Vicent Marti
b40459335b ...actually... This is 4.0.0 because of breaking changes 2014-11-14 17:38:39 +01:00
Vicent Marti
51b16ca965 oops 2014-11-14 17:37:12 +01:00
Vicent Marti
5dafa937de Remove lexers from languages.yml 2014-11-14 17:37:12 +01:00
Vicent Marti
2307c2e9fc Bump version to 3.6.0 2014-11-14 17:37:12 +01:00
Vicent Marti
d12aff9776 Unused test 2014-11-14 17:37:12 +01:00
Vicent Marti
fcd26da282 Remove outdated gems 2014-11-14 17:37:12 +01:00
Vicent Marti
4a10b27611 Remove Pygments 2014-11-14 17:37:12 +01:00
Vicent Marti
201fe54b0c Merge pull request #1710 from github/grammars
Add github-linguist-grammars gem
2014-11-14 16:12:22 +01:00
Adam Roben
1618a3b02a Use the original Kotlin package instead of a fork
The fork is identical to the original.
2014-11-13 14:26:06 -05:00
Adam Roben
3be97ccaa3 Update SCSS bundle location
The old URL redirects to this one.
2014-11-13 14:24:47 -05:00
Adam Roben
879e4977e4 Handle includes like source.c#block 2014-11-13 13:45:02 -05:00
Adam Roben
613b71719f Add back some accidentally pruned grammars
A bug in the prune-grammars script caused these to be removed.
2014-11-13 13:42:36 -05:00
Adam Roben
2870f6d038 Prune unused grammars
script/prune-grammars will remove any grammars that aren't needed from
grammars.yml.
2014-11-13 13:16:24 -05:00
Adam Roben
046fb18980 Add github-linguist-grammars gem
The purpose of this gem is to package up the language grammars that are
used for syntax highlighting on github.com. The grammars are TextMate,
Sublime Text, or Atom language grammars, converted to JSON and given the
filename SCOPE.json, where SCOPE is the language scope that the grammar
defines.

The github-linguist-grammars gem packages up all the grammars, and also
exports a Linguist::Grammars.path method to locate the directory
containing the grammars.

To build the gem, simply run `rake build_grammars_gem`. The grammars.yml
file lists all the repositories we download grammars from, as well as
which scopes are defined by each repository. The
script/download-grammars script takes that list and downloads and
processes the grammars into the format expected by the gem.
2014-11-13 11:03:53 -05:00
Brandon Keepers
d133d9eccb Merge pull request #1709 from github/emacs-lisp-assertion
Add assertion for Emacs Lisp
2014-11-13 10:47:52 -05:00
Brandon Keepers
296473507f Add assert for Emacs lisp
/cc https://github.com/github/linguist/pull/1499
2014-11-13 10:40:58 -05:00
Adam Roben
ff8821080a Merge pull request #1708 from github/fortran-modern
Use source.fortran.modern TM scope for FORTRAN
2014-11-13 09:53:33 -05:00
Adam Roben
9acf41b0fe Use source.fortran.modern TM scope for FORTRAN
This is technically only for FORTRAN 90 and newer, but seems to do just fine with older variants.
2014-11-13 09:52:08 -05:00
Paul Chaignon
9c64f72f35 Add .mm as an XML extension with heuristic rule 2014-11-12 19:38:54 -05:00
Sebastian Godelet
95777055d1 languages.yml: added an interpreter entry to Mercury section 2014-11-11 23:28:07 +08:00
Brandon Keepers
33d75d9623 Tests for BlobHelper#empty? 2014-11-06 15:14:03 -06:00
Brandon Keepers
a0cc2c4c86 remove reference to empty.js 2014-11-06 14:59:34 -06:00
Brandon Keepers
754bc4ef6d Remove more empty samples 2014-11-06 14:56:19 -06:00
Brandon Keepers
df55043500 Bail earlier if the file is empty.
This will change behavior for empty files with unique extensions, returning nil instead of the language.
2014-11-06 14:49:24 -06:00
Arfon Smith
f22524a615 Moving comments 2014-11-06 14:27:49 -06:00
Arfon Smith
1831390429 Use heuristics earlier to inform the rest of the classification process 2014-11-06 14:09:19 -06:00
Arfon Smith
f4c7661cc6 Removing inconsistency of find_by_heuristics (was sometimes returning nil and sometimes returning and empty array) 2014-11-06 14:08:42 -06:00
Arfon Smith
0ab88919c9 Removing unused array of candidate languages. 2014-11-06 13:31:34 -06:00
Arfon Smith
9107d3c243 Reworking most heuristics to only return one match 2014-11-06 13:26:40 -06:00
Blake Embrey
42e9131b4f Add RAML support 2014-11-06 11:47:00 -06:00
Brandon Keepers
74fa4b9b75 docs 2014-11-03 08:54:11 -05:00
Brandon Keepers
815337299a Extract empty blob strategy 2014-11-03 08:21:46 -05:00
Brandon Keepers
fd32938cd8 Extract strategies for detecting the language 2014-11-03 08:17:02 -05:00
Brandon Keepers
8d7b4f81b4 Extract filename strategy 2014-11-02 22:15:52 -05:00
Geoff Nixon
edadca9085 Add comment styles, don't choke on #!/usr/bin/env foo=bar... 2014-11-02 03:07:21 -08:00
Arfon Smith
2bc546eadf Merge branch 'master' into 1233-local
Conflicts:
	lib/linguist/language.rb
2014-11-01 10:05:45 -05:00
Arfon Smith
9e50e188a8 Merge branch 'master' into 1233-local
Conflicts:
	lib/linguist/language.rb
	lib/linguist/languages.yml
	lib/linguist/samples.json
2014-11-01 10:04:22 -05:00
Arfon Smith
5ffc4c0158 Starting work on Disambiguate Matlab, Objective-C, Mathematica, M, and Mercury method 2014-10-31 17:22:32 -05:00
Arfon Smith
0c05a6c3ac Merge branch 'master' into 1036-local 2014-10-29 20:06:40 -05:00
Arfon Smith
d4d6ef314d Merge branch 'master' into 1036-local 2014-10-28 19:14:43 -05:00
Arfon Smith
322b21e0d0 Updating regexes 2014-10-28 19:14:32 -05:00
Arfon Smith
32de8a4d19 Only exact matches 2014-10-23 13:59:36 +01:00
Arfon Smith
cf9998f3e4 Merge branch 'master' into 1036-local 2014-10-23 12:16:51 +01:00
Arfon Smith
89320b1ca4 Merge branch 'master' into 1036-local
Conflicts:
	lib/linguist/heuristics.rb
	lib/linguist/samples.json
2014-10-23 12:05:18 +01:00
Tomas Morstein
08290ac49e remove very rarely used .dcl extension for now
...to avoid collision with Clean language as well
as the .dcl extension can be seen only in some special
cases -- especially in context of DCL emulation tools
for non-OpenVMS systems (probably to avoid potential
confusion with MS-DOS .com files).
2014-10-04 22:46:32 +02:00
Tomas Morstein
42944660bd no need to group DCL and MMS/MMK 2014-10-04 22:02:27 +02:00
Tomas Morstein
ae5e1c5a85 DCL & MMS lexers are not supported, use Text only 2014-10-04 21:43:20 +02:00
Tomas Morstein
f4f5ccb3f5 add MMS/MMK samples 2014-10-04 20:43:39 +02:00
Tomas Morstein
ab3f44cb6e add DECset Module Management System support 2014-10-04 20:38:46 +02:00
Tomas Morstein
d7757033ab DCL examples 2014-10-04 20:33:28 +02:00
Tomas Morstein
8bb9241e6e add DIGITAL Command Language (DCL) 2014-10-04 19:08:57 +02:00
Paul Chaignon
7b44baa417 Merge branch 'master' into newlisp 2014-09-25 10:47:16 -04:00
Paul Chaignon
f3d654a965 Merge branch 'master' into bitbake 2014-09-25 10:38:47 -04:00
Paul Chaignon
2e6aae0256 Merge branch 'master' into saltstack-states 2014-09-25 10:26:57 -04:00
Arfon Smith
12b78c5357 Removing pry runtime dependency 2014-09-18 13:22:02 -05:00
Arfon Smith
e70cd33323 Moving to fixtures 2014-09-17 08:37:00 -05:00
Arfon Smith
302af86363 Merge branch 'master' into 1233-local
Conflicts:
	lib/linguist/language.rb
	lib/linguist/samples.json
2014-09-16 16:36:10 -05:00
Edmundo Ruiz
2c5e8c4308 Fixed spelling error in disambiguate asc method name. Whoops. 2014-09-14 12:28:20 -07:00
Edmundo Ruiz
506b75c5e8 Merge remote-tracking branch 'upstream/master' 2014-09-14 12:21:50 -07:00
Edmundo Ruiz
af4b64070f Added heuristics to distinguish between AsciiDoc and Adventure Game Studio 2014-09-06 10:59:32 -07:00
Edmundo Ruiz
29d8e58d69 Renamed AGS Script to Adventure Game Studio since the language is unique to the app. 2014-09-06 10:58:36 -07:00
Rachel Mant
44eebde394 Added @property and @end as an Obj-C heuristic for issue #1344 2014-09-03 18:33:24 +01:00
DX-MON
498c102414 Fixed the tests that broke, but this may have re-broken a couple of repositories - I can't yet tell 2014-09-03 18:14:15 +01:00
DX-MON
79cd77454b Merge remote-tracking branch 'source/master' 2014-09-03 18:09:52 +01:00
Michael Johnson
410aace222 Adding Google Apps Script (.gs) as a JavaScript extension. 2014-08-24 17:00:37 -04:00
Damien Pollet
bde19a76cc Re-generate samples.json 2014-08-07 15:24:57 +02:00
Damien Pollet
49ebf4b303 C# samples to disambiguate from Smalltalk 2014-08-07 14:43:35 +02:00
Damien Pollet
0017310dd1 Declare .cs as Smalltalk changeset 2014-08-06 22:27:30 +02:00
dx-mon
dad4b974b7 Merge branch 'master' of https://github.com/github/linguist 2014-07-14 22:08:16 +01:00
DX-MON
f1cb16648f Added samples for .C and .H files to fix the pedantic tests for sample presense 2014-06-27 12:49:11 +01:00
DX-MON
1276f10b67 Fixed languages.yml so the pedantic test on extension ordering passes 2014-06-26 23:04:10 +01:00
DX-MON
c3da262bd0 Merge branch 'master' of https://github.com/github/linguist 2014-06-26 22:57:07 +01:00
Paul Chaignon
35355b157c Add support for .sls YAML files (SaltStack states) 2014-06-22 15:28:49 +02:00
Paul Chaignon
2143699aab Language detection test for non-sample files 2014-06-14 11:53:45 +02:00
Paul Chaignon
b1c2820299 Merge conflicts from master fixed 2014-06-13 18:50:32 +02:00
DX-MON
624fd74f83 Added C header samples from https://github.com/MiJyn/nightmare/ to fix the misclassifications as C++ that were occuring 2014-06-10 18:54:10 +01:00
DX-MON
cd878522d9 Added the GLKit GLKMatrix4 header as a C sample as this fixes 5 misclassifications - 4 as Obj-C and one as C++ 2014-06-10 18:51:29 +01:00
DX-MON
10fed43c27 Added .H and .C as C file extensions as well as them already being C++ ones. This fixes #1054 2014-06-10 11:59:11 +01:00
DX-MON
1d50adf87a Added a sample that fixes comment two on issue #1264. 2014-06-10 10:41:00 +01:00
Rachel Mant
614a61b0b0 Update heuristics.rb
Added the iostream headers and std:: to the C++ heuristics. This covers issues 1250.
2014-06-05 10:37:23 +01:00
Paul Chaignon
bd380f44cc Refactoring of Language.detect 2014-06-03 09:52:24 +02:00
Paul Chaignon
8a546d2a7a Try shebang detection if the extension is unknown 2014-06-01 20:00:49 +02:00
Paul Chaignon
1148a9746a Change unknown extension of PHP sample file 2014-06-01 19:59:57 +02:00
Trey Deitch
913cd6c309 Add support for Cool
This change includes a brief (non-sensical) sample program I wrote to
illustrate many of Cool's language constructs, as well as a simple rule
to distinguish Cool files from Common Lisp or OpenCL (it has a line that
starts with the word 'class'). Further, it includes a second example
program adapted from an example contained in the Cool distribution
(list.cl), which contains a few further language constructs and captures
the style of a Cool program.
2014-05-08 13:27:22 -07:00
Paul Chaignon
81d9c682da Support of the BitBake language 2014-05-05 11:29:00 +02:00
Paul Chaignon
e4975fc476 Heuristics for Common Lisp and NewLisp 2014-04-28 11:45:24 +02:00
Paul Chaignon
e1064b13c0 NewLisp language added 2014-04-28 11:30:12 +02:00
DX-MON
492aa12cad Updated the samples database file as recommended 2014-04-03 11:18:36 +01:00
DX-MON
e79e45a74e Removed the matches variable from find_by_heuristics without re-breaking anything 2014-04-02 22:22:22 +01:00
dx-mon
e661470bbb Merge branch 'master' of github.com:DX-MON/linguist 2014-04-02 21:41:13 +01:00
DX-MON
af30a80702 Added two new heuristics tests for the new C/C++/Obj-C heuristics 2014-04-02 21:41:02 +01:00
Rachel Mant
bab7ee4fcb Found my new heuristic was still not being used because heuristics had been switched off 2014-04-02 20:17:33 +01:00
DX-MON
6524ac3588 Fixed the C++ class matching regex that was breaking the test for C/jni_layer.h 2014-04-02 20:08:47 +01:00
DX-MON
c432cd67fc Found out that nothing was ever getting returned from the heuristic function "find_by_heuristics", and that headers matching C, Obj-C and C++ were never getting checked heuristically 2014-04-02 19:55:24 +01:00
DX-MON
5c071a2e07 More regex goodness to improve the detection of C++ vs C 2014-04-02 19:48:44 +01:00
DX-MON
cb10c53dee Fixed the failing patten for detecting C++-only headers 2014-04-02 17:57:58 +01:00
Rachel Mant
dfba2a31a5 Added the end statements for the two new if statmeents
Did not know ends were required on one-liner ifs. Fixed.
2014-04-02 13:44:17 +01:00
Rachel Mant
667f3de26b Improved the Obj-C heuristic with a Regex matching multiple unique keywords
Also improved the C++ heuristic by checking for class without an @ on the front.
2014-04-02 13:09:17 +01:00
Rachel Mant
fd585beb07 Improved the C++ heuristic for detecting based on included headers 2014-04-02 12:55:29 +01:00
1257 changed files with 192641 additions and 58863 deletions

6
.gitignore vendored
View File

@@ -1,4 +1,8 @@
Gemfile.lock
/Gemfile.lock
.bundle/
benchmark/
lib/linguist/samples.json
/grammars
/node_modules
test/fixtures/ace_modes.json
/vendor/gems/

715
.gitmodules vendored Normal file
View File

@@ -0,0 +1,715 @@
[submodule "vendor/grammars/go-tmbundle"]
path = vendor/grammars/go-tmbundle
url = https://github.com/AlanQuatermain/go-tmbundle
[submodule "vendor/grammars/PHP-Twig.tmbundle"]
path = vendor/grammars/PHP-Twig.tmbundle
url = https://github.com/Anomareh/PHP-Twig.tmbundle
[submodule "vendor/grammars/sublime-cirru"]
path = vendor/grammars/sublime-cirru
url = https://github.com/Cirru/sublime-cirru
[submodule "vendor/grammars/SublimeBrainfuck"]
path = vendor/grammars/SublimeBrainfuck
url = https://github.com/Drako/SublimeBrainfuck
[submodule "vendor/grammars/awk-sublime"]
path = vendor/grammars/awk-sublime
url = https://github.com/JohnNilsson/awk-sublime
[submodule "vendor/grammars/Sublime-SQF-Language"]
path = vendor/grammars/Sublime-SQF-Language
url = https://github.com/JonBons/Sublime-SQF-Language
[submodule "vendor/grammars/SCSS.tmbundle"]
path = vendor/grammars/SCSS.tmbundle
url = https://github.com/MarioRicalde/SCSS.tmbundle
[submodule "vendor/grammars/Sublime-REBOL"]
path = vendor/grammars/Sublime-REBOL
url = https://github.com/Oldes/Sublime-REBOL
[submodule "vendor/grammars/Sublime-VimL"]
path = vendor/grammars/Sublime-VimL
url = https://github.com/SalGnt/Sublime-VimL
[submodule "vendor/grammars/ColdFusion"]
path = vendor/grammars/ColdFusion
url = https://github.com/SublimeText/ColdFusion
[submodule "vendor/grammars/NSIS"]
path = vendor/grammars/NSIS
url = https://github.com/SublimeText/NSIS
[submodule "vendor/grammars/NimLime"]
path = vendor/grammars/NimLime
url = https://github.com/Varriount/NimLime
[submodule "vendor/grammars/gradle.tmbundle"]
path = vendor/grammars/gradle.tmbundle
url = https://github.com/alkemist/gradle.tmbundle
[submodule "vendor/grammars/Sublime-Loom"]
path = vendor/grammars/Sublime-Loom
url = https://github.com/ambethia/Sublime-Loom
[submodule "vendor/grammars/VBDotNetSyntax"]
path = vendor/grammars/VBDotNetSyntax
url = https://github.com/angryant0007/VBDotNetSyntax
[submodule "vendor/grammars/cool-tmbundle"]
path = vendor/grammars/cool-tmbundle
url = https://github.com/anunayk/cool-tmbundle
[submodule "vendor/grammars/Docker.tmbundle"]
path = vendor/grammars/Docker.tmbundle
url = https://github.com/asbjornenge/Docker.tmbundle
[submodule "vendor/grammars/jasmin-sublime"]
path = vendor/grammars/jasmin-sublime
url = https://github.com/atmarksharp/jasmin-sublime
[submodule "vendor/grammars/language-clojure"]
path = vendor/grammars/language-clojure
url = https://github.com/atom/language-clojure
[submodule "vendor/grammars/language-coffee-script"]
path = vendor/grammars/language-coffee-script
url = https://github.com/atom/language-coffee-script
[submodule "vendor/grammars/language-csharp"]
path = vendor/grammars/language-csharp
url = https://github.com/atom/language-csharp
[submodule "vendor/grammars/language-gfm"]
path = vendor/grammars/language-gfm
url = https://github.com/atom/language-gfm
[submodule "vendor/grammars/language-javascript"]
path = vendor/grammars/language-javascript
url = https://github.com/atom/language-javascript
[submodule "vendor/grammars/language-python"]
path = vendor/grammars/language-python
url = https://github.com/atom/language-python
[submodule "vendor/grammars/language-shellscript"]
path = vendor/grammars/language-shellscript
url = https://github.com/atom/language-shellscript
[submodule "vendor/grammars/language-supercollider"]
path = vendor/grammars/language-supercollider
url = https://github.com/supercollider/language-supercollider
[submodule "vendor/grammars/language-yaml"]
path = vendor/grammars/language-yaml
url = https://github.com/atom/language-yaml
[submodule "vendor/grammars/Sublime-Lasso"]
path = vendor/grammars/Sublime-Lasso
url = https://github.com/bfad/Sublime-Lasso
[submodule "vendor/grammars/chapel-tmbundle"]
path = vendor/grammars/chapel-tmbundle
url = https://github.com/chapel-lang/chapel-tmbundle
[submodule "vendor/grammars/sublime-nginx"]
path = vendor/grammars/sublime-nginx
url = https://github.com/brandonwamboldt/sublime-nginx
[submodule "vendor/grammars/bro-sublime"]
path = vendor/grammars/bro-sublime
url = https://github.com/bro/bro-sublime
[submodule "vendor/grammars/sublime_man_page_support"]
path = vendor/grammars/sublime_man_page_support
url = https://github.com/carsonoid/sublime_man_page_support
[submodule "vendor/grammars/sublime-MuPAD"]
path = vendor/grammars/sublime-MuPAD
url = https://github.com/ccreutzig/sublime-MuPAD
[submodule "vendor/grammars/haxe-sublime-bundle"]
path = vendor/grammars/haxe-sublime-bundle
url = https://github.com/clemos/haxe-sublime-bundle
[submodule "vendor/grammars/cucumber-tmbundle"]
path = vendor/grammars/cucumber-tmbundle
url = https://github.com/cucumber/cucumber-tmbundle
[submodule "vendor/grammars/powershell"]
path = vendor/grammars/powershell
url = https://github.com/SublimeText/PowerShell
[submodule "vendor/grammars/jade-tmbundle"]
path = vendor/grammars/jade-tmbundle
url = https://github.com/davidrios/jade-tmbundle
[submodule "vendor/grammars/elixir-tmbundle"]
path = vendor/grammars/elixir-tmbundle
url = https://github.com/elixir-lang/elixir-tmbundle
[submodule "vendor/grammars/sublime-glsl"]
path = vendor/grammars/sublime-glsl
url = https://github.com/euler0/sublime-glsl
[submodule "vendor/grammars/fancy-tmbundle"]
path = vendor/grammars/fancy-tmbundle
url = https://github.com/fancy-lang/fancy-tmbundle
[submodule "vendor/grammars/dart-sublime-bundle"]
path = vendor/grammars/dart-sublime-bundle
url = https://github.com/guillermooo/dart-sublime-bundle
[submodule "vendor/grammars/sublimetext-cuda-cpp"]
path = vendor/grammars/sublimetext-cuda-cpp
url = https://github.com/harrism/sublimetext-cuda-cpp
[submodule "vendor/grammars/pike-textmate"]
path = vendor/grammars/pike-textmate
url = https://github.com/hww3/pike-textmate
[submodule "vendor/grammars/ceylon-sublimetext"]
path = vendor/grammars/ceylon-sublimetext
url = https://github.com/jeancharles-roger/ceylon-sublimetext
[submodule "vendor/grammars/Sublime-Text-2-OpenEdge-ABL"]
path = vendor/grammars/Sublime-Text-2-OpenEdge-ABL
url = https://github.com/jfairbank/Sublime-Text-2-OpenEdge-ABL
[submodule "vendor/grammars/sublime-rust"]
path = vendor/grammars/sublime-rust
url = https://github.com/jhasse/sublime-rust
[submodule "vendor/grammars/sublime-befunge"]
path = vendor/grammars/sublime-befunge
url = https://github.com/johanasplund/sublime-befunge
[submodule "vendor/grammars/RDoc.tmbundle"]
path = vendor/grammars/RDoc.tmbundle
url = https://github.com/joshaven/RDoc.tmbundle
[submodule "vendor/grammars/Textmate-Gosu-Bundle"]
path = vendor/grammars/Textmate-Gosu-Bundle
url = https://github.com/jpcamara/Textmate-Gosu-Bundle
[submodule "vendor/grammars/fish-tmbundle"]
path = vendor/grammars/fish-tmbundle
url = https://github.com/l15n/fish-tmbundle
[submodule "vendor/grammars/moonscript-tmbundle"]
path = vendor/grammars/moonscript-tmbundle
url = https://github.com/leafo/moonscript-tmbundle
[submodule "vendor/grammars/Isabelle.tmbundle"]
path = vendor/grammars/Isabelle.tmbundle
url = https://github.com/lsf37/Isabelle.tmbundle
[submodule "vendor/grammars/Alloy.tmbundle"]
path = vendor/grammars/Alloy.tmbundle
url = https://github.com/macekond/Alloy.tmbundle
[submodule "vendor/grammars/opa.tmbundle"]
path = vendor/grammars/opa.tmbundle
url = https://github.com/mads379/opa.tmbundle
[submodule "vendor/grammars/scala.tmbundle"]
path = vendor/grammars/scala.tmbundle
url = https://github.com/mads379/scala.tmbundle
[submodule "vendor/grammars/mako-tmbundle"]
path = vendor/grammars/mako-tmbundle
url = https://github.com/marconi/mako-tmbundle
[submodule "vendor/grammars/gnuplot-tmbundle"]
path = vendor/grammars/gnuplot-tmbundle
url = https://github.com/mattfoster/gnuplot-tmbundle
[submodule "vendor/grammars/idl.tmbundle"]
path = vendor/grammars/idl.tmbundle
url = https://github.com/mgalloy/idl.tmbundle
[submodule "vendor/grammars/protobuf-tmbundle"]
path = vendor/grammars/protobuf-tmbundle
url = https://github.com/michaeledgar/protobuf-tmbundle
[submodule "vendor/grammars/Sublime-Coq"]
path = vendor/grammars/Sublime-Coq
url = https://github.com/mkolosick/Sublime-Coq
[submodule "vendor/grammars/Agda.tmbundle"]
path = vendor/grammars/Agda.tmbundle
url = https://github.com/mokus0/Agda.tmbundle
[submodule "vendor/grammars/Julia.tmbundle"]
path = vendor/grammars/Julia.tmbundle
url = https://github.com/nanoant/Julia.tmbundle
[submodule "vendor/grammars/ooc.tmbundle"]
path = vendor/grammars/ooc.tmbundle
url = https://github.com/nilium/ooc.tmbundle
[submodule "vendor/grammars/LiveScript.tmbundle"]
path = vendor/grammars/LiveScript.tmbundle
url = https://github.com/paulmillr/LiveScript.tmbundle
[submodule "vendor/grammars/sublime-tea"]
path = vendor/grammars/sublime-tea
url = https://github.com/pferruggiaro/sublime-tea
[submodule "vendor/grammars/abap.tmbundle"]
path = vendor/grammars/abap.tmbundle
url = https://github.com/pvl/abap.tmbundle
[submodule "vendor/grammars/mercury-tmlanguage"]
path = vendor/grammars/mercury-tmlanguage
url = https://github.com/sebgod/mercury-tmlanguage
[submodule "vendor/grammars/mathematica-tmbundle"]
path = vendor/grammars/mathematica-tmbundle
url = https://github.com/shadanan/mathematica-tmbundle
[submodule "vendor/grammars/sublime-robot-plugin"]
path = vendor/grammars/sublime-robot-plugin
url = https://github.com/shellderp/sublime-robot-plugin
[submodule "vendor/grammars/actionscript3-tmbundle"]
path = vendor/grammars/actionscript3-tmbundle
url = https://github.com/honzabrecka/actionscript3-tmbundle
[submodule "vendor/grammars/Sublime-QML"]
path = vendor/grammars/Sublime-QML
url = https://github.com/skozlovf/Sublime-QML
[submodule "vendor/grammars/Slash.tmbundle"]
path = vendor/grammars/Slash.tmbundle
url = https://github.com/slash-lang/Slash.tmbundle
[submodule "vendor/grammars/factor"]
path = vendor/grammars/factor
url = https://github.com/slavapestov/factor
[submodule "vendor/grammars/ruby-slim.tmbundle"]
path = vendor/grammars/ruby-slim.tmbundle
url = https://github.com/slim-template/ruby-slim.tmbundle
[submodule "vendor/grammars/SublimeXtend"]
path = vendor/grammars/SublimeXtend
url = https://github.com/staltz/SublimeXtend
[submodule "vendor/grammars/Vala-TMBundle"]
path = vendor/grammars/Vala-TMBundle
url = https://github.com/technosophos/Vala-TMBundle
[submodule "vendor/grammars/ant.tmbundle"]
path = vendor/grammars/ant.tmbundle
url = https://github.com/textmate/ant.tmbundle
[submodule "vendor/grammars/antlr.tmbundle"]
path = vendor/grammars/antlr.tmbundle
url = https://github.com/textmate/antlr.tmbundle
[submodule "vendor/grammars/apache.tmbundle"]
path = vendor/grammars/apache.tmbundle
url = https://github.com/textmate/apache.tmbundle
[submodule "vendor/grammars/applescript.tmbundle"]
path = vendor/grammars/applescript.tmbundle
url = https://github.com/textmate/applescript.tmbundle
[submodule "vendor/grammars/asp.tmbundle"]
path = vendor/grammars/asp.tmbundle
url = https://github.com/textmate/asp.tmbundle
[submodule "vendor/grammars/bison.tmbundle"]
path = vendor/grammars/bison.tmbundle
url = https://github.com/textmate/bison.tmbundle
[submodule "vendor/grammars/capnproto.tmbundle"]
path = vendor/grammars/capnproto.tmbundle
url = https://github.com/textmate/capnproto.tmbundle
[submodule "vendor/grammars/cmake.tmbundle"]
path = vendor/grammars/cmake.tmbundle
url = https://github.com/textmate/cmake.tmbundle
[submodule "vendor/grammars/cpp-qt.tmbundle"]
path = vendor/grammars/cpp-qt.tmbundle
url = https://github.com/textmate/cpp-qt.tmbundle
[submodule "vendor/grammars/css.tmbundle"]
path = vendor/grammars/css.tmbundle
url = https://github.com/textmate/css.tmbundle
[submodule "vendor/grammars/d.tmbundle"]
path = vendor/grammars/d.tmbundle
url = https://github.com/textmate/d.tmbundle
[submodule "vendor/grammars/diff.tmbundle"]
path = vendor/grammars/diff.tmbundle
url = https://github.com/textmate/diff.tmbundle
[submodule "vendor/grammars/dylan.tmbundle"]
path = vendor/grammars/dylan.tmbundle
url = https://github.com/textmate/dylan.tmbundle
[submodule "vendor/grammars/eiffel.tmbundle"]
path = vendor/grammars/eiffel.tmbundle
url = https://github.com/textmate/eiffel.tmbundle
[submodule "vendor/grammars/erlang.tmbundle"]
path = vendor/grammars/erlang.tmbundle
url = https://github.com/textmate/erlang.tmbundle
[submodule "vendor/grammars/fortran.tmbundle"]
path = vendor/grammars/fortran.tmbundle
url = https://github.com/textmate/fortran.tmbundle
[submodule "vendor/grammars/gettext.tmbundle"]
path = vendor/grammars/gettext.tmbundle
url = https://github.com/textmate/gettext.tmbundle
[submodule "vendor/grammars/graphviz.tmbundle"]
path = vendor/grammars/graphviz.tmbundle
url = https://github.com/textmate/graphviz.tmbundle
[submodule "vendor/grammars/groovy.tmbundle"]
path = vendor/grammars/groovy.tmbundle
url = https://github.com/textmate/groovy.tmbundle
[submodule "vendor/grammars/haskell.tmbundle"]
path = vendor/grammars/haskell.tmbundle
url = https://github.com/textmate/haskell.tmbundle
[submodule "vendor/grammars/html.tmbundle"]
path = vendor/grammars/html.tmbundle
url = https://github.com/textmate/html.tmbundle
[submodule "vendor/grammars/ini.tmbundle"]
path = vendor/grammars/ini.tmbundle
url = https://github.com/textmate/ini.tmbundle
[submodule "vendor/grammars/desktop.tmbundle"]
path = vendor/grammars/desktop.tmbundle
url = https://github.com/Mailaender/desktop.tmbundle.git
[submodule "vendor/grammars/io.tmbundle"]
path = vendor/grammars/io.tmbundle
url = https://github.com/textmate/io.tmbundle
[submodule "vendor/grammars/java.tmbundle"]
path = vendor/grammars/java.tmbundle
url = https://github.com/textmate/java.tmbundle
[submodule "vendor/grammars/javascript-objective-j.tmbundle"]
path = vendor/grammars/javascript-objective-j.tmbundle
url = https://github.com/textmate/javascript-objective-j.tmbundle
[submodule "vendor/grammars/json.tmbundle"]
path = vendor/grammars/json.tmbundle
url = https://github.com/textmate/json.tmbundle
[submodule "vendor/grammars/latex.tmbundle"]
path = vendor/grammars/latex.tmbundle
url = https://github.com/textmate/latex.tmbundle
[submodule "vendor/grammars/lilypond.tmbundle"]
path = vendor/grammars/lilypond.tmbundle
url = https://github.com/textmate/lilypond.tmbundle
[submodule "vendor/grammars/lisp.tmbundle"]
path = vendor/grammars/lisp.tmbundle
url = https://github.com/textmate/lisp.tmbundle
[submodule "vendor/grammars/logtalk.tmbundle"]
path = vendor/grammars/logtalk.tmbundle
url = https://github.com/textmate/logtalk.tmbundle
[submodule "vendor/grammars/lua.tmbundle"]
path = vendor/grammars/lua.tmbundle
url = https://github.com/textmate/lua.tmbundle
[submodule "vendor/grammars/make.tmbundle"]
path = vendor/grammars/make.tmbundle
url = https://github.com/textmate/make.tmbundle
[submodule "vendor/grammars/matlab.tmbundle"]
path = vendor/grammars/matlab.tmbundle
url = https://github.com/textmate/matlab.tmbundle
[submodule "vendor/grammars/maven.tmbundle"]
path = vendor/grammars/maven.tmbundle
url = https://github.com/textmate/maven.tmbundle
[submodule "vendor/grammars/nemerle.tmbundle"]
path = vendor/grammars/nemerle.tmbundle
url = https://github.com/textmate/nemerle.tmbundle
[submodule "vendor/grammars/ninja.tmbundle"]
path = vendor/grammars/ninja.tmbundle
url = https://github.com/textmate/ninja.tmbundle
[submodule "vendor/grammars/objective-c.tmbundle"]
path = vendor/grammars/objective-c.tmbundle
url = https://github.com/textmate/objective-c.tmbundle
[submodule "vendor/grammars/ocaml.tmbundle"]
path = vendor/grammars/ocaml.tmbundle
url = https://github.com/textmate/ocaml.tmbundle
[submodule "vendor/grammars/pascal.tmbundle"]
path = vendor/grammars/pascal.tmbundle
url = https://github.com/textmate/pascal.tmbundle
[submodule "vendor/grammars/php-smarty.tmbundle"]
path = vendor/grammars/php-smarty.tmbundle
url = https://github.com/textmate/php-smarty.tmbundle
[submodule "vendor/grammars/php.tmbundle"]
path = vendor/grammars/php.tmbundle
url = https://github.com/textmate/php.tmbundle
[submodule "vendor/grammars/postscript.tmbundle"]
path = vendor/grammars/postscript.tmbundle
url = https://github.com/textmate/postscript.tmbundle
[submodule "vendor/grammars/processing.tmbundle"]
path = vendor/grammars/processing.tmbundle
url = https://github.com/textmate/processing.tmbundle
[submodule "vendor/grammars/python-django.tmbundle"]
path = vendor/grammars/python-django.tmbundle
url = https://github.com/textmate/python-django.tmbundle
[submodule "vendor/grammars/r.tmbundle"]
path = vendor/grammars/r.tmbundle
url = https://github.com/textmate/r.tmbundle
[submodule "vendor/grammars/restructuredtext.tmbundle"]
path = vendor/grammars/restructuredtext.tmbundle
url = https://github.com/textmate/restructuredtext.tmbundle
[submodule "vendor/grammars/ruby-haml.tmbundle"]
path = vendor/grammars/ruby-haml.tmbundle
url = https://github.com/textmate/ruby-haml.tmbundle
[submodule "vendor/grammars/scheme.tmbundle"]
path = vendor/grammars/scheme.tmbundle
url = https://github.com/textmate/scheme.tmbundle
[submodule "vendor/grammars/scilab.tmbundle"]
path = vendor/grammars/scilab.tmbundle
url = https://github.com/textmate/scilab.tmbundle
[submodule "vendor/grammars/sql.tmbundle"]
path = vendor/grammars/sql.tmbundle
url = https://github.com/textmate/sql.tmbundle
[submodule "vendor/grammars/standard-ml.tmbundle"]
path = vendor/grammars/standard-ml.tmbundle
url = https://github.com/textmate/standard-ml.tmbundle
[submodule "vendor/grammars/swift.tmbundle"]
path = vendor/grammars/swift.tmbundle
url = https://github.com/textmate/swift.tmbundle
[submodule "vendor/grammars/tcl.tmbundle"]
path = vendor/grammars/tcl.tmbundle
url = https://github.com/textmate/tcl.tmbundle
[submodule "vendor/grammars/thrift.tmbundle"]
path = vendor/grammars/thrift.tmbundle
url = https://github.com/textmate/thrift.tmbundle
[submodule "vendor/grammars/toml.tmbundle"]
path = vendor/grammars/toml.tmbundle
url = https://github.com/textmate/toml.tmbundle
[submodule "vendor/grammars/verilog.tmbundle"]
path = vendor/grammars/verilog.tmbundle
url = https://github.com/textmate/verilog.tmbundle
[submodule "vendor/grammars/xml.tmbundle"]
path = vendor/grammars/xml.tmbundle
url = https://github.com/textmate/xml.tmbundle
[submodule "vendor/grammars/smalltalk-tmbundle"]
path = vendor/grammars/smalltalk-tmbundle
url = https://github.com/tomas-stefano/smalltalk-tmbundle
[submodule "vendor/grammars/ioke-outdated"]
path = vendor/grammars/ioke-outdated
url = https://github.com/vic/ioke-outdated
[submodule "vendor/grammars/kotlin-sublime-package"]
path = vendor/grammars/kotlin-sublime-package
url = https://github.com/vkostyukov/kotlin-sublime-package
[submodule "vendor/grammars/c.tmbundle"]
path = vendor/grammars/c.tmbundle
url = https://github.com/textmate/c.tmbundle
[submodule "vendor/grammars/zephir-sublime"]
path = vendor/grammars/zephir-sublime
url = https://github.com/vmg/zephir-sublime
[submodule "vendor/grammars/llvm.tmbundle"]
path = vendor/grammars/llvm.tmbundle
url = https://github.com/whitequark/llvm.tmbundle
[submodule "vendor/grammars/oz-tmbundle"]
path = vendor/grammars/oz-tmbundle
url = https://github.com/eregon/oz-tmbundle
[submodule "vendor/grammars/ebundles"]
path = vendor/grammars/ebundles
url = https://github.com/ericzou/ebundles
[submodule "vendor/grammars/sublime-mask"]
path = vendor/grammars/sublime-mask
url = https://github.com/tenbits/sublime-mask
[submodule "vendor/grammars/sublime_cobol"]
path = vendor/grammars/sublime_cobol
url = https://bitbucket.org/bitlang/sublime_cobol
[submodule "vendor/grammars/ruby.tmbundle"]
path = vendor/grammars/ruby.tmbundle
url = https://github.com/aroben/ruby.tmbundle
branch = pl
[submodule "vendor/grammars/IDL-Syntax"]
path = vendor/grammars/IDL-Syntax
url = https://github.com/andik/IDL-Syntax
[submodule "vendor/grammars/sas.tmbundle"]
path = vendor/grammars/sas.tmbundle
url = https://github.com/rpardee/sas.tmbundle
[submodule "vendor/grammars/atom-salt"]
path = vendor/grammars/atom-salt
url = https://github.com/saltstack/atom-salt
[submodule "vendor/grammars/Scalate.tmbundle"]
path = vendor/grammars/Scalate.tmbundle
url = https://github.com/scalate/Scalate.tmbundle
[submodule "vendor/grammars/Elm.tmLanguage"]
path = vendor/grammars/Elm.tmLanguage
url = https://github.com/deadfoxygrandpa/Elm.tmLanguage
[submodule "vendor/grammars/sublime-bsv"]
path = vendor/grammars/sublime-bsv
url = https://github.com/thotypous/sublime-bsv
[submodule "vendor/grammars/Sublime-HTTP"]
path = vendor/grammars/Sublime-HTTP
url = https://github.com/httpspec/sublime-highlighting
[submodule "vendor/grammars/sass-textmate-bundle"]
path = vendor/grammars/sass-textmate-bundle
url = https://github.com/nathos/sass-textmate-bundle
[submodule "vendor/grammars/carto-atom"]
path = vendor/grammars/carto-atom
url = https://github.com/yohanboniface/carto-atom
[submodule "vendor/grammars/Sublime-Nit"]
path = vendor/grammars/Sublime-Nit
url = https://github.com/R4PaSs/Sublime-Nit
[submodule "vendor/grammars/language-hy"]
path = vendor/grammars/language-hy
url = https://github.com/rwtolbert/language-hy
[submodule "vendor/grammars/Racket"]
path = vendor/grammars/Racket
url = https://github.com/soegaard/racket-highlight-for-github
[submodule "vendor/grammars/turtle.tmbundle"]
path = vendor/grammars/turtle.tmbundle
url = https://github.com/peta/turtle.tmbundle
[submodule "vendor/grammars/liquid.tmbundle"]
path = vendor/grammars/liquid.tmbundle
url = https://github.com/bastilian/validcode-textmate-bundles
[submodule "vendor/grammars/Modelica"]
path = vendor/grammars/Modelica
url = https://github.com/BorisChumichev/modelicaSublimeTextPackage
[submodule "vendor/grammars/sublime-golo"]
path = vendor/grammars/sublime-golo
url = https://github.com/TypeUnsafe/sublime-golo
[submodule "vendor/grammars/JSyntax"]
path = vendor/grammars/JSyntax
url = https://github.com/bcj/JSyntax
[submodule "vendor/grammars/TXL"]
path = vendor/grammars/TXL
url = https://github.com/MikeHoffert/Sublime-Text-TXL-syntax
[submodule "vendor/grammars/G-Code"]
path = vendor/grammars/G-Code
url = https://github.com/robotmaster/sublime-text-syntax-highlighting
[submodule "vendor/grammars/sublime-text-ox"]
path = vendor/grammars/sublime-text-ox
url = https://github.com/andreashetland/sublime-text-ox
[submodule "vendor/grammars/AutoHotkey"]
path = vendor/grammars/AutoHotkey
url = https://github.com/ahkscript/SublimeAutoHotkey
[submodule "vendor/grammars/ec.tmbundle"]
path = vendor/grammars/ec.tmbundle
url = https://github.com/ecere/ec.tmbundle
[submodule "vendor/grammars/gap-tmbundle"]
path = vendor/grammars/gap-tmbundle
url = https://github.com/dhowden/gap-tmbundle
[submodule "vendor/grammars/SublimePapyrus"]
path = vendor/grammars/SublimePapyrus
url = https://github.com/Kapiainen/SublimePapyrus
[submodule "vendor/grammars/sublime-spintools"]
path = vendor/grammars/sublime-spintools
url = https://github.com/bitbased/sublime-spintools
[submodule "vendor/grammars/PogoScript.tmbundle"]
path = vendor/grammars/PogoScript.tmbundle
url = https://github.com/featurist/PogoScript.tmbundle
[submodule "vendor/grammars/sublime-opal"]
path = vendor/grammars/sublime-opal
url = https://github.com/artifactz/sublime-opal
[submodule "vendor/grammars/mediawiki.tmbundle"]
path = vendor/grammars/mediawiki.tmbundle
url = https://github.com/textmate/mediawiki.tmbundle
[submodule "vendor/grammars/SublimeClarion"]
path = vendor/grammars/SublimeClarion
url = https://github.com/fushnisoft/SublimeClarion
[submodule "vendor/grammars/BrightScript.tmbundle"]
path = vendor/grammars/BrightScript.tmbundle
url = https://github.com/cmink/BrightScript.tmbundle
[submodule "vendor/grammars/Stylus"]
path = vendor/grammars/Stylus
url = https://github.com/billymoon/Stylus
[submodule "vendor/grammars/asciidoc.tmbundle"]
path = vendor/grammars/asciidoc.tmbundle
url = https://github.com/zuckschwerdt/asciidoc.tmbundle
[submodule "vendor/grammars/Lean.tmbundle"]
path = vendor/grammars/Lean.tmbundle
url = https://github.com/leanprover/Lean.tmbundle
[submodule "vendor/grammars/ampl"]
path = vendor/grammars/ampl
url = https://github.com/ampl/sublime-ampl
[submodule "vendor/grammars/sublime-varnish"]
path = vendor/grammars/sublime-varnish
url = https://github.com/brandonwamboldt/sublime-varnish
[submodule "vendor/grammars/xc.tmbundle"]
path = vendor/grammars/xc.tmbundle
url = https://github.com/graymalkin/xc.tmbundle
[submodule "vendor/grammars/perl.tmbundle"]
path = vendor/grammars/perl.tmbundle
url = https://github.com/textmate/perl.tmbundle
[submodule "vendor/grammars/sublime-netlinx"]
path = vendor/grammars/sublime-netlinx
url = https://github.com/amclain/sublime-netlinx
[submodule "vendor/grammars/Sublime-Red"]
path = vendor/grammars/Sublime-Red
url = https://github.com/Oldes/Sublime-Red
[submodule "vendor/grammars/jflex.tmbundle"]
path = vendor/grammars/jflex.tmbundle
url = https://github.com/jflex-de/jflex.tmbundle.git
[submodule "vendor/grammars/Sublime-Modula-2"]
path = vendor/grammars/Sublime-Modula-2
url = https://github.com/harogaston/Sublime-Modula-2
[submodule "vendor/grammars/ada.tmbundle"]
path = vendor/grammars/ada.tmbundle
url = https://github.com/textmate/ada.tmbundle
[submodule "vendor/grammars/api-blueprint-sublime-plugin"]
path = vendor/grammars/api-blueprint-sublime-plugin
url = https://github.com/apiaryio/api-blueprint-sublime-plugin
[submodule "vendor/grammars/Handlebars"]
path = vendor/grammars/Handlebars
url = https://github.com/daaain/Handlebars
[submodule "vendor/grammars/smali-sublime"]
path = vendor/grammars/smali-sublime
url = https://github.com/ShaneWilton/sublime-smali
[submodule "vendor/grammars/language-jsoniq"]
path = vendor/grammars/language-jsoniq
url = http://github.com/wcandillon/language-jsoniq
[submodule "vendor/grammars/atom-fsharp"]
path = vendor/grammars/atom-fsharp
url = https://github.com/fsprojects/atom-fsharp
[submodule "vendor/grammars/SMT.tmbundle"]
path = vendor/grammars/SMT.tmbundle
url = https://github.com/SRI-CSL/SMT.tmbundle.git
[submodule "vendor/grammars/language-crystal"]
path = vendor/grammars/language-crystal
url = https://github.com/atom-crystal/language-crystal
[submodule "vendor/grammars/language-xbase"]
path = vendor/grammars/language-xbase
url = https://github.com/hernad/atom-language-harbour
[submodule "vendor/grammars/language-ncl"]
path = vendor/grammars/language-ncl
url = https://github.com/rpavlick/language-ncl.git
[submodule "vendor/grammars/pawn-sublime-language"]
path = vendor/grammars/pawn-sublime-language
url = https://github.com/Southclaw/pawn-sublime-language.git
[submodule "vendor/grammars/atom-language-purescript"]
path = vendor/grammars/atom-language-purescript
url = https://github.com/purescript-contrib/atom-language-purescript
[submodule "vendor/grammars/vue-syntax-highlight"]
path = vendor/grammars/vue-syntax-highlight
url = https://github.com/vuejs/vue-syntax-highlight
[submodule "vendor/grammars/st2-zonefile"]
path = vendor/grammars/st2-zonefile
url = https://github.com/sixty4k/st2-zonefile
[submodule "vendor/grammars/sublimeprolog"]
path = vendor/grammars/sublimeprolog
url = https://github.com/alnkpa/sublimeprolog
[submodule "vendor/grammars/sublime-aspectj"]
path = vendor/grammars/sublime-aspectj
url = https://github.com/pchaigno/sublime-aspectj
[submodule "vendor/grammars/sublime-typescript"]
path = vendor/grammars/sublime-typescript
url = https://github.com/Microsoft/TypeScript-Sublime-Plugin
[submodule "vendor/grammars/sublime-pony"]
path = vendor/grammars/sublime-pony
url = https://github.com/CausalityLtd/sublime-pony
[submodule "vendor/grammars/X10"]
path = vendor/grammars/X10
url = https://github.com/x10-lang/x10-highlighting
[submodule "vendor/grammars/language-babel"]
path = vendor/grammars/language-babel
url = https://github.com/gandm/language-babel
[submodule "vendor/grammars/UrWeb-Language-Definition"]
path = vendor/grammars/UrWeb-Language-Definition
url = https://github.com/gwalborn/UrWeb-Language-Definition.git
[submodule "vendor/grammars/Stata.tmbundle"]
path = vendor/grammars/Stata.tmbundle
url = https://github.com/pschumm/Stata.tmbundle
[submodule "vendor/grammars/FreeMarker.tmbundle"]
path = vendor/grammars/FreeMarker.tmbundle
url = https://github.com/freemarker/FreeMarker.tmbundle
[submodule "vendor/grammars/MagicPython"]
path = vendor/grammars/MagicPython
url = https://github.com/MagicStack/MagicPython
[submodule "vendor/grammars/language-click"]
path = vendor/grammars/language-click
url = https://github.com/stenverbois/language-click.git
[submodule "vendor/grammars/language-maxscript"]
path = vendor/grammars/language-maxscript
url = https://github.com/Alhadis/language-maxscript
[submodule "vendor/grammars/language-renpy"]
path = vendor/grammars/language-renpy
url = https://github.com/williamd1k0/language-renpy.git
[submodule "vendor/grammars/language-inform7"]
path = vendor/grammars/language-inform7
url = https://github.com/erkyrath/language-inform7
[submodule "vendor/grammars/atom-language-stan"]
path = vendor/grammars/atom-language-stan
url = https://github.com/jrnold/atom-language-stan
[submodule "vendor/grammars/language-yang"]
path = vendor/grammars/language-yang
url = https://github.com/DzonyKalafut/language-yang.git
[submodule "vendor/grammars/perl6fe"]
path = vendor/grammars/perl6fe
url = https://github.com/MadcapJake/language-perl6fe.git
[submodule "vendor/grammars/language-less"]
path = vendor/grammars/language-less
url = https://github.com/atom/language-less.git
[submodule "vendor/grammars/language-povray"]
path = vendor/grammars/language-povray
url = https://github.com/c-lipka/language-povray
[submodule "vendor/grammars/sublime-terra"]
path = vendor/grammars/sublime-terra
url = https://github.com/pyk/sublime-terra
[submodule "vendor/grammars/SublimePuppet"]
path = vendor/grammars/SublimePuppet
url = https://github.com/russCloak/SublimePuppet
[submodule "vendor/grammars/sublimeassembly"]
path = vendor/grammars/sublimeassembly
url = https://github.com/Nessphoro/sublimeassembly
[submodule "vendor/grammars/monkey"]
path = vendor/grammars/monkey
url = https://github.com/gingerbeardman/monkey.tmbundle
[submodule "vendor/grammars/assembly"]
path = vendor/grammars/assembly
url = https://github.com/nanoant/assembly.tmbundle
[submodule "vendor/grammars/boo"]
path = vendor/grammars/boo
url = https://github.com/Shammah/boo-sublime
[submodule "vendor/grammars/logos"]
path = vendor/grammars/logos
url = https://github.com/Cykey/Sublime-Logos
[submodule "vendor/grammars/pig-latin"]
path = vendor/grammars/pig-latin
url = https://github.com/goblindegook/sublime-text-pig-latin
[submodule "vendor/grammars/sourcepawn"]
path = vendor/grammars/sourcepawn
url = https://github.com/austinwagner/sublime-sourcepawn
[submodule "vendor/grammars/gdscript"]
path = vendor/grammars/gdscript
url = https://github.com/beefsack/GDScript-sublime
[submodule "vendor/grammars/nesC"]
path = vendor/grammars/nesC
url = https://github.com/cdwilson/nesC.tmbundle
[submodule "vendor/grammars/ats"]
path = vendor/grammars/ats
url = https://github.com/steinwaywhw/ats-mode-sublimetext
[submodule "vendor/grammars/grace"]
path = vendor/grammars/grace
url = https://github.com/zmthy/grace-tmbundle
[submodule "vendor/grammars/nix"]
path = vendor/grammars/nix
url = https://github.com/wmertens/sublime-nix
[submodule "vendor/grammars/idris"]
path = vendor/grammars/idris
url = https://github.com/idris-hackers/idris-sublime.git
[submodule "vendor/grammars/atomic-dreams"]
path = vendor/grammars/atomic-dreams
url = https://github.com/PJB3005/atomic-dreams
[submodule "vendor/grammars/language-apl"]
path = vendor/grammars/language-apl
url = https://github.com/Alhadis/language-apl.git
[submodule "vendor/grammars/language-graphql"]
path = vendor/grammars/language-graphql
url = https://github.com/rmosolgo/language-graphql
[submodule "vendor/grammars/sublime-autoit"]
path = vendor/grammars/sublime-autoit
url = https://github.com/AutoIt/SublimeAutoItScript

View File

@@ -1,12 +1,20 @@
before_install:
- git fetch origin master:master
- git fetch origin v2.0.0:v2.0.0
- git fetch origin test/attributes:test/attributes
- sudo apt-get install libicu-dev -y
language: ruby
sudo: false
addons:
apt:
packages:
- libicu-dev
- libicu48
before_install: script/travis/before_install
script:
- bundle exec rake
- script/licensed verify
rvm:
- 1.9.3
- 2.0.0
- 2.1
- 2.2
notifications:
disabled: true
git:
submodules: false
cache: bundler

106
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,106 @@
# Contributing
[code-of-conduct]: http://todogroup.org/opencodeofconduct/#Linguist/opensource@github.com
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. This project adheres to the [Open Code of Conduct][code-of-conduct]. By participating, you are expected to uphold this code.
The majority of contributions won't need to touch any Ruby code at all.
## Adding an extension to a language
We try only to add new extensions once they have some usage on GitHub. In most cases we prefer that extensions be in use in hundreds of repositories before supporting them in Linguist.
To add support for a new extension:
0. Add your extension to the language entry in [`languages.yml`][languages], keeping the extensions in alphabetical order.
0. Add at least one sample for your extension to the [samples directory][samples] in the correct subdirectory.
0. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
## Adding a language
We try only to add languages once they have some usage on GitHub. In most cases we prefer that each new file extension be in use in hundreds of repositories before supporting them in Linguist.
To add support for a new language:
0. Add an entry for your language to [`languages.yml`][languages].
0. Add a grammar for your language. Please only add grammars that have a license that permits redistribution.
0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`.
0. Add your grammar to [`grammars.yml`][grammars] by running `script/convert-grammars --add vendor/grammars/MyGrammar`.
0. Download the license for the grammar: `script/licensed`. Be careful to only commit the file for the new grammar, as this script may update licenses for other grammars as well.
0. Add samples for your language to the [samples directory][samples] in the correct subdirectory.
0. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
In addition, if your new language defines an extension that's already listed in [`languages.yml`][languages] (such as `.foo`) then sometimes a few more steps will need to be taken:
0. Make sure that example `.foo` files are present in the [samples directory][samples] for each language that uses `.foo`.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
0. If the Bayesian classifier does a bad job with the sample `.foo` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
Remember, the goal here is to try and avoid false positives!
## Fixing a misclassified language
Most languages are detected by their file extension defined in [languages.yml][languages]. For disambiguating between files with common extensions, linguist applies some [heuristics](/lib/linguist/heuristics.rb) and a [statistical classifier](lib/linguist/classifier.rb). This process can help differentiate between, for example, `.h` files which could be either C, C++, or Obj-C.
Misclassifications can often be solved by either adding a new filename or extension for the language or adding more [samples][samples] to make the classifier smarter.
## Fixing syntax highlighting
Syntax highlighting in GitHub is performed using TextMate-compatible grammars. These are the same grammars that TextMate, Sublime Text and Atom use. Every language in [languages.yml][languages] is mapped to its corresponding TM `scope`. This scope will be used when picking up a grammar for highlighting.
Assuming your code is being detected as the right language, in most cases this is due to a bug in the language grammar rather than a bug in Linguist. [`grammars.yml`][grammars] lists all the grammars we use for syntax highlighting on github.com. Find the one corresponding to your code's programming language and submit a bug report upstream. If you can, try to reproduce the highlighting problem in the text editor that the grammar is designed for (TextMate, Sublime Text, or Atom) and include that information in your bug report.
You can also try to fix the bug yourself and submit a Pull Request. [TextMate's documentation](https://manual.macromates.com/en/language_grammars) offers a good introduction on how to work with TextMate-compatible grammars. You can test grammars using [Lightshow](https://github-lightshow.herokuapp.com).
Once the bug has been fixed upstream, we'll pick it up for GitHub in the next release of Linguist.
## Testing
For development you are going to want to checkout out the source. To get it, clone the repo and run [Bundler](http://gembundler.com/) to install its dependencies.
git clone https://github.com/github/linguist.git
cd linguist/
script/bootstrap
To run the tests:
bundle exec rake test
Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](https://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away.
Here's our current build status: [![Build Status](https://api.travis-ci.org/github/linguist.svg?branch=master)](https://travis-ci.org/github/linguist)
## Releasing
If you are the current maintainer of this gem:
0. Create a branch for the release: `git checkout -b cut-release-vxx.xx.xx`
0. Make sure your local dependencies are up to date: `script/bootstrap`
0. If grammar submodules have not been updated recently, update them: `git submodule update --remote && git commit -a`
0. Ensure that samples are updated: `bundle exec rake samples`
0. Ensure that tests are green: `bundle exec rake test`
0. Bump gem version in `lib/linguist/version.rb`, [like this](https://github.com/github/linguist/commit/8d2ea90a5ba3b2fe6e1508b7155aa4632eea2985).
0. Make a PR to github/linguist, [like this](https://github.com/github/linguist/pull/1238).
0. Build a local gem: `bundle exec rake build_gem`
0. Test the gem:
0. Bump the Gemfile and Gemfile.lock versions for an app which relies on this gem
0. Install the new gem locally
0. Test behavior locally, branch deploy, whatever needs to happen
0. Merge github/linguist PR
0. Tag and push: `git tag vx.xx.xx; git push --tags`
0. Push to rubygems.org -- `gem push github-linguist-3.0.0.gem`
[grammars]: /grammars.yml
[languages]: /lib/linguist/languages.yml
[samples]: /samples
[new-issue]: https://github.com/github/linguist/issues/new

View File

@@ -1,3 +1,3 @@
source 'https://rubygems.org'
gemspec
gem 'test-unit', require: false if RUBY_VERSION >= '2.2'
gemspec :name => "github-linguist"
gem 'byebug' if RUBY_VERSION >= '2.0'

View File

@@ -1,4 +1,4 @@
Copyright (c) 2011-2014 GitHub, Inc.
Copyright (c) 2011-2016 GitHub, Inc.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

234
README.md
View File

@@ -1,41 +1,85 @@
# Linguist
We use this library at GitHub to detect blob languages, highlight code, ignore binary files, suppress generated files in diffs, and generate language breakdown graphs.
[issues]: https://github.com/github/linguist/issues
[new-issue]: https://github.com/github/linguist/issues/new
## Features
This library is used on GitHub.com to detect blob languages, ignore binary or vendored files, suppress generated files in diffs, and generate language breakdown graphs.
### Language detection
See [Troubleshooting](#troubleshooting) and [`CONTRIBUTING.md`](/CONTRIBUTING.md) before filing an issue or creating a pull request.
Linguist defines a list of all languages known to GitHub in a [yaml file](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). In order for a file to be highlighted, a language and a lexer must be defined there.
## Troubleshooting
Most languages are detected by their file extension. For disambiguating between files with common extensions, we first apply some common-sense heuristics to pick out obvious languages. After that, we use a
[statistical
classifier](https://github.com/github/linguist/blob/master/lib/linguist/classifier.rb).
This process can help us tell the difference between, for example, `.h` files which could be either C, C++, or Obj-C.
### My repository is detected as the wrong language
```ruby
![language stats bar](https://cloud.githubusercontent.com/assets/173/5562290/48e24654-8ddf-11e4-8fe7-735b0ce3a0d3.png)
Linguist::FileBlob.new("lib/linguist.rb").language.name #=> "Ruby"
The Language stats bar displays languages percentages for the files in the repository. The percentages are calculated based on the bytes of code for each language as reported by the [List Languages](https://developer.github.com/v3/repos/#list-languages) API. If the bar is reporting a language that you don't expect:
Linguist::FileBlob.new("bin/linguist").language.name #=> "Ruby"
0. Click on the name of the language in the stats bar to see a list of the files that are identified as that language.
0. If you see files that you didn't write, consider moving the files into one of the [paths for vendored code](/lib/linguist/vendor.yml), or use the [manual overrides](#overrides) feature to ignore them.
0. If the files are being misclassified, search for [open issues][issues] to see if anyone else has already reported the issue. Any information you can add, especially links to public repositories, is helpful.
0. If there are no reported issues of this misclassification, [open an issue][new-issue] and include a link to the repository or a sample of the code that is being misclassified.
## Overrides
Linguist supports a number of different custom overrides strategies for language definitions and vendored paths.
### Using gitattributes
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, and `linguist-vendored`. `.gitattributes` will be used to determine language statistics, but will not be used to syntax highlight files. To manually set syntax highlighting, use [Vim or Emacs modelines](#using-emacs-or-vim-modelines).
```
$ cat .gitattributes
*.rb linguist-language=Java
```
See [lib/linguist/language.rb](https://github.com/github/linguist/blob/master/lib/linguist/language.rb) and [lib/linguist/languages.yml](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml).
Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language. By default, Linguist treats all of the paths defined in [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository.
### Syntax Highlighting
Use the `linguist-vendored` attribute to vendor or un-vendor paths.
The actual syntax highlighting is handled by our Pygments wrapper, [pygments.rb](https://github.com/tmm1/pygments.rb). It also provides a [Lexer abstraction](https://github.com/tmm1/pygments.rb/blob/master/lib/pygments/lexer.rb) that determines which highlighter should be used on a file.
```
$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
```
### Stats
Similar to vendored files, Linguist excludes documentation files from your project's language stats. (Unlike vendored files, documentation files are displayed in diffs on github.com.) [lib/linguist/documentation.yml](lib/linguist/documentation.yml) lists common documentation paths and excludes them from the language statistics for your repository.
The Language stats bar that you see on every repository is built by aggregating the languages of each file in that repository. The top language in the graph determines the project's primary language.
Use the `linguist-documentation` attribute to mark or unmark paths as documentation.
The repository stats API, accessed through `#languages`, can be used on a directory:
```
$ cat .gitattributes
project-docs/* linguist-documentation
docs/formatter.rb linguist-documentation=false
```
***API UPDATE***
### Using Emacs or Vim modelines
Since [Version 3.0.0](https://github.com/github/linguist/releases/tag/v3.0.0) Linguist expects a git repository (in the form of a [Rugged::Repository](https://github.com/libgit2/rugged#repositories)) to be passed when initializing `Linguist::Repository`.
Alternatively, you can use Vim or Emacs style modelines to set the language for a single file. Modelines can be placed anywhere within a file and are respected when determining how to syntax-highlight a file on GitHub.com
##### Vim
```
# Some examples of various styles:
vim: syntax=java
vim: set syntax=ruby:
vim: set filetype=prolog:
vim: set ft=cpp:
```
##### Emacs
```
-*- mode: php;-*-
```
## Usage
Install the gem:
```
$ gem install github-linguist
```
Then use it in your application:
```ruby
require 'rugged'
@@ -47,154 +91,32 @@ project.language #=> "Ruby"
project.languages #=> { "Ruby" => 119387 }
```
These stats are also printed out by the `linguist` binary. You can use the
These stats are also printed out by the `linguist` executable. You can use the
`--breakdown` flag, and the binary will also output the breakdown of files by language.
You can try running `linguist` on the root directory in this repository itself:
$ bundle exec linguist --breakdown
100.00% Ruby
Ruby:
Gemfile
Rakefile
bin/linguist
github-linguist.gemspec
lib/linguist.rb
lib/linguist/blob_helper.rb
lib/linguist/classifier.rb
lib/linguist/file_blob.rb
lib/linguist/generated.rb
lib/linguist/heuristics.rb
lib/linguist/language.rb
lib/linguist/lazy_blob.rb
lib/linguist/md5.rb
lib/linguist/repository.rb
lib/linguist/samples.rb
lib/linguist/tokenizer.rb
lib/linguist/version.rb
test/test_blob.rb
test/test_classifier.rb
test/test_heuristics.rb
test/test_language.rb
test/test_md5.rb
test/test_pedantic.rb
test/test_repository.rb
test/test_samples.rb
test/test_tokenizer.rb
#### Ignore vendored files
Checking other code into your git repo is a common practice. But this often inflates your project's language stats and may even cause your project to be labeled as another language. We are able to identify some of these files and directories and exclude them.
```ruby
Linguist::FileBlob.new("vendor/plugins/foo.rb").vendored? # => true
```
$ bundle exec linguist --breakdown
See [Linguist::BlobHelper#vendored?](https://github.com/github/linguist/blob/master/lib/linguist/blob_helper.rb) and [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml).
100.00% Ruby
#### Generated file detection
Not all plain text files are true source files. Generated files like minified js and compiled CoffeeScript can be detected and excluded from language stats. As an extra bonus, these files are suppressed in diffs.
```ruby
Linguist::FileBlob.new("underscore.min.js").generated? # => true
Ruby:
Gemfile
Rakefile
bin/linguist
github-linguist.gemspec
lib/linguist.rb
```
See [Linguist::Generated#generated?](https://github.com/github/linguist/blob/master/lib/linguist/generated.rb).
## Overrides
Linguist supports custom overrides for language definitions and vendored paths. Add a `.gitattributes` file to your project using the keys `linguist-language` and `linguist-vendored` with the standard git-style path matchers for the files you want to override.
Please note that the overrides currently only affect the language statistics for a repository and not the syntax-highlighting of files.
```
$ cat .gitattributes
*.rb linguist-language=Java
$ linguist --breakdown
100.00% Java
Java:
ruby_file.rb
```
By default, Linguist treats all of the paths defined in [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository. Use the `linguist-vendored` attribute to vendor or un-vendor paths.
```
$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
```
## Installation
Github.com is usually running the latest version of the `github-linguist` gem that is released on [RubyGems.org](http://rubygems.org/gems/github-linguist).
But for development you are going to want to checkout out the source. To get it, clone the repo and run [Bundler](http://gembundler.com/) to install its dependencies.
git clone https://github.com/github/linguist.git
cd linguist/
bundle install
To run the tests:
bundle exec rake test
## Contributing
The majority of contributions won't need to touch any Ruby code at all. The [master language list](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml) is just a YAML configuration file.
Please check out our [contributing guidelines](CONTRIBUTING.md).
We try to only add languages once they have some usage on GitHub, so please note in-the-wild usage examples in your pull request.
## License
Almost all bug fixes or new language additions should come with some additional code samples. Just drop them under [`samples/`](https://github.com/github/linguist/tree/master/samples) in the correct subdirectory and our test suite will automatically test them. In most cases you shouldn't need to add any new assertions.
The language grammars included in this gem are covered by their repositories'
respective licenses. `grammars.yml` specifies the repository for each grammar.
### A note on language extensions
Linguist has a number of methods available to it for identifying the language of a particular file. The initial lookup is based upon the extension of the file, possible file extensions are defined in an array called `extensions`. Take a look at this example for example for `Perl`:
```
Perl:
type: programming
ace_mode: perl
color: "#0298c3"
extensions:
- .pl
- .PL
- .perl
- .ph
- .plx
- .pm
- .pod
- .psgi
interpreters:
- perl
```
Any of the extensions defined are valid but the first in this array should be the most popular.
### Testing
Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](http://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away.
Here's our current build status, which is hopefully green: [![Build Status](https://secure.travis-ci.org/github/linguist.png?branch=master)](http://travis-ci.org/github/linguist)
### Releasing
If you are the current maintainer of this gem:
0. Create a branch for the release: `git checkout -b cut-release-vxx.xx.xx`
0. Make sure your local dependencies are up to date: `bundle install`
0. Ensure that samples are updated: `bundle exec rake samples`
0. Ensure that tests are green: `bundle exec rake test`
0. Bump gem version in `lib/linguist/version.rb`. For example, [like this](https://github.com/github/linguist/commit/8d2ea90a5ba3b2fe6e1508b7155aa4632eea2985).
0. Make a PR to github/linguist. For example, [#1238](https://github.com/github/linguist/pull/1238).
0. Build a local gem: `bundle exec rake build_gem`
0. Testing:
0. Bump the Gemfile and Gemfile.lock versions for an app which relies on this gem
0. Install the new gem locally
0. Test behavior locally, branch deploy, whatever needs to happen
0. Merge github/linguist PR
0. Tag and push: `git tag vx.xx.xx; git push --tags`
0. Push to rubygems.org -- `gem push github-linguist-3.0.0.gem`
All other files are covered by the MIT license, see `LICENSE`.

View File

@@ -3,13 +3,14 @@ require 'rake/clean'
require 'rake/testtask'
require 'yaml'
require 'yajl'
require 'open-uri'
task :default => :test
Rake::TestTask.new
# Extend test task to check for samples
task :test => :check_samples
# Extend test task to check for samples and fetch latest Ace modes
task :test => [:check_samples, :fetch_ace_modes]
desc "Check that we have samples.json generated"
task :check_samples do
@@ -18,6 +19,20 @@ task :check_samples do
end
end
desc "Fetch the latest Ace modes from its GitHub repository"
task :fetch_ace_modes do
ACE_FIXTURE_PATH = File.join('test', 'fixtures', 'ace_modes.json')
File.delete(ACE_FIXTURE_PATH) if File.exist?(ACE_FIXTURE_PATH)
begin
ace_github_modes = open("https://api.github.com/repos/ajaxorg/ace/contents/lib/ace/mode").read
File.write(ACE_FIXTURE_PATH, ace_github_modes)
rescue OpenURI::HTTPError, SocketError
# no internet? no problem.
end
end
task :samples do
require 'linguist/samples'
json = Yajl.dump(Linguist::Samples.data, :pretty => true)
@@ -25,6 +40,8 @@ task :samples do
end
task :build_gem => :samples do
rm_rf "grammars"
sh "script/convert-grammars"
languages = YAML.load_file("lib/linguist/languages.yml")
File.write("lib/linguist/languages.json", Yajl.dump(languages))
`gem build github-linguist.gemspec`
@@ -41,7 +58,7 @@ namespace :benchmark do
corpus = File.expand_path(ENV["CORPUS"] || "samples")
require 'linguist/language'
require 'linguist'
results = Hash.new
Dir.glob("#{corpus}/**/*").each do |file|

138
bin/git-linguist Executable file
View File

@@ -0,0 +1,138 @@
#!/usr/bin/env ruby
require 'linguist'
require 'rugged'
require 'optparse'
require 'json'
require 'tmpdir'
require 'zlib'
class GitLinguist
def initialize(path, commit_oid, incremental = true)
@repo_path = path
@commit_oid = commit_oid
@incremental = incremental
end
def linguist
if @commit_oid.nil?
raise "git-linguist must be called with a specific commit OID to perform language computation"
end
repo = Linguist::Repository.new(rugged, @commit_oid)
if @incremental && stats = load_language_stats
old_commit_oid, old_stats = stats
# A cache with NULL oid means that we want to froze
# these language stats in place and stop computing
# them (for performance reasons)
return old_stats if old_commit_oid == NULL_OID
repo.load_existing_stats(old_commit_oid, old_stats)
end
result = yield repo
save_language_stats(@commit_oid, repo.cache)
result
end
def load_language_stats
version, oid, stats = load_cache
if version == LANGUAGE_STATS_CACHE_VERSION && oid && stats
[oid, stats]
end
end
def save_language_stats(oid, stats)
cache = [LANGUAGE_STATS_CACHE_VERSION, oid, stats]
write_cache(cache)
end
def clear_language_stats
File.unlink(cache_file)
rescue Errno::ENOENT
end
def disable_language_stats
save_language_stats(NULL_OID, {})
end
protected
NULL_OID = ("0" * 40).freeze
LANGUAGE_STATS_CACHE = 'language-stats.cache'
LANGUAGE_STATS_CACHE_VERSION = "v3:#{Linguist::VERSION}"
def rugged
@rugged ||= Rugged::Repository.bare(@repo_path)
end
def cache_file
File.join(@repo_path, LANGUAGE_STATS_CACHE)
end
def write_cache(object)
return unless File.directory? @repo_path
begin
tmp_path = Dir::Tmpname.make_tmpname(cache_file, nil)
File.open(tmp_path, "wb") do |f|
marshal = Marshal.dump(object)
f.write(Zlib::Deflate.deflate(marshal))
end
File.rename(tmp_path, cache_file)
rescue => e
(File.unlink(tmp_path) rescue nil)
raise e
end
end
def load_cache
marshal = File.open(cache_file, "rb") { |f| Zlib::Inflate.inflate(f.read) }
Marshal.load(marshal)
rescue SystemCallError, ::Zlib::DataError, ::Zlib::BufError, TypeError
nil
end
end
def git_linguist(args)
incremental = true
commit = nil
parser = OptionParser.new do |opts|
opts.banner = "Usage: git-linguist [OPTIONS] stats|breakdown|dump-cache|clear|disable"
opts.on("-f", "--force", "Force a full rescan") { incremental = false }
opts.on("--commit=COMMIT", "Commit to index") { |v| commit = v}
end
parser.parse!(args)
git_dir = `git rev-parse --git-dir`.strip
raise "git-linguist must be ran in a Git repository (#{Dir.pwd})" unless $?.success?
wrapper = GitLinguist.new(git_dir, commit, incremental)
case args.pop
when "stats"
wrapper.linguist do |linguist|
puts JSON.dump(linguist.languages)
end
when "breakdown"
wrapper.linguist do |linguist|
puts JSON.dump(linguist.breakdown_by_file)
end
when "dump-cache"
puts JSON.dump(wrapper.load_language_stats)
when "clear"
wrapper.clear_language_stats
when "disable"
wrapper.disable_language_stats
else
$stderr.print(parser.help)
exit 1
end
end
git_linguist(ARGV)

View File

@@ -2,10 +2,8 @@
# linguist — detect language type for a file, or, given a directory, determine language breakdown
# usage: linguist <path> [<--breakdown>]
require 'linguist/file_blob'
require 'linguist/language'
require 'linguist/repository'
#
require 'linguist'
require 'rugged'
path = ARGV[0] || Dir.pwd

View File

@@ -10,17 +10,21 @@ Gem::Specification.new do |s|
s.homepage = "https://github.com/github/linguist"
s.license = "MIT"
s.files = Dir['lib/**/*']
s.executables << 'linguist'
s.files = Dir['lib/**/*'] + Dir['grammars/*'] + ['LICENSE']
s.executables = ['linguist', 'git-linguist']
s.add_dependency 'charlock_holmes', '~> 0.7.3'
s.add_dependency 'escape_utils', '~> 1.0.1'
s.add_dependency 'mime-types', '~> 1.19'
s.add_dependency 'pygments.rb', '~> 0.6.0'
s.add_dependency 'rugged', '~> 0.21.1b2'
s.add_dependency 'escape_utils', '~> 1.1.0'
s.add_dependency 'mime-types', '>= 1.19'
s.add_dependency 'rugged', '>= 0.23.0b'
s.add_development_dependency 'minitest', '>= 5.0'
s.add_development_dependency 'mocha'
s.add_development_dependency 'plist', '~>3.1'
s.add_development_dependency 'pry'
s.add_development_dependency 'rake'
s.add_development_dependency 'yajl-ruby'
s.add_development_dependency 'color-proximity', '~> 0.2.1'
s.add_development_dependency 'licensed'
end

596
grammars.yml Executable file
View File

@@ -0,0 +1,596 @@
---
http://svn.edgewall.org/repos/genshi/contrib/textmate/Genshi.tmbundle/Syntaxes/Markup%20Template%20%28XML%29.tmLanguage:
- text.xml.genshi
http://svn.textmate.org/trunk/Review/Bundles/BlitzMax.tmbundle:
- source.blitzmax
http://svn.textmate.org/trunk/Review/Bundles/Cython.tmbundle:
- source.cython
http://svn.textmate.org/trunk/Review/Bundles/Forth.tmbundle:
- source.forth
http://svn.textmate.org/trunk/Review/Bundles/Parrot.tmbundle:
- source.parrot.pir
http://svn.textmate.org/trunk/Review/Bundles/SecondLife%20LSL.tmbundle:
- source.lsl
http://svn.textmate.org/trunk/Review/Bundles/VHDL.tmbundle:
- source.vhdl
http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle:
- source.xquery
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
- source.systemverilog
- source.ucfconstraints
https://fan.googlecode.com/hg-history/Build%201.0.55/adm/tools/textmate/Fan.tmbundle/Syntaxes/Fan.tmLanguage:
- source.fan
vendor/grammars/Agda.tmbundle:
- source.agda
vendor/grammars/Alloy.tmbundle:
- source.alloy
vendor/grammars/AutoHotkey/:
- source.ahk
vendor/grammars/BrightScript.tmbundle/:
- source.brightauthorproject
- source.brightscript
vendor/grammars/ColdFusion:
- source.cfscript
- source.cfscript.cfc
- text.cfml.basic
- text.html.cfm
vendor/grammars/Docker.tmbundle:
- source.dockerfile
vendor/grammars/Elm.tmLanguage:
- source.elm
vendor/grammars/FreeMarker.tmbundle:
- text.html.ftl
vendor/grammars/G-Code/:
- source.LS
- source.MCPOST
- source.MOD
- source.apt
- source.gcode
vendor/grammars/Handlebars:
- text.html.handlebars
vendor/grammars/IDL-Syntax:
- source.webidl
vendor/grammars/Isabelle.tmbundle:
- source.isabelle.root
- source.isabelle.theory
vendor/grammars/JSyntax/:
- source.j
vendor/grammars/Julia.tmbundle:
- source.julia
vendor/grammars/Lean.tmbundle:
- source.lean
vendor/grammars/LiveScript.tmbundle:
- source.livescript
vendor/grammars/MagicPython:
- source.python
- source.regexp.python
vendor/grammars/Modelica/:
- source.modelica
vendor/grammars/NSIS:
- source.nsis
vendor/grammars/NimLime:
- source.nim
- source.nim_filter
- source.nimcfg
vendor/grammars/PHP-Twig.tmbundle:
- text.html.twig
vendor/grammars/PogoScript.tmbundle/:
- source.pogoscript
vendor/grammars/RDoc.tmbundle:
- text.rdoc
vendor/grammars/Racket:
- source.racket
vendor/grammars/SCSS.tmbundle:
- source.scss
vendor/grammars/SMT.tmbundle:
- source.smt
vendor/grammars/Scalate.tmbundle:
- source.scaml
- text.html.ssp
vendor/grammars/Slash.tmbundle:
- text.html.slash
vendor/grammars/Stata.tmbundle/:
- source.mata
- source.stata
vendor/grammars/Stylus/:
- source.stylus
vendor/grammars/Sublime-Coq:
- source.coq
vendor/grammars/Sublime-HTTP:
- source.httpspec
vendor/grammars/Sublime-Lasso:
- file.lasso
vendor/grammars/Sublime-Loom:
- source.loomscript
vendor/grammars/Sublime-Modula-2/:
- source.modula2
vendor/grammars/Sublime-Nit:
- source.nit
vendor/grammars/Sublime-QML:
- source.qml
vendor/grammars/Sublime-REBOL:
- source.rebol
vendor/grammars/Sublime-Red:
- source.red
vendor/grammars/Sublime-SQF-Language:
- source.sqf
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
- source.abl
- text.html.abl
vendor/grammars/Sublime-VimL:
- source.viml
vendor/grammars/SublimeBrainfuck:
- source.bf
vendor/grammars/SublimeClarion/:
- source.clarion
vendor/grammars/SublimePapyrus/:
- source.papyrus.fallout4
- source.papyrus.skyrim
vendor/grammars/SublimePuppet/:
- source.puppet
vendor/grammars/SublimeXtend:
- source.xtend
vendor/grammars/TXL/:
- source.txl
vendor/grammars/Textmate-Gosu-Bundle:
- source.gosu.2
vendor/grammars/UrWeb-Language-Definition:
- source.ur
vendor/grammars/VBDotNetSyntax:
- source.vbnet
vendor/grammars/Vala-TMBundle:
- source.vala
vendor/grammars/X10:
- source.x10
vendor/grammars/abap.tmbundle:
- source.abap
vendor/grammars/actionscript3-tmbundle:
- source.actionscript.3
- text.html.asdoc
- text.xml.flex-config
vendor/grammars/ada.tmbundle:
- source.ada
vendor/grammars/ampl:
- source.ampl
vendor/grammars/ant.tmbundle:
- text.xml.ant
vendor/grammars/antlr.tmbundle:
- source.antlr
vendor/grammars/apache.tmbundle:
- source.apache-config
- source.apache-config.mod_perl
vendor/grammars/api-blueprint-sublime-plugin/:
- text.html.markdown.source.gfm.apib
- text.html.markdown.source.gfm.mson
vendor/grammars/applescript.tmbundle:
- source.applescript
vendor/grammars/asciidoc.tmbundle/:
- text.html.asciidoc
vendor/grammars/asp.tmbundle:
- source.asp
- text.html.asp
vendor/grammars/assembly/:
- objdump.x86asm
- source.x86asm
vendor/grammars/atom-fsharp/:
- source.fsharp
- source.fsharp.fsi
- source.fsharp.fsl
- source.fsharp.fsx
vendor/grammars/atom-language-purescript/:
- source.purescript
vendor/grammars/atom-language-stan/:
- source.stan
vendor/grammars/atom-salt:
- source.python.salt
- source.yaml.salt
vendor/grammars/atomic-dreams/:
- source.dm
- source.dmf
vendor/grammars/ats:
- source.ats
vendor/grammars/awk-sublime:
- source.awk
vendor/grammars/bison.tmbundle:
- source.bison
vendor/grammars/boo/:
- source.boo
vendor/grammars/bro-sublime:
- source.bro
vendor/grammars/c.tmbundle:
- source.c
- source.c++
- source.c.platform
vendor/grammars/capnproto.tmbundle:
- source.capnp
vendor/grammars/carto-atom:
- source.css.mss
vendor/grammars/ceylon-sublimetext:
- module.ceylon
- source.ceylon
vendor/grammars/chapel-tmbundle:
- source.chapel
vendor/grammars/cmake.tmbundle:
- source.cache.cmake
- source.cmake
vendor/grammars/cool-tmbundle:
- source.cool
vendor/grammars/cpp-qt.tmbundle:
- source.c++.qt
- source.qmake
vendor/grammars/css.tmbundle:
- source.css
vendor/grammars/cucumber-tmbundle:
- source.ruby.rspec.cucumber.steps
- text.gherkin.feature
vendor/grammars/d.tmbundle:
- source.d
vendor/grammars/dart-sublime-bundle:
- source.dart
- source.pubspec
- text.dart-analysis-output
- text.dart-doccomments
vendor/grammars/desktop.tmbundle:
- source.desktop
vendor/grammars/diff.tmbundle:
- source.diff
vendor/grammars/dylan.tmbundle:
- source.dylan
- source.lid
- source.makegen
vendor/grammars/ebundles/Bundles/MSDOS batch file.tmbundle:
- source.dosbatch
vendor/grammars/ec.tmbundle/:
- source.c.ec
vendor/grammars/eiffel.tmbundle:
- source.eiffel
vendor/grammars/elixir-tmbundle:
- source.elixir
- text.elixir
- text.html.elixir
vendor/grammars/erlang.tmbundle:
- source.erlang
- text.html.erlang.yaws
vendor/grammars/factor:
- source.factor
- text.html.factor
vendor/grammars/fancy-tmbundle:
- source.fancy
vendor/grammars/fish-tmbundle:
- source.fish
vendor/grammars/fortran.tmbundle:
- source.fortran
- source.fortran.modern
vendor/grammars/gap-tmbundle/:
- source.gap
vendor/grammars/gdscript/:
- source.gdscript
vendor/grammars/gettext.tmbundle:
- source.po
vendor/grammars/gnuplot-tmbundle:
- source.gnuplot
vendor/grammars/go-tmbundle:
- source.go
vendor/grammars/grace:
- source.grace
vendor/grammars/gradle.tmbundle:
- source.groovy.gradle
vendor/grammars/graphviz.tmbundle:
- source.dot
vendor/grammars/groovy.tmbundle:
- source.groovy
vendor/grammars/haskell.tmbundle:
- source.haskell
- text.tex.latex.haskell
vendor/grammars/haxe-sublime-bundle:
- source.erazor
- source.haxe.2
- source.hss.1
- source.hxml
- source.nmml
vendor/grammars/html.tmbundle:
- text.html.basic
vendor/grammars/idl.tmbundle:
- source.idl
- source.idl-dlm
- text.idl-idldoc
vendor/grammars/idris/:
- source.idris
vendor/grammars/ini.tmbundle:
- source.ini
vendor/grammars/io.tmbundle:
- source.io
vendor/grammars/ioke-outdated:
- source.ioke
vendor/grammars/jade-tmbundle:
- source.pyjade
- text.jade
vendor/grammars/jasmin-sublime:
- source.jasmin
vendor/grammars/java.tmbundle:
- source.java
- source.java-properties
- text.html.jsp
- text.junit-test-report
vendor/grammars/javascript-objective-j.tmbundle:
- source.js.objj
vendor/grammars/jflex.tmbundle:
- source.jflex
vendor/grammars/json.tmbundle:
- source.json
vendor/grammars/kotlin-sublime-package:
- source.Kotlin
vendor/grammars/language-apl:
- source.apl
vendor/grammars/language-babel/:
- source.js.jsx
- source.regexp.babel
vendor/grammars/language-click/:
- source.click
vendor/grammars/language-clojure:
- source.clojure
vendor/grammars/language-coffee-script:
- source.coffee
- source.litcoffee
vendor/grammars/language-crystal:
- source.crystal
vendor/grammars/language-csharp:
- source.cake
- source.cs
- source.csx
- source.nant-build
vendor/grammars/language-gfm:
- source.gfm
vendor/grammars/language-graphql:
- source.graphql
vendor/grammars/language-hy:
- source.hy
vendor/grammars/language-inform7:
- source.inform7
vendor/grammars/language-javascript:
- source.js
- source.js.regexp
- source.js.regexp.replacement
vendor/grammars/language-jsoniq/:
- source.jq
- source.xq
vendor/grammars/language-less/:
- source.css.less
vendor/grammars/language-maxscript:
- source.maxscript
vendor/grammars/language-ncl:
- source.ncl
vendor/grammars/language-povray:
- source.pov-ray sdl
vendor/grammars/language-python:
- text.python.console
- text.python.traceback
vendor/grammars/language-renpy:
- source.renpy
vendor/grammars/language-shellscript:
- source.shell
- text.shell-session
vendor/grammars/language-supercollider:
- source.supercollider
vendor/grammars/language-xbase:
- source.harbour
vendor/grammars/language-yaml:
- source.yaml
vendor/grammars/language-yang/:
- source.yang
vendor/grammars/latex.tmbundle:
- text.bibtex
- text.log.latex
- text.tex
- text.tex.latex
- text.tex.latex.beamer
- text.tex.latex.memoir
vendor/grammars/lilypond.tmbundle:
- source.lilypond
vendor/grammars/liquid.tmbundle:
- text.html.liquid
vendor/grammars/lisp.tmbundle:
- source.lisp
vendor/grammars/llvm.tmbundle:
- source.llvm
vendor/grammars/logos:
- source.logos
vendor/grammars/logtalk.tmbundle:
- source.logtalk
vendor/grammars/lua.tmbundle:
- source.lua
vendor/grammars/make.tmbundle:
- source.makefile
vendor/grammars/mako-tmbundle:
- text.html.mako
vendor/grammars/mathematica-tmbundle:
- source.mathematica
vendor/grammars/matlab.tmbundle:
- source.matlab
- source.octave
vendor/grammars/maven.tmbundle:
- text.xml.pom
vendor/grammars/mediawiki.tmbundle/:
- text.html.mediawiki
vendor/grammars/mercury-tmlanguage:
- source.mercury
vendor/grammars/monkey/:
- source.monkey
vendor/grammars/moonscript-tmbundle:
- source.moonscript
vendor/grammars/nemerle.tmbundle:
- source.nemerle
vendor/grammars/nesC:
- source.nesc
vendor/grammars/ninja.tmbundle:
- source.ninja
vendor/grammars/nix:
- source.nix
vendor/grammars/objective-c.tmbundle:
- source.objc
- source.objc++
- source.objc.platform
- source.strings
vendor/grammars/ocaml.tmbundle:
- source.camlp4.ocaml
- source.ocaml
- source.ocamllex
- source.ocamlyacc
vendor/grammars/ooc.tmbundle:
- source.ooc
vendor/grammars/opa.tmbundle:
- source.opa
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
- source.oz
vendor/grammars/pascal.tmbundle:
- source.pascal
vendor/grammars/pawn-sublime-language/:
- source.pawn
vendor/grammars/perl.tmbundle/:
- source.perl
- source.perl.6
vendor/grammars/perl6fe:
- source.meta-info
- source.perl6fe
- source.regexp.perl6fe
vendor/grammars/php-smarty.tmbundle:
- text.html.smarty
vendor/grammars/php.tmbundle:
- text.html.php
vendor/grammars/pig-latin/:
- source.pig_latin
vendor/grammars/pike-textmate:
- source.pike
vendor/grammars/postscript.tmbundle:
- source.postscript
vendor/grammars/powershell:
- source.powershell
vendor/grammars/processing.tmbundle:
- source.processing
vendor/grammars/protobuf-tmbundle:
- source.protobuf
vendor/grammars/python-django.tmbundle:
- source.python.django
- text.html.django
vendor/grammars/r.tmbundle:
- source.r
- text.tex.latex.rd
vendor/grammars/restructuredtext.tmbundle:
- text.restructuredtext
vendor/grammars/ruby-haml.tmbundle:
- text.haml
vendor/grammars/ruby-slim.tmbundle:
- text.slim
vendor/grammars/ruby.tmbundle:
- source.ruby
- text.html.erb
vendor/grammars/sas.tmbundle:
- source.sas
- source.sas_log
vendor/grammars/sass-textmate-bundle:
- source.sass
vendor/grammars/scala.tmbundle:
- source.sbt
- source.scala
vendor/grammars/scheme.tmbundle:
- source.scheme
vendor/grammars/scilab.tmbundle:
- source.scilab
vendor/grammars/smali-sublime/smali.tmLanguage:
- source.smali
vendor/grammars/smalltalk-tmbundle:
- source.smalltalk
vendor/grammars/sourcepawn/:
- source.sp
vendor/grammars/sql.tmbundle:
- source.sql
vendor/grammars/st2-zonefile:
- text.zone_file
vendor/grammars/standard-ml.tmbundle:
- source.cm
- source.ml
vendor/grammars/sublime-MuPAD:
- source.mupad
vendor/grammars/sublime-aspectj/:
- source.aspectj
vendor/grammars/sublime-autoit/:
- source.autoit
vendor/grammars/sublime-befunge:
- source.befunge
vendor/grammars/sublime-bsv:
- source.bsv
vendor/grammars/sublime-cirru:
- source.cirru
vendor/grammars/sublime-glsl:
- source.essl
- source.glsl
vendor/grammars/sublime-golo/:
- source.golo
vendor/grammars/sublime-mask:
- source.mask
vendor/grammars/sublime-netlinx:
- source.netlinx
- source.netlinx.erb
vendor/grammars/sublime-nginx:
- source.nginx
vendor/grammars/sublime-opal/:
- source.opal
- source.opalsysdefs
vendor/grammars/sublime-pony:
- source.pony
vendor/grammars/sublime-robot-plugin:
- text.robot
vendor/grammars/sublime-rust:
- source.rust
vendor/grammars/sublime-spintools/:
- source.regexp.spin
- source.spin
vendor/grammars/sublime-tea:
- source.tea
vendor/grammars/sublime-terra:
- source.terra
vendor/grammars/sublime-text-ox/:
- source.ox
vendor/grammars/sublime-typescript/:
- source.ts
- source.tsx
vendor/grammars/sublime-varnish:
- source.varnish.vcl
vendor/grammars/sublime_cobol:
- source.acucobol
- source.cobol
- source.jcl
- source.opencobol
vendor/grammars/sublime_man_page_support:
- source.man
- text.groff
vendor/grammars/sublimeassembly/:
- source.assembly
vendor/grammars/sublimeprolog/:
- source.prolog
- source.prolog.eclipse
vendor/grammars/sublimetext-cuda-cpp:
- source.cuda-c++
vendor/grammars/swift.tmbundle:
- source.swift
vendor/grammars/tcl.tmbundle:
- source.tcl
- text.html.tcl
vendor/grammars/thrift.tmbundle:
- source.thrift
vendor/grammars/toml.tmbundle:
- source.toml
vendor/grammars/turtle.tmbundle:
- source.sparql
- source.turtle
vendor/grammars/verilog.tmbundle:
- source.verilog
vendor/grammars/vue-syntax-highlight:
- text.html.vue
vendor/grammars/xc.tmbundle/:
- source.xc
vendor/grammars/xml.tmbundle:
- text.xml
- text.xml.xsl
vendor/grammars/zephir-sublime:
- source.php.zephir

View File

@@ -1,7 +1,99 @@
require 'linguist/blob_helper'
require 'linguist/generated'
require 'linguist/grammars'
require 'linguist/heuristics'
require 'linguist/language'
require 'linguist/repository'
require 'linguist/samples'
require 'linguist/shebang'
require 'linguist/version'
class << Linguist
# Public: Detects the Language of the blob.
#
# blob - an object that includes the Linguist `BlobHelper` interface;
# see Linguist::LazyBlob and Linguist::FileBlob for examples
#
# Returns Language or nil.
def detect(blob)
# Bail early if the blob is binary or empty.
return nil if blob.likely_binary? || blob.binary? || blob.empty?
Linguist.instrument("linguist.detection", :blob => blob) do
# Call each strategy until one candidate is returned.
languages = []
returning_strategy = nil
STRATEGIES.each do |strategy|
returning_strategy = strategy
candidates = Linguist.instrument("linguist.strategy", :blob => blob, :strategy => strategy, :candidates => languages) do
strategy.call(blob, languages)
end
if candidates.size == 1
languages = candidates
break
elsif candidates.size > 1
# More than one candidate was found, pass them to the next strategy.
languages = candidates
else
# No candidates, try the next strategy
end
end
Linguist.instrument("linguist.detected", :blob => blob, :strategy => returning_strategy, :language => languages.first)
languages.first
end
end
# Internal: The strategies used to detect the language of a file.
#
# A strategy is an object that has a `.call` method that takes two arguments:
#
# blob - An object that quacks like a blob.
# languages - An Array of candidate Language objects that were returned by the
#     previous strategy.
#
# A strategy should return an Array of Language candidates.
#
# Strategies are called in turn until a single Language is returned.
STRATEGIES = [
Linguist::Strategy::Modeline,
Linguist::Shebang,
Linguist::Strategy::Filename,
Linguist::Heuristics,
Linguist::Classifier
]
# Public: Set an instrumenter.
#
# class CustomInstrumenter
# def instrument(name, payload = {})
# warn "Instrumenting #{name}: #{payload[:blob]}"
# end
# end
#
# Linguist.instrumenter = CustomInstrumenter
#
# The instrumenter must conform to the `ActiveSupport::Notifications`
# interface, which defines `#instrument` and accepts:
#
# name - the String name of the event (e.g. "linguist.detected")
# payload - a Hash of the exception context.
attr_accessor :instrumenter
# Internal: Perform instrumentation on a block
#
# Linguist.instrument("linguist.dosomething", :blob => blob) do
# # logic to instrument here.
# end
#
def instrument(*args, &bk)
if instrumenter
instrumenter.instrument(*args, &bk)
elsif block_given?
yield
end
end
end

73
lib/linguist/blob.rb Normal file
View File

@@ -0,0 +1,73 @@
require 'linguist/blob_helper'
module Linguist
# A Blob is a wrapper around the content of a file to make it quack
# like a Grit::Blob. It provides the basic interface: `name`,
# `data`, `path` and `size`.
class Blob
include BlobHelper
# Public: Initialize a new Blob.
#
# path - A path String (does not necessarily exists on the file system).
# content - Content of the file.
#
# Returns a Blob.
def initialize(path, content)
@path = path
@content = content
end
# Public: Filename
#
# Examples
#
# Blob.new("/path/to/linguist/lib/linguist.rb", "").path
# # => "/path/to/linguist/lib/linguist.rb"
#
# Returns a String
attr_reader :path
# Public: File name
#
# Returns a String
def name
File.basename(@path)
end
# Public: File contents.
#
# Returns a String.
def data
@content
end
# Public: Get byte size
#
# Returns an Integer.
def size
@content.bytesize
end
# Public: Get file extension.
#
# Returns a String.
def extension
extensions.last || ""
end
# Public: Return an array of the file extensions
#
# >> Linguist::Blob.new("app/views/things/index.html.erb").extensions
# => [".html.erb", ".erb"]
#
# Returns an Array
def extensions
_, *segments = name.downcase.split(".")
segments.map.with_index do |segment, index|
"." + segments[index..-1].join(".")
end
end
end
end

View File

@@ -2,12 +2,11 @@ require 'linguist/generated'
require 'charlock_holmes'
require 'escape_utils'
require 'mime/types'
require 'pygments'
require 'yaml'
module Linguist
# DEPRECATED Avoid mixing into Blob classes. Prefer functional interfaces
# like `Language.detect` over `Blob#language`. Functions are much easier to
# like `Linguist.detect` over `Blob#language`. Functions are much easier to
# cache and compose.
#
# Avoid adding additional bloat to this module.
@@ -100,7 +99,7 @@ module Linguist
elsif name.nil?
"attachment"
else
"attachment; filename=#{EscapeUtils.escape_url(File.basename(name))}"
"attachment; filename=#{EscapeUtils.escape_url(name)}"
end
end
@@ -147,6 +146,13 @@ module Linguist
end
end
# Public: Is the blob empty?
#
# Return true or false
def empty?
data.nil? || data == ""
end
# Public: Is the blob text?
#
# Return true or false
@@ -193,10 +199,6 @@ module Linguist
# Public: Is the blob safe to colorize?
#
# We use Pygments for syntax highlighting blobs. Pygments
# can be too slow for very large blobs or for certain
# corner-case blobs.
#
# Return true or false
def safe_to_colorize?
!large? && text? && !high_ratio_of_long_lines?
@@ -204,9 +206,6 @@ module Linguist
# Internal: Does the blob have a ratio of long lines?
#
# These types of files are usually going to make Pygments.rb
# angry if we try to colorize them.
#
# Return true or false
def high_ratio_of_long_lines?
return false if loc == 0
@@ -234,7 +233,22 @@ module Linguist
#
# Return true or false
def vendored?
name =~ VendoredRegexp ? true : false
path =~ VendoredRegexp ? true : false
end
documentation_paths = YAML.load_file(File.expand_path("../documentation.yml", __FILE__))
DocumentationRegexp = Regexp.new(documentation_paths.join('|'))
# Public: Is the blob in a documentation directory?
#
# Documentation files are ignored by language statistics.
#
# See "documentation.yml" for a list of documentation conventions that match
# this pattern.
#
# Return true or false
def documentation?
path =~ DocumentationRegexp ? true : false
end
# Public: Get each line of data
@@ -302,7 +316,7 @@ module Linguist
#
# Return true or false
def generated?
@_generated ||= Generated.generated?(name, lambda { data })
@_generated ||= Generated.generated?(path, lambda { data })
end
# Public: Detects the Language of the blob.
@@ -311,14 +325,7 @@ module Linguist
#
# Returns a Language or nil if none is detected
def language
@language ||= Language.detect(self)
end
# Internal: Get the lexer of the blob.
#
# Returns a Lexer.
def lexer
language ? language.lexer : Pygments::Lexer.find_by_name('Text only')
@language ||= Linguist.detect(self)
end
# Internal: Get the TextMate compatible scope for the blob
@@ -326,16 +333,14 @@ module Linguist
language && language.tm_scope
end
# Public: Highlight syntax of blob
#
# options - A Hash of options (defaults to {})
#
# Returns html String
def colorize(options = {})
return unless safe_to_colorize?
options[:options] ||= {}
options[:options][:encoding] ||= encoding
lexer.highlight(data, options)
DETECTABLE_TYPES = [:programming, :markup].freeze
# Internal: Should this blob be included in repository language statistics?
def include_in_language_stats?
!vendored? &&
!documentation? &&
!generated? &&
language && DETECTABLE_TYPES.include?(language.type)
end
end
end

View File

@@ -3,6 +3,25 @@ require 'linguist/tokenizer'
module Linguist
# Language bayesian classifier.
class Classifier
# Public: Use the classifier to detect language of the blob.
#
# blob - An object that quacks like a blob.
# possible_languages - Array of Language objects
#
# Examples
#
# Classifier.call(FileBlob.new("path/to/file"), [
# Language["Ruby"], Language["Python"]
# ])
#
# Returns an Array of Language objects, most probable first.
def self.call(blob, possible_languages)
language_names = possible_languages.map(&:name)
classify(Samples.cache, blob.data, language_names).map do |name, _|
Language[name] # Return the actual Language objects
end
end
# Public: Train classifier that data is a certain language.
#
# db - Hash classifier database object

View File

@@ -0,0 +1,30 @@
# Documentation files and directories are excluded from language
# statistics.
#
# Lines in this file are Regexps that are matched against the file
# pathname.
#
# Please add additional test coverage to
# `test/test_blob.rb#test_documentation` if you make any changes.
## Documentation directories ##
- ^docs?/
- (^|/)[Dd]ocumentation/
- (^|/)javadoc/
- ^man/
- ^[Ee]xamples/
## Documentation files ##
- (^|/)CHANGE(S|LOG)?(\.|$)
- (^|/)CONTRIBUTING(\.|$)
- (^|/)COPYING(\.|$)
- (^|/)INSTALL(\.|$)
- (^|/)LICEN[CS]E(\.|$)
- (^|/)[Ll]icen[cs]e(\.|$)
- (^|/)README(\.|$)
- (^|/)[Rr]eadme(\.|$)
# Samples folders
- ^[Ss]amples/

View File

@@ -1,10 +1,11 @@
require 'linguist/blob_helper'
require 'linguist/blob'
module Linguist
# A FileBlob is a wrapper around a File object to make it quack
# like a Grit::Blob. It provides the basic interface: `name`,
# `data`, and `size`.
class FileBlob
# `data`, `path` and `size`.
class FileBlob < Blob
include BlobHelper
# Public: Initialize a new FileBlob from a path
@@ -14,58 +15,29 @@ module Linguist
#
# Returns a FileBlob.
def initialize(path, base_path = nil)
@path = path
@name = base_path ? path.sub("#{base_path}/", '') : path
@fullpath = path
@path = base_path ? path.sub("#{base_path}/", '') : path
end
# Public: Filename
#
# Examples
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb").name
# # => "/path/to/linguist/lib/linguist.rb"
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb",
# "/path/to/linguist").name
# # => "lib/linguist.rb"
#
# Returns a String
attr_reader :name
# Public: Read file permissions
#
# Returns a String like '100644'
def mode
File.stat(@path).mode.to_s(8)
File.stat(@fullpath).mode.to_s(8)
end
# Public: Read file contents.
#
# Returns a String.
def data
File.read(@path)
File.read(@fullpath)
end
# Public: Get byte size
#
# Returns an Integer.
def size
File.size(@path)
end
# Public: Get file extension.
#
# Returns a String.
def extension
# File.extname returns nil if the filename is an extension.
extension = File.extname(name)
basename = File.basename(name)
# Checks if the filename is an extension.
if extension.empty? && basename[0] == "."
basename
else
extension
end
File.size(@fullpath)
end
end
end

View File

@@ -51,26 +51,35 @@ module Linguist
#
# Return true or false
def generated?
name == 'Gemfile.lock' ||
minified_files? ||
compiled_coffeescript? ||
xcode_file? ||
generated_parser? ||
generated_net_docfile? ||
generated_net_designer_file? ||
generated_postscript? ||
generated_protocol_buffer? ||
generated_jni_header? ||
composer_lock? ||
node_modules? ||
godeps? ||
vcr_cassette? ||
generated_by_zephir?
xcode_file? ||
generated_net_designer_file? ||
generated_net_specflow_feature_file? ||
composer_lock? ||
node_modules? ||
godeps? ||
generated_by_zephir? ||
minified_files? ||
source_map? ||
compiled_coffeescript? ||
generated_parser? ||
generated_net_docfile? ||
generated_postscript? ||
compiled_cython_file? ||
generated_go? ||
generated_protocol_buffer? ||
generated_apache_thrift? ||
generated_jni_header? ||
vcr_cassette? ||
generated_module? ||
generated_unity3d_meta? ||
generated_racc? ||
generated_jflex? ||
generated_grammarkit?
end
# Internal: Is the blob an Xcode file?
#
# Generated if the file extension is an Xcode
# Generated if the file extension is an Xcode
# file extension.
#
# Returns true of false.
@@ -95,6 +104,20 @@ module Linguist
end
end
# Internal: Is the blob a generated source map?
#
# Source Maps usually have .css.map or .js.map extensions. In case they
# are not following the name convention, detect them based on the content.
#
# Returns true or false.
def source_map?
return false unless extname.downcase == '.map'
name =~ /(\.css|\.js)\.map$/i || # Name convention
lines[0] =~ /^{"version":\d+,/ || # Revision 2 and later begin with the version number
lines[0] =~ /^\/\*\* Begin line maps\. \*\*\/{/ # Revision 1 begins with a magic comment
end
# Internal: Is the blob of JS generated by CoffeeScript?
#
# CoffeeScript is meant to output JS that would be difficult to
@@ -163,6 +186,17 @@ module Linguist
name.downcase =~ /\.designer\.cs$/
end
# Internal: Is this a codegen file for Specflow feature file?
#
# Visual Studio's SpecFlow extension generates *.feature.cs files
# from *.feature files, they are not meant to be consumed by humans.
# Let's hide them.
#
# Returns true or false
def generated_net_specflow_feature_file?
name.downcase =~ /\.feature\.cs$/
end
# Internal: Is the blob of JS a parser generated by PEG.js?
#
# PEG.js-generated parsers are not meant to be consumed by humans.
@@ -203,17 +237,38 @@ module Linguist
creator.include?("ImageMagick")
end
def generated_go?
return false unless extname == '.go'
return false unless lines.count > 1
return lines[0].include?("Code generated by")
end
PROTOBUF_EXTENSIONS = ['.py', '.java', '.h', '.cc', '.cpp']
# Internal: Is the blob a C++, Java or Python source file generated by the
# Protocol Buffer compiler?
#
# Returns true of false.
def generated_protocol_buffer?
return false unless ['.py', '.java', '.h', '.cc', '.cpp'].include?(extname)
return false unless PROTOBUF_EXTENSIONS.include?(extname)
return false unless lines.count > 1
return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
end
APACHE_THRIFT_EXTENSIONS = ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp']
# Internal: Is the blob generated by Apache Thrift compiler?
#
# Returns true or false
def generated_apache_thrift?
return false unless APACHE_THRIFT_EXTENSIONS.include?(extname)
return false unless lines.count > 1
return lines[0].include?("Autogenerated by Thrift Compiler") || lines[1].include?("Autogenerated by Thrift Compiler")
end
# Internal: Is the blob a C/C++ header generated by the Java JNI tool javah?
#
# Returns true of false.
@@ -263,6 +318,89 @@ module Linguist
# VCR Cassettes have "recorded_with: VCR" in the second last line.
return lines[-2].include?("recorded_with: VCR")
end
# Internal: Is this a compiled C/C++ file from Cython?
#
# Cython-compiled C/C++ files typically contain:
# /* Generated by Cython x.x.x on ... */
# on the first line.
#
# Return true or false
def compiled_cython_file?
return false unless ['.c', '.cpp'].include? extname
return false unless lines.count > 1
return lines[0].include?("Generated by Cython")
end
# Internal: Is it a KiCAD or GFortran module file?
#
# KiCAD module files contain:
# PCBNEW-LibModule-V1 yyyy-mm-dd h:mm:ss XM
# on the first line.
#
# GFortran module files contain:
# GFORTRAN module version 'x' created from
# on the first line.
#
# Return true of false
def generated_module?
return false unless extname == '.mod'
return false unless lines.count > 1
return lines[0].include?("PCBNEW-LibModule-V") ||
lines[0].include?("GFORTRAN module version '")
end
# Internal: Is this a metadata file from Unity3D?
#
# Unity3D Meta files start with:
# fileFormatVersion: X
# guid: XXXXXXXXXXXXXXX
#
# Return true or false
def generated_unity3d_meta?
return false unless extname == '.meta'
return false unless lines.count > 1
return lines[0].include?("fileFormatVersion: ")
end
# Internal: Is this a Racc-generated file?
#
# A Racc-generated file contains:
# # This file is automatically generated by Racc x.y.z
# on the third line.
#
# Return true or false
def generated_racc?
return false unless extname == '.rb'
return false unless lines.count > 2
return lines[2].start_with?("# This file is automatically generated by Racc")
end
# Internal: Is this a JFlex-generated file?
#
# A JFlex-generated file contains:
# /* The following code was generated by JFlex x.y.z on d/at/e ti:me */
# on the first line.
#
# Return true or false
def generated_jflex?
return false unless extname == '.java'
return false unless lines.count > 1
return lines[0].start_with?("/* The following code was generated by JFlex ")
end
# Internal: Is this a GrammarKit-generated file?
#
# A GrammarKit-generated file typically contain:
# // This is a generated file. Not intended for manual editing.
# on the first line. This is not always the case, as it's possible to
# customize the class header.
#
# Return true or false
def generated_grammarkit?
return false unless extname == '.java'
return false unless lines.count > 1
return lines[0].start_with?("// This is a generated file. Not intended for manual editing.")
end
end
end

10
lib/linguist/grammars.rb Normal file
View File

@@ -0,0 +1,10 @@
module Linguist
module Grammars
# Get the path to the directory containing the language grammar JSON files.
#
# Returns a String.
def self.path
File.expand_path("../../../grammars", __FILE__)
end
end
end

View File

@@ -1,131 +1,405 @@
module Linguist
# A collection of simple heuristics that can be used to better analyze languages.
class Heuristics
ACTIVE = true
# Public: Use heuristics to detect language of the blob.
#
# blob - An object that quacks like a blob.
# possible_languages - Array of Language objects
#
# Examples
#
# Heuristics.call(FileBlob.new("path/to/file"), [
# Language["Ruby"], Language["Python"]
# ])
#
# Returns an Array of languages, or empty if none matched or were inconclusive.
def self.call(blob, candidates)
data = blob.data
# Public: Given an array of String language names,
# apply heuristics against the given data and return an array
# of matching languages, or nil.
@heuristics.each do |heuristic|
if heuristic.matches?(blob.name)
languages = Array(heuristic.call(data))
return languages if languages.any? || languages.all? { |l| candidates.include?(l) }
end
end
[] # No heuristics matched
end
# Internal: Define a new heuristic.
#
# data - Array of tokens or String data to analyze.
# languages - Array of language name Strings to restrict to.
# languages - String names of languages to disambiguate.
# heuristic - Block which takes data as an argument and returns a Language or nil.
#
# Returns an array of Languages or []
def self.find_by_heuristics(data, languages)
if active?
if languages.all? { |l| ["Perl", "Prolog"].include?(l) }
result = disambiguate_pl(data, languages)
end
if languages.all? { |l| ["ECL", "Prolog"].include?(l) }
result = disambiguate_ecl(data, languages)
end
if languages.all? { |l| ["IDL", "Prolog"].include?(l) }
result = disambiguate_pro(data, languages)
end
if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) }
result = disambiguate_cl(data, languages)
end
if languages.all? { |l| ["Hack", "PHP"].include?(l) }
result = disambiguate_hack(data, languages)
end
if languages.all? { |l| ["Scala", "SuperCollider"].include?(l) }
result = disambiguate_sc(data, languages)
end
if languages.all? { |l| ["AsciiDoc", "AGS Script"].include?(l) }
result = disambiguate_asc(data, languages)
end
return result
# Examples
#
# disambiguate ".pm" do |data|
# if data.include?("use strict")
# Language["Perl"]
# elsif /^[^#]+:-/.match(data)
# Language["Prolog"]
# end
# end
#
def self.disambiguate(*extensions, &heuristic)
@heuristics << new(extensions, &heuristic)
end
# Internal: Array of defined heuristics
@heuristics = []
# Internal
def initialize(extensions, &heuristic)
@extensions = extensions
@heuristic = heuristic
end
# Internal: Check if this heuristic matches the candidate languages.
def matches?(filename)
filename = filename.downcase
@extensions.any? { |ext| filename.end_with?(ext) }
end
# Internal: Perform the heuristic
def call(data)
@heuristic.call(data)
end
# Common heuristics
ObjectiveCRegex = /^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])/
disambiguate ".asc" do |data|
if /^(----[- ]BEGIN|ssh-(rsa|dss)) /.match(data)
Language["Public Key"]
elsif /^[=-]+(\s|\n)|{{[A-Za-z]/.match(data)
Language["AsciiDoc"]
elsif /^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])/.match(data)
Language["AGS Script"]
end
end
# .h extensions are ambiguous between C, C++, and Objective-C.
# We want to shortcut look for Objective-C _and_ now C++ too!
#
# Returns an array of Languages or []
def self.disambiguate_c(data, languages)
matches = []
matches << Language["Objective-C"] if data.include?("@interface")
matches << Language["C++"] if data.include?("#include <cstdint>")
matches
disambiguate ".bb" do |data|
if /^\s*; /.match(data) || data.include?("End Function")
Language["BlitzBasic"]
elsif /^\s*(# |include|require)\b/.match(data)
Language["BitBake"]
end
end
def self.disambiguate_pl(data, languages)
matches = []
matches << Language["Prolog"] if data.include?(":-")
matches << Language["Perl"] if data.include?("use strict")
matches
end
def self.disambiguate_ecl(data, languages)
matches = []
matches << Language["Prolog"] if data.include?(":-")
matches << Language["ECL"] if data.include?(":=")
matches
end
def self.disambiguate_pro(data, languages)
matches = []
if (data.include?(":-"))
matches << Language["Prolog"]
disambiguate ".builds" do |data|
if /^(\s*)(<Project|<Import|<Property|<?xml|xmlns)/i.match(data)
Language["XML"]
else
matches << Language["IDL"]
Language["Text"]
end
matches
end
def self.disambiguate_ts(data, languages)
matches = []
if (data.include?("</translation>"))
matches << Language["XML"]
disambiguate ".ch" do |data|
if /^\s*#\s*(if|ifdef|ifndef|define|command|xcommand|translate|xtranslate|include|pragma|undef)\b/i.match(data)
Language["xBase"]
end
end
disambiguate ".cl" do |data|
if /^\s*\((defun|in-package|defpackage) /i.match(data)
Language["Common Lisp"]
elsif /^class/x.match(data)
Language["Cool"]
elsif /\/\* |\/\/ |^\}/.match(data)
Language["OpenCL"]
end
end
disambiguate ".cs" do |data|
if /![\w\s]+methodsFor: /.match(data)
Language["Smalltalk"]
elsif /^\s*namespace\s*[\w\.]+\s*{/.match(data) || /^\s*\/\//.match(data)
Language["C#"]
end
end
disambiguate ".d" do |data|
if /^module /.match(data)
Language["D"]
elsif /^((dtrace:::)?BEGIN|provider |#pragma (D (option|attributes)|ident)\s)/.match(data)
Language["DTrace"]
elsif /(\/.*:( .* \\)$| : \\$|^ : |: \\$)/.match(data)
Language["Makefile"]
end
end
disambiguate ".ecl" do |data|
if /^[^#]+:-/.match(data)
Language["ECLiPSe"]
elsif data.include?(":=")
Language["ECL"]
end
end
disambiguate ".es" do |data|
if /^\s*(?:%%|main\s*\(.*?\)\s*->)/.match(data)
Language["Erlang"]
elsif /(?:\/\/|("|')use strict\1|export\s+default\s|\/\*.*?\*\/)/m.match(data)
Language["JavaScript"]
end
end
disambiguate ".for", ".f" do |data|
if /^: /.match(data)
Language["Forth"]
elsif /^([c*][^abd-z]| (subroutine|program|end)\s|\s*!)/i.match(data)
Language["FORTRAN"]
end
end
disambiguate ".fr" do |data|
if /^(: |also |new-device|previous )/.match(data)
Language["Forth"]
elsif /^\s*(import|module|package|data|type) /.match(data)
Language["Frege"]
else
matches << Language["TypeScript"]
Language["Text"]
end
matches
end
def self.disambiguate_cl(data, languages)
matches = []
matches << Language["Common Lisp"] if data.include?("(defun ")
matches << Language["OpenCL"] if /\/\* |\/\/ |^\}/.match(data)
matches
disambiguate ".fs" do |data|
if /^(: |new-device)/.match(data)
Language["Forth"]
elsif /^\s*(#light|import|let|module|namespace|open|type)/.match(data)
Language["F#"]
elsif /^\s*(#version|precision|uniform|varying|vec[234])/.match(data)
Language["GLSL"]
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
Language["Filterscript"]
end
end
def self.disambiguate_r(data, languages)
matches = []
matches << Language["Rebol"] if /\bRebol\b/i.match(data)
matches << Language["R"] if data.include?("<-")
matches
disambiguate ".gs" do |data|
Language["Gosu"] if /^uses java\./.match(data)
end
def self.disambiguate_hack(data, languages)
matches = []
disambiguate ".h" do |data|
if ObjectiveCRegex.match(data)
Language["Objective-C"]
elsif (/^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/.match(data) ||
/^\s*template\s*</.match(data) || /^[ \t]*try/.match(data) || /^[ \t]*catch\s*\(/.match(data) || /^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+/.match(data) || /^[ \t]*(private|public|protected):$/.match(data) || /std::\w+/.match(data))
Language["C++"]
end
end
disambiguate ".l" do |data|
if /\(def(un|macro)\s/.match(data)
Language["Common Lisp"]
elsif /^(%[%{}]xs|<.*>)/.match(data)
Language["Lex"]
elsif /^\.[a-z][a-z](\s|$)/i.match(data)
Language["Groff"]
elsif /^\((de|class|rel|code|data|must)\s/.match(data)
Language["PicoLisp"]
end
end
disambiguate ".ls" do |data|
if /^\s*package\s*[\w\.\/\*\s]*\s*{/.match(data)
Language["LoomScript"]
else
Language["LiveScript"]
end
end
disambiguate ".lsp", ".lisp" do |data|
if /^\s*\((defun|in-package|defpackage) /i.match(data)
Language["Common Lisp"]
elsif /^\s*\(define /.match(data)
Language["NewLisp"]
end
end
disambiguate ".m" do |data|
if ObjectiveCRegex.match(data)
Language["Objective-C"]
elsif data.include?(":- module")
Language["Mercury"]
elsif /^: /.match(data)
Language["MUF"]
elsif /^\s*;/.match(data)
Language["M"]
elsif /^\s*\(\*/.match(data)
Language["Mathematica"]
elsif /^\s*%/.match(data)
Language["Matlab"]
elsif /^\w+\s*:\s*module\s*{/.match(data)
Language["Limbo"]
end
end
disambiguate ".ml" do |data|
if /(^\s*module)|let rec |match\s+(\S+\s)+with/.match(data)
Language["OCaml"]
elsif /=> |case\s+(\S+\s)+of/.match(data)
Language["Standard ML"]
end
end
disambiguate ".mod" do |data|
if data.include?('<!ENTITY ')
Language["XML"]
elsif /MODULE\s\w+\s*;/i.match(data) || /^\s*END \w+;$/i.match(data)
Language["Modula-2"]
else
[Language["Linux Kernel Module"], Language["AMPL"]]
end
end
disambiguate ".ms" do |data|
if /^[.'][a-z][a-z](\s|$)/i.match(data)
Language["Groff"]
elsif /(?<!\S)\.(include|globa?l)\s/.match(data) || /(?<!\/\*)(\A|\n)\s*\.[A-Za-z]/.match(data.gsub(/"([^\\"]|\\.)*"|'([^\\']|\\.)*'|\\\s*(?:--.*)?\n/, ""))
Language["GAS"]
else
Language["MAXScript"]
end
end
disambiguate ".n" do |data|
if /^[.']/.match(data)
Language["Groff"]
elsif /^(module|namespace|using)\s/.match(data)
Language["Nemerle"]
end
end
disambiguate ".ncl" do |data|
if data.include?("THE_TITLE")
Language["Text"]
end
end
disambiguate ".nl" do |data|
if /^(b|g)[0-9]+ /.match(data)
Language["NL"]
else
Language["NewLisp"]
end
end
disambiguate ".php" do |data|
if data.include?("<?hh")
matches << Language["Hack"]
Language["Hack"]
elsif /<?[^h]/.match(data)
matches << Language["PHP"]
Language["PHP"]
end
matches
end
def self.disambiguate_sc(data, languages)
matches = []
if (/\^(this|super)\./.match(data) || /^\s*(\+|\*)\s*\w+\s*{/.match(data) || /^\s*~\w+\s*=\./.match(data))
matches << Language["SuperCollider"]
disambiguate ".pl" do |data|
if /^[^#]+:-/.match(data)
Language["Prolog"]
elsif /use strict|use\s+v?5\./.match(data)
Language["Perl"]
elsif /^(use v6|(my )?class|module)/.match(data)
Language["Perl6"]
end
if (/^\s*import (scala|java)\./.match(data) || /^\s*val\s+\w+\s*=/.match(data) || /^\s*class\b/.match(data))
matches << Language["Scala"]
end
matches
end
def self.disambiguate_asc(data, languages)
matches = []
matches << Language["AsciiDoc"] if /^=+(\s|\n)/.match(data)
matches
disambiguate ".pm", ".t" do |data|
if /use strict|use\s+v?5\./.match(data)
Language["Perl"]
elsif /^(use v6|(my )?class|module)/.match(data)
Language["Perl6"]
end
end
def self.active?
!!ACTIVE
disambiguate ".pod" do |data|
if /^=\w+$/.match(data)
Language["Pod"]
else
Language["Perl"]
end
end
disambiguate ".pro" do |data|
if /^[^#]+:-/.match(data)
Language["Prolog"]
elsif data.include?("last_client=")
Language["INI"]
elsif data.include?("HEADERS") && data.include?("SOURCES")
Language["QMake"]
elsif /^\s*function[ \w,]+$/.match(data)
Language["IDL"]
end
end
disambiguate ".props" do |data|
if /^(\s*)(<Project|<Import|<Property|<?xml|xmlns)/i.match(data)
Language["XML"]
elsif /\w+\s*=\s*/i.match(data)
Language["INI"]
end
end
disambiguate ".r" do |data|
if /\bRebol\b/i.match(data)
Language["Rebol"]
elsif data.include?("<-")
Language["R"]
end
end
disambiguate ".rpy" do |data|
if /(^(import|from|class|def)\s)/m.match(data)
Language["Python"]
else
Language["Ren'Py"]
end
end
disambiguate ".rs" do |data|
if /^(use |fn |mod |pub |macro_rules|impl|#!?\[)/.match(data)
Language["Rust"]
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
Language["RenderScript"]
end
end
disambiguate ".sc" do |data|
if /\^(this|super)\./.match(data) || /^\s*(\+|\*)\s*\w+\s*{/.match(data) || /^\s*~\w+\s*=\./.match(data)
Language["SuperCollider"]
elsif /^\s*import (scala|java)\./.match(data) || /^\s*val\s+\w+\s*=/.match(data) || /^\s*class\b/.match(data)
Language["Scala"]
end
end
disambiguate ".sql" do |data|
if /^\\i\b|AS \$\$|LANGUAGE '?plpgsql'?/i.match(data) || /SECURITY (DEFINER|INVOKER)/i.match(data) || /BEGIN( WORK| TRANSACTION)?;/i.match(data)
#Postgres
Language["PLpgSQL"]
elsif /(alter module)|(language sql)|(begin( NOT)+ atomic)/i.match(data) || /signal SQLSTATE '[0-9]+'/i.match(data)
#IBM db2
Language["SQLPL"]
elsif /pragma|\$\$PLSQL_|XMLTYPE|sysdate|systimestamp|\.nextval|connect by|AUTHID (DEFINER|CURRENT_USER)/i.match(data) || /constructor\W+function/i.match(data)
#Oracle
Language["PLSQL"]
elsif ! /begin|boolean|package|exception/i.match(data)
#Generic SQL
Language["SQL"]
end
end
disambiguate ".ts" do |data|
if data.include?("<TS ")
Language["XML"]
else
Language["TypeScript"]
end
end
disambiguate ".tst" do |data|
if (data.include?("gap> "))
Language["GAP"]
# Heads up - we don't usually write heuristics like this (with no regex match)
else
Language["Scilab"]
end
end
end
end

View File

@@ -1,5 +1,4 @@
require 'escape_utils'
require 'pygments'
require 'yaml'
begin
require 'yajl'
@@ -11,6 +10,9 @@ require 'linguist/heuristics'
require 'linguist/samples'
require 'linguist/file_blob'
require 'linguist/blob_helper'
require 'linguist/strategy/filename'
require 'linguist/strategy/modeline'
require 'linguist/shebang'
module Linguist
# Language names that are recognizable by GitHub. Defined languages
@@ -30,13 +32,6 @@ module Linguist
# Valid Languages types
TYPES = [:data, :markup, :programming, :prose]
# Names of non-programming languages that we will still detect
#
# Returns an array
def self.detectable_markup
["CSS", "Less", "Sass", "SCSS", "Stylus", "TeX"]
end
# Detect languages by a specific type
#
# type - A symbol that exists within TYPES
@@ -78,7 +73,7 @@ module Linguist
raise ArgumentError, "Extension is missing a '.': #{extension.inspect}"
end
@extension_index[extension] << language
@extension_index[extension.downcase] << language
end
language.interpreters.each do |interpreter|
@@ -99,51 +94,8 @@ module Linguist
#
# Returns Language or nil.
def self.detect(blob)
name = blob.name.to_s
# Check if the blob is possibly binary and bail early; this is a cheap
# test that uses the extension name to guess a binary binary mime type.
#
# We'll perform a more comprehensive test later which actually involves
# looking for binary characters in the blob
return nil if blob.likely_binary? || blob.binary?
# A bit of an elegant hack. If the file is executable but extensionless,
# append a "magic" extension so it can be classified with other
# languages that have shebang scripts.
extension = FileBlob.new(name).extension
if extension.empty? && blob.mode && (blob.mode.to_i(8) & 05) == 05
name += ".script!"
end
# First try to find languages that match based on filename.
possible_languages = find_by_filename(name)
# If there is more than one possible language with that extension (or no
# extension at all, in the case of extensionless scripts), we need to continue
# our detection work
if possible_languages.length > 1
data = blob.data
possible_language_names = possible_languages.map(&:name)
# Don't bother with binary contents or an empty file
if data.nil? || data == ""
nil
# Check if there's a shebang line and use that as authoritative
elsif (result = find_by_shebang(data)) && !result.empty?
result.first
# No shebang. Still more work to do. Try to find it with our heuristics.
elsif (determined = Heuristics.find_by_heuristics(data, possible_language_names)) && !determined.empty?
determined.first
# Lastly, fall back to the probabilistic classifier.
elsif classified = Classifier.classify(Samples.cache, data, possible_language_names).first
# Return the actual Language object based of the string language name (i.e., first element of `#classify`)
Language[classified[0]]
end
else
# Simplest and most common case, we can just return the one match based on extension
possible_languages.first
end
warn "[DEPRECATED] `Linguist::Language.detect` is deprecated. Use `Linguist.detect`. #{caller[0]}"
Linguist.detect(blob)
end
# Public: Get all Languages
@@ -164,7 +116,8 @@ module Linguist
#
# Returns the Language or nil if none was found.
def self.find_by_name(name)
name && @name_index[name.downcase]
return nil if name.to_s.empty?
name && (@name_index[name.downcase] || @name_index[name.split(',').first.downcase])
end
# Public: Look up Language by one of its aliases.
@@ -176,9 +129,10 @@ module Linguist
# Language.find_by_alias('cpp')
# # => #<Language name="C++">
#
# Returns the Lexer or nil if none was found.
# Returns the Language or nil if none was found.
def self.find_by_alias(name)
name && @alias_index[name.downcase]
return nil if name.to_s.empty?
name && (@alias_index[name.downcase] || @alias_index[name.split(',').first.downcase])
end
# Public: Look up Languages by filename.
@@ -193,8 +147,13 @@ module Linguist
# Returns all matching Languages or [] if none were found.
def self.find_by_filename(filename)
basename = File.basename(filename)
extname = FileBlob.new(filename).extension
(@filename_index[basename] + find_by_extension(extname)).compact.uniq
# find the first extension with language definitions
extname = FileBlob.new(filename).extensions.detect do |e|
!@extension_index[e].empty?
end
(@filename_index[basename] + @extension_index[extname]).compact.uniq
end
# Public: Look up Languages by file extension.
@@ -212,24 +171,30 @@ module Linguist
# Returns all matching Languages or [] if none were found.
def self.find_by_extension(extname)
extname = ".#{extname}" unless extname.start_with?(".")
@extension_index[extname]
@extension_index[extname.downcase]
end
# Public: Look up Languages by shebang line.
# DEPRECATED
def self.find_by_shebang(data)
@interpreter_index[Shebang.interpreter(data)]
end
# Public: Look up Languages by interpreter.
#
# data - Array of tokens or String data to analyze.
# interpreter - String of interpreter name
#
# Examples
#
# Language.find_by_shebang("#!/bin/bash\ndate;")
# Language.find_by_interpreter("bash")
# # => [#<Language name="Bash">]
#
# Returns the matching Language
def self.find_by_shebang(data)
@interpreter_index[Linguist.interpreter_from_shebang(data)]
def self.find_by_interpreter(interpreter)
@interpreter_index[interpreter]
end
# Public: Look up Language by its name or lexer.
# Public: Look up Language by its name.
#
# name - The String name of the Language
#
@@ -243,7 +208,8 @@ module Linguist
#
# Returns the Language or nil if none was found.
def self.[](name)
name && @index[name.downcase]
return nil if name.to_s.empty?
name && (@index[name.downcase] || @index[name.split(',').first.downcase])
end
# Public: A List of popular languages
@@ -253,7 +219,7 @@ module Linguist
#
# This list is configured in "popular.yml".
#
# Returns an Array of Lexers.
# Returns an Array of Languages.
def self.popular
@popular ||= all.select(&:popular?).sort_by { |lang| lang.name.downcase }
end
@@ -265,7 +231,7 @@ module Linguist
#
# This list is created from all the languages not listed in "popular.yml".
#
# Returns an Array of Lexers.
# Returns an Array of Languages.
def self.unpopular
@unpopular ||= all.select(&:unpopular?).sort_by { |lang| lang.name.downcase }
end
@@ -279,8 +245,12 @@ module Linguist
# Public: A List of languages compatible with Ace.
#
# TODO: Remove this method in a 5.x release. Every language now needs an ace_mode
# key, so this function isn't doing anything unique anymore.
#
# Returns an Array of Languages.
def self.ace_modes
warn "This method will be deprecated in a future 5.x release. Every language now has an `ace_mode` set."
@ace_modes ||= all.select(&:ace_mode).sort_by { |lang| lang.name.downcase }
end
@@ -302,10 +272,7 @@ module Linguist
# Set aliases
@aliases = [default_alias_name] + (attributes[:aliases] || [])
# Lookup Lexer object
@lexer = Pygments::Lexer.find_by_name(attributes[:lexer] || name) ||
raise(ArgumentError, "#{@name} is missing lexer")
# Load the TextMate scope name or try to guess one
@tm_scope = attributes[:tm_scope] || begin
context = case @type
when :data, :markup, :prose
@@ -384,11 +351,6 @@ module Linguist
# Returns the name String
attr_reader :search_term
# Public: Get Lexer
#
# Returns the Lexer
attr_reader :lexer
# Public: Get the name of a TextMate-compatible scope
#
# Returns the scope
@@ -437,11 +399,6 @@ module Linguist
# Returns the extensions Array
attr_reader :filenames
# Public: Return all possible extensions for language
def all_extensions
(extensions + [primary_extension]).uniq
end
# Deprecated: Get primary extension
#
# Defaults to the first extension but can be overridden
@@ -509,16 +466,6 @@ module Linguist
@searchable
end
# Public: Highlight syntax of text
#
# text - String of code to be highlighted
# options - A Hash of options (defaults to {})
#
# Returns html String
def colorize(text, options = {})
lexer.highlight(text, options)
end
# Public: Return name as String representation
def to_s
name
@@ -562,8 +509,8 @@ module Linguist
if extnames = extensions[name]
extnames.each do |extname|
if !options['extensions'].include?(extname)
warn "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml" unless extname == '.script!'
if !options['extensions'].index { |x| x.downcase.end_with? extname.downcase }
warn "#{name} has a sample with extension (#{extname.downcase}) that isn't explicitly defined in languages.yml"
options['extensions'] << extname
end
end
@@ -594,14 +541,13 @@ module Linguist
:color => options['color'],
:type => options['type'],
:aliases => options['aliases'],
:lexer => options['lexer'],
:tm_scope => options['tm_scope'],
:ace_mode => options['ace_mode'],
:wrap => options['wrap'],
:group_name => options['group'],
:searchable => options.key?('searchable') ? options['searchable'] : true,
:searchable => options.fetch('searchable', true),
:search_term => options['search_term'],
:extensions => [options['extensions'].first] + options['extensions'][1..-1].sort,
:extensions => Array(options['extensions']),
:interpreters => options['interpreters'].sort,
:filenames => options['filenames'],
:popular => popular.include?(name)

1991
lib/linguist/languages.yml Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,11 @@ require 'rugged'
module Linguist
class LazyBlob
GIT_ATTR = ['linguist-language', 'linguist-vendored']
GIT_ATTR = ['linguist-documentation',
'linguist-language',
'linguist-vendored',
'linguist-generated']
GIT_ATTR_OPTS = { :priority => [:index], :skip_system => true }
GIT_ATTR_FLAGS = Rugged::Repository::Attributes.parse_opts(GIT_ATTR_OPTS)
@@ -14,14 +18,17 @@ module Linguist
attr_reader :repository
attr_reader :oid
attr_reader :name
attr_reader :path
attr_reader :mode
def initialize(repo, oid, name, mode = nil)
alias :name :path
def initialize(repo, oid, path, mode = nil)
@repository = repo
@oid = oid
@name = name
@path = path
@mode = mode
@data = nil
end
def git_attributes
@@ -29,11 +36,27 @@ module Linguist
name, GIT_ATTR, GIT_ATTR_FLAGS)
end
def documentation?
if attr = git_attributes['linguist-documentation']
boolean_attribute(attr)
else
super
end
end
def generated?
if attr = git_attributes['linguist-generated']
boolean_attribute(attr)
else
super
end
end
def vendored?
if attr = git_attributes['linguist-vendored']
return boolean_attribute(attr)
else
return super
super
end
end
@@ -41,7 +64,7 @@ module Linguist
return @language if defined?(@language)
@language = if lang = git_attributes['linguist-language']
Language.find_by_name(lang)
Language.find_by_alias(lang)
else
super
end
@@ -57,11 +80,15 @@ module Linguist
@size
end
def cleanup!
@data.clear if @data
end
protected
# Returns true if the attribute is present and not the string "false".
def boolean_attribute(attr)
attr != "false"
def boolean_attribute(attribute)
attribute != "false"
end
def load_blob!

View File

@@ -3,27 +3,27 @@
# This file should only be edited by GitHub staff
- ActionScript
- Bash
- C
- C#
- C++
- CSS
- Clojure
- CoffeeScript
- Common Lisp
- Diff
- Emacs Lisp
- Erlang
- Go
- HTML
- Haskell
- Java
- JavaScript
- Lua
- Matlab
- Objective-C
- PHP
- Perl
- Python
- R
- Ruby
- SQL
- Scala
- Scheme
- Shell
- Swift
- TeX
- VimL

View File

@@ -30,6 +30,9 @@ module Linguist
@repository = repo
@commit_oid = commit_oid
@old_commit_oid = nil
@old_stats = nil
raise TypeError, 'commit_oid must be a commit SHA1' unless commit_oid.is_a?(String)
end
@@ -126,12 +129,13 @@ module Linguist
end
protected
MAX_TREE_SIZE = 100_000
def compute_stats(old_commit_oid, cache = nil)
return {} if current_tree.count_recursive(MAX_TREE_SIZE) >= MAX_TREE_SIZE
old_tree = old_commit_oid && Rugged::Commit.lookup(repository, old_commit_oid).tree
read_index
diff = Rugged::Tree.diff(repository, old_tree, current_tree)
# Clear file map and fetch full diff if any .gitattributes files are changed
@@ -150,19 +154,18 @@ module Linguist
next if delta.binary
if [:added, :modified].include? delta.status
# Skip submodules
# Skip submodules and symlinks
mode = delta.new_file[:mode]
next if (mode & 040000) != 0
mode_format = (mode & 0170000)
next if mode_format == 0120000 || mode_format == 040000 || mode_format == 0160000
blob = Linguist::LazyBlob.new(repository, delta.new_file[:oid], new, mode.to_s(8))
# Skip vendored or generated blobs
next if blob.vendored? || blob.generated? || blob.language.nil?
# Only include programming languages and acceptable markup languages
if blob.language.type == :programming || Language.detectable_markup.include?(blob.language.name)
if blob.include_in_language_stats?
file_map[new] = [blob.language.group.name, blob.size]
end
blob.cleanup!
end
end

View File

@@ -6,6 +6,7 @@ end
require 'linguist/md5'
require 'linguist/classifier'
require 'linguist/shebang'
module Linguist
# Model for accessing classifier training data.
@@ -33,10 +34,6 @@ module Linguist
Dir.entries(ROOT).sort!.each do |category|
next if category == '.' || category == '..'
# Skip text and binary for now
# Possibly reconsider this later
next if category == 'Text' || category == 'Binary'
dirname = File.join(ROOT, category)
Dir.entries(dirname).each do |filename|
next if filename == '.' || filename == '..'
@@ -52,15 +49,14 @@ module Linguist
})
end
else
if File.extname(filename) == ""
raise "#{File.join(dirname, filename)} is missing an extension, maybe it belongs in filenames/ subdir"
end
path = File.join(dirname, filename)
extname = File.extname(filename)
yield({
:path => File.join(dirname, filename),
:path => path,
:language => category,
:interpreter => File.exist?(filename) ? Linguist.interpreter_from_shebang(File.read(filename)) : nil,
:extname => File.extname(filename)
:interpreter => Shebang.interpreter(File.read(path)),
:extname => extname.empty? ? nil : extname
})
end
end
@@ -112,40 +108,4 @@ module Linguist
db
end
end
# Used to retrieve the interpreter from the shebang line of a file's
# data.
def self.interpreter_from_shebang(data)
lines = data.lines.to_a
if lines.any? && (match = lines[0].match(/(.+)\n?/)) && (bang = match[0]) =~ /^#!/
bang.sub!(/^#! /, '#!')
tokens = bang.split(' ')
pieces = tokens.first.split('/')
if pieces.size > 1
script = pieces.last
else
script = pieces.first.sub('#!', '')
end
script = script == 'env' ? tokens[1] : script
# "python2.6" -> "python"
if script =~ /((?:\d+\.?)+)/
script.sub! $1, ''
end
# Check for multiline shebang hacks that call `exec`
if script == 'sh' &&
lines[0...5].any? { |l| l.match(/exec (\w+).+\$0.+\$@/) }
script = $1
end
script
else
nil
end
end
end

59
lib/linguist/shebang.rb Normal file
View File

@@ -0,0 +1,59 @@
module Linguist
class Shebang
# Public: Use shebang to detect language of the blob.
#
# blob - An object that quacks like a blob.
#
# Examples
#
# Shebang.call(FileBlob.new("path/to/file"))
#
# Returns an Array with one Language if the blob has a shebang with a valid
# interpreter, or empty if there is no shebang.
def self.call(blob, _ = nil)
Language.find_by_interpreter interpreter(blob.data)
end
# Public: Get the interpreter from the shebang
#
# Returns a String or nil
def self.interpreter(data)
shebang = data.lines.first
# First line must start with #!
return unless shebang && shebang.start_with?("#!")
s = StringScanner.new(shebang)
# There was nothing after the #!
return unless path = s.scan(/^#!\s*\S+/)
# Keep going
script = path.split('/').last
# if /usr/bin/env type shebang then walk the string
if script == 'env'
s.scan(/\s+/)
s.scan(/.*=[^\s]+\s+/) # skip over variable arguments e.g. foo=bar
script = s.scan(/\S+/)
end
# Interpreter was /usr/bin/env with no arguments
return unless script
# "python2.6" -> "python2"
script.sub!(/(\.\d+)$/, '')
# #! perl -> perl
script.sub!(/^#!\s*/, '')
# Check for multiline shebang hacks that call `exec`
if script == 'sh' &&
data.lines.first(5).any? { |l| l.match(/exec (\w+).+\$0.+\$@/) }
script = $1
end
File.basename(script)
end
end
end

View File

@@ -0,0 +1,10 @@
module Linguist
module Strategy
# Detects language based on filename and/or extension
class Filename
def self.call(blob, _)
Language.find_by_filename(blob.name.to_s)
end
end
end
end

View File

@@ -0,0 +1,41 @@
module Linguist
module Strategy
class Modeline
EMACS_MODELINE = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i
# First form vim modeline
# [text]{white}{vi:|vim:|ex:}[white]{options}
# ex: 'vim: syntax=ruby'
VIM_MODELINE_1 = /(?:vim|vi|ex):\s*(?:ft|filetype|syntax)=(\w+)\s?/i
# Second form vim modeline (compatible with some versions of Vi)
# [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
# ex: 'vim set syntax=ruby:'
VIM_MODELINE_2 = /(?:vim|vi|Vim|ex):\s*se(?:t)?.*\s(?:ft|filetype|syntax)=(\w+)\s?.*:/i
MODELINES = [EMACS_MODELINE, VIM_MODELINE_1, VIM_MODELINE_2]
# Public: Detects language based on Vim and Emacs modelines
#
# blob - An object that quacks like a blob.
#
# Examples
#
# Modeline.call(FileBlob.new("path/to/file"))
#
# Returns an Array with one Language if the blob has a Vim or Emacs modeline
# that matches a Language name or alias. Returns an empty array if no match.
def self.call(blob, _ = nil)
Array(Language.find_by_alias(modeline(blob.data)))
end
# Public: Get the modeline from the first n-lines of the file
#
# Returns a String or nil
def self.modeline(data)
match = MODELINES.map { |regex| data.match(regex) }.reject(&:nil?).first
match[1] if match
end
end
end
end

View File

@@ -22,8 +22,10 @@ module Linguist
# Start state on token, ignore anything till the next newline
SINGLE_LINE_COMMENTS = [
'//', # C
'--', # Ada, Haskell, AppleScript
'#', # Ruby
'%', # Tex
'"', # Vim
]
# Start state on opening token, ignore anything until the closing
@@ -33,7 +35,8 @@ module Linguist
['<!--', '-->'], # XML
['{-', '-}'], # Haskell
['(*', '*)'], # Coq
['"""', '"""'] # Python
['"""', '"""'], # Python
["'''", "'''"] # Python
]
START_SINGLE_LINE_COMMENT = Regexp.compile(SINGLE_LINE_COMMENTS.map { |c|
@@ -83,17 +86,17 @@ module Linguist
if s.peek(1) == "\""
s.getch
else
s.skip_until(/[^\\]"/)
s.skip_until(/(?<!\\)"/)
end
elsif s.scan(/'/)
if s.peek(1) == "'"
s.getch
else
s.skip_until(/[^\\]'/)
s.skip_until(/(?<!\\)'/)
end
# Skip number literals
elsif s.scan(/(0x)?\d(\d|\.)*/)
elsif s.scan(/(0x\h(\h|\.)*|\d(\d|\.)*)([uU][lL]{0,2}|([eE][-+]\d*)?[fFlL]*)/)
# SGML style brackets
elsif token = s.scan(/<[^\s<>][^<>]*>/)
@@ -129,6 +132,9 @@ module Linguist
# extract_shebang("#!/usr/bin/env node")
# # => "node"
#
# extract_shebang("#!/usr/bin/env A=B foo=bar awk -f")
# # => "awk"
#
# Returns String token or nil it couldn't be parsed.
def extract_shebang(data)
s = StringScanner.new(data)
@@ -137,6 +143,7 @@ module Linguist
script = path.split('/').last
if script == 'env'
s.scan(/\s+/)
s.scan(/.*=[^\s]+\s+/)
script = s.scan(/\S+/)
end
script = script[/[^\d]+/, 0] if script

View File

@@ -20,10 +20,20 @@
- ^deps/
- ^tools/
- (^|/)configure$
- (^|/)configure.ac$
- (^|/)config.guess$
- (^|/)config.sub$
# stuff autogenerated by autoconf - still C deps
- (^|/)aclocal.m4
- (^|/)libtool.m4
- (^|/)ltoptions.m4
- (^|/)ltsugar.m4
- (^|/)ltversion.m4
- (^|/)lt~obsolete.m4
# Linters
- cpplint.py
# Node dependencies
- node_modules/
@@ -32,6 +42,7 @@
# Erlang bundles
- ^rebar$
- erlang.mk
# Go dependencies
- Godeps/_workspace/
@@ -39,30 +50,34 @@
# Minified JavaScript and CSS
- (\.|-)min\.(js|css)$
# Stylesheets imported from packages
- ([^\s]*)import\.(css|less|scss|styl)$
# Bootstrap css and js
- (^|/)bootstrap([^.]*)\.(js|css)$
- (^|/)bootstrap([^.]*)\.(js|css|less|scss|styl)$
- (^|/)custom\.bootstrap([^\s]*)(js|css|less|scss|styl)$
# Font Awesome
- font-awesome.css
- (^|/)font-awesome\.(css|less|scss|styl)$
# Foundation css
- foundation.css
- (^|/)foundation\.(css|less|scss|styl)$
# Normalize.css
- normalize.css
- (^|/)normalize\.(css|less|scss|styl)$
# Bourbon SCSS
- (^|/)[Bb]ourbon/.*\.css$
- (^|/)[Bb]ourbon/.*\.scss$
# Bourbon css
- (^|/)[Bb]ourbon/.*\.(css|less|scss|styl)$
# Animate.css
- animate.css
- (^|/)animate\.(css|less|scss|styl)$
# Vendored dependencies
- third[-_]?party/
- 3rd[-_]?party/
- vendors?/
- extern(al)?/
- (^|/)[Vv]+endor/
# Debian packaging
- ^debian/
@@ -70,6 +85,9 @@
# Haxelib projects often contain a neko bytecode file named run.n
- run.n$
# Bootstrap Datepicker
- bootstrap-datepicker/
## Commonly Bundled JavaScript frameworks ##
# jQuery
@@ -80,6 +98,34 @@
- (^|/)jquery\-ui(\-\d\.\d+(\.\d+)?)?(\.\w+)?\.(js|css)$
- (^|/)jquery\.(ui|effects)\.([^.]*)\.(js|css)$
# jQuery Gantt
- jquery.fn.gantt.js
# jQuery fancyBox
- jquery.fancybox.(js|css)
# Fuel UX
- fuelux.js
# jQuery File Upload
- (^|/)jquery\.fileupload(-\w+)?\.js$
# Slick
- (^|/)slick\.\w+.js$
# Leaflet plugins
- (^|/)Leaflet\.Coordinates-\d+\.\d+\.\d+\.src\.js$
- leaflet.draw-src.js
- leaflet.draw.css
- Control.FullScreen.css
- Control.FullScreen.js
- leaflet.spin.js
- wicket-leaflet.js
# Sublime Text workspace files
- .sublime-project
- .sublime-workspace
# Prototype
- (^|/)prototype(.*)\.js$
- (^|/)effects\.js$
@@ -110,6 +156,12 @@
# MathJax
- (^|/)MathJax/
# Chart.js
- (^|/)Chart\.js$
# Codemirror
- (^|/)[Cc]ode[Mm]irror/(\d+\.\d+/)?(lib|mode|theme|addon|keymap|demo)
# SyntaxHighlighter - http://alexgorbatchev.com/
- (^|/)shBrush([^.]*)\.js$
- (^|/)shCore\.js$
@@ -133,6 +185,9 @@
## Python ##
# Sphinx
- (^|/)docs?/_?(build|themes?|templates?|static)/
# django
- (^|/)admin_media/
@@ -147,12 +202,31 @@
## Obj-C ##
# Xcode
- \.xctemplate/
- \.imageset/
# Carthage
- ^Carthage/
# Cocoapods
- ^Pods/
# Sparkle
- (^|/)Sparkle/
# Crashlytics
- Crashlytics.framework/
# Fabric
- Fabric.framework/
# git config files
- gitattributes$
- gitignore$
- gitmodules$
## Groovy ##
# Gradle
@@ -197,21 +271,9 @@
# Html5shiv
- (^|/)html5shiv\.js$
# Samples folders
- ^[Ss]amples/
# LICENSE, README, git config files
- ^COPYING$
- LICENSE$
- License$
- gitattributes$
- gitignore$
- gitmodules$
- ^README$
- ^readme$
# Test fixtures
- ^[Tt]est/fixtures/
- ^[Tt]ests?/fixtures/
- ^[Ss]pecs?/fixtures/
# PhoneGap/Cordova
- (^|/)cordova([^.]*)\.js$
@@ -223,12 +285,9 @@
# Vagrant
- ^Vagrantfile$
# .DS_Store's
# .DS_Stores
- .[Dd][Ss]_[Ss]tore$
# Mercury --use-subdirs
- Mercury/
# R packages
- ^vignettes/
- ^inst/extdata/
@@ -244,3 +303,12 @@
# ProGuard
- proguard.pro
- proguard-rules.pro
# PuPHPet
- ^puphpet/
# Android Google APIs
- (^|/)\.google_apis/
# Jenkins Pipeline
- ^Jenkinsfile$

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "3.5.2"
VERSION = "4.8.4"
end

7
package.json Normal file
View File

@@ -0,0 +1,7 @@
{
"repository": "https://github.com/github/linguist",
"dependencies": {
"season": "~>5.0"
},
"license": "MIT"
}

58
samples/AMPL/CT2.mod Normal file
View File

@@ -0,0 +1,58 @@
param num_beams; # number of beams
param num_rows >= 1, integer; # number of rows
param num_cols >= 1, integer; # number of columns
set BEAMS := 1 .. num_beams; # set of beams
set ROWS := 1 .. num_rows; # set of rows
set COLUMNS := 1 .. num_cols; # set of columns
# values for entries of each beam
param beam_values {BEAMS, ROWS, COLUMNS} >= 0;
# values of tumor
param tumor_values {ROWS, COLUMNS} >= 0;
# values of critical area
param critical_values {ROWS, COLUMNS} >= 0;
# critical maximum dosage requirement
param critical_max;
# tumor minimum dosage requirement
param tumor_min;
# dosage scalar of each beam
var X {i in BEAMS} >= 0;
# define the tumor area which includes the locations where tumor exists
set tumor_area := {k in ROWS, h in COLUMNS: tumor_values[k,h] > 0};
# define critical area
set critical_area := {k in ROWS, h in COLUMNS: critical_values[k,h] > 0};
var S {(k,h) in tumor_area} >= 0;
var T {(k,h) in critical_area} >= 0;
# maximize total dosage in tumor area
maximize total_tumor_dosage: sum {i in BEAMS} sum {(k,h) in tumor_area} X[i] * beam_values[i,k,h];
# minimize total dosage in critical area
minimize total_critical_dosage: sum {i in BEAMS} sum {(k,h) in critical_area} X[i] * beam_values[i,k,h];
# minimize total tumor slack
minimize total_tumor_slack: sum {(k,h) in tumor_area} S[k,h];
# minimize total critical area slack
minimize total_critical_slack: sum {(k,h) in critical_area} T[k,h];
# total dosage at each tumor location [k,h] should be >= min tumor dosage with slack variable
subject to tumor_limit {(k,h) in tumor_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == tumor_min - S[k,h];
# total dosage at each critical location [k,h] should be = max critical dosage with slack variable
subject to critical_limit {(k,h) in critical_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == critical_max + T[k,h];

25
samples/AMPL/toy.ampl Normal file
View File

@@ -0,0 +1,25 @@
# A toy knapsack problem from the LocalSolver docs written in AMPL.
set I;
param Value{I};
param Weight{I};
param KnapsackBound;
var Take{I} binary;
maximize TotalValue: sum{i in I} Take[i] * Value[i];
s.t. WeightLimit: sum{i in I} Take[i] * Weight[i] <= KnapsackBound;
data;
param:
I: Weight Value :=
0 10 1
1 60 10
2 30 15
3 40 40
4 30 60
5 20 90
6 20 100
7 2 15;
param KnapsackBound := 102;

View File

@@ -0,0 +1,55 @@
FORMAT: 1A
# Advanced Action API
A resource action is in fact a state transition. This API example demonstrates an action - state transition - to another resource.
## API Blueprint
+ [Previous: Resource Model](11.%20Resource%20Model.md)
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/11.%20Advanced%20Action.md)
# Tasks [/tasks/tasks{?status,priority}]
+ Parameters
+ status (string)
+ priority (number)
## List All Tasks [GET]
+ Response 200 (application/json)
[
{
"id": 123,
"name": "Exercise in gym",
"done": false,
"type": "task"
},
{
"id": 124,
"name": "Shop for groceries",
"done": true,
"type": "task"
}
]
## Retrieve Task [GET /task/{id}]
This is a state transition to another resource
+ Parameters
+ id (string)
+ Response 200 (application/json)
{
"id": 123,
"name": "Go to gym",
"done": false,
"type": "task"
}
## Delete Task [DELETE /task/{id}]
+ Parameters
+ id (string)
+ Response 204

View File

@@ -0,0 +1,39 @@
FORMAT: 1A
# Attributes API
This API example demonstrates how to describe body attributes of a request or response message.
In this case, the description is complementary (and duplicate!) to the provided JSON example in the body section. The [Advanced Attributes](09.%20Advanced%20Attributes.md) API example will demonstrate how to avoid duplicates and how to reuse attributes descriptions.
## API Blueprint
+ [Previous: Parameters](07.%20Parameters.md)
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/08.%20Attributes.md)
+ [Next: Advanced Attributes](09.%20Advanced%20Attributes.md)
# Group Coupons
## Coupon [/coupons/{id}]
A coupon contains information about a percent-off or amount-off discount you might want to apply to a customer.
### Retrieve a Coupon [GET]
Retrieves the coupon with the given ID.
+ Response 200 (application/json)
+ Attributes (object)
+ id: 250FF (string)
+ created: 1415203908 (number) - Time stamp
+ percent_off: 25 (number)
A positive integer between 1 and 100 that represents the discount the coupon will apply.
+ redeem_by (number) - Date after which the coupon can no longer be redeemed
+ Body
{
"id": "250FF",
"created": 1415203908,
"percent_off": 25,
"redeem_by:" null
}

View File

@@ -0,0 +1,18 @@
FORMAT: 1A
# The Simplest API
This is one of the simplest APIs written in the **API Blueprint**.
One plain resource combined with a method and that's it! We will explain what is going on in the next installment - [Resource and Actions](02.%20Resource%20and%20Actions.md).
**Note:** As we progress through the examples, do not also forget to view the [Raw](https://raw.github.com/apiaryio/api-blueprint/master/examples/01.%20Simplest%20API.md) code to see what is really going on in the API Blueprint, as opposed to just seeing the output of the Github Markdown parser.
Also please keep in mind that every single example in this course is a **real API Blueprint** and as such you can **parse** it with the [API Blueprint parser](https://github.com/apiaryio/drafter) or one of its [bindings](https://github.com/apiaryio/drafter#bindings).
## API Blueprint
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/01.%20Simplest%20API.md)
+ [Next: Resource and Actions](02.%20Resource%20and%20Actions.md)
# GET /message
+ Response 200 (text/plain)
Hello World!

View File

@@ -1,215 +0,0 @@
%{
#include "./../ATEXT/atextfun.hats"
%}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>EFFECTIVATS-DiningPhil2</title>
#patscode_style()
</head>
<body>
<h1>
Effective ATS: Dining Philosophers
</h1>
In this article, I present an implementation of a slight variant of the
famous problem of 5-Dining-Philosophers by Dijkstra that makes simple but
convincing use of linear types.
<h2>
The Original Problem
</h2>
There are five philosophers sitting around a table and there are also 5
forks placed on the table such that each fork is located between the left
hand of a philosopher and the right hand of another philosopher. Each
philosopher does the following routine repeatedly: thinking and dining. In
order to dine, a philosopher needs to first acquire two forks: one located
on his left-hand side and the other on his right-hand side. After
finishing dining, a philosopher puts the two acquired forks onto the table:
one on his left-hand side and the other on his right-hand side.
<h2>
A Variant of the Original Problem
</h2>
The following twist is added to the original version:
<p>
After a fork is used, it becomes a "dirty" fork and needs to be put in a
tray for dirty forks. There is a cleaner who cleans dirty forks and then
puts them back on the table.
<h2>
Channels for Communication
</h2>
A channel is just a shared queue of fixed capacity. The following two
functions are for inserting an element into and taking an element out of a
given channel:
<pre
class="patsyntax">
#pats2xhtml_sats("\
fun{a:vt0p} channel_insert (channel (a), a): void
fun{a:vt0p} channel_takeout (chan: channel (a)): (a)
")</pre>
If [channel_insert] is called on a channel that is full, then the caller is
blocked until an element is taken out of the channel. If [channel_takeout]
is called on a channel that is empty, then the caller is blocked until an
element is inserted into the channel.
<h2>
A Channel for Each Fork
</h2>
Forks are resources given a linear type. Each fork is initially stored in a
channel, which can be obtained by calling the following function:
<pre
class="patsyntax">
#pats2xhtml_sats("\
fun fork_changet (n: nphil): channel(fork)
")</pre>
where the type [nphil] is defined to be [natLt(5)] (for natural numbers
less than 5). The channels for storing forks are chosen to be of capacity
2. The reason that channels of capacity 2 are chosen to store at most one
element (in each of them) is to guarantee that these channels can never be
full (so that there is no attempt made to send signals to awake callers
supposedly being blocked due to channels being full).
<h2>
A Channel for the Fork Tray
</h2>
A tray for storing "dirty" forks is also a channel, which can be obtained
by calling the following function:
<pre
class="patsyntax">
#pats2xhtml_sats("\
fun forktray_changet ((*void*)): channel(fork)
")</pre>
The capacity chosen for the channel is 6 (instead of 5) so that it can
never become full (as there are only 5 forks in total).
<h2>
Philosopher Loop
</h2>
Each philosopher is implemented as a loop:
<pre
class="patsyntax">
#pats2xhtml_dats('\
implement
phil_loop (n) = let
//
val () = phil_think (n)
//
val nl = phil_left (n) // = n
val nr = phil_right (n) // = (n+1) % 5
//
val ch_lfork = fork_changet (nl)
val ch_rfork = fork_changet (nr)
//
val lf = channel_takeout (ch_lfork)
val () = println! ("phil_loop(", n, ") picks left fork")
//
val () = randsleep (2) // sleep up to 2 seconds
//
val rf = channel_takeout (ch_rfork)
val () = println! ("phil_loop(", n, ") picks right fork")
//
val () = phil_dine (n, lf, rf)
//
val ch_forktray = forktray_changet ()
val () = channel_insert (ch_forktray, lf) // left fork to dirty tray
val () = channel_insert (ch_forktray, rf) // right fork to dirty tray
//
in
phil_loop (n)
end // end of [phil_loop]
')</pre>
It should be straighforward to follow the code for [phil_loop].
<h2>
Fork Cleaner Loop
</h2>
A cleaner is implemented as a loop:
<pre
class="patsyntax">
#pats2xhtml_dats('\
implement
cleaner_loop () = let
//
val ch = forktray_changet ()
val f0 = channel_takeout (ch) // [f0] is dirty
//
val () = cleaner_wash (f0) // washes dirty [f0]
val () = cleaner_return (f0) // puts back cleaned [f0]
//
in
cleaner_loop ()
end // end of [cleaner_loop]
')</pre>
The function [cleaner_return] first finds out the number of a given fork
and then uses the number to locate the channel for storing the fork. Its
actual implementation is given as follows:
<pre
class="patsyntax">
#pats2xhtml_dats('\
implement
cleaner_return (f) =
{
val n = fork_get_num (f)
val ch = fork_changet (n)
val () = channel_insert (ch, f)
}
')</pre>
It should now be straighforward to follow the code for [cleaner_loop].
<h2>
Testing
</h2>
The entire code of this implementation is stored in the following files:
<pre>
DiningPhil2.sats
DiningPhil2.dats
DiningPhil2_fork.dats
DiningPhil2_thread.dats
</pre>
There is also a Makefile available for compiling the ATS source code into
an excutable for testing. One should be able to encounter a deadlock after
running the simulation for a while.
<hr size="2">
This article is written by <a href="http://www.cs.bu.edu/~hwxi/">Hongwei Xi</a>.
</body>
</html>
%{
implement main () = fprint_filsub (stdout_ref, "main_atxt.txt")
%}

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project name="WebBuild">
<!-- generate timestamps -->
<tstamp />
<!-- Debugging Macro -->
<import file="echopath.xml" />
<!-- JS build files macro -->
<import file="rhinoscript.xml" />
<!-- Component Build Files -->
<import file="setup.xml" />
<import file="clean.xml" />
<import file="copy.xml" />
<import file="file.transform.xml" />
<import file="external.tools.xml" />
<import file="rename.xml" />
<import file="js.xml" />
<import file="css.xml" />
<import file="img.xml" />
<import file="png8.xml" />
<import file="yui.xml" />
<import file="cdn.xml" />
<import file="datauri.xml" />
<import file="devlive.xml" />
<!-- This dirname is the only complete path we know for sure, everything builds off of it -->
<dirname property="dir.build" file="${ant.file.WebBuild}" />
<!-- get name for newly built folder -->
<basename property="app.name" file="${basedir}" />
<!-- read global properties file -->
<property file="${dir.build}\build.properties" />
<!-- Build Directories -->
<property name="dir.build.js" location="${dir.build}/js" />
<!-- App Directories -->
<property name="dir.app" location="${dir.result}/${app.name}" />
<property name="dir.app.temp" location="${dir.temp}/${app.name}" />
<property name="dir.app.files" location="${dir.app.temp}/${dir.files}" />
<!-- Files -->
<property name="mapping.js" location="${dir.app.temp}/${mapping.file.js}" />
<property name="mapping.css" location="${dir.app.temp}/${mapping.file.css}" />
<property name="mapping.img" location="${dir.app.temp}/${mapping.file.img}" />
<property name="mapping.swf" location="${dir.app.temp}/${mapping.file.swf}" />
<property name="mapping.fonts" location="${dir.app.temp}/${mapping.file.fonts}" />
<!-- Tool Directories -->
<property name="dir.bin" location="${dir.build}/Bin" />
<property name="dir.jar" location="${dir.bin}/jar" />
<!-- Tool Files -->
<property name="tools.compressor" location="${dir.jar}/${tools.file.compressor}" />
<property name="tools.cssembed" location="${dir.jar}/${tools.file.cssembed}" />
<property name="tools.filetransform" location="${dir.jar}/${tools.file.filetransform}" />
<property name="tools.optipng" location="${dir.bin}/${tools.file.optipng}" />
<property name="tools.jpegtran" location="${dir.bin}/${tools.file.jpegtran}" />
<!-- BUILD TARGETS -->
<!-- low level utility build targets -->
<!-- Build the tools -->
<target name="-setup.build.tools"
depends="-define.filetransform, -define.cssembed, -define.yuicompressor, -define.jsclasspath"
/>
<!-- set up filesystem properties -->
<target
name="-setup"
depends="-setup.mode, -setup.conditions, -setup.js, -setup.css, -setup.swf, -setup.img, -setup.fonts, -setup.yui"
/>
<!-- utility-ish targets -->
<target name="copy" depends="clean, tools, -copy" />
<target name="tools" depends="-setup.build.tools" />
<target name="finalize" depends="copy, -finalize" />
<target name="-prepare" depends="copy, -setup" />
<!-- individual component build targets (empty descriptions are to make sure they show in "ant -p") -->
<target name="devlive" depends="-prepare, -devlive" description="" />
<target name="js" depends="-prepare, -js" description="" />
<target name="css" depends="-prepare, -css" description="" />
<target name="rename" depends="-prepare, -rename" description="" />
<target name="yui" depends="-prepare, rename, -yui" description="" />
<target name="cdn" depends="-prepare, -cdn" description="" />
<!-- high level build targets (Excluding of images is on purpose here, it's slow) -->
<target name="core"
depends="devlive, js, css, cdn, rename, yui, -js.inline"
description="Core build work"
/>
<target name="prod"
depends="core, finalize"
description="Full Production Build"
/>
<!-- debug target -->
<target name="debug" depends="-setup">
<echoproperties/>
</target>
</project>

View File

@@ -0,0 +1 @@
ant.xml

View File

@@ -0,0 +1,17 @@
#######################
# HOSTNAME
######################
<VirtualHost 127.0.0.1:PORT>
ServerAdmin patrick@heysparkbox.com
DocumentRoot "/var/www/HOSTNAME"
ServerName HOSTNAME
<Directory "/var/www/HOSTNAME">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.php
</Directory>
</VirtualHost>

View File

@@ -1,6 +1,9 @@
AsciiDoc Home Page
==================
Title
-----
Example Articles
~~~~~~~~~~~~~~~~
- Item 1

2841
samples/Assembly/forth.nasm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,245 @@
push r2
dint
nop
bis #MPYDLYWRTEN,&MPY32CTL0
bic #MPYDLY32,&MPY32CTL0
mov #SUMEXT,r13
clr r12
mov @r15+,r4
mov @r15+,r5
mov @r15+,r6
mov @r15+,r7
mov @r15+,r8
mov @r15+,r9
mov @r15+,r10
mov @r15+,r11
sub #2*8,r15
/* SELF_STEP_FIRST */
mov r4,&MPY32L
mov r5,&MPY32H
mov r4,&OP2L
mov r5,&OP2H
/* COLUMN_END */
mov &RES0,2*0(r14)
mov &RES1,2*(0+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
/* STEP_1 */
mov r4,&MAC32L
mov r5,&MAC32H
mov r6,&OP2L
mov r7,&OP2H
add &SUMEXT,r12
mov r6,&OP2L
mov r7,&OP2H
/* COLUMN_END */
mov &RES0,2*2(r14)
add @r13,r12
mov &RES1,2*(2+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* STEP_1 */
mov r4,&MAC32L
mov r5,&MAC32H
mov r8,&OP2L
mov r9,&OP2H
add &SUMEXT,r12
mov r8,&OP2L
mov r9,&OP2H
/* SELF_STEP */
mov r6,&MAC32L
mov r7,&MAC32H
add @r13,r12
mov r6,&OP2L
mov r7,&OP2H
/* COLUMN_END */
mov &RES0,2*4(r14)
add @r13,r12
mov &RES1,2*(4+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* STEP_1 */
mov r4,&MAC32L
mov r5,&MAC32H
mov r10,&OP2L
mov r11,&OP2H
add &SUMEXT,r12
mov r10,&OP2L
mov r11,&OP2H
/* STEP_2MORE */
mov r6,&MAC32L
mov r7,&MAC32H
add @r13,r12
mov r8,&OP2L
mov r9,&OP2H
add &SUMEXT,r12
mov r8,&OP2L
mov r9,&OP2H
/* COLUMN_END */
mov &RES0,2*6(r14)
add @r13,r12
mov &RES1,2*(6+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* STEP_1 */
mov r4,&MAC32L
mov r5,&MAC32H
mov 2*8(r15),&OP2L
mov 2*9(r15),&OP2H
add &SUMEXT,r12
mov 2*8(r15),&OP2L
mov 2*9(r15),&OP2H
/* STEP_2MORE */
mov r6,&MAC32L
mov r7,&MAC32H
add @r13,r12
mov r10,&OP2L
mov r11,&OP2H
add &SUMEXT,r12
mov r10,&OP2L
mov r11,&OP2H
/* SELF_STEP */
mov r8,&MAC32L
mov r9,&MAC32H
add @r13,r12
mov r8,&OP2L
mov r9,&OP2H
/* COLUMN_END */
mov &RES0,2*8(r14)
add @r13,r12
mov &RES1,2*(8+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
mov 2*8(r15),r4
mov 2*(8+1)(r15),r5
/* STEP_1 */
mov r6,&MAC32L
mov r7,&MAC32H
mov r4,&OP2L
mov r5,&OP2H
add &SUMEXT,r12
mov r4,&OP2L
mov r5,&OP2H
/* STEP_2MORE */
mov r8,&MAC32L
mov r9,&MAC32H
add @r13,r12
mov r10,&OP2L
mov r11,&OP2H
add &SUMEXT,r12
mov r10,&OP2L
mov r11,&OP2H
/* COLUMN_END */
mov &RES0,2*10(r14)
add @r13,r12
mov &RES1,2*(10+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* STEP_1 */
mov r8,&MAC32L
mov r9,&MAC32H
mov r4,&OP2L
mov r5,&OP2H
add &SUMEXT,r12
mov r4,&OP2L
mov r5,&OP2H
/* SELF_STEP */
mov r10,&MAC32L
mov r11,&MAC32H
add @r13,r12
mov r10,&OP2L
mov r11,&OP2H
/* COLUMN_END */
mov &RES0,2*12(r14)
add @r13,r12
mov &RES1,2*(12+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* STEP_1 */
mov r10,&MAC32L
mov r11,&MAC32H
mov r4,&OP2L
mov r5,&OP2H
add &SUMEXT,r12
mov r4,&OP2L
mov r5,&OP2H
/* COLUMN_END */
mov &RES0,2*14(r14)
add @r13,r12
mov &RES1,2*(14+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* SELF_STEP_1 */
mov r4,&MAC32L
mov r5,&MAC32H
mov r4,&OP2L
mov r5,&OP2H
/* COLUMN_END */
mov &RES0,2*16(r14)
add @r13,r12
mov &RES1,2*(16+1)(r14)
mov &RES2,&RES0
mov &RES3,&RES1
mov r12,&RES2
clr &RES3
clr r12
/* END */
mov &RES0,2*18(r14)
mov &RES1,2*(18+1)(r14)
pop r2
eint

170
samples/Assembly/lib.inc Normal file
View File

@@ -0,0 +1,170 @@
; ------------------------------------------------------------------------
; 显示 AL 中的数字
; ------------------------------------------------------------------------
DispAL:
push ecx
push edx
push edi
mov edi, [dwDispPos]
mov ah, 0Fh ; 0000b: 黑底 1111b: 白字
mov dl, al
shr al, 4
mov ecx, 2
.begin:
and al, 01111b
cmp al, 9
ja .1
add al, '0'
jmp .2
.1:
sub al, 0Ah
add al, 'A'
.2:
mov [gs:edi], ax
add edi, 2
mov al, dl
loop .begin
;add edi, 2
mov [dwDispPos], edi
pop edi
pop edx
pop ecx
ret
; DispAL 结束-------------------------------------------------------------
; ------------------------------------------------------------------------
; 显示一个整形数
; ------------------------------------------------------------------------
DispInt:
mov eax, [esp + 4]
shr eax, 24
call DispAL
mov eax, [esp + 4]
shr eax, 16
call DispAL
mov eax, [esp + 4]
shr eax, 8
call DispAL
mov eax, [esp + 4]
call DispAL
mov ah, 07h ; 0000b: 黑底 0111b: 灰字
mov al, 'h'
push edi
mov edi, [dwDispPos]
mov [gs:edi], ax
add edi, 4
mov [dwDispPos], edi
pop edi
ret
; DispInt 结束------------------------------------------------------------
; ------------------------------------------------------------------------
; 显示一个字符串
; ------------------------------------------------------------------------
DispStr:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp + 8] ; pszInfo
mov edi, [dwDispPos]
mov ah, 0Fh
.1:
lodsb
test al, al
jz .2
cmp al, 0Ah ; 是回车吗?
jnz .3
push eax
mov eax, edi
mov bl, 160
div bl
and eax, 0FFh
inc eax
mov bl, 160
mul bl
mov edi, eax
pop eax
jmp .1
.3:
mov [gs:edi], ax
add edi, 2
jmp .1
.2:
mov [dwDispPos], edi
pop edi
pop esi
pop ebx
pop ebp
ret
; DispStr 结束------------------------------------------------------------
; ------------------------------------------------------------------------
; 换行
; ------------------------------------------------------------------------
DispReturn:
push szReturn
call DispStr ;printf("\n");
add esp, 4
ret
; DispReturn 结束---------------------------------------------------------
; ------------------------------------------------------------------------
; 内存拷贝,仿 memcpy
; ------------------------------------------------------------------------
; void* MemCpy(void* es:pDest, void* ds:pSrc, int iSize);
; ------------------------------------------------------------------------
MemCpy:
push ebp
mov ebp, esp
push esi
push edi
push ecx
mov edi, [ebp + 8] ; Destination
mov esi, [ebp + 12] ; Source
mov ecx, [ebp + 16] ; Counter
.1:
cmp ecx, 0 ; 判断计数器
jz .2 ; 计数器为零时跳出
mov al, [ds:esi] ;
inc esi ;
; 逐字节移动
mov byte [es:edi], al ;
inc edi ;
dec ecx ; 计数器减一
jmp .1 ; 循环
.2:
mov eax, [ebp + 8] ; 返回值
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret ; 函数结束,返回
; MemCpy 结束-------------------------------------------------------------

321
samples/Assembly/macros.inc Normal file
View File

@@ -0,0 +1,321 @@
BLARGG_MACROS_INCLUDED = 1
; Allows extra error checking with modified version
; of ca65. Otherwise acts like a constant of 0.
ADDR = 0
; Switches to Segment and places Line there.
; Line can be an .align directive, .res, .byte, etc.
; Examples:
; seg_data BSS, .align 256
; seg_data RODATA, {message: .byte "Test",0}
.macro seg_data Segment, Line
.pushseg
.segment .string(Segment)
Line
.popseg
.endmacro
; Reserves Size bytes in Segment for Name.
; If Size is omitted, reserves one byte.
.macro seg_res Segment, Name, Size
.ifblank Size
seg_data Segment, Name: .res 1
.else
seg_data Segment, Name: .res Size
.endif
.endmacro
; Shortcuts for zeropage, bss, and stack
.define zp_res seg_res ZEROPAGE,
.define nv_res seg_res NVRAM,
.define bss_res seg_res BSS,
.define sp_res seg_res STACK,
.define zp_byte zp_res
; Copies byte from Src to Addr. If Src begins with #,
; it sets Addr to the immediate value.
; Out: A = byte copied
; Preserved: X, Y
.macro mov Addr, Src
lda Src
sta Addr
.endmacro
; Copies word from Src to Addr. If Src begins with #,
; it sets Addr the immediate value.
; Out: A = high byte of word
; Preserved: X, Y
.macro movw Addr, Src
.if .match( .left( 1, {Src} ), # )
lda #<(.right( .tcount( {Src} )-1, {Src} ))
sta Addr
lda #>(.right( .tcount( {Src} )-1, {Src} ))
sta 1+(Addr)
.else
lda Src
sta Addr
lda 1+(Src)
sta 1+(Addr)
.endif
.endmacro
; Increments 16-bit value at Addr.
; Out: EQ/NE based on resulting 16-bit value
; Preserved: A, X, Y
.macro incw Addr
.local @Skip
inc Addr
bne @Skip
inc 1+(Addr)
@Skip:
.endmacro
; Adds Src to word at Addr.
; Out: A = high byte of result, carry set appropriately
; Preserved: X, Y
.macro addw Addr, Src
.if .match( .left( 1, {Src} ), # )
addw_ Addr,(.right( .tcount( {Src} )-1, {Src} ))
.else
lda Addr
clc
adc Src
sta Addr
lda 1+(Addr)
adc 1+(Src)
sta 1+(Addr)
.endif
.endmacro
.macro addw_ Addr, Imm
lda Addr
clc
adc #<Imm
sta Addr
;.if (Imm >> 8) <> 0
lda 1+(Addr)
adc #>Imm
sta 1+(Addr)
;.else
; .local @Skip
; bcc @Skip
; inc 1+(Addr)
;@Skip:
;.endif
.endmacro
; Splits list of words into tables of low and high bytes
; Example: split_words foo, {$1234, $5678}
; expands to:
; foo_l: $34, $78
; foo_h: $12, $56
; foo_count = 2
.macro split_words Label, Words
.ident (.concat (.string(Label), "_l")): .lobytes Words
.ident (.concat (.string(Label), "_h")): .hibytes Words
.ident (.concat (.string(Label), "_count")) = * - .ident (.concat (.string(Label), "_h"))
.endmacro
.macro SELECT Bool, True, False, Extra
.ifndef Bool
False Extra
.elseif Bool <> 0
True Extra
.else
False Extra
.endif
.endmacro
.macro DEFAULT Name, Value
.ifndef Name
Name = Value
.endif
.endmacro
.ifp02
; 6502 doesn't define these alternate names
.define blt bcc
.define bge bcs
.endif
.define jlt jcc
.define jge jcs
; Jxx Target = Bxx Target, except it can go farther than
; 128 bytes. Implemented via branch around a JMP.
; Don't use ca65's longbranch, because they fail for @labels
;.macpack longbranch
.macro jeq Target
bne *+5
jmp Target
.endmacro
.macro jne Target
beq *+5
jmp Target
.endmacro
.macro jmi Target
bpl *+5
jmp Target
.endmacro
.macro jpl Target
bmi *+5
jmp Target
.endmacro
.macro jcs Target
bcc *+5
jmp Target
.endmacro
.macro jcc Target
bcs *+5
jmp Target
.endmacro
.macro jvs Target
bvc *+5
jmp Target
.endmacro
.macro jvc Target
bvs *+5
jmp Target
.endmacro
; Passes constant data to routine in addr
; Preserved: A, X, Y
.macro jsr_with_addr routine,data
.local Addr
pha
lda #<Addr
sta addr
lda #>Addr
sta addr+1
pla
jsr routine
seg_data RODATA,{Addr: data}
.endmacro
; Calls routine multiple times, with A having the
; value 'start' the first time, 'start+step' the
; second time, up to 'end' for the last time.
.macro for_loop routine,start,end,step
.local @for_loop
lda #start
@for_loop:
pha
jsr routine
pla
clc
adc #step
cmp #<((end)+(step))
bne @for_loop
.endmacro
; Calls routine n times. The value of A in the routine
; counts from 0 to n-1.
.macro loop_n_times routine,n
for_loop routine,0,n-1,+1
.endmacro
; Same as for_loop, except uses 16-bit value in YX.
; -256 <= step <= 255
.macro for_loop16 routine,start,end,step
.if (step) < -256 || (step) > 255
.error "Step must be within -256 to 255"
.endif
.local @for_loop_skip
.local @for_loop
ldy #>(start)
lda #<(start)
@for_loop:
tax
pha
tya
pha
jsr routine
pla
tay
pla
clc
adc #step
.if (step) > 0
bcc @for_loop_skip
iny
.else
bcs @for_loop_skip
dey
.endif
@for_loop_skip:
cmp #<((end)+(step))
bne @for_loop
cpy #>((end)+(step))
bne @for_loop
.endmacro
; Stores byte at addr
; Preserved: X, Y
.macro setb addr, byte
lda #byte
sta addr
.endmacro
; Stores word at addr
; Preserved: X, Y
.macro setw addr, word
lda #<(word)
sta addr
lda #>(word)
sta addr+1
.endmacro
; Loads XY with 16-bit immediate or value at address
.macro ldxy Arg
.if .match( .left( 1, {Arg} ), # )
ldy #<(.right( .tcount( {Arg} )-1, {Arg} ))
ldx #>(.right( .tcount( {Arg} )-1, {Arg} ))
.else
ldy (Arg)
ldx (Arg)+1
.endif
.endmacro
; Increments XY as 16-bit register, in CONSTANT time.
; Z flag set based on entire result.
; Preserved: A
; Time: 7 clocks
.macro inxy
iny ; 2
beq *+4 ; 3
; -1
bne *+3 ; 3
; -1
inx ; 2
.endmacro
; Negates A and adds it to operand
.macro subaf Operand
eor #$FF
sec
adc Operand
.endmacro
; Initializes CPU registers to reasonable values
; Preserved: A, Y
.macro init_cpu_regs
sei
cld ; unnecessary on NES, but might help on clone
ldx #$FF
txs
.ifndef BUILD_NSF
inx
stx PPUCTRL
.endif
.endmacro

View File

@@ -0,0 +1,25 @@
include gstreamer1.0-libav.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
file://gst-libs/ext/libav/LICENSE;md5=23a54f59b82572c203a559346e89ed57 \
file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
SRC_URI = " \
http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \
file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
"
SRC_URI[md5sum] = "86540dee14d31daf976eb2713f2294f3"
SRC_URI[sha256sum] = "585eb7971006100ad771a852e07bd2f3e23bcc6eb0b1253a40b5a0e40e4e7418"
LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \
--cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \
--ranlib='${RANLIB}' \
${GSTREAMER_1_0_DEBUG}"
S = "${WORKDIR}/gst-libav-${PV}"

View File

@@ -0,0 +1,13 @@
require qt5-git.inc
require ${PN}.inc
do_install_append() {
# for modules which are still using syncqt and call qtPrepareTool(QMAKE_SYNCQT, syncqt)
# e.g. qt3d, qtwayland
ln -sf syncqt.pl ${D}${OE_QMAKE_PATH_QT_BINS}/syncqt
}
QT_MODULE_BRANCH = "release"
# v5.2.1 + 168 commits
SRCREV = "08cbbde61778276ccdda73d89fd64d02c623779f"

195
samples/Brainfuck/factor.b Normal file
View File

@@ -0,0 +1,195 @@
* factor an arbitrarily large positive integer
*
* Copyright (C) 1999 by Brian Raiter
* under the GNU General Public License
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-
*
* read in the number
*
<<<<<<<<<+
[-[>>>>>>>>>>][-]<<<<<<<<<<[[->>>>>>>>>>+<<<<<<<<<<]<<<<<<<<<<]
>>>>>>>>>>,----------]
>>>>>>>>>>[------------------------------------->>>>>>>>>->]
<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
*
* display the number and initialize the loop variable to two
*
[>++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------<<<<<<<<<<<]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------------------------.[-]
>>>>>>>>>>>>++<<<<+
*
* the main loop
*
[ [-]>>
*
* make copies of the number and the loop variable
*
[>>>>[-]>[-]>[-]>[-]
>[-]>[-]
<<<<<<<[->>>+>+<<<<]>>>>>>>>]
<<<<<<<<<<[>>>>>>[-<<<<+>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>[->>>+>>+<<<<<]>>>>>>>>>]
<<<<<<<<<<[>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
*
* divide the number by the loop variable
*
[>>>[-]>>>[-]>[-]>>>] initialize
<<<<<<<<<<[<<<<<<<<<<]
>>>>>>>>>[-]>>>>>>>+<<<<<<<<[+]+
[ ->> double divisor until above dividend
[>>>>>>[->++<]>>>>]<<<<<<<<<<
[>>>>>>>>[-]>[-]
<<<<[->>>++<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
[->--------->>>>>>>>>+<<<<<<<<<<[->+<]]]]]]]]]]]>>]
<<<<<<<<<<[>>>>>>>>>[-<+<<<+>>>>]<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>
[-<--------->>>>>>>>>>>+<<<<<<<<<<[-<+>]]]]]]]]]]]>>>]
<<<<<<<<<<
[>>>>[->>>+>>+<<<<<]<<<<<<<<<<<<<<]
>>>>>>>>>>[>>>>>>>[-<<<+>>>]>>>]<<<<<<<<<<
[>>>>>>>>[->-<]>
[<<<<<<<<<[<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<]
>>>>>>>>>>>>>>>>>>>]
<<<<<<<<<<<<<<<<<<<]
>>>>>>>>>[+[+[+[+[+[+[+[+[+[+[[-]<+>]]]]]]]]]]]<
]
>>>>>>>>
[ subtract divisor from dividend
<<<<<<
[>>>>>>>>[-]>[-]<<<<<[->>>+>+<<<<]>>>>>>]<<<<<<<<<<
[>>>>>>>>[-<<<<+>>>>]<<<[->>>+>+<<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>>[-<<<<+>>>>]>]<<<<<<<<<<
[>>>>>>>>[-<->]<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
[++++++++++[+>-<]>>>>>>>>>>-<<<<<<<<<<]]]]]]]]]]]>>>]
>>>>>>>+
[ if difference is nonnegative then
[-]<<<<<<<<<<<<<<<<< replace dividend and increment quotient
[>>>>[-]>>>>[-<<<<+>>>>]<<[->>+<<]<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[->+<<<+>>]>>]<<<<<<<<<<
[>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>>[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<--------->>>>>>>>>>>>>>>>+<<<<<<<<<<
[-<<<<<<+>>>>>>]]]]]]]]]]]>]
>>>>>>>
] halve divisor and loop until zero
<<<<<<<<<<<<<<<<<[<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[-]<<[->+<]<[->>>+<<<]>>>>>]<<<<<<<<<<
[+>>>>>>>[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>]]]]]]]]]<<<<<<<
[->>>>>>>+<<<<<<<]-<<<<<<<<<<]
>>>>>>>
[-<<<<<<<<<<<+>>>>>>>>>>>]
>>>[>>>>>>>[-<<<<<<<<<<<+++++>>>>>>>>>>>]>>>]<<<<<<<<<<
[+>>>>>>>>[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>]]]]]]]]]<<<<<<<<
[->>>>>>>>+<<<<<<<<]-<<<<<<<<<<]
>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>
[>>>>>>>>[-<<<<<<<<<<<<<+++++>>>>>>>>>>>>>]>>]<<<<<<<<<<
[<<<<<<<<<<]>>>>>>>>>>
>>>>>>
]
<<<<<<
*
* make copies of the loop variable and the quotient
*
[>>>[->>>>+>+<<<<<]>>>>>>>]
<<<<<<<<<<
[>>>>>>>[-<<<<+>>>>]<<<<<[->>>>>+>>+<<<<<<<]<<<<<<<<<<<<]
>>>>>>>>>>[>>>>>>>[-<<<<<+>>>>>]>>>]<<<<<<<<<<
*
* break out of the loop if the quotient is larger than the loop variable
*
[>>>>>>>>>[-<->]<
[<<<<<<<<
[<<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
>>>>>>>>[>-<[+[+[+[+[+[+[+[+[+[[-]>+<]]]]]]]]]]]>+
[ [-]
*
* partially increment the loop variable
*
<[-]+>>>>+>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<
*
* examine the remainder for nonzero digits
*
[<<<<<<[<<<<[<<<<<<<<<<]>>>>+<<<<<<<<<<]<<<<]
>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<[<<<<<<<<<<]
>>>>-
[ [+]
*
* decrement the loop variable and replace the number with the quotient
*
>>>>>>>>-<<[>[-]>>[-<<+>>]>>>>>>>]<<<<<<<<<<
*
* display the loop variable
*
[+>>[>>>>>>>>+>>]<<-<<<<<<<<<<]-
[>>++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------<<<<<<<<<<<<]
++++++++++++++++++++++++++++++++.[-]>>>>
]
*
* normalize the loop variable
*
>>>>>>
[>>[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>--------->>>>>+<<<<<<<<<<
[->>>>>+<<<<<]]]]]]]]]]]>>>>>>>>]
<<<<<<<<<<[>>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<<]
>>>>>>>>>
]<
]>>
*
* display the number and end
*
[>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
[>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<]
++++++++++.

View File

@@ -0,0 +1,13 @@
# Calculate and output all fibonacci numbers under 100
+++++++++++
>+>>>>++++++++++++++++++++++++++++++++++++++++++++
>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>
+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-
<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++
+++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++
++++++++++++++++++++++++++++++++++++++++++++.[-]<<
<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]

View File

@@ -0,0 +1,4 @@
// More complex version of hello world
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>
>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.

View File

@@ -0,0 +1,3 @@
// Hello World
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

View File

@@ -0,0 +1,30 @@
# ROT13 cipher
-,+[ Read first character and start outer character reading loop
-[ Skip forward if character is 0
>>++++[>++++++++<-] Set up divisor (32) for division loop
(MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
<+<-[ Set up dividend (x minus 1) and enter division loop
>+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward
<[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient
<<<<<- Decrement dividend
] End division loop
]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag
>--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag
++++++++++++<[ If flag then set up divisor (13) for second division loop
(MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
>-[>+>>] Reduce divisor; Normal case: increase remainder
>[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient
<<<<<- Decrease dividend
] End division loop
>>[<+>-] Add remainder back to divisor to get a useful 13
>[ Skip forward if quotient was 0
-[ Decrement quotient and skip forward if quotient was 1
-<<[-]>> Zero quotient and divisor if quotient was 2
]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1
]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0
] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
<[-] Clear remainder from first division if second division was skipped
<.[-] Output ROT13ed character from copy and clear it
<-,+ Read next character
] End character reading loop

View File

@@ -0,0 +1,26 @@
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("Simple")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]

View File

@@ -0,0 +1,20 @@
using System;
namespace MongoDB.Serialization.Descriptors
{
internal class BsonPropertyValue
{
public bool IsDictionary { get; private set; }
public Type Type { get; private set; }
public object Value { get; private set; }
public BsonPropertyValue(Type type, object value, bool isDictionary)
{
Type = type;
Value = value;
IsDictionary = isDictionary;
}
}
}

View File

@@ -0,0 +1,153 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Linq.Expressions;
namespace MongoDB.Linq.Expressions
{
internal class MongoExpressionVisitor : ExpressionVisitor
{
protected override Expression Visit(Expression exp)
{
if (exp == null)
return null;
switch ((MongoExpressionType)exp.NodeType)
{
case MongoExpressionType.Collection:
return VisitCollection((CollectionExpression)exp);
case MongoExpressionType.Field:
return VisitField((FieldExpression)exp);
case MongoExpressionType.Projection:
return VisitProjection((ProjectionExpression)exp);
case MongoExpressionType.Select:
return VisitSelect((SelectExpression)exp);
case MongoExpressionType.Aggregate:
return VisitAggregate((AggregateExpression)exp);
case MongoExpressionType.AggregateSubquery:
return VisitAggregateSubquery((AggregateSubqueryExpression)exp);
case MongoExpressionType.Scalar:
return VisitScalar((ScalarExpression)exp);
default:
return base.Visit(exp);
}
}
protected virtual Expression VisitAggregate(AggregateExpression aggregate)
{
var exp = Visit(aggregate.Argument);
if (exp != aggregate.Argument)
return new AggregateExpression(aggregate.Type, aggregate.AggregateType, exp, aggregate.Distinct);
return aggregate;
}
protected virtual Expression VisitAggregateSubquery(AggregateSubqueryExpression aggregateSubquery)
{
Expression e = Visit(aggregateSubquery.AggregateAsSubquery);
ScalarExpression subquery = (ScalarExpression)e;
if (subquery != aggregateSubquery.AggregateAsSubquery)
return new AggregateSubqueryExpression(aggregateSubquery.GroupByAlias, aggregateSubquery.AggregateInGroupSelect, subquery);
return aggregateSubquery;
}
protected virtual Expression VisitCollection(CollectionExpression collection)
{
return collection;
}
protected virtual Expression VisitField(FieldExpression field)
{
var e = Visit(field.Expression);
if (field.Expression != e)
field = new FieldExpression(e, field.Alias, field.Name);
return field;
}
protected virtual Expression VisitProjection(ProjectionExpression projection)
{
var source = (SelectExpression)Visit(projection.Source);
var projector = Visit(projection.Projector);
if (source != projection.Source || projector != projection.Projector)
return new ProjectionExpression(source, projector, projection.Aggregator);
return projection;
}
protected ReadOnlyCollection<OrderExpression> VisitOrderBy(ReadOnlyCollection<OrderExpression> orderBys)
{
if (orderBys != null)
{
List<OrderExpression> alternate = null;
for (int i = 0, n = orderBys.Count; i < n; i++)
{
OrderExpression expr = orderBys[i];
Expression e = this.Visit(expr.Expression);
if (alternate == null && e != expr.Expression)
alternate = orderBys.Take(i).ToList();
if (alternate != null)
alternate.Add(new OrderExpression(expr.OrderType, e));
}
if (alternate != null)
return alternate.AsReadOnly();
}
return orderBys;
}
protected virtual Expression VisitScalar(ScalarExpression scalar)
{
SelectExpression select = (SelectExpression)Visit(scalar.Select);
if (select != scalar.Select)
return new ScalarExpression(scalar.Type, select);
return scalar;
}
protected virtual Expression VisitSelect(SelectExpression select)
{
var from = VisitSource(select.From);
var where = Visit(select.Where);
var groupBy = Visit(select.GroupBy);
var orderBy = VisitOrderBy(select.OrderBy);
var skip = Visit(select.Skip);
var take = Visit(select.Take);
var fields = VisitFieldDeclarationList(select.Fields);
if (from != select.From || where != select.Where || orderBy != select.OrderBy || groupBy != select.GroupBy || skip != select.Skip || take != select.Take || fields != select.Fields)
return new SelectExpression(select.Alias, fields, from, where, orderBy, groupBy, select.IsDistinct, skip, take);
return select;
}
protected virtual Expression VisitSource(Expression source)
{
return Visit(source);
}
protected virtual Expression VisitSubquery(SubqueryExpression subquery)
{
switch ((MongoExpressionType)subquery.NodeType)
{
case MongoExpressionType.Scalar:
return VisitScalar((ScalarExpression)subquery);
}
return subquery;
}
protected virtual ReadOnlyCollection<FieldDeclaration> VisitFieldDeclarationList(ReadOnlyCollection<FieldDeclaration> fields)
{
if (fields == null)
return fields;
List<FieldDeclaration> alternate = null;
for (int i = 0, n = fields.Count; i < n; i++)
{
var f = fields[i];
var e = Visit(f.Expression);
if (f.Expression != e && alternate == null)
alternate = fields.Take(i).ToList();
if (alternate != null)
alternate.Add(new FieldDeclaration(f.Name, e));
}
if (alternate != null)
return alternate.AsReadOnly();
return fields;
}
}
}

86
samples/C#/build.cake Normal file
View File

@@ -0,0 +1,86 @@
///////////////////////////////////////////////////////////////////////////////
// ARGUMENTS
///////////////////////////////////////////////////////////////////////////////
var target = Argument<string>("target", "Default");
var configuration = Argument<string>("configuration", "Release");
///////////////////////////////////////////////////////////////////////////////
// GLOBAL VARIABLES
///////////////////////////////////////////////////////////////////////////////
var solutions = GetFiles("./**/*.sln");
var solutionPaths = solutions.Select(solution => solution.GetDirectory());
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup(() =>
{
// Executed BEFORE the first task.
Information("Running tasks...");
});
Teardown(() =>
{
// Executed AFTER the last task.
Information("Finished running tasks.");
});
///////////////////////////////////////////////////////////////////////////////
// TASK DEFINITIONS
///////////////////////////////////////////////////////////////////////////////
Task("Clean")
.Does(() =>
{
// Clean solution directories.
foreach(var path in solutionPaths)
{
Information("Cleaning {0}", path);
CleanDirectories(path + "/**/bin/" + configuration);
CleanDirectories(path + "/**/obj/" + configuration);
}
});
Task("Restore")
.Does(() =>
{
// Restore all NuGet packages.
foreach(var solution in solutions)
{
Information("Restoring {0}...", solution);
NuGetRestore(solution);
}
});
Task("Build")
.IsDependentOn("Clean")
.IsDependentOn("Restore")
.Does(() =>
{
// Build all solutions.
foreach(var solution in solutions)
{
Information("Building {0}", solution);
MSBuild(solution, settings =>
settings.SetPlatformTarget(PlatformTarget.MSIL)
.WithProperty("TreatWarningsAsErrors","true")
.WithTarget("Build")
.SetConfiguration(configuration));
}
});
///////////////////////////////////////////////////////////////////////////////
// TARGETS
///////////////////////////////////////////////////////////////////////////////
Task("Default")
.IsDependentOn("Build");
///////////////////////////////////////////////////////////////////////////////
// EXECUTION
///////////////////////////////////////////////////////////////////////////////
RunTarget(target);

86
samples/C++/16F88.h Normal file
View File

@@ -0,0 +1,86 @@
/*
* This file is part of PIC
* Copyright © 2012 Rachel Mant (dx-mon@users.sourceforge.net)
*
* PIC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PIC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
enum PIC16F88Instruction
{
ADDWF,
ANDWF,
CLRF,
CLRW,
COMF,
DECF,
DECFSZ,
INCF,
INCFSZ,
IORWF,
MOVF,
MOVWF,
NOP,
RLF,
RRF,
SUBWF,
SWAPF,
XORWF,
BCF,
BSF,
BTFSC,
BTFSS,
ADDLW,
ANDLW,
CALL,
CLRWDT,
GOTO,
IORLW,
MOVLW,
RETFIE,
RETLW,
RETURN,
SLEEP,
SUBLW,
XORLW
};
class PIC16F88
{
public:
PIC16F88(ROM *ProgramMemory);
void Step();
private:
uint8_t q;
bool nextIsNop, trapped;
Memory *memory;
ROM *program;
Stack<uint16_t, 8> *CallStack;
Register<uint16_t> *PC;
Register<> *WREG, *PCL, *STATUS, *PCLATCH;
PIC16F88Instruction inst;
uint16_t instrWord;
private:
void DecodeInstruction();
void ProcessInstruction();
uint8_t GetBank();
uint8_t GetMemoryContents(uint8_t partialAddress);
void SetMemoryContents(uint8_t partialAddress, uint8_t newVal);
void CheckZero(uint8_t value);
void StoreValue(uint8_t value, bool updateZero);
uint8_t SetCarry(bool val);
uint16_t GetPCHFinalBits();
};

View File

@@ -0,0 +1,57 @@
//===- ClasspathVMSystem/Properties.cpp -----------------------------------===//
//===--------------------- GNU classpath gnu/classpath/VMSystemProperties -===//
//
// The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <sys/utsname.h>
#include "types.h"
#include "Classpath.h"
#include "JavaArray.h"
#include "JavaClass.h"
#include "JavaObject.h"
#include "JavaThread.h"
#include "JavaUpcalls.h"
#include "Jnjvm.h"
#include "SetProperties.inc"
using namespace j3;
extern "C" {
JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
#endif
JavaObject* prop) {
llvm_gcroot(prop, 0);
BEGIN_NATIVE_EXCEPTION(0)
setProperties(prop);
END_NATIVE_EXCEPTION
}
extern "C" void Java_gnu_classpath_VMSystemProperties_postInit__Ljava_util_Properties_2(JavaObject* prop) {
llvm_gcroot(prop, 0);
BEGIN_NATIVE_EXCEPTION(0)
setCommandLineProperties(prop);
END_NATIVE_EXCEPTION
}
}

98
samples/C++/Entity.h Normal file
View File

@@ -0,0 +1,98 @@
/**
* @file Entity.h
* @page EntityPage Entity
* @brief represent an entity in the game
* @author vinz243
* @version 0.1.0
* This file represents an Entity in the game system
* This parent type is a static entity which is shown and loaded into the Physics engine but never updated
*/
#ifndef ENTITY_H
#define ENTITY_H
#include "base.h"
/// @namespace Whitedrop
namespace Whitedrop {
/** @class Entity
* This parent type is a static entity which is shown and loaded into the Physics engine but never updated
*/
class Entity {
public:
/**
* @brief Create static entity
* @details creates a static entity instance according to the mesh and the id, the position
* This needs to be attached to a World after!
* The material name is not the file name but the material name!
* @ref WorldPage
* @param mesh the name of the mesh for the object, file must be in media/meshes
* @param id an unique identifier for the object, shortest as possible
* @param dimensions an Ogre::Vector3 which contains the dimensions in meter
* @param position the Vector3 which contains it position
* @param material the material name
*/
Entity(std::string mesh, std::string id, Ogre::Vector3 dimensions, Ogre::Vector3 position, std::string material);
/**
* @brief The copy constructor
* @details A copy constr
*
* @param ref the Entity to be copied from
*/
Entity(const Entity &ref);
/**
* @brief The assignement operator
* @details
*
* @param ent the entity to be copied
*/
Entity& operator=(const Entity ent);
/**
* @brief destrctor
* @details
*/
virtual ~Entity(void);
/**
* @brief a constance type of the entity
* @details depends of the class.
* May contain STATIC, DYNAMIC or ETHERAL
*/
const std::string type = "STATIC";
/**
* @brief Attach the entity to specified sceneManager
* @details This creates the OgreEntity using sceneMgr,
* set material, create a Node with name as `<id>_n`,
* scale it to match dimensions and translate the node to pos
* @param sceneMgr the scene manager to use
*/
virtual void setup(Ogre::SceneManager* sceneMgr);
/**
* @brief the update method
* @details this method should be called on each world update.
* Even though the method is necessary declared, the main impl of
* a static entity should be empty since it is not updated by physics
* However, a Dynamic entity should implement this function in order to:
* 1) Get from the physics engine the actor position in the physic world
* 2) Update the OgreEntity position and rotation from the previous actor
* @return whether it was successful or not, if falsey engine should stop
*/
virtual bool update(void);
protected:
std::string mMesh = "cube.mesh";
std::string mId;
std::string mMaterial;
Ogre::Vector3 mDimensions;
Ogre::Vector3 mPosition;
Ogre::Entity* mEntity;
Ogre::SceneNode* mNode;
};
}
#endif

32
samples/C++/Memory16F88.h Normal file
View File

@@ -0,0 +1,32 @@
/*
* This file is part of PIC
* Copyright © 2012 Rachel Mant (dx-mon@users.sourceforge.net)
*
* PIC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PIC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Memory.h"
class Memory16F88 : public Memory
{
private:
uint8_t memory[512];
std::map<uint32_t, MemoryLocation *> memoryMap;
public:
Memory16F88();
uint8_t Dereference(uint8_t bank, uint8_t partialAddress);
uint8_t *Reference(uint8_t bank, uint8_t partialAddress);
uint8_t *operator [](uint32_t ref);
};

View File

@@ -0,0 +1,76 @@
/*
* This file is part of IRCBot
* Copyright © 2014 Rachel Mant (dx-mon@users.sourceforge.net)
*
* IRCBot is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* IRCBot is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __THREADED_QUEUE_H__
#define __THREADED_QUEUE_H__
#include <pthread.h>
#include <queue>
template<class T>
class ThreadedQueue : public std::queue<T>
{
private:
pthread_mutex_t queueMutex;
pthread_cond_t queueCond;
public:
ThreadedQueue()
{
pthread_mutexattr_t mutexAttrs;
pthread_condattr_t condAttrs;
pthread_mutexattr_init(&mutexAttrs);
pthread_mutexattr_settype(&mutexAttrs, PTHREAD_MUTEX_ERRORCHECK);
pthread_mutex_init(&queueMutex, &mutexAttrs);
pthread_mutexattr_destroy(&mutexAttrs);
pthread_condattr_init(&condAttrs);
pthread_condattr_setpshared(&condAttrs, PTHREAD_PROCESS_PRIVATE);
pthread_cond_init(&queueCond, &condAttrs);
pthread_condattr_destroy(&condAttrs);
}
~ThreadedQueue()
{
pthread_cond_destroy(&queueCond);
pthread_mutex_destroy(&queueMutex);
}
void waitItems()
{
pthread_mutex_lock(&queueMutex);
pthread_cond_wait(&queueCond, &queueMutex);
pthread_mutex_unlock(&queueMutex);
}
void signalItems()
{
pthread_mutex_lock(&queueMutex);
pthread_cond_broadcast(&queueCond);
pthread_mutex_unlock(&queueMutex);
}
void push(T item)
{
std::queue<T>::push(item);
signalItems();
}
};
#endif /*__THREADED_QUEUE_H__*/

2764
samples/C++/initClasses.inc Normal file

File diff suppressed because it is too large Load Diff

34
samples/C++/instances.inc Normal file
View File

@@ -0,0 +1,34 @@
#include "QPBO.h"
#ifdef _MSC_VER
#pragma warning(disable: 4661)
#endif
// Instantiations
template class QPBO<int>;
template class QPBO<float>;
template class QPBO<double>;
template <>
inline void QPBO<int>::get_type_information(char*& type_name, char*& type_format)
{
type_name = "int";
type_format = "d";
}
template <>
inline void QPBO<float>::get_type_information(char*& type_name, char*& type_format)
{
type_name = "float";
type_format = "f";
}
template <>
inline void QPBO<double>::get_type_information(char*& type_name, char*& type_format)
{
type_name = "double";
type_format = "Lf";
}

116
samples/C++/qsciprinter.cp Normal file
View File

@@ -0,0 +1,116 @@
// This module defines interface to the QsciPrinter class.
//
// Copyright (c) 2011 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of QScintilla.
//
// This file may be used under the terms of the GNU General Public
// License versions 2.0 or 3.0 as published by the Free Software
// Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
// included in the packaging of this file. Alternatively you may (at
// your option) use any later version of the GNU General Public
// License if such license has been publicly approved by Riverbank
// Computing Limited (or its successors, if any) and the KDE Free Qt
// Foundation. In addition, as a special exception, Riverbank gives you
// certain additional rights. These rights are described in the Riverbank
// GPL Exception version 1.1, which can be found in the file
// GPL_EXCEPTION.txt in this package.
//
// If you are unsure which license is appropriate for your use, please
// contact the sales department at sales@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#ifndef QSCIPRINTER_H
#define QSCIPRINTER_H
#ifdef __APPLE__
extern "C++" {
#endif
#include <qprinter.h>
#include <Qsci/qsciglobal.h>
#include <Qsci/qsciscintilla.h>
QT_BEGIN_NAMESPACE
class QRect;
class QPainter;
QT_END_NAMESPACE
class QsciScintillaBase;
//! \brief The QsciPrinter class is a sub-class of the Qt QPrinter class that
//! is able to print the text of a Scintilla document.
//!
//! The class can be further sub-classed to alter to layout of the text, adding
//! headers and footers for example.
class QSCINTILLA_EXPORT QsciPrinter : public QPrinter
{
public:
//! Constructs a printer paint device with mode \a mode.
QsciPrinter(PrinterMode mode = ScreenResolution);
//! Destroys the QsciPrinter instance.
virtual ~QsciPrinter();
//! Format a page, by adding headers and footers for example, before the
//! document text is drawn on it. \a painter is the painter to be used to
//! add customised text and graphics. \a drawing is true if the page is
//! actually being drawn rather than being sized. \a painter drawing
//! methods must only be called when \a drawing is true. \a area is the
//! area of the page that will be used to draw the text. This should be
//! modified if it is necessary to reserve space for any customised text or
//! graphics. By default the area is relative to the printable area of the
//! page. Use QPrinter::setFullPage() because calling printRange() if you
//! want to try and print over the whole page. \a pagenr is the number of
//! the page. The first page is numbered 1.
virtual void formatPage(QPainter &painter, bool drawing, QRect &area,
int pagenr);
//! Return the number of points to add to each font when printing.
//!
//! \sa setMagnification()
int magnification() const {return mag;}
//! Sets the number of points to add to each font when printing to \a
//! magnification.
//!
//! \sa magnification()
virtual void setMagnification(int magnification);
//! Print a range of lines from the Scintilla instance \a qsb. \a from is
//! the first line to print and a negative value signifies the first line
//! of text. \a to is the last line to print and a negative value
//! signifies the last line of text. true is returned if there was no
//! error.
virtual int printRange(QsciScintillaBase *qsb, int from = -1, int to = -1);
//! Return the line wrap mode used when printing. The default is
//! QsciScintilla::WrapWord.
//!
//! \sa setWrapMode()
QsciScintilla::WrapMode wrapMode() const {return wrap;}
//! Sets the line wrap mode used when printing to \a wmode.
//!
//! \sa wrapMode()
virtual void setWrapMode(QsciScintilla::WrapMode wmode);
private:
int mag;
QsciScintilla::WrapMode wrap;
QsciPrinter(const QsciPrinter &);
QsciPrinter &operator=(const QsciPrinter &);
};
#ifdef __APPLE__
}
#endif
#endif

145
samples/C/2D.C Normal file
View File

@@ -0,0 +1,145 @@
#include "2D.h"
#include <math.h>
void set_vgabasemem(void)
{
ULONG vgabase;
SELECTOR tmp;
asm mov [tmp], ds
dpmi_get_sel_base(&vgabase, tmp);
vgabasemem = (char *)(-vgabase + 0xa0000);
}
void drw_chdis(int mode) // change the display!
{
regs.b.ah = 0x00; // seet theh display moode
regs.b.al = mode; // change it to the mode like innit
regs.h.flags = 0x72;// Set the dingoes kidneys out of FLAGS eh?
regs.h.ss = 0; // Like, totally set the stack segment
regs.h.sp = 0; // Set tha stack pointaaaaahhhhh!!!
dpmi_simulate_real_interrupt(0x10, &regs);
}
void drw_pix(int x, int y, enum COLORS col)
{
*VGAPIX(x, y) = col;
}
void drw_line(int x0, int y0, int x1, int y1, enum COLORS col)
{
// Going for the optimized version of bresenham's line algo.
int stp = (abs(y0 - y1) > abs(x0 - x1));
int tmp, dx, dy, err, yi, i, j; // yi = y excrement
if (stp) {
// swappity swap
tmp = y0;
y0 = x0;
x0 = tmp;
tmp = y1;
y1 = x1;
x1 = tmp;
}
// AAAAND NOW WE MUST DO ZEES AGAIN :(
// I'm sure there was a func somewhere that does this? :P
if (x0 > x1) {
tmp = x0;
x0 = x1;
x1 = tmp;
tmp = y0;
y0 = y1;
y1 = tmp;
}
dx = (x1 - x0);
dy = (abs(y1 - y0));
err = (dx / 2);
if (y0 < y1)
yi = 1;
else
yi = -1;
j = y0;
for (i = x0; i < x1; i++)
{
if (stp)
*VGAPIX(j, i) = col;
else
*VGAPIX(i, j) = col;
err -= dy;
if (err < 0) {
j += yi;
err += dx;
}
}
}
void drw_rectl(int x, int y, int w, int h, enum COLORS col)
{
drw_line(x, y, x+w, y, col);
drw_line(x+w, y, x+w, y+h, col);
drw_line(x, y, x, y+h, col);
drw_line(x, y+h, x+w+1, y+h, col);
}
void drw_rectf(int x, int y, int w, int h, enum COLORS col)
{
int i, j;
for (j = y; j < x+h; j++) {
for (i = x; i < y+w; i++) {
*VGAPIX(i, j) = col;
}
}
}
void drw_circl(int x, int y, int rad, enum COLORS col)
{
int mang, i; // max angle, haha
int px, py;
mang = 360; // Yeah yeah I'll switch to rad later
for (i = 0; i <= mang; i++)
{
px = cos(i)*rad + x; // + px; // causes some really cools effects! :D
py = sin(i)*rad + y; // + py;
*VGAPIX(px, py) = col;
}
}
void drw_tex(int x, int y, int w, int h, enum COLORS tex[])
{ // i*w+j
int i, j;
for (i = 0; i < w; i++)
{
for (j = 0; j < h; j++)
{
*VGAPIX(x+i, y+j) = tex[j*w+i];
}
}
}
void 2D_init(void)
{
set_vgabasemem();
drw_chdis(0x13);
}
void 2D_exit(void)
{
drw_chdis(3);
}
/*
int main()
{
set_vgabasemem();
drw_chdis(0x13);
while(!kbhit()) {
if ((getch()) == 0x1b) // escape
break;
}
drw_chdis(3);
return 0;
}
*/

29
samples/C/2D.H Normal file
View File

@@ -0,0 +1,29 @@
#ifndef __2DGFX
#define __2DGFX
// Includes
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <dpmi.h>
// Defines
#define VGAPIX(x,y) (vgabasemem + (x) + (y) * 320)
// Variables
char * vgabasemem;
DPMI_REGS regs;
// Drawing functions:
//void setvgabasemem(void);
void drw_chdis(int mode); // draw_func_change_display
void drw_pix(int x, int y, enum COLORS col);
void drw_line(int x0, int y0, int x1, int y1, enum COLORS col);
void drw_rectl(int x, int y, int w, int h, enum COLORS col);
void drw_rectf(int x, int y, int w, int h, enum COLORS col);
void drw_cirl(int x, int y, int rad, enum COLORS col);
void drw_tex(int x, int y, int w, int h, enum COLORS tex[]);
void 2D_init(void);
void 2D_exit(void);
#endif

93
samples/C/ArrowLeft.h Normal file
View File

@@ -0,0 +1,93 @@
/*
* This file is part of GTK++ (libGTK++)
* Copyright © 2012 Rachel Mant (dx-mon@users.sourceforge.net)
*
* GTK++ is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GTK++ is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* GdkPixbuf RGBA C-Source image dump */
#ifdef __SUNPRO_C
#pragma align 4 (ArrowLeft)
#endif
#ifdef __GNUC__
static const uint8_t ArrowLeft[] __attribute__ ((__aligned__ (4))) =
#else
static const uint8_t ArrowLeft[] =
#endif
{ ""
/* Pixbuf magic (0x47646b50) */
"GdkP"
/* length: header (24) + pixel_data (1600) */
"\0\0\6X"
/* pixdata_type (0x1010002) */
"\1\1\0\2"
/* rowstride (80) */
"\0\0\0P"
/* width (20) */
"\0\0\0\24"
/* height (20) */
"\0\0\0\24"
/* pixel_data: */
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377"
"\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
"\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0"
"\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0"};

903
samples/C/GLKMatrix4.h Normal file
View File

@@ -0,0 +1,903 @@
//
// GLKMatrix4.h
// GLKit
//
// Copyright (c) 2011, Apple Inc. All rights reserved.
//
#ifndef __GLK_MATRIX_4_H
#define __GLK_MATRIX_4_H
#include <stddef.h>
#include <stdbool.h>
#include <math.h>
#if defined(__ARM_NEON__)
#include <arm_neon.h>
#endif
#include <GLKit/GLKMathTypes.h>
#include <GLKit/GLKVector3.h>
#include <GLKit/GLKVector4.h>
#include <GLKit/GLKQuaternion.h>
#ifdef __cplusplus
extern "C" {
#endif
#pragma mark -
#pragma mark Prototypes
#pragma mark -
extern const GLKMatrix4 GLKMatrix4Identity;
/*
m30, m31, and m32 correspond to the translation values tx, ty, tz, respectively.
*/
static __inline__ GLKMatrix4 GLKMatrix4Make(float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23,
float m30, float m31, float m32, float m33);
/*
m03, m13, and m23 correspond to the translation values tx, ty, tz, respectively.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeAndTranspose(float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23,
float m30, float m31, float m32, float m33);
/*
m[12], m[13], and m[14] correspond to the translation values tx, ty, and tz, respectively.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeWithArray(float values[16]);
/*
m[3], m[7], and m[11] correspond to the translation values tx, ty, and tz, respectively.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeWithArrayAndTranspose(float values[16]);
/*
row0, row1, and row2's last component should correspond to the translation values tx, ty, and tz, respectively.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeWithRows(GLKVector4 row0,
GLKVector4 row1,
GLKVector4 row2,
GLKVector4 row3);
/*
column3's first three components should correspond to the translation values tx, ty, and tz.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeWithColumns(GLKVector4 column0,
GLKVector4 column1,
GLKVector4 column2,
GLKVector4 column3);
/*
The quaternion will be normalized before conversion.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeWithQuaternion(GLKQuaternion quaternion);
static __inline__ GLKMatrix4 GLKMatrix4MakeTranslation(float tx, float ty, float tz);
static __inline__ GLKMatrix4 GLKMatrix4MakeScale(float sx, float sy, float sz);
static __inline__ GLKMatrix4 GLKMatrix4MakeRotation(float radians, float x, float y, float z);
static __inline__ GLKMatrix4 GLKMatrix4MakeXRotation(float radians);
static __inline__ GLKMatrix4 GLKMatrix4MakeYRotation(float radians);
static __inline__ GLKMatrix4 GLKMatrix4MakeZRotation(float radians);
/*
Equivalent to gluPerspective.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakePerspective(float fovyRadians, float aspect, float nearZ, float farZ);
/*
Equivalent to glFrustum.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeFrustum(float left, float right,
float bottom, float top,
float nearZ, float farZ);
/*
Equivalent to glOrtho.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeOrtho(float left, float right,
float bottom, float top,
float nearZ, float farZ);
/*
Equivalent to gluLookAt.
*/
static __inline__ GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ,
float centerX, float centerY, float centerZ,
float upX, float upY, float upZ);
/*
Returns the upper left 3x3 portion of the 4x4 matrix.
*/
static __inline__ GLKMatrix3 GLKMatrix4GetMatrix3(GLKMatrix4 matrix);
/*
Returns the upper left 2x2 portion of the 4x4 matrix.
*/
static __inline__ GLKMatrix2 GLKMatrix4GetMatrix2(GLKMatrix4 matrix);
/*
GLKMatrix4GetRow returns vectors for rows 0, 1, and 2 whose last component will be the translation value tx, ty, and tz, respectively.
Valid row values range from 0 to 3, inclusive.
*/
static __inline__ GLKVector4 GLKMatrix4GetRow(GLKMatrix4 matrix, int row);
/*
GLKMatrix4GetColumn returns a vector for column 3 whose first three components will be the translation values tx, ty, and tz.
Valid column values range from 0 to 3, inclusive.
*/
static __inline__ GLKVector4 GLKMatrix4GetColumn(GLKMatrix4 matrix, int column);
/*
GLKMatrix4SetRow expects that the vector for row 0, 1, and 2 will have a translation value as its last component.
Valid row values range from 0 to 3, inclusive.
*/
static __inline__ GLKMatrix4 GLKMatrix4SetRow(GLKMatrix4 matrix, int row, GLKVector4 vector);
/*
GLKMatrix4SetColumn expects that the vector for column 3 will contain the translation values tx, ty, and tz as its first three components, respectively.
Valid column values range from 0 to 3, inclusive.
*/
static __inline__ GLKMatrix4 GLKMatrix4SetColumn(GLKMatrix4 matrix, int column, GLKVector4 vector);
static __inline__ GLKMatrix4 GLKMatrix4Transpose(GLKMatrix4 matrix);
GLKMatrix4 GLKMatrix4Invert(GLKMatrix4 matrix, bool *isInvertible);
GLKMatrix4 GLKMatrix4InvertAndTranspose(GLKMatrix4 matrix, bool *isInvertible);
static __inline__ GLKMatrix4 GLKMatrix4Multiply(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight);
static __inline__ GLKMatrix4 GLKMatrix4Add(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight);
static __inline__ GLKMatrix4 GLKMatrix4Subtract(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight);
static __inline__ GLKMatrix4 GLKMatrix4Translate(GLKMatrix4 matrix, float tx, float ty, float tz);
static __inline__ GLKMatrix4 GLKMatrix4TranslateWithVector3(GLKMatrix4 matrix, GLKVector3 translationVector);
/*
The last component of the GLKVector4, translationVector, is ignored.
*/
static __inline__ GLKMatrix4 GLKMatrix4TranslateWithVector4(GLKMatrix4 matrix, GLKVector4 translationVector);
static __inline__ GLKMatrix4 GLKMatrix4Scale(GLKMatrix4 matrix, float sx, float sy, float sz);
static __inline__ GLKMatrix4 GLKMatrix4ScaleWithVector3(GLKMatrix4 matrix, GLKVector3 scaleVector);
/*
The last component of the GLKVector4, scaleVector, is ignored.
*/
static __inline__ GLKMatrix4 GLKMatrix4ScaleWithVector4(GLKMatrix4 matrix, GLKVector4 scaleVector);
static __inline__ GLKMatrix4 GLKMatrix4Rotate(GLKMatrix4 matrix, float radians, float x, float y, float z);
static __inline__ GLKMatrix4 GLKMatrix4RotateWithVector3(GLKMatrix4 matrix, float radians, GLKVector3 axisVector);
/*
The last component of the GLKVector4, axisVector, is ignored.
*/
static __inline__ GLKMatrix4 GLKMatrix4RotateWithVector4(GLKMatrix4 matrix, float radians, GLKVector4 axisVector);
static __inline__ GLKMatrix4 GLKMatrix4RotateX(GLKMatrix4 matrix, float radians);
static __inline__ GLKMatrix4 GLKMatrix4RotateY(GLKMatrix4 matrix, float radians);
static __inline__ GLKMatrix4 GLKMatrix4RotateZ(GLKMatrix4 matrix, float radians);
/*
Assumes 0 in the w component.
*/
static __inline__ GLKVector3 GLKMatrix4MultiplyVector3(GLKMatrix4 matrixLeft, GLKVector3 vectorRight);
/*
Assumes 1 in the w component.
*/
static __inline__ GLKVector3 GLKMatrix4MultiplyVector3WithTranslation(GLKMatrix4 matrixLeft, GLKVector3 vectorRight);
/*
Assumes 1 in the w component and divides the resulting vector by w before returning.
*/
static __inline__ GLKVector3 GLKMatrix4MultiplyAndProjectVector3(GLKMatrix4 matrixLeft, GLKVector3 vectorRight);
/*
Assumes 0 in the w component.
*/
static __inline__ void GLKMatrix4MultiplyVector3Array(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount);
/*
Assumes 1 in the w component.
*/
static __inline__ void GLKMatrix4MultiplyVector3ArrayWithTranslation(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount);
/*
Assumes 1 in the w component and divides the resulting vector by w before returning.
*/
static __inline__ void GLKMatrix4MultiplyAndProjectVector3Array(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount);
static __inline__ GLKVector4 GLKMatrix4MultiplyVector4(GLKMatrix4 matrixLeft, GLKVector4 vectorRight);
static __inline__ void GLKMatrix4MultiplyVector4Array(GLKMatrix4 matrix, GLKVector4 *vectors, size_t vectorCount);
#pragma mark -
#pragma mark Implementations
#pragma mark -
static __inline__ GLKMatrix4 GLKMatrix4Make(float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23,
float m30, float m31, float m32, float m33)
{
GLKMatrix4 m = { m00, m01, m02, m03,
m10, m11, m12, m13,
m20, m21, m22, m23,
m30, m31, m32, m33 };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeAndTranspose(float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23,
float m30, float m31, float m32, float m33)
{
GLKMatrix4 m = { m00, m10, m20, m30,
m01, m11, m21, m31,
m02, m12, m22, m32,
m03, m13, m23, m33 };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeWithArray(float values[16])
{
GLKMatrix4 m = { values[0], values[1], values[2], values[3],
values[4], values[5], values[6], values[7],
values[8], values[9], values[10], values[11],
values[12], values[13], values[14], values[15] };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeWithArrayAndTranspose(float values[16])
{
#if defined(__ARM_NEON__)
float32x4x4_t m = vld4q_f32(values);
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { values[0], values[4], values[8], values[12],
values[1], values[5], values[9], values[13],
values[2], values[6], values[10], values[14],
values[3], values[7], values[11], values[15] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4MakeWithRows(GLKVector4 row0,
GLKVector4 row1,
GLKVector4 row2,
GLKVector4 row3)
{
GLKMatrix4 m = { row0.v[0], row1.v[0], row2.v[0], row3.v[0],
row0.v[1], row1.v[1], row2.v[1], row3.v[1],
row0.v[2], row1.v[2], row2.v[2], row3.v[2],
row0.v[3], row1.v[3], row2.v[3], row3.v[3] };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeWithColumns(GLKVector4 column0,
GLKVector4 column1,
GLKVector4 column2,
GLKVector4 column3)
{
#if defined(__ARM_NEON__)
float32x4x4_t m;
m.val[0] = vld1q_f32(column0.v);
m.val[1] = vld1q_f32(column1.v);
m.val[2] = vld1q_f32(column2.v);
m.val[3] = vld1q_f32(column3.v);
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { column0.v[0], column0.v[1], column0.v[2], column0.v[3],
column1.v[0], column1.v[1], column1.v[2], column1.v[3],
column2.v[0], column2.v[1], column2.v[2], column2.v[3],
column3.v[0], column3.v[1], column3.v[2], column3.v[3] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4MakeWithQuaternion(GLKQuaternion quaternion)
{
quaternion = GLKQuaternionNormalize(quaternion);
float x = quaternion.q[0];
float y = quaternion.q[1];
float z = quaternion.q[2];
float w = quaternion.q[3];
float _2x = x + x;
float _2y = y + y;
float _2z = z + z;
float _2w = w + w;
GLKMatrix4 m = { 1.0f - _2y * y - _2z * z,
_2x * y + _2w * z,
_2x * z - _2w * y,
0.0f,
_2x * y - _2w * z,
1.0f - _2x * x - _2z * z,
_2y * z + _2w * x,
0.0f,
_2x * z + _2w * y,
_2y * z - _2w * x,
1.0f - _2x * x - _2y * y,
0.0f,
0.0f,
0.0f,
0.0f,
1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeTranslation(float tx, float ty, float tz)
{
GLKMatrix4 m = GLKMatrix4Identity;
m.m[12] = tx;
m.m[13] = ty;
m.m[14] = tz;
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeScale(float sx, float sy, float sz)
{
GLKMatrix4 m = GLKMatrix4Identity;
m.m[0] = sx;
m.m[5] = sy;
m.m[10] = sz;
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeRotation(float radians, float x, float y, float z)
{
GLKVector3 v = GLKVector3Normalize(GLKVector3Make(x, y, z));
float cos = cosf(radians);
float cosp = 1.0f - cos;
float sin = sinf(radians);
GLKMatrix4 m = { cos + cosp * v.v[0] * v.v[0],
cosp * v.v[0] * v.v[1] + v.v[2] * sin,
cosp * v.v[0] * v.v[2] - v.v[1] * sin,
0.0f,
cosp * v.v[0] * v.v[1] - v.v[2] * sin,
cos + cosp * v.v[1] * v.v[1],
cosp * v.v[1] * v.v[2] + v.v[0] * sin,
0.0f,
cosp * v.v[0] * v.v[2] + v.v[1] * sin,
cosp * v.v[1] * v.v[2] - v.v[0] * sin,
cos + cosp * v.v[2] * v.v[2],
0.0f,
0.0f,
0.0f,
0.0f,
1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeXRotation(float radians)
{
float cos = cosf(radians);
float sin = sinf(radians);
GLKMatrix4 m = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, cos, sin, 0.0f,
0.0f, -sin, cos, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeYRotation(float radians)
{
float cos = cosf(radians);
float sin = sinf(radians);
GLKMatrix4 m = { cos, 0.0f, -sin, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
sin, 0.0f, cos, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeZRotation(float radians)
{
float cos = cosf(radians);
float sin = sinf(radians);
GLKMatrix4 m = { cos, sin, 0.0f, 0.0f,
-sin, cos, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakePerspective(float fovyRadians, float aspect, float nearZ, float farZ)
{
float cotan = 1.0f / tanf(fovyRadians / 2.0f);
GLKMatrix4 m = { cotan / aspect, 0.0f, 0.0f, 0.0f,
0.0f, cotan, 0.0f, 0.0f,
0.0f, 0.0f, (farZ + nearZ) / (nearZ - farZ), -1.0f,
0.0f, 0.0f, (2.0f * farZ * nearZ) / (nearZ - farZ), 0.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeFrustum(float left, float right,
float bottom, float top,
float nearZ, float farZ)
{
float ral = right + left;
float rsl = right - left;
float tsb = top - bottom;
float tab = top + bottom;
float fan = farZ + nearZ;
float fsn = farZ - nearZ;
GLKMatrix4 m = { 2.0f * nearZ / rsl, 0.0f, 0.0f, 0.0f,
0.0f, 2.0f * nearZ / tsb, 0.0f, 0.0f,
ral / rsl, tab / tsb, -fan / fsn, -1.0f,
0.0f, 0.0f, (-2.0f * farZ * nearZ) / fsn, 0.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeOrtho(float left, float right,
float bottom, float top,
float nearZ, float farZ)
{
float ral = right + left;
float rsl = right - left;
float tab = top + bottom;
float tsb = top - bottom;
float fan = farZ + nearZ;
float fsn = farZ - nearZ;
GLKMatrix4 m = { 2.0f / rsl, 0.0f, 0.0f, 0.0f,
0.0f, 2.0f / tsb, 0.0f, 0.0f,
0.0f, 0.0f, -2.0f / fsn, 0.0f,
-ral / rsl, -tab / tsb, -fan / fsn, 1.0f };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ,
float centerX, float centerY, float centerZ,
float upX, float upY, float upZ)
{
GLKVector3 ev = { eyeX, eyeY, eyeZ };
GLKVector3 cv = { centerX, centerY, centerZ };
GLKVector3 uv = { upX, upY, upZ };
GLKVector3 n = GLKVector3Normalize(GLKVector3Add(ev, GLKVector3Negate(cv)));
GLKVector3 u = GLKVector3Normalize(GLKVector3CrossProduct(uv, n));
GLKVector3 v = GLKVector3CrossProduct(n, u);
GLKMatrix4 m = { u.v[0], v.v[0], n.v[0], 0.0f,
u.v[1], v.v[1], n.v[1], 0.0f,
u.v[2], v.v[2], n.v[2], 0.0f,
GLKVector3DotProduct(GLKVector3Negate(u), ev),
GLKVector3DotProduct(GLKVector3Negate(v), ev),
GLKVector3DotProduct(GLKVector3Negate(n), ev),
1.0f };
return m;
}
static __inline__ GLKMatrix3 GLKMatrix4GetMatrix3(GLKMatrix4 matrix)
{
GLKMatrix3 m = { matrix.m[0], matrix.m[1], matrix.m[2],
matrix.m[4], matrix.m[5], matrix.m[6],
matrix.m[8], matrix.m[9], matrix.m[10] };
return m;
}
static __inline__ GLKMatrix2 GLKMatrix4GetMatrix2(GLKMatrix4 matrix)
{
GLKMatrix2 m = { matrix.m[0], matrix.m[1],
matrix.m[4], matrix.m[5] };
return m;
}
static __inline__ GLKVector4 GLKMatrix4GetRow(GLKMatrix4 matrix, int row)
{
GLKVector4 v = { matrix.m[row], matrix.m[4 + row], matrix.m[8 + row], matrix.m[12 + row] };
return v;
}
static __inline__ GLKVector4 GLKMatrix4GetColumn(GLKMatrix4 matrix, int column)
{
#if defined(__ARM_NEON__)
float32x4_t v = vld1q_f32(&(matrix.m[column * 4]));
return *(GLKVector4 *)&v;
#else
GLKVector4 v = { matrix.m[column * 4 + 0], matrix.m[column * 4 + 1], matrix.m[column * 4 + 2], matrix.m[column * 4 + 3] };
return v;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4SetRow(GLKMatrix4 matrix, int row, GLKVector4 vector)
{
matrix.m[row] = vector.v[0];
matrix.m[row + 4] = vector.v[1];
matrix.m[row + 8] = vector.v[2];
matrix.m[row + 12] = vector.v[3];
return matrix;
}
static __inline__ GLKMatrix4 GLKMatrix4SetColumn(GLKMatrix4 matrix, int column, GLKVector4 vector)
{
#if defined(__ARM_NEON__)
float *dst = &(matrix.m[column * 4]);
vst1q_f32(dst, vld1q_f32(vector.v));
return matrix;
#else
matrix.m[column * 4 + 0] = vector.v[0];
matrix.m[column * 4 + 1] = vector.v[1];
matrix.m[column * 4 + 2] = vector.v[2];
matrix.m[column * 4 + 3] = vector.v[3];
return matrix;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Transpose(GLKMatrix4 matrix)
{
#if defined(__ARM_NEON__)
float32x4x4_t m = vld4q_f32(matrix.m);
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { matrix.m[0], matrix.m[4], matrix.m[8], matrix.m[12],
matrix.m[1], matrix.m[5], matrix.m[9], matrix.m[13],
matrix.m[2], matrix.m[6], matrix.m[10], matrix.m[14],
matrix.m[3], matrix.m[7], matrix.m[11], matrix.m[15] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Multiply(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft;
float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight;
float32x4x4_t m;
m.val[0] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[0], 0));
m.val[1] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[1], 0));
m.val[2] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[2], 0));
m.val[3] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[3], 0));
m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[0], 1));
m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[1], 1));
m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[2], 1));
m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[3], 1));
m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[0], 2));
m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[1], 2));
m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[2], 2));
m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[3], 2));
m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[0], 3));
m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[1], 3));
m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[2], 3));
m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[3], 3));
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m;
m.m[0] = matrixLeft.m[0] * matrixRight.m[0] + matrixLeft.m[4] * matrixRight.m[1] + matrixLeft.m[8] * matrixRight.m[2] + matrixLeft.m[12] * matrixRight.m[3];
m.m[4] = matrixLeft.m[0] * matrixRight.m[4] + matrixLeft.m[4] * matrixRight.m[5] + matrixLeft.m[8] * matrixRight.m[6] + matrixLeft.m[12] * matrixRight.m[7];
m.m[8] = matrixLeft.m[0] * matrixRight.m[8] + matrixLeft.m[4] * matrixRight.m[9] + matrixLeft.m[8] * matrixRight.m[10] + matrixLeft.m[12] * matrixRight.m[11];
m.m[12] = matrixLeft.m[0] * matrixRight.m[12] + matrixLeft.m[4] * matrixRight.m[13] + matrixLeft.m[8] * matrixRight.m[14] + matrixLeft.m[12] * matrixRight.m[15];
m.m[1] = matrixLeft.m[1] * matrixRight.m[0] + matrixLeft.m[5] * matrixRight.m[1] + matrixLeft.m[9] * matrixRight.m[2] + matrixLeft.m[13] * matrixRight.m[3];
m.m[5] = matrixLeft.m[1] * matrixRight.m[4] + matrixLeft.m[5] * matrixRight.m[5] + matrixLeft.m[9] * matrixRight.m[6] + matrixLeft.m[13] * matrixRight.m[7];
m.m[9] = matrixLeft.m[1] * matrixRight.m[8] + matrixLeft.m[5] * matrixRight.m[9] + matrixLeft.m[9] * matrixRight.m[10] + matrixLeft.m[13] * matrixRight.m[11];
m.m[13] = matrixLeft.m[1] * matrixRight.m[12] + matrixLeft.m[5] * matrixRight.m[13] + matrixLeft.m[9] * matrixRight.m[14] + matrixLeft.m[13] * matrixRight.m[15];
m.m[2] = matrixLeft.m[2] * matrixRight.m[0] + matrixLeft.m[6] * matrixRight.m[1] + matrixLeft.m[10] * matrixRight.m[2] + matrixLeft.m[14] * matrixRight.m[3];
m.m[6] = matrixLeft.m[2] * matrixRight.m[4] + matrixLeft.m[6] * matrixRight.m[5] + matrixLeft.m[10] * matrixRight.m[6] + matrixLeft.m[14] * matrixRight.m[7];
m.m[10] = matrixLeft.m[2] * matrixRight.m[8] + matrixLeft.m[6] * matrixRight.m[9] + matrixLeft.m[10] * matrixRight.m[10] + matrixLeft.m[14] * matrixRight.m[11];
m.m[14] = matrixLeft.m[2] * matrixRight.m[12] + matrixLeft.m[6] * matrixRight.m[13] + matrixLeft.m[10] * matrixRight.m[14] + matrixLeft.m[14] * matrixRight.m[15];
m.m[3] = matrixLeft.m[3] * matrixRight.m[0] + matrixLeft.m[7] * matrixRight.m[1] + matrixLeft.m[11] * matrixRight.m[2] + matrixLeft.m[15] * matrixRight.m[3];
m.m[7] = matrixLeft.m[3] * matrixRight.m[4] + matrixLeft.m[7] * matrixRight.m[5] + matrixLeft.m[11] * matrixRight.m[6] + matrixLeft.m[15] * matrixRight.m[7];
m.m[11] = matrixLeft.m[3] * matrixRight.m[8] + matrixLeft.m[7] * matrixRight.m[9] + matrixLeft.m[11] * matrixRight.m[10] + matrixLeft.m[15] * matrixRight.m[11];
m.m[15] = matrixLeft.m[3] * matrixRight.m[12] + matrixLeft.m[7] * matrixRight.m[13] + matrixLeft.m[11] * matrixRight.m[14] + matrixLeft.m[15] * matrixRight.m[15];
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Add(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft;
float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight;
float32x4x4_t m;
m.val[0] = vaddq_f32(iMatrixLeft.val[0], iMatrixRight.val[0]);
m.val[1] = vaddq_f32(iMatrixLeft.val[1], iMatrixRight.val[1]);
m.val[2] = vaddq_f32(iMatrixLeft.val[2], iMatrixRight.val[2]);
m.val[3] = vaddq_f32(iMatrixLeft.val[3], iMatrixRight.val[3]);
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m;
m.m[0] = matrixLeft.m[0] + matrixRight.m[0];
m.m[1] = matrixLeft.m[1] + matrixRight.m[1];
m.m[2] = matrixLeft.m[2] + matrixRight.m[2];
m.m[3] = matrixLeft.m[3] + matrixRight.m[3];
m.m[4] = matrixLeft.m[4] + matrixRight.m[4];
m.m[5] = matrixLeft.m[5] + matrixRight.m[5];
m.m[6] = matrixLeft.m[6] + matrixRight.m[6];
m.m[7] = matrixLeft.m[7] + matrixRight.m[7];
m.m[8] = matrixLeft.m[8] + matrixRight.m[8];
m.m[9] = matrixLeft.m[9] + matrixRight.m[9];
m.m[10] = matrixLeft.m[10] + matrixRight.m[10];
m.m[11] = matrixLeft.m[11] + matrixRight.m[11];
m.m[12] = matrixLeft.m[12] + matrixRight.m[12];
m.m[13] = matrixLeft.m[13] + matrixRight.m[13];
m.m[14] = matrixLeft.m[14] + matrixRight.m[14];
m.m[15] = matrixLeft.m[15] + matrixRight.m[15];
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Subtract(GLKMatrix4 matrixLeft, GLKMatrix4 matrixRight)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft;
float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight;
float32x4x4_t m;
m.val[0] = vsubq_f32(iMatrixLeft.val[0], iMatrixRight.val[0]);
m.val[1] = vsubq_f32(iMatrixLeft.val[1], iMatrixRight.val[1]);
m.val[2] = vsubq_f32(iMatrixLeft.val[2], iMatrixRight.val[2]);
m.val[3] = vsubq_f32(iMatrixLeft.val[3], iMatrixRight.val[3]);
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m;
m.m[0] = matrixLeft.m[0] - matrixRight.m[0];
m.m[1] = matrixLeft.m[1] - matrixRight.m[1];
m.m[2] = matrixLeft.m[2] - matrixRight.m[2];
m.m[3] = matrixLeft.m[3] - matrixRight.m[3];
m.m[4] = matrixLeft.m[4] - matrixRight.m[4];
m.m[5] = matrixLeft.m[5] - matrixRight.m[5];
m.m[6] = matrixLeft.m[6] - matrixRight.m[6];
m.m[7] = matrixLeft.m[7] - matrixRight.m[7];
m.m[8] = matrixLeft.m[8] - matrixRight.m[8];
m.m[9] = matrixLeft.m[9] - matrixRight.m[9];
m.m[10] = matrixLeft.m[10] - matrixRight.m[10];
m.m[11] = matrixLeft.m[11] - matrixRight.m[11];
m.m[12] = matrixLeft.m[12] - matrixRight.m[12];
m.m[13] = matrixLeft.m[13] - matrixRight.m[13];
m.m[14] = matrixLeft.m[14] - matrixRight.m[14];
m.m[15] = matrixLeft.m[15] - matrixRight.m[15];
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Translate(GLKMatrix4 matrix, float tx, float ty, float tz)
{
GLKMatrix4 m = { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3],
matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7],
matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11],
matrix.m[0] * tx + matrix.m[4] * ty + matrix.m[8] * tz + matrix.m[12],
matrix.m[1] * tx + matrix.m[5] * ty + matrix.m[9] * tz + matrix.m[13],
matrix.m[2] * tx + matrix.m[6] * ty + matrix.m[10] * tz + matrix.m[14],
matrix.m[15] };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4TranslateWithVector3(GLKMatrix4 matrix, GLKVector3 translationVector)
{
GLKMatrix4 m = { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3],
matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7],
matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11],
matrix.m[0] * translationVector.v[0] + matrix.m[4] * translationVector.v[1] + matrix.m[8] * translationVector.v[2] + matrix.m[12],
matrix.m[1] * translationVector.v[0] + matrix.m[5] * translationVector.v[1] + matrix.m[9] * translationVector.v[2] + matrix.m[13],
matrix.m[2] * translationVector.v[0] + matrix.m[6] * translationVector.v[1] + matrix.m[10] * translationVector.v[2] + matrix.m[14],
matrix.m[15] };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4TranslateWithVector4(GLKMatrix4 matrix, GLKVector4 translationVector)
{
GLKMatrix4 m = { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3],
matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7],
matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11],
matrix.m[0] * translationVector.v[0] + matrix.m[4] * translationVector.v[1] + matrix.m[8] * translationVector.v[2] + matrix.m[12],
matrix.m[1] * translationVector.v[0] + matrix.m[5] * translationVector.v[1] + matrix.m[9] * translationVector.v[2] + matrix.m[13],
matrix.m[2] * translationVector.v[0] + matrix.m[6] * translationVector.v[1] + matrix.m[10] * translationVector.v[2] + matrix.m[14],
matrix.m[15] };
return m;
}
static __inline__ GLKMatrix4 GLKMatrix4Scale(GLKMatrix4 matrix, float sx, float sy, float sz)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix;
float32x4x4_t m;
m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)sx);
m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)sy);
m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)sz);
m.val[3] = iMatrix.val[3];
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { matrix.m[0] * sx, matrix.m[1] * sx, matrix.m[2] * sx, matrix.m[3] * sx,
matrix.m[4] * sy, matrix.m[5] * sy, matrix.m[6] * sy, matrix.m[7] * sy,
matrix.m[8] * sz, matrix.m[9] * sz, matrix.m[10] * sz, matrix.m[11] * sz,
matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4ScaleWithVector3(GLKMatrix4 matrix, GLKVector3 scaleVector)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix;
float32x4x4_t m;
m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)scaleVector.v[0]);
m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)scaleVector.v[1]);
m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)scaleVector.v[2]);
m.val[3] = iMatrix.val[3];
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], matrix.m[3] * scaleVector.v[0],
matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], matrix.m[6] * scaleVector.v[1], matrix.m[7] * scaleVector.v[1],
matrix.m[8] * scaleVector.v[2], matrix.m[9] * scaleVector.v[2], matrix.m[10] * scaleVector.v[2], matrix.m[11] * scaleVector.v[2],
matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4ScaleWithVector4(GLKMatrix4 matrix, GLKVector4 scaleVector)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix;
float32x4x4_t m;
m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)scaleVector.v[0]);
m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)scaleVector.v[1]);
m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)scaleVector.v[2]);
m.val[3] = iMatrix.val[3];
return *(GLKMatrix4 *)&m;
#else
GLKMatrix4 m = { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], matrix.m[3] * scaleVector.v[0],
matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], matrix.m[6] * scaleVector.v[1], matrix.m[7] * scaleVector.v[1],
matrix.m[8] * scaleVector.v[2], matrix.m[9] * scaleVector.v[2], matrix.m[10] * scaleVector.v[2], matrix.m[11] * scaleVector.v[2],
matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] };
return m;
#endif
}
static __inline__ GLKMatrix4 GLKMatrix4Rotate(GLKMatrix4 matrix, float radians, float x, float y, float z)
{
GLKMatrix4 rm = GLKMatrix4MakeRotation(radians, x, y, z);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKMatrix4 GLKMatrix4RotateWithVector3(GLKMatrix4 matrix, float radians, GLKVector3 axisVector)
{
GLKMatrix4 rm = GLKMatrix4MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKMatrix4 GLKMatrix4RotateWithVector4(GLKMatrix4 matrix, float radians, GLKVector4 axisVector)
{
GLKMatrix4 rm = GLKMatrix4MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKMatrix4 GLKMatrix4RotateX(GLKMatrix4 matrix, float radians)
{
GLKMatrix4 rm = GLKMatrix4MakeXRotation(radians);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKMatrix4 GLKMatrix4RotateY(GLKMatrix4 matrix, float radians)
{
GLKMatrix4 rm = GLKMatrix4MakeYRotation(radians);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKMatrix4 GLKMatrix4RotateZ(GLKMatrix4 matrix, float radians)
{
GLKMatrix4 rm = GLKMatrix4MakeZRotation(radians);
return GLKMatrix4Multiply(matrix, rm);
}
static __inline__ GLKVector3 GLKMatrix4MultiplyVector3(GLKMatrix4 matrixLeft, GLKVector3 vectorRight)
{
GLKVector4 v4 = GLKMatrix4MultiplyVector4(matrixLeft, GLKVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 0.0f));
return GLKVector3Make(v4.v[0], v4.v[1], v4.v[2]);
}
static __inline__ GLKVector3 GLKMatrix4MultiplyVector3WithTranslation(GLKMatrix4 matrixLeft, GLKVector3 vectorRight)
{
GLKVector4 v4 = GLKMatrix4MultiplyVector4(matrixLeft, GLKVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 1.0f));
return GLKVector3Make(v4.v[0], v4.v[1], v4.v[2]);
}
static __inline__ GLKVector3 GLKMatrix4MultiplyAndProjectVector3(GLKMatrix4 matrixLeft, GLKVector3 vectorRight)
{
GLKVector4 v4 = GLKMatrix4MultiplyVector4(matrixLeft, GLKVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 1.0f));
return GLKVector3MultiplyScalar(GLKVector3Make(v4.v[0], v4.v[1], v4.v[2]), 1.0f / v4.v[3]);
}
static __inline__ void GLKMatrix4MultiplyVector3Array(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount)
{
size_t i;
for (i=0; i < vectorCount; i++)
vectors[i] = GLKMatrix4MultiplyVector3(matrix, vectors[i]);
}
static __inline__ void GLKMatrix4MultiplyVector3ArrayWithTranslation(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount)
{
size_t i;
for (i=0; i < vectorCount; i++)
vectors[i] = GLKMatrix4MultiplyVector3WithTranslation(matrix, vectors[i]);
}
static __inline__ void GLKMatrix4MultiplyAndProjectVector3Array(GLKMatrix4 matrix, GLKVector3 *vectors, size_t vectorCount)
{
size_t i;
for (i=0; i < vectorCount; i++)
vectors[i] = GLKMatrix4MultiplyAndProjectVector3(matrix, vectors[i]);
}
static __inline__ GLKVector4 GLKMatrix4MultiplyVector4(GLKMatrix4 matrixLeft, GLKVector4 vectorRight)
{
#if defined(__ARM_NEON__)
float32x4x4_t iMatrix = *(float32x4x4_t *)&matrixLeft;
float32x4_t v;
iMatrix.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)vectorRight.v[0]);
iMatrix.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)vectorRight.v[1]);
iMatrix.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)vectorRight.v[2]);
iMatrix.val[3] = vmulq_n_f32(iMatrix.val[3], (float32_t)vectorRight.v[3]);
iMatrix.val[0] = vaddq_f32(iMatrix.val[0], iMatrix.val[1]);
iMatrix.val[2] = vaddq_f32(iMatrix.val[2], iMatrix.val[3]);
v = vaddq_f32(iMatrix.val[0], iMatrix.val[2]);
return *(GLKVector4 *)&v;
#else
GLKVector4 v = { matrixLeft.m[0] * vectorRight.v[0] + matrixLeft.m[4] * vectorRight.v[1] + matrixLeft.m[8] * vectorRight.v[2] + matrixLeft.m[12] * vectorRight.v[3],
matrixLeft.m[1] * vectorRight.v[0] + matrixLeft.m[5] * vectorRight.v[1] + matrixLeft.m[9] * vectorRight.v[2] + matrixLeft.m[13] * vectorRight.v[3],
matrixLeft.m[2] * vectorRight.v[0] + matrixLeft.m[6] * vectorRight.v[1] + matrixLeft.m[10] * vectorRight.v[2] + matrixLeft.m[14] * vectorRight.v[3],
matrixLeft.m[3] * vectorRight.v[0] + matrixLeft.m[7] * vectorRight.v[1] + matrixLeft.m[11] * vectorRight.v[2] + matrixLeft.m[15] * vectorRight.v[3] };
return v;
#endif
}
static __inline__ void GLKMatrix4MultiplyVector4Array(GLKMatrix4 matrix, GLKVector4 *vectors, size_t vectorCount)
{
size_t i;
for (i=0; i < vectorCount; i++)
vectors[i] = GLKMatrix4MultiplyVector4(matrix, vectors[i]);
}
#ifdef __cplusplus
}
#endif
#endif /* __GLK_MATRIX_4_H */

99
samples/C/NWMan.h Normal file
View File

@@ -0,0 +1,99 @@
#ifndef _NME_WMAN_H
#define _NME_WMAN_H
// Internal window manager API
#include "NCompat.h"
START_HEAD
#include "NPos.h"
#include "NUtil.h"
#include "NTypes.h"
NTS(NWMan_event);
NSTRUCT(NWMan, {
// Init stuff
bool (*init)();
bool (*destroy)();
// Window stuff
bool (*create_window)();
bool (*destroy_window)();
void (*swap_buffers)();
// Event stuff
bool (*next_event)(NWMan_event* event);
// Time stuff
uint (*get_millis)();
void (*sleep)(uint millis);
// Info
int rshift_key;
int lshift_key;
int left_key;
int right_key;
});
NENUM(NWMan_event_type, {
N_WMAN_MOUSE_MOVE = 0,
N_WMAN_MOUSE_BUTTON = 1,
N_WMAN_MOUSE_WHEEL = 2,
N_WMAN_KEYBOARD = 10,
N_WMAN_QUIT = 20,
N_WMAN_RESIZE = 21,
N_WMAN_FOCUS = 22
});
#define N_WMAN_MOUSE_LEFT 0
#define N_WMAN_MOUSE_RIGHT 1
#define N_WMAN_MOUSE_MIDDLE 2
NSTRUCT(NWMan_event, {
NWMan_event_type type;
union {
// Mouse
NPos2i mouse_pos;
struct {
short id;
bool state;
} mouse_button;
signed char mouse_wheel; // 1 if up, -1 if down
// Keyboard
struct {
int key;
bool state;
} keyboard;
// Window
bool window_quit; // Will always be true if WM_QUIT
NPos2i window_size;
bool window_focus;
};
});
NWMan_event NWMan_event_new(NWMan_event_type type);
bool NWMan_init();
bool NWMan_destroy();
extern NWMan N_WMan;
END_HEAD
#endif

27
samples/C/Nightmare.h Normal file
View File

@@ -0,0 +1,27 @@
#ifndef _NMEX_NIGHTMARE_H
#define _NMEX_NIGHTMARE_H
//#define NMEX
#include "../src/NCompat.h"
START_HEAD
#include "../src/NTypes.h"
#include "../src/NUtil.h"
#include "../src/NPorting.h"
#include "../src/NGlobals.h"
#include "../src/NLog.h"
#include "../src/NWMan.h"
#include "../src/NRsc.h"
#include "../src/NShader.h"
#include "../src/NSquare.h"
#include "../src/NImage.h"
#include "../src/NSprite.h"
#include "../src/NSpritesheet.h"
#include "../src/NEntity.h"
#include "../src/Game.h"
END_HEAD
#endif

47
samples/C/bitmap.h Normal file
View File

@@ -0,0 +1,47 @@
#pragma once
/* Copyright © 2010 Christoph Sünderhauf
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include "generic.h"
typedef struct {
uint32_t numbits;
/* an array large enough for numbits to fit in. Might
* (if numbits%8!=0) have some spare bits at the end
*/
uint32_t* bits;
} bitmap_t;
// creates a new bitmap.
// CONTENT IS RANDOM! - use bitmap_clearall() to clear the bitmap.
bitmap_t bitmap_init(uint32_t numbits);
// returns 1 or 0
uint8_t bitmap_get(bitmap_t bitmap, uint32_t bitnum);
// sets a bit (to 1)
void bitmap_set(bitmap_t bitmap, uint32_t bitnum);
// clears a bit (to 0)
void bitmap_clear(bitmap_t bitmap, uint32_t bitnum);
// clears every bit to 0
void bitmap_clearAll(bitmap_t bitmap);
// finds the first bit set to 0 returns 0 if no cleared bit found (0 is also returned if the first bit is cleared)
uint32_t bitmap_findFirstClear(bitmap_t bitmap);

44
samples/C/color.h Normal file
View File

@@ -0,0 +1,44 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
typedef struct {
uint32_t background;
uint32_t foreground;
} console_color_t;
#define CONSOLE_COLOR_BLACK 0x0
#define CONSOLE_COLOR_BLUE 0x1
#define CONSOLE_COLOR_GREEN 0x2
#define CONSOLE_COLOR_CYAN 0x3
#define CONSOLE_COLOR_RED 0x4
#define CONSOLE_COLOR_MAGENTA 0x5
#define CONSOLE_COLOR_BROWN 0x6
#define CONSOLE_COLOR_LGREY 0x7
#define CONSOLE_COLOR_DGREY 0x8
#define CONSOLE_COLOR_LBLUE 0x9
#define CONSOLE_COLOR_LGREEN 0xa
#define CONSOLE_COLOR_LCYAN 0xb
#define CONSOLE_COLOR_LRED 0xc
#define CONSOLE_COLOR_LMAGENTA 0xd
#define CONSOLE_COLOR_YELLOW 0xe
#define CONSOLE_COLOR_WHITE 0xf

52
samples/C/driver.h Normal file
View File

@@ -0,0 +1,52 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <console/info.h>
#define CONSOLE_DRV_CAP_CLEAR 0x01
#define CONSOLE_DRV_CAP_SCROLL 0x02
#define CONSOLE_DRV_CAP_SET_CURSOR 0x04
// Input modifier keys
typedef struct {
bool shift_left:1;
bool shift_right:1;
bool control_left:1;
bool control_right:1;
bool alt:1;
bool super:1;
} console_modifiers_t;
typedef struct {
char character;
console_modifiers_t* modifiers;
} console_read_t;
typedef struct {
int (*write)(console_info_t*, char);
console_read_t* (*read)(console_info_t*);
int capabilities;
int (*_clear)(console_info_t*);
int (*scroll)(console_info_t*, int32_t);
void (*setCursor)(console_info_t*, uint32_t, uint32_t);
} console_driver_t;

70
samples/C/elf.h Normal file
View File

@@ -0,0 +1,70 @@
#pragma once
/* Copyright © 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <tasks/scheduler.h>
#define ELF_TYPE_NONE 0
#define ELF_TYPE_REL 1
#define ELF_TYPE_EXEC 2
#define ELF_TYPE_DYN 3
#define ELF_TYPE_CORE 4
#define ELF_ARCH_NONE 0
#define ELF_ARCH_386 3
#define ELF_VERSION_CURRENT 1
typedef struct {
unsigned char magic[4];
/* Note: There _is_ other stuff in here, but we don't need it */
unsigned char pad[12];
} __attribute__((packed)) elf_ident_t;
typedef struct {
uint32_t type;
uint32_t offset;
void* virtaddr;
void* physaddr;
uint32_t filesize;
uint32_t memsize;
uint32_t flags;
uint32_t alignment;
} __attribute__((packed)) elf_program_t;
typedef struct {
elf_ident_t ident;
uint16_t type; /* Object file type */
uint16_t machine; /* Architecture */
uint32_t version; /* Object file version */
void* entry; /* Entry point virtual address */
uint32_t phoff; /* Program header table file offset */
uint32_t shoff; /* Section header table file offset */
uint32_t flags; /* Processor-specific flags */
uint16_t ehsize; /* ELF header size in bytes */
uint16_t phentsize; /* Program header table entry size */
uint16_t phnum; /* Program header table entry count */
uint16_t shentsize; /* Section header table entry size */
uint16_t shnum; /* Section header table entry count */
uint16_t shstrndx; /* Section header string table index */
} __attribute__((packed)) elf_t;
task_t* elf_load(elf_t* bin, char* name, char** environ, char** argv, int argc);
task_t* elf_load_file(char* path, char** environ, char** argv, int argc);

2310
samples/C/filenames/script Executable file

File diff suppressed because it is too large Load Diff

45
samples/C/filter.h Normal file
View File

@@ -0,0 +1,45 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <console/info.h>
#include <console/driver.h>
struct console_filter {
// General callback for all actions etc.
// Preferred prototype:
// char <name>(char c, console_info_t *info, console_driver_t *input, console_driver_t *output);
char (*callback)(char, console_info_t*, console_driver_t*, console_driver_t*);
// Specific callbacks for read and write
// Preferred prototype:
// char <name>(char c, console_info_t *info, console_driver_t *input);
char (*read_callback)(char, console_info_t*, console_driver_t*);
// Preferred prototype:
// char <name>(char c, console_info_t *info, console_driver_t *output);
char (*write_callback)(char, console_info_t*, console_driver_t*);
// The next filter in the filter chain
struct console_filter* next;
};
typedef struct console_filter console_filter_t;

44
samples/C/info.h Normal file
View File

@@ -0,0 +1,44 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <console/color.h>
typedef struct {
uint32_t cursor_x;
uint32_t cursor_y;
uint32_t rows;
uint32_t columns;
uint32_t tabstop;
console_color_t default_color;
console_color_t current_color;
uint8_t nonblocking;
uint8_t reverse_video;
uint8_t bold;
uint8_t blink;
uint8_t underline;
uint8_t newline_mode;
uint8_t auto_echo;
uint8_t handle_backspace;
} console_info_t;

47
samples/C/interface.h Normal file
View File

@@ -0,0 +1,47 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <console/info.h>
#include <console/filter.h>
#include <console/driver.h>
typedef struct {
console_info_t info;
console_filter_t* input_filter;
console_filter_t* output_filter;
console_driver_t* input_driver;
console_driver_t* output_driver;
} console_t;
console_t* default_console;
// Generate raw console, connected to the Display, Keyboard and the
// ECMA-48-Filter
void console_init();
size_t console_write(console_t* console, const char* buffer, int32_t length);
#define console_write2(console, buffer) console_write(console, buffer, strlen(buffer))
size_t console_read(console_t* console, char* buffer, size_t length);
size_t console_scroll(console_t* console, int32_t pages);
void console_clear(console_t* console);

50
samples/C/ip4.h Normal file
View File

@@ -0,0 +1,50 @@
#pragma once
/* Copyright © 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <net/net.h>
#define IP4_TOS_ICMP 0
typedef uint32_t ip4_addr_t;
typedef struct {
unsigned int hl:4; /* both fields are 4 bits */
unsigned int version:4;
uint8_t tos;
uint16_t len;
uint16_t id;
uint16_t off;
uint8_t ttl;
uint8_t p;
uint16_t checksum;
ip4_addr_t src;
ip4_addr_t dst;
} ip4_header_t;
typedef struct {
uint8_t type;
uint8_t code;
uint16_t checksum;
uint16_t id;
uint16_t sequence;
} ip4_icmp_header_t;
void ip4_receive(net_device_t* origin, net_l2proto_t proto, size_t size, void* raw);

110
samples/C/multiboot.h Normal file
View File

@@ -0,0 +1,110 @@
#pragma once
/* Copyright © 2010, 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#define MULTIBOOT_KERNELMAGIC 0x2BADB002
#define MULTIBOOT_FLAG_MEM 0x001
#define MULTIBOOT_FLAG_DEVICE 0x002
#define MULTIBOOT_FLAG_CMDLINE 0x004
#define MULTIBOOT_FLAG_MODS 0x008
#define MULTIBOOT_FLAG_AOUT 0x010
#define MULTIBOOT_FLAG_ELF 0x020
#define MULTIBOOT_FLAG_MMAP 0x040
#define MULTIBOOT_FLAG_CONFIG 0x080
#define MULTIBOOT_FLAG_LOADER 0x100
#define MULTIBOOT_FLAG_APM 0x200
#define MULTIBOOT_FLAG_VBE 0x400
// The symbol table for a.out.
typedef struct
{
uint32_t tabSize;
uint32_t strSize;
uint32_t addr;
uint32_t reserved;
} __attribute__((packed)) multiboot_aoutSymbolTable_t;
// The section header table for ELF.
typedef struct
{
uint32_t num;
uint32_t size;
uint32_t addr;
uint32_t shndx;
} __attribute__((packed)) multiboot_elfSectionHeaderTable_t;
typedef struct
{
uint32_t size;
uint64_t addr;
uint64_t length;
uint32_t type;
} __attribute__((packed)) multiboot_memoryMap_t;
typedef struct
{
uint32_t start;
uint32_t end;
char* cmdLine;
uint32_t reserved;
} __attribute__((packed)) multiboot_module_t;
typedef struct
{
uint32_t flags;
uint32_t memLower;
uint32_t memUpper;
uint32_t bootDevice;
char* cmdLine;
uint32_t modsCount;
multiboot_module_t* modsAddr;
union
{
multiboot_aoutSymbolTable_t aoutSym;
multiboot_elfSectionHeaderTable_t elfSec;
} u;
uint32_t mmapLength;
uint32_t mmapAddr;
uint32_t drivesLength;
uint32_t drivesAddr;
// ROM configuration table
uint32_t configTable;
char* bootLoaderName;
uint32_t apmTable;
// Video
uint32_t vbeControlInfo;
uint32_t vbeModeInfo;
uint16_t vbeMode;
uint16_t vbeInterfaceSeg;
uint16_t vbeInterfaceOff;
uint16_t vbeInterfaceLen;
} __attribute__((packed)) multiboot_info_t;
multiboot_info_t* multiboot_info;
void arch_multiboot_printInfo();

89
samples/C/ntru_encrypt.h Normal file
View File

@@ -0,0 +1,89 @@
/*
* Copyright (C) 2014 FH Bielefeld
*
* This file is part of a FH Bielefeld project.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
/**
* @file ntru_encrypt.h
* Header for the internal API of ntru_encrypt.c.
* @brief header for encrypt.c
*/
#ifndef PQC_ENCRYPT_H
#define PQC_ENCRYPT_H
#include "ntru_params.h"
#include "ntru_poly.h"
#include "ntru_string.h"
#include <fmpz_poly.h>
#include <fmpz.h>
/**
* encrypt the msg, using the math:
* e = (h r) + m (mod q)
*
* e = the encrypted poly
*
* h = the public key
*
* r = the random poly
*
* m = the message poly
*
* q = large mod
*
* @param msg_tern the message to encrypt, in ternary format
* @param pub_key the public key
* @param rnd the random poly (should have relatively small
* coefficients, but not restricted to {-1, 0, 1})
* @param out the output poly which is in the range {0, q-1}
* (not ternary!) [out]
* @param params ntru_params the ntru context
*/
void
ntru_encrypt_poly(
const fmpz_poly_t msg_tern,
const fmpz_poly_t pub_key,
const fmpz_poly_t rnd,
fmpz_poly_t out,
const ntru_params *params);
/**
* Encrypt a message in the form of a null-terminated char array and
* return a string.
*
* @param msg the message
* @param pub_key the public key
* @param rnd the random poly (should have relatively small
* coefficients, but not restricted to {-1, 0, 1})
* @param params ntru_params the ntru context
* @return the newly allocated encrypted string
*/
string *
ntru_encrypt_string(
const string *msg,
const fmpz_poly_t pub_key,
const fmpz_poly_t rnd,
const ntru_params *params);
#endif /* PQC_ENCRYPT_H */

43
samples/C/portio.h Normal file
View File

@@ -0,0 +1,43 @@
#pragma once
/* Copyright © 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <lib/stdint.h>
// Legacy
#define outb(args...) portio_out8(args)
#define outw(args...) portio_out16(args)
#define outl(args...) portio_out32(args)
#define outq(args...) portio_out64(args)
#define inb(args...) portio_in8(args)
#define inw(args...) portio_in16(args)
#define inl(args...) portio_in32(args)
#define inq(args...) portio_in64(args)
void portio_out8(uint16_t port, uint8_t value);
void portio_out16(uint16_t port, uint16_t value);
void portio_out32(uint16_t port, uint32_t value);
void portio_out64(uint16_t port, uint64_t value);
uint8_t portio_in8(uint16_t port);
uint16_t portio_in16(uint16_t port);
uint32_t portio_in32(uint16_t port);
uint64_t portio_in64(uint16_t port);

166
samples/C/pqiv.h Normal file
View File

@@ -0,0 +1,166 @@
/**
* pqiv
*
* Copyright (c) 2013-2014, Phillip Berndt
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
// This file contains the definition of files, image types and
// the plugin infrastructure. It should be included in file type
// handlers.
#ifndef _PQIV_H_INCLUDED
#define _PQIV_H_INCLUDED
#include <glib.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include "lib/bostree.h"
#ifndef PQIV_VERSION
#define PQIV_VERSION "2.3"
#endif
#define FILE_FLAGS_ANIMATION (guint)(1)
#define FILE_FLAGS_MEMORY_IMAGE (guint)(1<<1)
// The structure for images {{{
typedef struct file_type_handler_struct_t file_type_handler_t;
typedef struct {
// File type
const file_type_handler_t *file_type;
// Special flags
// FILE_FLAGS_ANIMATION -> Animation functions are invoked
// Set by file type handlers
// FILE_FLAGS_MEMORY_IMAGE -> File lives in memory
guint file_flags;
// The file name to display and to sort by
gchar *display_name;
// The URI or file name of the file
gchar *file_name;
// If the file is a memory image, the actual image data
GBytes *file_data;
// The file monitor structure is used for inotify-watching of
// the files
GFileMonitor *file_monitor;
// This flag stores whether this image is currently loaded
// and valid. i.e. if it is set, you can assume that
// private_data contains a representation of the image;
// if not, you can NOT assume that it does not.
gboolean is_loaded;
// Cached image size
guint width;
guint height;
// File-type specific data, allocated and freed by the file type handlers
void *private;
} file_t;
// }}}
// Definition of the built-in file types {{{
// If you want to implement your own file type, you'll have to implement the
// following functions and a non-static initialization function named
// file_type_NAME_initializer that fills a file_type_handler_t with pointers to
// the functions. Store the file in backends/NAME.c and adjust the Makefile to
// add the required libraries if your backend is listed in the $(BACKENDS)
// variable.
typedef enum { PARAMETER, RECURSION, INOTIFY, BROWSE_ORIGINAL_PARAMETER, FILTER_OUTPUT } load_images_state_t;
// Allocation function: Allocate the ->private structure within a file and add the
// image(s) to the list of available images via load_images_handle_parameter_add_file()
// If an image is not to be loaded for any reason, the file structure should be
// deallocated using file_free()
// Returns a pointer to the first added image
// Optional, you can also set the pointer to this function to NULL.
typedef BOSNode *(*file_type_alloc_fn_t)(load_images_state_t state, file_t *file);
// Deallocation, if a file is removed from the images list. Free the ->private structure.
// Only called if ->private is non-NULL.
typedef void (*file_type_free_fn_t)(file_t *file);
// Actually load a file into memory
typedef void (*file_type_load_fn_t)(file_t *file, GInputStream *data, GError **error_pointer);
// Unload a file
typedef void (*file_type_unload_fn_t)(file_t *file);
// Animation support: Initialize memory for animations, return ms until first frame
// Optional, you can also set the pointer to this function to NULL.
typedef double (*file_type_animation_initialize_fn_t)(file_t *file);
// Animation support: Advance to the next frame, return ms until next frame
// Optional, you can also set the pointer to this function to NULL.
typedef double (*file_type_animation_next_frame_fn_t)(file_t *file);
// Draw the current view to a cairo context
typedef void (*file_type_draw_fn_t)(file_t *file, cairo_t *cr);
struct file_type_handler_struct_t {
// All files will be filtered with this filter. If it lets it pass,
// a handler is assigned to a file. If none do, the file is
// discarded if it was found during directory traversal or
// loaded using the first image backend if it was an explicit
// parameter.
GtkFileFilter *file_types_handled;
// Pointers to the functions defined above
file_type_alloc_fn_t alloc_fn;
file_type_free_fn_t free_fn;
file_type_load_fn_t load_fn;
file_type_unload_fn_t unload_fn;
file_type_animation_initialize_fn_t animation_initialize_fn;
file_type_animation_next_frame_fn_t animation_next_frame_fn;
file_type_draw_fn_t draw_fn;
};
// Initialization function: Tell pqiv about a backend
typedef void (*file_type_initializer_fn_t)(file_type_handler_t *info);
// pqiv symbols available to plugins {{{
// Global cancellable that should be used for every i/o operation
extern GCancellable *image_loader_cancellable;
// Current scale level. For backends that don't support cairo natively.
extern gdouble current_scale_level;
// Load a file from disc/memory/network
GInputStream *image_loader_stream_file(file_t *file, GError **error_pointer);
// Add a file to the list of loaded files
// Should be called at least once in a file_type_alloc_fn_t, with the state being
// forwarded unaltered.
BOSNode *load_images_handle_parameter_add_file(load_images_state_t state, file_t *file);
// Load all data from an input stream into memory, conveinience function
GBytes *g_input_stream_read_completely(GInputStream *input_stream, GCancellable *cancellable, GError **error_pointer);
// Free a file
void file_free(file_t *file);
// }}}
// File type handlers, used in the initializer and file type guessing
extern file_type_handler_t file_type_handlers[];
/* }}} */
#endif

69
samples/C/scheduler.h Normal file
View File

@@ -0,0 +1,69 @@
#pragma once
/* Copyright © 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <hw/cpu.h>
#include <memory/vmem.h>
#define SCHEDULER_MAXNAME 256
#define SCHEDULER_TASK_PATH_MAX 256
// Single linked list
typedef struct task {
uint32_t pid;
char name[SCHEDULER_MAXNAME];
struct task *parent;
cpu_state_t* state;
struct task* next;
struct task* previous;
void* stack;
void* entry;
struct vmem_context *memory_context;
// Current task state
enum {
TASK_STATE_KILLED,
TASK_STATE_TERMINATED,
TASK_STATE_BLOCKING,
TASK_STATE_STOPPED,
TASK_STATE_RUNNING
} task_state;
char** environ;
char** argv;
int argc;
// TODO Is this actually the same as PATH_MAX in our toolchain?
char cwd[SCHEDULER_TASK_PATH_MAX + 1];
} task_t;
int scheduler_state;
task_t* scheduler_new(void* entry, task_t* parent, char name[SCHEDULER_MAXNAME],
char** environ, char** argv, int argc, struct vmem_context* memory_context, bool map_structs);
void scheduler_add(task_t *task);
void scheduler_terminate_current();
task_t* scheduler_get_current();
task_t* scheduler_select(cpu_state_t* lastRegs);
void scheduler_init();
void scheduler_yield();
void scheduler_remove(task_t *t);
task_t* scheduler_fork(task_t* to_fork, cpu_state_t* state);

95
samples/C/syscalls.h Normal file
View File

@@ -0,0 +1,95 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#include <tasks/syscall.h>
#include "syscalls/write.h"
#include "syscalls/exit.h"
#include "syscalls/getpid.h"
#include "syscalls/getppid.h"
#include "syscalls/read.h"
#include "syscalls/brk.h"
#include "syscalls/mmap.h"
#include "syscalls/munmap.h"
#include "syscalls/test.h"
#include "syscalls/hostname.h"
#include "syscalls/uname.h"
#include "syscalls/open.h"
#include "syscalls/execve.h"
#include "syscalls/seek.h"
#include "syscalls/opendir.h"
#include "syscalls/readdir.h"
#include "syscalls/kill.h"
#include "syscalls/getexecdata.h"
#include "syscalls/cwd.h"
#include "syscalls/fork.h"
syscall_t syscall_table[] = {
NULL,
sys_exit, // 1
sys_read, // 2
sys_write, // 3
sys_getpid, // 4
sys_brk, // 5
sys_getppid, // 6
sys_mmap, // 7
sys_munmap, // 8
sys_test, // 9
sys_get_hostname, // 10
sys_set_hostname, // 11
sys_uname, // 12
sys_open, // 13
sys_execve, // 14
sys_seek, // 15
sys_opendir, // 16
sys_readdir, // 17
sys_kill, // 18
sys_getexecdata, // 19
sys_chdir, // 20
sys_getcwd, // 21
sys_fork, // 22
};
char* syscall_name_table[] = {
NULL,
"exit", // 1
"read", // 2
"write", // 3
"getpid", // 4
"brk", // 5
"getppid", // 6
"mmap", // 7
"munmap", // 8
"test", // 9
"get_hostname", // 10
"set_hostname", // 11
"uname", // 12
"open", // 13
"execve", // 14
"seek", // 15
"opendir", // 16
"readdir", // 17
"kill", // 18
"getexecdata", // 19
"chdir", // 20
"getcwd", // 21
"fork", // 22
};

56
samples/C/vfs.h Normal file
View File

@@ -0,0 +1,56 @@
#pragma once
/* Copyright © 2010, 2011 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
#define VFS_SEEK_SET 0
#define VFS_SEEK_CUR 1
#define VFS_SEEK_END 2
typedef struct {
uint64_t num;
char path[512];
char mount_path[512];
uint32_t offset;
uint32_t mountpoint;
} vfs_file_t;
typedef struct {
uint64_t num;
char path[512];
char mount_path[512];
uint32_t mountpoint;
} vfs_dir_t;
typedef void* (*vfs_read_callback_t)(char* path, uint32_t offset, uint32_t size);
typedef char* (*vfs_read_dir_callback_t)(char* path, uint32_t offset);
// Used to always store the last read/write attempt (used for kernel panic debugging)
char vfs_last_read_attempt[512];
vfs_file_t* vfs_get_from_id(uint32_t id);
vfs_dir_t* vfs_get_dir_from_id(uint32_t id);
void* vfs_read(vfs_file_t* fp, uint32_t size);
char* vfs_dir_read(vfs_dir_t* dir, uint32_t offset);
void vfs_seek(vfs_file_t* fp, uint32_t offset, int origin);
vfs_file_t* vfs_open(char* path);
vfs_dir_t* vfs_dir_open(char* path);
int vfs_mount(char* path, vfs_read_callback_t read_callback, vfs_read_dir_callback_t read_dir_callback);

94
samples/C/vmem.h Normal file
View File

@@ -0,0 +1,94 @@
#pragma once
/* Copyright © 2011 Fritz Grimpen
* Copyright © 2013 Lukas Martini
*
* This file is part of Xelix.
*
* Xelix is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xelix is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Xelix. If not, see <http://www.gnu.org/licenses/>.
*/
#include <lib/generic.h>
struct vmem_context;
struct vmem_page
{
enum
{
VMEM_SECTION_STACK, /* Initial stack */
VMEM_SECTION_CODE, /* Contains program code and is read-only */
VMEM_SECTION_DATA, /* Contains static data */
VMEM_SECTION_HEAP, /* Allocated by brk(2) at runtime */
VMEM_SECTION_MMAP, /* Allocated by mmap(2) at runtime */
VMEM_SECTION_KERNEL, /* Contains kernel-internal data */
VMEM_SECTION_UNMAPPED /* Unmapped */
} section;
bool readonly:1;
bool cow:1; /* Copy-on-Write mechanism */
bool allocated:1;
void *cow_src_addr;
void *virt_addr;
void *phys_addr;
};
typedef void (*vmem_iterator_t)(struct vmem_context *, struct vmem_page *, uint32_t);
/* Initialize vmem_kernelContext for paging_init() */
void vmem_init();
struct vmem_context *vmem_kernelContext;
struct vmem_context *vmem_currentContext;
struct vmem_context *vmem_processContext;
void *vmem_faultAddress;
/* Some callbacks for magic functions */
void (*vmem_applyPage)(struct vmem_context *, struct vmem_page *);
/* Generate new page context */
struct vmem_context *vmem_new();
struct vmem_page *vmem_new_page();
int vmem_add_page(struct vmem_context *ctx, struct vmem_page *pg);
struct vmem_page *vmem_get_page_phys(struct vmem_context *ctx, void *phys_addr);
struct vmem_page *vmem_get_page_virt(struct vmem_context *ctx, void *virt_addr);
struct vmem_page *vmem_get_page(struct vmem_context *ctx, uint32_t offset);
/* Remove pages in a specific context by physical or virtual address */
struct vmem_page *vmem_rm_page_phys(struct vmem_context *ctx, void *phys_addr);
struct vmem_page *vmem_rm_page_virt(struct vmem_context *ctx, void *virt_addr);
/* Iterator */
int vmem_iterate(struct vmem_context *ctx, vmem_iterator_t callback);
uint32_t vmem_count_pages(struct vmem_context *ctx);
void vmem_dump_page(struct vmem_page *pg);
void vmem_dump(struct vmem_context *ctx);
void vmem_handle_fault(uint32_t code, void *addr, void *instruction);
/* Get/Set cached paging context */
void vmem_set_cache(struct vmem_context *ctx, void *cache);
void *vmem_get_cache(struct vmem_context *ctx);
#ifdef __i386__
#define PAGE_SIZE 4096
#define VMEM_ALIGN(x) (typeof(x))(((intptr_t)(x) & 0xFFFFF000) + 0x1000)
#define VMEM_ALIGN_DOWN(x) (typeof(x))( \
((intptr_t)(x) - ((intptr_t)(x) % PAGE_SIZE)))
#else
#define PAGE_SIZE 0
#define VMEM_ALIGN(x) (x)
#endif

343
samples/CLIPS/demo.clp Normal file
View File

@@ -0,0 +1,343 @@
;;;***************************
;;;* DEFFACTS KNOWLEDGE BASE *
;;;***************************
(deffacts MAIN::knowledge-base
(welcome (message WelcomeMessage))
(goal (variable type.animal))
(legalanswers (values yes no))
(displayanswers (values "Yes" "No"))
(rule (if backbone is yes)
(then superphylum is backbone))
(rule (if backbone is no)
(then superphylum is jellyback))
(question (variable backbone)
(query backbone.query))
(rule (if superphylum is backbone and
warm.blooded is yes)
(then phylum is warm))
(rule (if superphylum is backbone and
warm.blooded is no)
(then phylum is cold))
(question (variable warm.blooded)
(query warm.blooded.query))
(rule (if superphylum is jellyback and
live.prime.in.soil is yes)
(then phylum is soil))
(rule (if superphylum is jellyback and
live.prime.in.soil is no)
(then phylum is elsewhere))
(question (variable live.prime.in.soil)
(query live.prime.in.soil.query))
(rule (if phylum is warm and
has.breasts is yes)
(then class is breasts))
(rule (if phylum is warm and
has.breasts is no)
(then type.animal is bird))
(question (variable has.breasts)
(query has.breasts.query))
(rule (if phylum is cold and
always.in.water is yes)
(then class is water))
(rule (if phylum is cold and
always.in.water is no)
(then class is dry))
(question (variable always.in.water)
(query always.in.water.query))
(rule (if phylum is soil and
flat.bodied is yes)
(then type.animal is flatworm))
(rule (if phylum is soil and
flat.bodied is no)
(then type.animal is worm.leech))
(question (variable flat.bodied)
(query flat.bodied.query))
(rule (if phylum is elsewhere and
body.in.segments is yes)
(then class is segments))
(rule (if phylum is elsewhere and
body.in.segments is no)
(then class is unified))
(question (variable body.in.segments)
(query body.in.segments.query))
(rule (if class is breasts and
can.eat.meat is yes)
(then order is meat))
(rule (if class is breasts and
can.eat.meat is no)
(then order is vegy))
(question (variable can.eat.meat)
(query can.eat.meat.query))
(rule (if class is water and
boney is yes)
(then type.animal is fish))
(rule (if class is water and
boney is no)
(then type.animal is shark.ray))
(question (variable boney)
(query boney.query))
(rule (if class is dry and
scaly is yes)
(then order is scales))
(rule (if class is dry and
scaly is no)
(then order is soft))
(question (variable scaly)
(query scaly.query))
(rule (if class is segments and
shell is yes)
(then order is shell))
(rule (if class is segments and
shell is no)
(then type.animal is centipede.millipede.insect))
(question (variable shell)
(query shell.query))
(rule (if class is unified and
digest.cells is yes)
(then order is cells))
(rule (if class is unified and
digest.cells is no)
(then order is stomach))
(question (variable digest.cells)
(query digest.cells.query))
(rule (if order is meat and
fly is yes)
(then type.animal is bat))
(rule (if order is meat and
fly is no)
(then family is nowings))
(question (variable fly)
(query fly.query))
(rule (if order is vegy and
hooves is yes)
(then family is hooves))
(rule (if order is vegy and
hooves is no)
(then family is feet))
(question (variable hooves)
(query hooves.query))
(rule (if order is scales and
rounded.shell is yes)
(then type.animal is turtle))
(rule (if order is scales and
rounded.shell is no)
(then family is noshell))
(question (variable rounded.shell)
(query rounded.shell.query))
(rule (if order is soft and
jump is yes)
(then type.animal is frog))
(rule (if order is soft and
jump is no)
(then type.animal is salamander))
(question (variable jump)
(query jump.query))
(rule (if order is shell and
tail is yes)
(then type.animal is lobster))
(rule (if order is shell and
tail is no)
(then type.animal is crab))
(question (variable tail)
(query tail.query))
(rule (if order is cells and
stationary is yes)
(then family is stationary))
(rule (if order is cells and
stationary is no)
(then type.animal is jellyfish))
(question (variable stationary)
(query stationary.query))
(rule (if order is stomach and
multicelled is yes)
(then family is multicelled))
(rule (if order is stomach and
multicelled is no)
(then type.animal is protozoa))
(question (variable multicelled)
(query multicelled.query))
(rule (if family is nowings and
opposing.thumb is yes)
(then genus is thumb))
(rule (if family is nowings and
opposing.thumb is no)
(then genus is nothumb))
(question (variable opposing.thumb)
(query opposing.thumb.query))
(rule (if family is hooves and
two.toes is yes)
(then genus is twotoes))
(rule (if family is hooves and
two.toes is no)
(then genus is onetoe))
(question (variable two.toes)
(query two.toes.query))
(rule (if family is feet and
live.in.water is yes)
(then genus is water))
(rule (if family is feet and
live.in.water is no)
(then genus is dry))
(question (variable live.in.water)
(query live.in.water.query))
(rule (if family is noshell and
limbs is yes)
(then type.animal is crocodile.alligator))
(rule (if family is noshell and
limbs is no)
(then type.animal is snake))
(question (variable limbs)
(query limbs.query))
(rule (if family is stationary and
spikes is yes)
(then type.animal is sea.anemone))
(rule (if family is stationary and
spikes is no)
(then type.animal is coral.sponge))
(question (variable spikes)
(query spikes.query))
(rule (if family is multicelled and
spiral.shell is yes)
(then type.animal is snail))
(rule (if family is multicelled and
spiral.shell is no)
(then genus is noshell))
(question (variable spiral.shell)
(query spiral.shell.query))
(rule (if genus is thumb and
prehensile.tail is yes)
(then type.animal is monkey))
(rule (if genus is thumb and
prehensile.tail is no)
(then species is notail))
(question (variable prehensile.tail)
(query prehensile.tail.query))
(rule (if genus is nothumb and
over.400 is yes)
(then species is 400))
(rule (if genus is nothumb and
over.400 is no)
(then species is under400))
(question (variable over.400)
(query over.400.query))
(rule (if genus is twotoes and
horns is yes)
(then species is horns))
(rule (if genus is twotoes and
horns is no)
(then species is nohorns))
(question (variable horns)
(query horns.query))
(rule (if genus is onetoe and
plating is yes)
(then type.animal is rhinoceros))
(rule (if genus is onetoe and
plating is no)
(then type.animal is horse.zebra))
(question (variable plating)
(query plating.query))
(rule (if genus is water and
hunted is yes)
(then type.animal is whale))
(rule (if genus is water and
hunted is no)
(then type.animal is dolphin.porpoise))
(question (variable hunted)
(query hunted.query))
(rule (if genus is dry and
front.teeth is yes)
(then species is teeth))
(rule (if genus is dry and
front.teeth is no)
(then species is noteeth))
(question (variable front.teeth)
(query front.teeth.query))
(rule (if genus is noshell and
bivalve is yes)
(then type.animal is clam.oyster))
(rule (if genus is noshell and
bivalve is no)
(then type.animal is squid.octopus))
(question (variable bivalve)
(query bivalve.query))
(rule (if species is notail and
nearly.hairless is yes)
(then type.animal is man))
(rule (if species is notail and
nearly.hairless is no)
(then subspecies is hair))
(question (variable nearly.hairless)
(query nearly.hairless.query))
(rule (if species is 400 and
land.based is yes)
(then type.animal is bear.tiger.lion))
(rule (if species is 400 and
land.based is no)
(then type.animal is walrus))
(question (variable land.based)
(query land.based.query))
(rule (if species is under400 and
thintail is yes)
(then type.animal is cat))
(rule (if species is under400 and
thintail is no)
(then type.animal is coyote.wolf.fox.dog))
(question (variable thintail)
(query thintail.query))
(rule (if species is nohorns and
lives.in.desert is yes)
(then type.animal is camel))
(rule (if species is nohorns and
lives.in.desert is no and
semi.aquatic is no)
(then type.animal is giraffe))
(rule (if species is nohorns and
lives.in.desert is no and
semi.aquatic is yes)
(then type.animal is hippopotamus))
(question (variable lives.in.desert)
(query lives.in.desert.query))
(question (variable semi.aquatic)
(query semi.aquatic.query))
(rule (if species is teeth and
large.ears is yes)
(then type.animal is rabbit))
(rule (if species is teeth and
large.ears is no)
(then type.animal is rat.mouse.squirrel.beaver.porcupine))
(question (variable large.ears)
(query large.ears.query))
(rule (if species is noteeth and
pouch is yes)
(then type.animal is kangaroo.koala.bear))
(rule (if species is noteeth and
pouch is no)
(then type.animal is mole.shrew.elephant))
(question (variable pouch)
(query pouch.query))
(rule (if subspecies is hair and
long.powerful.arms is yes)
(then type.animal is orangutan.gorilla.chimpanzee))
(rule (if subspecies is hair and
long.powerful.arms is no)
(then type.animal is baboon))
(question (variable long.powerful.arms)
(query long.powerful.arms.query))
(rule (if species is horns and
fleece is yes)
(then type.animal is sheep.goat))
(rule (if species is horns and
fleece is no)
(then subsubspecies is nofleece))
(question (variable fleece)
(query fleece.query))
(rule (if subsubspecies is nofleece and
domesticated is yes)
(then type.animal is cow))
(rule (if subsubspecies is nofleece and
domesticated is no)
(then type.animal is deer.moose.antelope))
(question (variable domesticated)
(query domesticated.query))
(answer (prefix "I think your animal is a ") (variable type.animal) (postfix ".")))

281
samples/CLIPS/sudoku.clp Normal file
View File

@@ -0,0 +1,281 @@
;;; http://www.angusj.com/sudoku/hints
;;; http://www.scanraid.com/BasicStrategies.htm
;;; http://www.sudokuoftheday.com/pages/techniques-overview
;;; http://www.sudokuonline.us/sudoku_solving_techniques
;;; http://www.sadmansoftware.com/sudoku/techniques.htm
;;; http://www.krazydad.com/blog/2005/09/29/an-index-of-sudoku-strategies/
;;; #######################
;;; DEFTEMPLATES & DEFFACTS
;;; #######################
(deftemplate possible
(slot row)
(slot column)
(slot value)
(slot group)
(slot id))
(deftemplate impossible
(slot id)
(slot value)
(slot priority)
(slot reason))
(deftemplate technique-employed
(slot reason)
(slot priority))
(deftemplate technique
(slot name)
(slot priority))
(deffacts startup
(phase grid-values))
(deftemplate size-value
(slot size)
(slot value))
(deffacts values
(size-value (size 1) (value 1))
(size-value (size 2) (value 2))
(size-value (size 2) (value 3))
(size-value (size 2) (value 4))
(size-value (size 3) (value 5))
(size-value (size 3) (value 6))
(size-value (size 3) (value 7))
(size-value (size 3) (value 8))
(size-value (size 3) (value 9))
(size-value (size 4) (value 10))
(size-value (size 4) (value 11))
(size-value (size 4) (value 12))
(size-value (size 4) (value 13))
(size-value (size 4) (value 14))
(size-value (size 4) (value 15))
(size-value (size 4) (value 16))
(size-value (size 5) (value 17))
(size-value (size 5) (value 18))
(size-value (size 5) (value 19))
(size-value (size 5) (value 20))
(size-value (size 5) (value 21))
(size-value (size 5) (value 22))
(size-value (size 5) (value 23))
(size-value (size 5) (value 24))
(size-value (size 5) (value 25)))
;;; ###########
;;; SETUP RULES
;;; ###########
;;; ***********
;;; stress-test
;;; ***********
(defrule stress-test
(declare (salience 10))
(phase match)
(stress-test)
(priority ?last)
(not (priority ?p&:(> ?p ?last)))
(technique (priority ?next&:(> ?next ?last)))
(not (technique (priority ?p&:(> ?p ?last)&:(< ?p ?next))))
=>
(assert (priority ?next)))
;;; *****************
;;; enable-techniques
;;; *****************
(defrule enable-techniques
(declare (salience 10))
(phase match)
(size ?)
(not (possible (value any)))
=>
(assert (priority 1)))
;;; **********
;;; expand-any
;;; **********
(defrule expand-any
(declare (salience 10))
(phase expand-any)
?f <- (possible (row ?r) (column ?c) (value any) (group ?g) (id ?id))
(not (possible (value any) (id ?id2&:(< ?id2 ?id))))
(size ?s)
(size-value (size ?as&:(<= ?as ?s)) (value ?v))
(not (possible (row ?r) (column ?c) (value ?v)))
(not (and (size-value (value ?v2&:(< ?v2 ?v)))
(not (possible (row ?r) (column ?c) (value ?v2)))))
=>
(assert (possible (row ?r) (column ?c) (value ?v) (group ?g) (id ?id))))
;;; *****************
;;; position-expanded
;;; *****************
(defrule position-expanded
(declare (salience 10))
(phase expand-any)
?f <- (possible (row ?r) (column ?c) (value any) (group ?g) (id ?id))
(size ?s)
(not (and (size-value (size ?as&:(<= ?as ?s)) (value ?v))
(not (possible (row ?r) (column ?c) (value ?v)))))
=>
(retract ?f))
;;; ###########
;;; PHASE RULES
;;; ###########
;;; ***************
;;; expand-any-done
;;; ***************
(defrule expand-any-done
(declare (salience 10))
?f <- (phase expand-any)
(not (possible (value any)))
=>
(retract ?f)
(assert (phase initial-output))
(assert (print-position 1 1)))
;;; ***********
;;; begin-match
;;; ***********
(defrule begin-match
(declare (salience -20))
?f <- (phase initial-output)
=>
(retract ?f)
(assert (phase match)))
;;; *****************
;;; begin-elimination
;;; *****************
(defrule begin-elimination
(declare (salience -20))
?f <- (phase match)
(not (not (impossible)))
=>
(retract ?f)
(assert (phase elimination)))
;;; *************
;;; next-priority
;;; *************
(defrule next-priority
(declare (salience -20))
(phase match)
(not (impossible))
(priority ?last)
(not (priority ?p&:(> ?p ?last)))
(technique (priority ?next&:(> ?next ?last)))
(not (technique (priority ?p&:(> ?p ?last)&:(< ?p ?next))))
=>
(assert (priority ?next)))
;;; ************
;;; begin-output
;;; ************
(defrule begin-output
(declare (salience -20))
?f <- (phase match)
(not (impossible))
(priority ?last)
(not (priority ?p&:(> ?p ?last)))
(not (technique (priority ?next&:(> ?next ?last))))
=>
(retract ?f)
(assert (phase final-output))
(assert (print-position 1 1)))

View File

@@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 2.8)
project(Foo)
set(CMAKE_SKIP_RPATH TRUE)
set(CMAKE_INSTALL_PREFIX "/usr/local")
add_subdirectory(bar)
add_executable(foo foo.c)
target_link_libraries(foo pthread)
install(TARGETS foo DESTINATION bin)

View File

@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 2.6)
enable_testing()
set(CMAKE_BUILD_TYPE debug)
include_directories("/usr/local/include")
find_library(ssl_LIBRARY NAMES ssl PATHS "/usr/local/lib")
add_custom_command(OUTPUT "ver.c" "ver.h" COMMAND ./ver.sh)
add_executable(foo foo.c bar.c baz.c ver.c)
target_link_libraries(foo ${ssl_LIBRARY})

View File

@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(PCLVisualizer)
target_link_libraries (PCLVisualizer ${PCL_LIBRARIES})
#it seems it's needed only on OS X 10.9
find_package(GLEW REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/include -v")
find_package(PCL 1.7 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
set(PCL_BUILD_TYPE Release)
file(GLOB PCL_openni_viewer_SRC
"src/*.h"
"src/*.cpp"
)
add_executable(PCLVisualizer ${PCL_openni_viewer_SRC})
#add this line to solve probem in mac os x 10.9
target_link_libraries(PCLVisualizer ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} ${PCL_VISUALIZATION_LIBRARIES} ${PCL_FEATURES_LIBRARIES})

View File

@@ -0,0 +1,33 @@
# Specifications for building user and development documentation.
#
# ====================================================================
# Copyright (c) 2009 Ian Blumel. All rights reserved.
#
# This software is licensed as described in the file LICENSE, which
# you should have received as part of this distribution.
# ====================================================================
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
FIND_FILE( SPHINX sphinx-build.exe)
# If we are windows call to the make.bat file, otherwise rely on the Makefile
# to handle the processing.
IF(WIN32)
SET(SPHINX_MAKE make.bat)
ELSE(WIN32)
SET(SPHINX_MAKE make)
ENDIF(WIN32)
ADD_CUSTOM_TARGET(
doc_usr
COMMAND ${SPHINX_MAKE} html
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/usr
)
ADD_CUSTOM_TARGET(
doc_dev
COMMAND ${SPHINX_MAKE} html
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dev
)

View File

@@ -0,0 +1,33 @@
cmake_minimum_required (VERSION 2.6)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/vala)
find_package(Vala REQUIRED)
include(ValaPrecompile)
include(ValaVersion)
ensure_vala_version("0.11.0" MINIMUM)
project (template C)
find_package(PkgConfig)
pkg_check_modules(GOBJECT REQUIRED gobject-2.0)
add_definitions(${GOBJECT_CFLAGS} ${GOBJECT_CFLAGS_OTHER})
link_libraries(${GOBJECT_LIBRARIES})
link_directories(${GOBJECT_LIBRARY_DIRS})
vala_precompile(VALA_C
src/template.vala
PACKAGES
OPTIONS
--thread
CUSTOM_VAPIS
GENERATE_VAPI
GENERATE_HEADER
DIRECTORY
gen
)
add_executable("template" ${VALA_C})

View File

@@ -0,0 +1,89 @@
# - Check if the STDCALL function exists.
# This works for non-cdecl functions (kernel32 functions, for example)
# CHECK_STDCALL_FUNCTION_EXISTS(FUNCTION FUNCTION_DUMMY_ARGS VARIABLE)
# - macro which checks if the stdcall function exists
# FUNCTION_DECLARATION - the definition of the function ( e.g.: Sleep(500) )
# VARIABLE - variable to store the result
#
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
# CMAKE_REQUIRED_INCLUDES = list of include directories
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
# CMAKE_EXTRA_INCLUDE_FILES = list of extra includes to check in
MACRO(CHECK_STDCALL_FUNCTION_EXISTS FUNCTION_DECLARATION VARIABLE)
IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
#get includes
SET(CHECK_STDCALL_FUNCTION_PREMAIN)
FOREACH(def ${CMAKE_EXTRA_INCLUDE_FILES})
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"${def}\"\n")
ENDFOREACH(def)
#add some default includes
IF ( HAVE_WINDOWS_H )
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"windows.h\"\n")
ENDIF ( HAVE_WINDOWS_H )
IF ( HAVE_UNISTD_H )
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"unistd.h\"\n")
ENDIF ( HAVE_UNISTD_H )
IF ( HAVE_DIRECT_H )
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"direct.h\"\n")
ENDIF ( HAVE_DIRECT_H )
IF ( HAVE_IO_H )
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"io.h\"\n")
ENDIF ( HAVE_IO_H )
IF ( HAVE_SYS_TIMEB_H )
SET(CHECK_STDCALL_FUNCTION_PREMAIN "${CHECK_STDCALL_FUNCTION_PREMAIN}#include \"sys/timeb.h\"\n")
ENDIF ( HAVE_SYS_TIMEB_H )
STRING(REGEX REPLACE "(\\(.*\\))" "" CHECK_STDCALL_FUNCTION_EXISTS_FUNCTION ${FUNCTION_DECLARATION} )
SET(MACRO_CHECK_STDCALL_FUNCTION_DEFINITIONS "${CMAKE_REQUIRED_FLAGS}")
MESSAGE(STATUS "Looking for ${CHECK_STDCALL_FUNCTION_EXISTS_FUNCTION}")
IF(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_STDCALL_FUNCTION_EXISTS_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
ELSE(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_STDCALL_FUNCTION_EXISTS_ADD_LIBRARIES)
ENDIF(CMAKE_REQUIRED_LIBRARIES)
IF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_STDCALL_FUNCTION_EXISTS_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
ELSE(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_STDCALL_FUNCTION_EXISTS_ADD_INCLUDES)
ENDIF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_STDCALL_FUNCTION_DECLARATION ${FUNCTION_DECLARATION})
CONFIGURE_FILE("${clucene-shared_SOURCE_DIR}/cmake/CheckStdCallFunctionExists.cpp.in"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckStdCallFunctionExists.cpp" IMMEDIATE @ONLY)
FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckStdCallFunctionExists.cpp"
CHECK_STDCALL_FUNCTION_CONTENT)
TRY_COMPILE(${VARIABLE}
${CMAKE_BINARY_DIR}
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckStdCallFunctionExists.cpp"
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_STDCALL_FUNCTION_DEFINITIONS}
"${CHECK_STDCALL_FUNCTION_EXISTS_ADD_LIBRARIES}"
"${CHECK_STDCALL_FUNCTION_EXISTS_ADD_INCLUDES}"
OUTPUT_VARIABLE OUTPUT)
IF(${VARIABLE})
SET(${VARIABLE} 1 CACHE INTERNAL "Have function ${FUNCTION_DECLARATION}")
MESSAGE(STATUS "Looking for ${FUNCTION_DECLARATION} - found")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if the stdcall function ${FUNCTION_DECLARATION} exists passed with the following output:\n"
"${OUTPUT}\nCheckStdCallFunctionExists.cpp:\n${CHECK_STDCALL_FUNCTION_CONTENT}\n\n")
ELSE(${VARIABLE})
MESSAGE(STATUS "Looking for ${FUNCTION_DECLARATION} - not found")
SET(${VARIABLE} "" CACHE INTERNAL "Have function ${FUNCTION_DECLARATION}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if the stdcall function ${FUNCTION_DECLARATION} exists failed with the following output:\n"
"${OUTPUT}\nCheckStdCallFunctionExists.cpp:\n${CHECK_STDCALL_FUNCTION_CONTENT}\n\n")
ENDIF(${VARIABLE})
ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$")
ENDMACRO(CHECK_STDCALL_FUNCTION_EXISTS)

Some files were not shown because too many files have changed in this diff Show More