Extension:SyntaxHighlight GeSHi/ru

From MediaWiki.org
Jump to: navigation, search
MediaWiki extensions manual - list
Crystal Clear action run.png
SyntaxHighlight_GeSHi

Release status: stable

Implementation Tag
Description Позволяет делать подсветку синтаксиса для исходного код на вики-страницах.
Author(s) Brion Vibber, Tim Starling and Rob Church
Last version trunk (17 май 2009)
MediaWiki 1.11.+
License GPLv2
Download
README
Tags
<syntaxhighlight>
Hooks used
ShowRawCssJs

ParserFirstCallInit

Check usage and version matrix; stats
Bugs: list open list all report

Extension:SyntaxHighlight GeSHi прозволяет форматировать исходный код с подсветкой синтаксиса <syntaxhighlight> .

Это расширение добавляет окраску в зависимости от языка. Как в тэгах <pre> и <poem>, содержимое отображается без изменений и с сохранением пробелов.

Это расширение также позволяет нумеровать строки.

Contents

Использование[edit]

На вики странице Вы можете использовать элемент <syntaxhighlight>. Записанное так:

<syntaxhighlight lang="php">
<?php
    $v = "string";    // sample initialization
?>
html text
<?
    echo $v;         // end of php code
?>
</syntaxhighlight>

будет выглядеть так:

<?php
    $v = "string";    // sample initialization
?>
html text
<?
    echo $v;         // end of php code
?>

Альтернативный тег[edit]

До ревизии rev:50696 использовался тэг <source>. Такой же синтаксис (<source>) используется в некоторых других языках (например, XML). Таким образом, если код содержит <source>, они будут конфликтовать, поскольку интерпретатор не сможет определить, какой из них ( <source>) относится к коду, а какой относится к разметке вики. Чтобы этого избежать, введён дополнительный тег <syntaxhighlight>, доступный после ревизии rev:50696, рекомендованный к использованию.

Параметры[edit]

lang="??"
Определяет, какой язык программирования используется в исходном коде. Это влияет на выбор расширения для подсветки кода. Список значений приведен ниже, "Поддерживаемые языки".
line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"
Тип нумерации строк (по умолчанию строки не нумеруются). Соответствует флагу enable_line_numbers GeSHi.
line start="??"
Используется вместе с параметром "line". Определяет стартовый номер строки. Если вы вставите line start="55", нумерация начнется с 55, потом 56,57,58... и т.д.. Соответствует методу start_line_numbers_at GeSHi
highlight="??"
Задает, какую строку подсветить. Нумерация строк ведется с начала, независимо от оператора line start="??".
enclose="??"
Определяет, какой тэг-контейнер используется для кода. Может принимать значения pre (по умолчанию), div, none. Соответствует методу set_header_type GeSHi. При выборе div текст будет автоматически переноситься, что полезно, если текст выходит за рамки экрана, вынуждая его прокручивать.
strict
Включает строгий режим. Соответствует методу enable_strict_mode GeSHi.

Более подробно об использовании этих параметров можно узнать в документации GeSHi.

Начиная с ревизии r22246, можно переопределять цвета подсветки MediaWiki:Geshi.css.

Дополнительные возможности[edit]

Когда добавлена нумерация строк с помощью line, длинные строки будут переноситься (см. пример ниже). Когда text является выбранным языком, и используется нумерация, поведение напоминает использование тэга pre с нумерацией и автоматическим переносом строк.

Следующий пример показывает как раскрасить листинг HTML:

<syntaxhighlight lang="html4strict" line start="100" highlight="5">
Здесь будет модуль HTML...
</syntaxhighlight>

результат будет выглядеть так:

  1. <!--This is a comment. Comments are not displayed in the browser-->
    
  2. <table align=center style="background: ivory;color:maroon;font-style:italic;font-family:arial;font-weight:bold;font-size:10pt;"> 
    
  3. <tr><th> Heading 1 </th><th> Heading 2 </th></tr>
    
  4. <tr>
    
  5. <td style="padding:10px;"> This is cell 1 text </td>
    
  6. <td style="padding:10px;"> This is cell 2 text </td>
    
  7. </tr>
    
  8. </table>
    

Поддерживаемые языки[edit]

Здесь указаны языки программирования, поддерживаемые GeSHi, которые можно использовать в параметре lang.

Проверьте, что установлена последняя версия GeSHi (Можно посмотреть, например, так: <syntaxhighlight lang="-"></syntaxhighlight>); см. bugzilla:10967 для сайтов Wikimedia.

