# ctags-lang-rmarkdown

## Random notes about tagging R Markdown source code with Universal Ctags

Version: | 6.2.0
Manual group: | Universal Ctags
Manual section: | 7

# SYNOPSIS

ctags ...--extras=+{subparser}{guest} --languages=+RMarkdown ...
ctags ...--extras=+{subparser}{guest} --language-force=RMarkdown ...
ctags ...--extras=+{subparser}{guest} --map-RMarkdown=+.rmd ...

# DESCRIPTION

RMarkdown parser is an exclusive subparser stacked on top of the Markdown parser. It works when:

- the Markdown parser is enabled,
- the `subparser` extra is enabled, and
- the RMarkdown parser itself is enabled.

The RMarkdown parser extends the way of detecting codeblocks from the Markdown parser. This extension is for running guest parsers on code chunks.

The Markdown parser expects the following syntax represents codeblocks:

    ```language-name
            ...
    ```

For an example

    ```r
            ...
    ```

The RMarkdown parser accepts the following syntax for code chunks:

    ```{language-name chunk-label, ...}
            ...
    ```

For an example

    ```{r precalc fig.height=4}
            ...
    ```

Give --extras=+{guest} for enabling `guest` to command line if you want to run proper parsers on lines inside code chunks.

The parser extracts chunk labels coming after language-name as chunklabel kind objects. In the example, the RMarkdown parser extracts precalc as a chunklabel kind object. The chunklabel kind is enabled by default.

# EXAMPLES

"input.rmd"

System Message: WARNING/2 (`ctags-lang-rmarkdown.7.rst`, line 75)

Cannot analyze code. No Pygments lexer found for "RMarkdown".

    .. code-block:: RMarkdown

            # Section 1

            ```{r myblock}
                    zero_fun <- function () {
                            return 0
                    }
            ```

            # Section 2

"output.tags" with "--options=NONE --extras=+{guest} --fields=+KZln -o - input.rmd"

System Message: WARNING/2 (`ctags-lang-rmarkdown.7.rst`, line 90)

Cannot analyze code. No Pygments lexer found for "tags".

    .. code-block:: tags

            Section 1       input.rmd       /^# Section 1$/;"       chapter line:1  language:Markdown
            Section 2       input.rmd       /^# Section 2$/;"       chapter line:9  language:Markdown
            myblock input.rmd       /^```{r myblock}$/;"    chunklabel      line:3  language:RMarkdown
            zero_fun        input.rmd       /^      zero_fun <- function () {$/;"   function        line:4  language:R

# SEE ALSO

ctags(1), ctags-client-tools(7), ctags-lang-r(7), R Markdown: The Definitive Guide