mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Merge pull request #3126 from Alhadis/roff
Improve Roff support / Add RUNOFF to recognised languages
This commit is contained in:
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -91,9 +91,6 @@
|
|||||||
[submodule "vendor/grammars/bro-sublime"]
|
[submodule "vendor/grammars/bro-sublime"]
|
||||||
path = vendor/grammars/bro-sublime
|
path = vendor/grammars/bro-sublime
|
||||||
url = https://github.com/bro/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"]
|
[submodule "vendor/grammars/sublime-MuPAD"]
|
||||||
path = vendor/grammars/sublime-MuPAD
|
path = vendor/grammars/sublime-MuPAD
|
||||||
url = https://github.com/ccreutzig/sublime-MuPAD
|
url = https://github.com/ccreutzig/sublime-MuPAD
|
||||||
@@ -755,3 +752,6 @@ url = https://github.com/austinwagner/sublime-sourcepawn
|
|||||||
[submodule "vendor/grammars/SublimeGDB"]
|
[submodule "vendor/grammars/SublimeGDB"]
|
||||||
path = vendor/grammars/SublimeGDB
|
path = vendor/grammars/SublimeGDB
|
||||||
url = https://github.com/quarnster/SublimeGDB
|
url = https://github.com/quarnster/SublimeGDB
|
||||||
|
[submodule "vendor/grammars/language-roff"]
|
||||||
|
path = vendor/grammars/language-roff
|
||||||
|
url = https://github.com/Alhadis/language-roff
|
||||||
|
|||||||
@@ -390,6 +390,9 @@ vendor/grammars/language-renpy:
|
|||||||
- source.renpy
|
- source.renpy
|
||||||
vendor/grammars/language-restructuredtext:
|
vendor/grammars/language-restructuredtext:
|
||||||
- text.restructuredtext
|
- text.restructuredtext
|
||||||
|
vendor/grammars/language-roff:
|
||||||
|
- text.roff
|
||||||
|
- text.runoff
|
||||||
vendor/grammars/language-shellscript:
|
vendor/grammars/language-shellscript:
|
||||||
- source.shell
|
- source.shell
|
||||||
- text.shell-session
|
- text.shell-session
|
||||||
@@ -593,9 +596,6 @@ vendor/grammars/sublime_cobol:
|
|||||||
- source.cobol
|
- source.cobol
|
||||||
- source.jcl
|
- source.jcl
|
||||||
- source.opencobol
|
- source.opencobol
|
||||||
vendor/grammars/sublime_man_page_support:
|
|
||||||
- source.man
|
|
||||||
- text.groff
|
|
||||||
vendor/grammars/sublimeassembly/:
|
vendor/grammars/sublimeassembly/:
|
||||||
- source.assembly
|
- source.assembly
|
||||||
vendor/grammars/sublimeprolog/:
|
vendor/grammars/sublimeprolog/:
|
||||||
|
|||||||
@@ -359,6 +359,14 @@ module Linguist
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
disambiguate ".rno" do |data|
|
||||||
|
if /^\.!|^\.end lit(?:eral)?\b/i.match(data)
|
||||||
|
Language["RUNOFF"]
|
||||||
|
elsif /^\.\\" /.match(data)
|
||||||
|
Language["Groff"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
disambiguate ".rpy" do |data|
|
disambiguate ".rpy" do |data|
|
||||||
if /(^(import|from|class|def)\s)/m.match(data)
|
if /(^(import|from|class|def)\s)/m.match(data)
|
||||||
Language["Python"]
|
Language["Python"]
|
||||||
|
|||||||
@@ -1411,9 +1411,14 @@ Groff:
|
|||||||
- .n
|
- .n
|
||||||
- .rno
|
- .rno
|
||||||
- .roff
|
- .roff
|
||||||
tm_scope: text.groff
|
- .tmac
|
||||||
|
filenames:
|
||||||
|
- mmn
|
||||||
|
- mmt
|
||||||
|
tm_scope: text.roff
|
||||||
aliases:
|
aliases:
|
||||||
- nroff
|
- nroff
|
||||||
|
- troff
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
Groovy:
|
Groovy:
|
||||||
@@ -3171,6 +3176,15 @@ RMarkdown:
|
|||||||
- .rmd
|
- .rmd
|
||||||
tm_scope: source.gfm
|
tm_scope: source.gfm
|
||||||
|
|
||||||
|
RUNOFF:
|
||||||
|
type: markup
|
||||||
|
color: "#665a4e"
|
||||||
|
extensions:
|
||||||
|
- .rnh
|
||||||
|
- .rno
|
||||||
|
tm_scope: text.runoff
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
Racket:
|
Racket:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#22228f"
|
color: "#22228f"
|
||||||
|
|||||||
215
samples/Groff/an-ext.tmac
Normal file
215
samples/Groff/an-ext.tmac
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
.\" -*- nroff -*-
|
||||||
|
.\"
|
||||||
|
.\" an-ext.tmac
|
||||||
|
.\"
|
||||||
|
.\" Copyright (C) 2007-2014 Free Software Foundation, Inc.
|
||||||
|
.\"
|
||||||
|
.\" Written by Eric S. Raymond <esr@thyrsus.com>
|
||||||
|
.\" Werner Lemberg <wl@gnu.org>
|
||||||
|
.\"
|
||||||
|
.\" You may freely use, modify and/or distribute this file.
|
||||||
|
.\"
|
||||||
|
.\" The code below provides extension macros for the `man' macro package.
|
||||||
|
.\" Care has been taken to make the code portable; groff extensions are
|
||||||
|
.\" properly hidden so that all troff implementations can use it without
|
||||||
|
.\" changes.
|
||||||
|
.\"
|
||||||
|
.\" With groff, this file is sourced by the `man' macro package itself.
|
||||||
|
.\" Man page authors who are concerned about portability might add the
|
||||||
|
.\" used macros directly to the prologue of the man page(s).
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Convention: Auxiliary macros and registers start with `m' followed
|
||||||
|
.\" by an uppercase letter or digit.
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Protect against being sourced twice.
|
||||||
|
.nr mX +1
|
||||||
|
.if \n(mX>1 \
|
||||||
|
. nx
|
||||||
|
.
|
||||||
|
.\" Check whether we are using grohtml.
|
||||||
|
.nr mH 0
|
||||||
|
.if \n(.g \
|
||||||
|
. if '\*(.T'html' \
|
||||||
|
. nr mH 1
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Map mono-width fonts to standard fonts for groff's TTY device.
|
||||||
|
.if n \{\
|
||||||
|
. do ftr CR R
|
||||||
|
. do ftr CI I
|
||||||
|
. do ftr CB B
|
||||||
|
.\}
|
||||||
|
.
|
||||||
|
.\" groff has glyph entities for angle brackets.
|
||||||
|
.ie \n(.g \{\
|
||||||
|
. ds la \(la\"
|
||||||
|
. ds ra \(ra\"
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
. ds la <\"
|
||||||
|
. ds ra >\"
|
||||||
|
. \" groff's man macros control hyphenation with this register.
|
||||||
|
. nr HY 1
|
||||||
|
.\}
|
||||||
|
.
|
||||||
|
.nr mS 0
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Declare start of command synopsis. Sets up hanging indentation.
|
||||||
|
.de SY
|
||||||
|
. ie !\\n(mS \{\
|
||||||
|
. nh
|
||||||
|
. nr mS 1
|
||||||
|
. nr mA \\n(.j
|
||||||
|
. ad l
|
||||||
|
. nr mI \\n(.i
|
||||||
|
. \}
|
||||||
|
. el \{\
|
||||||
|
. br
|
||||||
|
. ns
|
||||||
|
. \}
|
||||||
|
.
|
||||||
|
. nr mT \w'\fB\\$1\fP\ '
|
||||||
|
. HP \\n(mTu
|
||||||
|
. B "\\$1"
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End of command synopsis. Restores adjustment.
|
||||||
|
.de YS
|
||||||
|
. in \\n(mIu
|
||||||
|
. ad \\n(mA
|
||||||
|
. hy \\n(HY
|
||||||
|
. nr mS 0
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Declare optional option.
|
||||||
|
.de OP
|
||||||
|
. ie \\n(.$-1 \
|
||||||
|
. RI "[\fB\\$1\fP" "\ \\$2" "]"
|
||||||
|
. el \
|
||||||
|
. RB "[" "\\$1" "]"
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start URL.
|
||||||
|
.de UR
|
||||||
|
. ds m1 \\$1\"
|
||||||
|
. nh
|
||||||
|
. if \\n(mH \{\
|
||||||
|
. \" Start diversion in a new environment.
|
||||||
|
. do ev URL-div
|
||||||
|
. do di URL-div
|
||||||
|
. \}
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End URL.
|
||||||
|
.de UE
|
||||||
|
. ie \\n(mH \{\
|
||||||
|
. br
|
||||||
|
. di
|
||||||
|
. ev
|
||||||
|
.
|
||||||
|
. \" Has there been one or more input lines for the link text?
|
||||||
|
. ie \\n(dn \{\
|
||||||
|
. do HTML-NS "<a href=""\\*(m1"">"
|
||||||
|
. \" Yes, strip off final newline of diversion and emit it.
|
||||||
|
. do chop URL-div
|
||||||
|
. do URL-div
|
||||||
|
\c
|
||||||
|
. do HTML-NS </a>
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
. do HTML-NS "<a href=""\\*(m1"">\\*(m1</a>"
|
||||||
|
\&\\$*\"
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
\\*(la\\*(m1\\*(ra\\$*\"
|
||||||
|
.
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start email address.
|
||||||
|
.de MT
|
||||||
|
. ds m1 \\$1\"
|
||||||
|
. nh
|
||||||
|
. if \\n(mH \{\
|
||||||
|
. \" Start diversion in a new environment.
|
||||||
|
. do ev URL-div
|
||||||
|
. do di URL-div
|
||||||
|
. \}
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End email address.
|
||||||
|
.de ME
|
||||||
|
. ie \\n(mH \{\
|
||||||
|
. br
|
||||||
|
. di
|
||||||
|
. ev
|
||||||
|
.
|
||||||
|
. \" Has there been one or more input lines for the link text?
|
||||||
|
. ie \\n(dn \{\
|
||||||
|
. do HTML-NS "<a href=""mailto:\\*(m1"">"
|
||||||
|
. \" Yes, strip off final newline of diversion and emit it.
|
||||||
|
. do chop URL-div
|
||||||
|
. do URL-div
|
||||||
|
\c
|
||||||
|
. do HTML-NS </a>
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
. do HTML-NS "<a href=""mailto:\\*(m1"">\\*(m1</a>"
|
||||||
|
\&\\$*\"
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
\\*(la\\*(m1\\*(ra\\$*\"
|
||||||
|
.
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Continuation line for .TP header.
|
||||||
|
.de TQ
|
||||||
|
. br
|
||||||
|
. ns
|
||||||
|
. TP \\$1\" no doublequotes around argument!
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start example.
|
||||||
|
.de EX
|
||||||
|
. do ds mF \\n[.fam]
|
||||||
|
. nr mE \\n(.f
|
||||||
|
. nf
|
||||||
|
. nh
|
||||||
|
. do fam C
|
||||||
|
. ft CW
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End example.
|
||||||
|
.de EE
|
||||||
|
. do fam \\*(mF
|
||||||
|
. ft \\n(mE
|
||||||
|
. fi
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start display.
|
||||||
|
.de DS
|
||||||
|
. \" XXX to be written
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End display.
|
||||||
|
.de DE
|
||||||
|
. \" XXX to be written
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.\" EOF
|
||||||
35
samples/Groff/refs.rno
Normal file
35
samples/Groff/refs.rno
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
.\" Copyright (c) 1980 Regents of the University of California.
|
||||||
|
.\" All rights reserved. The Berkeley software License Agreement
|
||||||
|
.\" specifies the terms and conditions for redistribution.
|
||||||
|
.\"
|
||||||
|
.\" @(#)refs.rno 6.1 (Berkeley) 4/29/86
|
||||||
|
.\"
|
||||||
|
.NS 1 "References"
|
||||||
|
.sp
|
||||||
|
.ip "[Bac78]"
|
||||||
|
John Backus, \*(lqCan Programming Be Liberated from the von Neumann Style?
|
||||||
|
A Functional Style and Its Algebra of Programs,\*(rq \fICACM\fP, Turing
|
||||||
|
Award Lecture, 21, 8 (August 1978), 613-641.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Fod80]"
|
||||||
|
John K. Foderaro, \*(lqThe \s-2FRANZ LISP\s+2
|
||||||
|
Manual,\*(rq University of California,
|
||||||
|
Berkeley, California, 1980.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Joy79]"
|
||||||
|
W.N. Joy, O. Babaoglu, \*(lqUNIX Programmer's Manual,\*(rq November 7,
|
||||||
|
1979, Computer Science Division, University of California, Berkeley,
|
||||||
|
California.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Mc60]"
|
||||||
|
J. McCarthy, \*(lqRecursive Functions of Symbolic expressions and their
|
||||||
|
Computation by Machine,\*(rq Part I, \fICACM\fP 3, 4 (April 1960), 184-195.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Pat80]"
|
||||||
|
Dorab Ratan Patel, \*(lqA System Organization for Applicative Programming,\*(rq
|
||||||
|
M.S Thesis, University of California, Los Angeles, California, 1980.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Pat81]"
|
||||||
|
Dorab Patel, \*(lqFunctional Language Interpreter User Manual,\*(rq
|
||||||
|
University of California, Los Angeles, California, 1981.
|
||||||
|
.bp
|
||||||
1467
samples/RUNOFF/VMS_ZIP.RNH
Normal file
1467
samples/RUNOFF/VMS_ZIP.RNH
Normal file
File diff suppressed because it is too large
Load Diff
324
samples/RUNOFF/contributing.rnh
Normal file
324
samples/RUNOFF/contributing.rnh
Normal file
@@ -0,0 +1,324 @@
|
|||||||
|
.na
|
||||||
|
.ll 72
|
||||||
|
.pl 90
|
||||||
|
.m1 4
|
||||||
|
.m2 4
|
||||||
|
.m3 6
|
||||||
|
.m4 6
|
||||||
|
.sp 8
|
||||||
|
.ds
|
||||||
|
.ce
|
||||||
|
CONTRIBUTING TO LINGUIST
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
by
|
||||||
|
.ce
|
||||||
|
GITHUB
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
and the
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
OPEN SOURCE COMMUNITY
|
||||||
|
.sp
|
||||||
|
.bp
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_I_N_T_R_O_D_U_C_T_I_O_N:
|
||||||
|
.sp
|
||||||
|
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 Contributor Covenant Code of Conduct. By participating,
|
||||||
|
you are expected to uphold this code.
|
||||||
|
.br
|
||||||
|
The majority of contributions won't need to touch any Ruby code at all.
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_A_d_d_i_n_g _a_n _e_x_t_e_n_s_i_o_n _t_o _a
|
||||||
|
_l_a_n_g_u_a_g_e
|
||||||
|
.sp
|
||||||
|
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.
|
||||||
|
.sp
|
||||||
|
To add support for a new extension:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Add your extension to the language entry in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l, keeping the extensions in
|
||||||
|
alphabetical order.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Add at least one sample for your extension to the samples directory
|
||||||
|
in the correct subdirectory.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. Open a pull request, linking to a GitHub search result showing
|
||||||
|
in-the-wild usage.
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
In addition, if this extension is already listed in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l then sometimes a few more steps
|
||||||
|
will need to be taken:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Make sure that example .yourextension files are present in the
|
||||||
|
samples directory for each language that uses .yourextension.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. 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.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. If the Bayesian classifier does a bad job with the sample files
|
||||||
|
then a heuristic may need to be written to help.
|
||||||
|
.in 0
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_A_d_d_i_n_g _a _l_a_n_g_u_a_g_e
|
||||||
|
.sp
|
||||||
|
We try only to add languages once they have some usage on GitHub.
|
||||||
|
In most cases we prefer that each new extension be in use in hundreds of
|
||||||
|
repositories before supporting them in Linguist.
|
||||||
|
.sp
|
||||||
|
To add support for a new language:
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Add an entry for your language to
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Add a grammar for your language. Please only add grammars that have
|
||||||
|
a license that permits redistribution.
|
||||||
|
.br
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
i. Add your grammar as a submodule:
|
||||||
|
.br
|
||||||
|
.in +4
|
||||||
|
git submodule add
|
||||||
|
https://github.com/Alhadis/language-roff
|
||||||
|
vendor/grammars/language-roff
|
||||||
|
.in -4
|
||||||
|
.un 5
|
||||||
|
ii. Add your grammar to grammars.yml:
|
||||||
|
.br
|
||||||
|
.in +4
|
||||||
|
script/convert-grammars --add vendor/grammars/MyGrammar
|
||||||
|
.in -4
|
||||||
|
.un 5
|
||||||
|
iii. Download the license for the grammar by running script/licensed.
|
||||||
|
Be careful to only commit the file for the new grammar, as this script
|
||||||
|
may update licenses for other grammars as well.
|
||||||
|
.br
|
||||||
|
.in -5
|
||||||
|
.un 5
|
||||||
|
3. Add samples for your language to the samples directory in the
|
||||||
|
correct subdirectory.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
4. Open a pull request, linking to a GitHub search result showing
|
||||||
|
in-the-wild usage.
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
In addition, if your new language defines an extension that's already
|
||||||
|
listed in _l_a_n_g_u_a_g_e_s_._y_m_l (such as `.foo`) then
|
||||||
|
sometimes a few more steps will need to be taken:
|
||||||
|
.sp
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
1. Make sure that example .foo files are present in the samples
|
||||||
|
directory for each language that uses .foo.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. 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.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. If the Bayesian classifier does a bad job with the sample .foo
|
||||||
|
files then a heuristic may need to be written to help.
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
Remember, the goal here is to try and avoid false positives!
|
||||||
|
.sp 2
|
||||||
|
.ce
|
||||||
|
_F_i_x_i_n_g _a _m_i_s_c_l_a_s_s_i_f_i_e_d
|
||||||
|
_l_a_n_g_u_a_g_e
|
||||||
|
.br
|
||||||
|
Most languages are detected by their file extension defined in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l. For disambiguating between
|
||||||
|
files with common extensions, linguist applies some heuristics and a
|
||||||
|
statistical classifier. This process can help differentiate between,
|
||||||
|
for example, .h files which could be either C, C++, or Obj-C.
|
||||||
|
.sp
|
||||||
|
Misclassifications can often be solved by either adding a new
|
||||||
|
filename or extension for the language or adding more samples to make
|
||||||
|
the classifier smarter.
|
||||||
|
.sp
|
||||||
|
.m4 -2
|
||||||
|
.ce
|
||||||
|
_F_i_x_i_n_g _s_y_n_t_a_x
|
||||||
|
_h_i_g_h_l_i_g_h_t_i_n_g
|
||||||
|
.br
|
||||||
|
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 is mapped to
|
||||||
|
its corresponding TM `scope`. This scope will be used when picking up a
|
||||||
|
grammar for highlighting.
|
||||||
|
.sp
|
||||||
|
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. _g_r_a_m_m_a_r_s_._y_m_l 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.
|
||||||
|
.sp
|
||||||
|
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.
|
||||||
|
.sp
|
||||||
|
You can also try to fix the bug yourself and submit a Pull Request.
|
||||||
|
TextMate's documentation offers a good introduction on how to work with
|
||||||
|
TextMate-compatible grammars. You can test grammars using Lightshow.
|
||||||
|
.sp
|
||||||
|
Once the bug has been fixed upstream, we'll pick it up for GitHub
|
||||||
|
in the next release of Linguist.
|
||||||
|
.sp 2
|
||||||
|
.ce
|
||||||
|
_T_e_s_t_i_n_g
|
||||||
|
.br
|
||||||
|
For development you are going to want to checkout out the source.
|
||||||
|
To get it, clone the repo and run Bundler to install its dependencies.
|
||||||
|
.sp
|
||||||
|
.in 4
|
||||||
|
git clone https://github.com/github/linguist.git
|
||||||
|
.br
|
||||||
|
cd linguist/
|
||||||
|
.br
|
||||||
|
script/bootstrap
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
To run the tests:
|
||||||
|
.sp
|
||||||
|
.in 4
|
||||||
|
bundle exec rake test
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
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 run the tests for you. Just open a pull request and the
|
||||||
|
bot will start cranking away.
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
_M_a_i_n_t_a_i_n_e_r_s
|
||||||
|
.br
|
||||||
|
Linguist is maintained with love by:
|
||||||
|
.sp
|
||||||
|
.in -2
|
||||||
|
- @arfon (GitHub Staff)
|
||||||
|
.br
|
||||||
|
- @larsbrinkhoff
|
||||||
|
.br
|
||||||
|
- @pchaigno
|
||||||
|
.in 0
|
||||||
|
.br
|
||||||
|
.sp
|
||||||
|
As Linguist is a production dependency for GitHub we have a couple of
|
||||||
|
workflow restrictions:
|
||||||
|
.sp
|
||||||
|
.in -2
|
||||||
|
- Anyone with commit rights can merge Pull Requests provided that there
|
||||||
|
is a :+1: from a GitHub member of staff
|
||||||
|
.br
|
||||||
|
- Releases are performed by GitHub staff so we can ensure GitHub.com
|
||||||
|
always stays up to date with the latest release of Linguist and there
|
||||||
|
are no regressions in production.
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
_R_e_l_e_a_s_i_n_g
|
||||||
|
.sp
|
||||||
|
If you are the current maintainer of this gem:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.ul 5
|
||||||
|
1. Create a branch for the release:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git checkout -b cut-release-vxx.xx.xx
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
2. Make sure your local dependencies are up to date:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
script/bootstrap
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
3. If grammar submodules have not been updated recently, update them:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git submodule update --remote _&_& git commit -a
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
4. Ensure that samples are updated:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
bundle exec rake samples
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
5. Ensure that tests are green:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
bundle exec rake test
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
6. Bump gem version in lib/linguist/version.rb
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
7. Make a PR to github/linguist
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
8. Build a local gem: `bundle exec rake build_gem`
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
9. Test the gem:
|
||||||
|
.sp
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
i. Bump the Gemfile and Gemfile.lock versions for an app which relies
|
||||||
|
on this gem
|
||||||
|
.un 5
|
||||||
|
ii. Install the new gem locally
|
||||||
|
.un 5
|
||||||
|
iii. Test behaviour locally, branch deploy, whatever needs to happen.
|
||||||
|
.br
|
||||||
|
.in -5
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
10. Merge github/linguist PR
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
11. Tag and push:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git tag vx.xx.xx;
|
||||||
|
.br
|
||||||
|
git push --tags
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
12. Push to rubygems.org
|
||||||
|
.br
|
||||||
|
.in +2
|
||||||
|
gem push github-linguist-3.0.0.gem
|
||||||
|
.in -2
|
||||||
|
.sp 2
|
||||||
8644
samples/RUNOFF/longlib.rno
Normal file
8644
samples/RUNOFF/longlib.rno
Normal file
File diff suppressed because it is too large
Load Diff
1773
samples/RUNOFF/mcp_help.rnh
Normal file
1773
samples/RUNOFF/mcp_help.rnh
Normal file
File diff suppressed because it is too large
Load Diff
1
vendor/grammars/language-roff
vendored
Submodule
1
vendor/grammars/language-roff
vendored
Submodule
Submodule vendor/grammars/language-roff added at 8c0b327560
1
vendor/grammars/sublime_man_page_support
vendored
1
vendor/grammars/sublime_man_page_support
vendored
Submodule vendor/grammars/sublime_man_page_support deleted from f3568e9e61
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-roff
|
||||||
|
license: isc
|
||||||
|
---
|
||||||
|
Copyright (c) 2016, John Gardner
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
Reference in New Issue
Block a user