Код Язык
abap ABAP
actionscript ActionScript
ada Ada
apache Apache Configuration
applescript AppleScript
asm Assembly
asp Active Server Pages (ASP)
autoit AutoIt
bash Bash
basic4gl Basic4GL
bf Brainfuck
blitzbasic Blitz BASIC
bnf Backus-Naur Form
c C
c_mac C (Mac)
caddcl AutoCAD DCL
cadlisp AutoLISP
cfdg CFDG
cfm ColdFusion Markup Language
cil Common Intermediate Language (CIL)
cobol COBOL
cpp-qt C++ (Qt toolkit)
cpp C++
csharp C#
css Cascading Style Sheets (CSS)
d D
delphi Delphi
diff Diff
div DIV
dos DOS batch file
dot DOT
eiffel Eiffel
fortran Fortran
freebasic FreeBASIC
genero Genero
gettext GNU internationalization (i18n) library
glsl OpenGL Shading Language (GLSL)
gml Game Maker Language (GML)
gnuplot gnuplot
groovy Groovy
haskell Haskell
hq9plus HQ9+
html4strict HTML
idl Uno IDL
ini INI
inno Inno
intercal INTERCAL
io Io
java Java
java5 Java(TM) 2 Platform Standard Edition 5.0
javascript JavaScript
kixtart KiXtart
klonec Klone C
klonecpp Klone C++
latex LaTeX
lisp Lisp
lolcode LOLCODE
lotusscript LotusScript
lua Lua
Код Языки
m68k Motorola 68000 Assembler
make make
matlab MATLAB M
mirc mIRC scripting language
mxml MXML
mpasm Microchip Assembler
mysql MySQL
nsis Nullsoft Scriptable Install System (NSIS)
objc Objective-C
ocaml-brief OCaml
ocaml OCaml
oobas OpenOffice.org Basic
oracle8 Oracle 8 SQL
oracle11 Oracle 11 SQL
pascal Pascal
per per
perl Perl
php-brief PHP
php PHP
pixelbender Pixel Bender
plsql PL/SQL
povray Persistence of Vision Raytracer
powershell Windows PowerShell
progress OpenEdge Advanced Business Language
prolog Prolog
providex ProvideX
python Python
qbasic QBasic/QuickBASIC
rails Rails
reg Windows Registry
robots robots.txt
ruby Ruby
sas SAS
scala Scala
scheme Scheme
scilab Scilab
sdlbasic SdlBasic
smalltalk Smalltalk
smarty Smarty
sql SQL
tcl Tcl
teraterm Tera Term
text Plain text
thinbasic thinBasic
tsql Transact-SQL
typoscript TypoScript
vb Visual Basic
vbnet Visual Basic .NET
verilog Verilog
vhdl VHDL
vim Vimscript
visualfoxpro Visual FoxPro
visualprolog Visual Prolog
whitespace Whitespace
winbatch Winbatch
xml XML
xorg_conf Xorg.conf
xpp X++
z80 ZiLOG Z80 Assembler

Дополнительные функции[edit]

Язык исходного кода по умолчанию[edit]

Added in rev:50693.

If the site mainly quotes the source code of a specific programming language, it would be helpful to set a default language.

To do so, add a new variable to LocalSettings.php, just after the require_once line. We set C programming language as an example:

require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
$wgSyntaxHighlightDefaultLang = "c";

Установка[edit]

Шаг 1: Загрузка[edit]

Способ 1
Ручная загрузка из snapshot

Скачайте из snapshot ссылка

Способ 2
Ручная загрузка из subversion

Зайдите сюда: репозитарий расширений Subversion. Сохраните 4 файла с расширением PHP на свой компьютер. Загрузите эти файлы в папку extensions/SyntaxHighlight_GeSHi вашей вики.

Затем, с сайта проекта GeSHi сохраните последний стабильный релиз. Распакуйте и загрузите эти файлы в папку extensions/SyntaxHighlight_GeSHi/geshi вашей вики.

Замечания:

  • GeSHi 1.1.2alpha3 не работает с расширением MediaWiki.
  • Чтобы расширение MediaWiki и GeSHi нормально совместно работали их необходимо загрузить с SourceForge!
  • Вы можете удалить каталог extensions/SyntaxHighlight_GeSHi/geshi/docs, чтобы сэкономить несколько мегабайт.
Способ 3
GeSHi + расширение MW из (SVN)

