1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

Add syntax highlighting options.

Test Plan: Quick view of each option in the web interface.

Reviewers: epriestley, btrahan, chad

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2255

Differential Revision: https://secure.phabricator.com/D4386
This commit is contained in:
Ricky Elrod 2013-01-10 09:56:36 -08:00 committed by epriestley
parent 9aeebbbf58
commit 054f09fb50
2 changed files with 117 additions and 0 deletions

View file

@ -1213,6 +1213,7 @@ phutil_register_library_map(array(
'PhabricatorSubscriptionsUIEventListener' => 'applications/subscriptions/events/PhabricatorSubscriptionsUIEventListener.php',
'PhabricatorSymbolNameLinter' => 'infrastructure/lint/hook/PhabricatorSymbolNameLinter.php',
'PhabricatorSyntaxHighlighter' => 'infrastructure/markup/PhabricatorSyntaxHighlighter.php',
'PhabricatorSyntaxHighlightingConfigOptions' => 'applications/config/option/PhabricatorSyntaxHighlightingConfigOptions.php',
'PhabricatorTagExample' => 'applications/uiexample/examples/PhabricatorTagExample.php',
'PhabricatorTagView' => 'view/layout/PhabricatorTagView.php',
'PhabricatorTaskmasterDaemon' => 'infrastructure/daemon/workers/PhabricatorTaskmasterDaemon.php',
@ -2527,6 +2528,7 @@ phutil_register_library_map(array(
'PhabricatorSubscriptionsEditor' => 'PhabricatorEditor',
'PhabricatorSubscriptionsUIEventListener' => 'PhutilEventListener',
'PhabricatorSymbolNameLinter' => 'ArcanistXHPASTLintNamingHook',
'PhabricatorSyntaxHighlightingConfigOptions' => 'PhabricatorApplicationConfigOptions',
'PhabricatorTagExample' => 'PhabricatorUIExample',
'PhabricatorTagView' => 'AphrontView',
'PhabricatorTaskmasterDaemon' => 'PhabricatorDaemon',

View file

@ -0,0 +1,115 @@
<?php
final class PhabricatorSyntaxHighlightingConfigOptions
extends PhabricatorApplicationConfigOptions {
public function getName() {
return pht("Syntax Highlighting");
}
public function getDescription() {
return pht("Options relating to syntax highlighting source code.");
}
public function getOptions() {
return array(
$this->newOption(
'syntax-highlighter.engine',
'class',
'PhutilDefaultSyntaxHighlighterEngine')
->setBaseClass('PhutilSyntaxHighlighterEngine')
->setSummary(pht("Default non-pygments syntax highlighter engine."))
->setDescription(
pht(
"Phabricator can highlight PHP by default and use Pygments for ".
"other languages if enabled. You can provide a custom ".
"highlighter engine by extending class ".
"PhutilSyntaxHighlighterEngine.")),
$this->newOption('pygments.enabled', 'bool', false)
->setSummary(
pht("Should Phabricator shell out to Pygments to highlight code?"))
->setDescription(
pht(
"If you want syntax highlighting for other languages than PHP ".
"then you can install the python package 'Pygments', make sure ".
"the 'pygmentize' script is available in the \$PATH of the ".
"webserver, and then enable this.")),
$this->newOption(
'pygments.dropdown-choices',
'wild',
array(
'apacheconf' => 'Apache Configuration',
'bash' => 'Bash Scripting',
'brainfuck' => 'Brainf*ck',
'c' => 'C',
'cpp' => 'C++',
'css' => 'CSS',
'd' => 'D',
'diff' => 'Diff',
'django' => 'Django Templating',
'erb' => 'Embedded Ruby/ERB',
'erlang' => 'Erlang',
'haskell' => 'Haskell',
'html' => 'HTML',
'java' => 'Java',
'js' => 'Javascript',
'mysql' => 'MySQL',
'objc' => 'Objective-C',
'perl' => 'Perl',
'php' => 'PHP',
'rest' => 'reStructuredText',
'text' => 'Plain Text',
'python' => 'Python',
'rainbow' => 'Rainbow',
'remarkup' => 'Remarkup',
'ruby' => 'Ruby',
'xml' => 'XML',
))
->setSummary(
pht("Set the language list which appears in dropdowns."))
->setDescription(
pht(
"In places that we display a dropdown to syntax-highlight code, ".
"this is where that list is defined.")),
$this->newOption(
'syntax.filemap',
'wild',
array(
'@\.arcconfig$@' => 'js',
'@\.divinerconfig$@' => 'js',
))
->setSummary(
pht("Override what language files (based on filename) highlight as."))
->setDescription(
pht(
"This is an override list of regular expressions which allows ".
"you to choose what language files are highlighted as. If your ".
"projects have certain rules about filenames or use unusual or ".
"ambiguous language extensions, you can create a mapping here. ".
"This is an ordered dictionary of regular expressions which will ".
"be tested against the filename. They should map to either an ".
"explicit language as a string value, or a numeric index into ".
"the captured groups as an integer."))
->addExample('{"@\\.xyz$@": "php"}', pht('Highlight *.xyz as PHP.'))
->addExample(
'{"@/httpd\\.conf@": "apacheconf"}',
pht('Highlight httpd.conf as "apacheconf".'))
->addExample(
'{"@\\.([^.]+)\\.bak$@": 1}',
pht(
"Treat all '*.x.bak' file as '.x'. NOTE: We map to capturing group ".
"1 by specifying the mapping as '1'")),
$this->newOption(
'style.monospace',
'string',
'10px "Menlo", "Consolas", "Monaco", monospace')
->setSummary(
pht("Default monospace font."))
->setDescription(
pht(
"Set the default monospaced font style for users who haven't set ".
"a custom style.")),
);
}
}