Ctags: рдкреАрдПрдЪрдкреА рд╣реЗрд░реЗрдбреЛрдХ (<<

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдирд╡ре░ 2020  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: universal-ctags/ctags

рд╕рд╛рд░рд╛рдВрд╢:

рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ PHP heredoc ( <<< ) рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдЯреИрдЧ рдмрдирд╛рдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ nowdoc PHP рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдФрд░ рднрд╛рд╖рд╛ рддрддреНрд╡ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдирд╛рдо:

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдкреАрдПрдЪрдкреА рдорд╛рдирддреЗ рд╣реБрдП

ctags рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЬрд┐рд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
$ ctags --options=NONE foo.php
рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:
<?php

class LivingBeings {

    public function doSomething()
    {
        $foo = <<<FOO
        FOO;
    }

    public function doSomethingElse()
    {
    }
}
рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЖрдк рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ:

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ doSomethingElse рд╡рд┐рдзрд┐ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдореИрдВ heredoc рднрд╛рдЧ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд┐рдзрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрдЧреЗ "рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_OUTPUT_EXCMD  mixed   /number, pattern, mixed, or combine/
!_TAG_OUTPUT_FILESEP    slash   /slash or backslash/
!_TAG_OUTPUT_MODE   u-ctags /u-ctags or e-ctags/
!_TAG_PATTERN_LENGTH_LIMIT  96  /0 for no limit/
!_TAG_PROC_CWD  /tmp/   //
!_TAG_PROGRAM_AUTHOR    Universal Ctags Team    //
!_TAG_PROGRAM_NAME  Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL   https://ctags.io/   /official site/
!_TAG_PROGRAM_VERSION   5.9.0   /5a136315/
LivingBeings    foo.php /^class LivingBeings {$/;"  c
doSomething foo.php /^    public function doSomething()$/;" f   class:LivingBeings
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ:
!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_OUTPUT_EXCMD  mixed   /number, pattern, mixed, or combine/
!_TAG_OUTPUT_FILESEP    slash   /slash or backslash/
!_TAG_OUTPUT_MODE   u-ctags /u-ctags or e-ctags/
!_TAG_PATTERN_LENGTH_LIMIT  96  /0 for no limit/
!_TAG_PROC_CWD  /tmp/   //
!_TAG_PROGRAM_AUTHOR    Universal Ctags Team    //
!_TAG_PROGRAM_NAME  Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL   https://ctags.io/   /official site/
!_TAG_PROGRAM_VERSION   5.9.0   /5a136315/
LivingBeings    foo.php /^class LivingBeings {$/;"  c
doSomething foo.php /^    public function doSomething()$/;" f   class:LivingBeings
doSomethingElse foo.php /^    public function doSomethingElse()$/;" f   class:LivingBeings
ctags рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг:
$ ctags --version
Universal Ctags 5.9.0(5a136315), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Nov 20 2020, 11:46:20
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +yaml, +packcc
рдЖрдк ctags рдмрд╛рдЗрдирд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛:

$ cd ctags_source
$ make clean && make distclean
$ ./autogen.sh
$ ./configure --prefix=$HOME
$ make
$ make install
Parser buenhancement

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@jespinal , рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes ?

$ git diff |cat
git diff |cat
diff --git a/parsers/php.c b/parsers/php.c
index e3fdc241..ace25561 100644
--- a/parsers/php.c
+++ b/parsers/php.c
@@ -682,6 +682,8 @@ static void parseHeredoc (vString *const string)
            int extra = EOF;

            c = getcFromInputFile ();
+           if (c == ' ' || c == '\t')
+               c = getcFromInputFile ();
            for (len = 0; c != 0 && (c - delimiter[len]) == 0; len++)
                c = getcFromInputFile ();

$ cat input.php
cat input.php
<?php
// Taken from https://github.com/universal-ctags/ctags/issues/2717
// submitted by <strong i="5">@jespinal</strong>
class LivingBeings {

    public function doSomething()
    {
        $foo = <<<FOO
        FOO;
    }

    public function doSomethingElse()
    {
    }
}
$ u-ctags -o - input.php
u-ctags -o - input.php
LivingBeings    input.php   /^class LivingBeings {$/;"  c
doSomething input.php   /^    public function doSomething()$/;" f   class:LivingBeings
$

@masatake рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рдорд╛рд░реНрдХрд░ рдХреЛ рдЕрдкрдиреА рд▓рд╛рдЗрди рдкрд░ рд╣реЛрдирд╛

рдореИрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рд░реНрдХрд░ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрджрд┐ рдпрд╣ рдПрдХ рд╡реИрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдВрдЧ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕реНрдб рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж рдХреЛрдИ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреИрд░реЗрдХреНрдЯрд░ рди рд╣реЛ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдВрдЧ рдорд╛рд░реНрдХрд░ рд╣реИред рддреЛ END; рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рд╣реИ (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдорд╛рд░реНрдХрд░ END ), рд▓реЗрдХрд┐рди ENDFOO рдирд╣реАрдВ рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкрд┐рдЫрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ PHP рдЗрд╕реЗ рддреЛрдбрд╝рдХрд░ рдЦреБрд╢ рд╣реИ, рддреЛ рд╣рдо рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреА рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо *.php[1-6] рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдирдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред

@jespinal , рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, @masatake , рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬреА рд╣рд╛рдВ, рдореИрдВ рдЙрд╕ рдмрджрд▓рд╛рд╡ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ PHP 7.3 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 7.4 рд╣реИ, рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 8 рд╣рд╛рде рдореЗрдВ рд╣реИ)ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ ctags рдФрд░ PHP рджреЛрдиреЛрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЖрдзрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЗрд╕рдХреА рд╕реВрдЪрдирд╛ рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреА рдЧрдИ рдереАред

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рдХреБрдЫ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ (рдЙрдореНрдореАрдж рд╣реИ) рдирдП рд╣реЗрд░реЗрдбреЛрдХ/рдирд╛рдЙрдбреЛрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡реИрдз/рдЕрдорд╛рдиреНрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗ (рдЖрд░рдПрдлрд╕реА рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕реЛрдЪ)ред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ' TEXT ' (рджреВрд╕рд░рд╛ рд╡рд╛рд▓рд╛) рдЕрдВрддрд┐рдо рдорд╛рд░реНрдХрд░ рд╣реИред рддреЛ, рддреАрд╕рд░рд╛ рд╡рд╛рд▓рд╛ ' TEXT; рдкрд╛рд░реНрд╕рд░ рдХреА рджреГрд╖реНрдЯрд┐ рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЕрдорд╛рдиреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдпрд╛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛:

test-001-2020-11-24 22-33-30

рдкрд┐рдЫрд▓реЗ рдПрдХ рдЬреИрд╕рд╛ рд╣реА рдорд╛рдорд▓рд╛:
test-003-2020-11-24 22-37-04

рдЕрдЧрд░ рдпрд╣ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдпрд╛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╣реЛрддрд╛, рддреЛ PHP рдкрд╛рд░реНрд╕рд░ рдЦреБрд╢ рд╣реЛрддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

        echo <<<TEXT
            some string 
        TEXT, 'some other string';

рдкрд╛рд░реНрд╕рд░ рдХреА рдирдЬрд░ рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ:

    echo 'some string', 'some other string';

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░реНрд╕рд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ ' TEXT ' рдФрд░ ' TEXTUAL ' рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд░ рд╣реИрдВ:

test-002-2020-11-24 22-36-25

рдпрд╣рд╛рдВ рдЧрд▓рдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рдЕрдорд╛рдиреНрдп рд╕реНрдирд┐рдкреЗрдЯ рджрд┐рдП рдЧрдП рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрд░рдПрдлрд╕реА рдХрдерди рдХреЗ рд▓рд┐рдП: "рдпрджрд┐ рд╕рдорд╛рдкрди рдорд╛рд░реНрдХрд░ рдХреЛ рд╢рд░реАрд░ рдХреА рдХрд┐рд╕реА рднреА рд░реЗрдЦрд╛ рд╕реЗ рдЖрдЧреЗ рдЗрдВрдбреЗрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ ParseError рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:"

test-004-2020-11-24 22-38-11

test-005-2020-11-24 22-39-38

@jespinal рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд╛рдирдХ рдкрд╛рда рд╣реИ рдЬреЛ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реИ :) рдХреЗрд╡рд▓ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣рдореЗрд╢рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рдирдХ рдкрд╛рда рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрдореНрдореАрдж рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ @masatake рдХреЗ рд▓рд┐рдВрдХ рдФрд░ рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: +1:

@masatake рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдорд┐рд▓реЗ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрдм рддрдХ - рдЖрдк рдореБрдЭреЗ рд╣рд░рд╛ рдирд╣реАрдВ рджреЗрддреЗ :)

BTW @jespinal рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХреА рддреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рд╣реИ, рдФрд░ рд╣рдо рдкреНрд░реА-7.3 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рд╡рд╣ 7.3+ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ neredoc/nowdoc рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ :)

рдЖрдк рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рдереЗред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрдкрд╕реЗ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред
рд▓реЗрдХрд┐рди, рдЕрдм рд╣рдореЗрдВ рдЖрдкрд╕реЗ "рд╕реНрд╡рдпрдВ-рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛" рдЪрд┐рд╣реНрди рдорд┐рд▓рддрд╛ рд╣реИред @ b4n , рдкреЗрд╢рдХрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@masatake рдЖрдк рдмреБрджреНрдзрд┐рдорд╛рди рдереЗ рдХрд┐ рдореБрдЭрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЙрдореНрдореАрдж рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ UCtags/Geany рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛: рдирд┐рд░рд╛рд╢:ред рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ рд╕рдордп рдХреИрд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдлрд┐рд░ рднреА, рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП #2734 рджреЗрдЦреЗрдВ :)

рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lvc picture lvc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sparkcanon picture sparkcanon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cweagans picture cweagans  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jayceekay picture jayceekay  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blackb1rd picture blackb1rd  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