С ревизии r46666, Geshi встроенна в subversion. Когда Вы загружаете ExtensionDistributor или папку из SVN, она уже содержит папку "geshi" внутри папки SyntaxHighlight_GeSHi. В этом случае GeSHi уже установлен.

Способ 4
Используя средства SVN

Используя SVN утилиту загрузите http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi/ . пример использования SVN утилиты из командной строки:

svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

При этом будет загружена также последняя стабильная версия GeSHi.

Сохраните все загруженные файлы в папке extensions/SyntaxHighlight_GeSHi вашей вики.

Замечание: Вы можете удалить папку с документацией extensions/SyntaxHighlight_GeSHi/geshi/docs и различные .svn-папки чтобы сэкономить несколько мегабайт. Вы также можете использовать командную строку утилиты SVN для загрузки последней стабильной версии без .svn-папок. Это избавит вас от необходимости поиска и устранения каждого из них.

svn export http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

Шаг 2: Установка[edit]

Добавьте следующую строку в Ваш LocalSettings.php:

require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
Установка GeSHi ( если не помогло )

Способ 1[edit]

Если Вы не установили GeSHi в каталог extensions/SyntaxHighlight_GeSHi/geshi, тогда измените следующую строку SyntaxHighlight_GeSHi.class.php в соответствии с путём к файлу geshi.php

require( 'geshi/geshi.php' );

Способ 2[edit]

Иногда вам нужно будет добавить абсолютный путь к geshi (/var/www/html/.../geshi/geshi.php)

Способ 3[edit]

Использования функцию PHP dirname() с глобальной постоянной __FILE__ :

require(dirname(__FILE__).'/geshi/geshi.php');

Настройка[edit]

Если вы хотите пунктирную границы как для <pre> тегов вы должны добавить их снова.

Метод 1: CSS файл[edit]

Этот метод требует это расширение ревизии r52346 или выше

Добавьте MediaWiki:Geshi.css, MediaWiki:Monobook.css или MediaWiki:Common.css страницам:

div.mw-geshi {
  padding: 1em; 
  margin: 1em 0; 
  border: 1px dashed #2f6fab;
  background-color: #f9f9f9;
}

Это даст всем GeSHi output (за исключением enclose="none") апунктирные границы почти идентичны <pre> в monobook/main.css

Метод 2: Встроенные CSS[edit]

You can also edit the SyntaxHighlight_GeSHi.class.php around line 215 (Line 264 in SVN trunk 82481). Look for this:

$css[] = "\tline-height: normal; border: 0px none white;";

and change it to:

$css[] = "\tline-height: normal; border: 1px dashed #2f6fab;";

On a Unix-like system simply type this command in the directory containing "SyntaxHighlight_GeSHi.class.php":

sed -i 's/$css\[\] = "\\tline-height: normal; border: 0px none white;";/
<!!!continued... THE LINE ABOVE AND THE LINE BELOW ARE ALL ONE LINE!> 
$css\[\] = "\\tline-height: normal; border: 1px dashed #2f6fab;";/g' \
SyntaxHighlight_GeSHi.class.php

Link to Extension Talk (2008): Extension talk:SyntaxHighlight GeSHi/Archive 2008#Problem with CSS: Default style for pre is overwritten

See also rev:52346.
  • If you already add the extension to LocalSettings.php before changing this, comment it out via "#" and refresh the page, then remove the # and refresh one more time.

Метод 3. По умолчанию: основанное на DIV отображение[edit]

Длинные строки которые шире ширины страницы, могут испортить дизайн страницы при их отображении. Решение этой проблемы заключается в использовании тега "div", это можно включить по умолчанию, отредактировав SyntaxHighlight_GeSHi.class.php near line 156. Например так:

...
if ( isset( $args['enclose'] ) ) {
  if ( $args['enclose'] === 'div' ) {
    $enclose = GESHI_HEADER_DIV;
  } elseif ( $args['enclose'] === 'none' ) {
    $enclose = GESHI_HEADER_NONE;
  }
}
...

and append a else case to the if statement:

...
if ( isset( $args['enclose'] ) ) {
  if ( $args['enclose'] === 'div' ) {
    $enclose = GESHI_HEADER_DIV;
  } elseif ( $args['enclose'] === 'none' ) {
    $enclose = GESHI_HEADER_NONE;
  }
} else {
  $enclose = GESHI_HEADER_DIV;}
...

Баги и ограничения[edit]

Пока нет. Вы можете сообщить о багах здесь (на английском языке).

См. также[edit]


Язык: English  • Deutsch • 日本語 • русский