Interpreter configuration

You can select an interpreter (with its name from :SnipInfo) if several of them support the language/filetype (see use_on_filetype if necessary) and you want a specific one

lua << EOF
require'sniprun'.setup({
    selected_interpreters = { "Some_interpreter", "Python3_fifo"},
})
EOF

Many interpreters have REPL capabilities that are not enabled by default. You can turn this behavior on (or off) with the repl_enable and repl_disable keys, that similarly take interpreters names as arguments:

lua << EOF
require'sniprun'.setup({
    repl_enable = {"Python3_original", "Julia_jupyter"},   --# enable REPL-like behavior for the given interpreters
    repl_disable = {"Lua_nvim"},          --# disable REPL-like behavior for the given interpreters
})
EOF

Common options

Every interpreter supports getting documentation via :SnipInfo <interpreter_name>

To specify interpreter options, you have to add the following to your sniprun config:

lua <<EOF
require('sniprun').setup({

    interpreter_options = {
        <Interpreter_name> = {
            some_specific_option = value,
            some_other_option = other_value,
        }
    }
  }, 
})
EOF

For example:

lua <<EOF
require('sniprun').setup({

    interpreter_options = {         --# interpreter-specific options, see doc / :SnipInfo <name>

        --# use the interpreter name as key
        GFM_original = {
            use_on_filetypes = {"markdown.pandoc"}    --# the 'use_on_filetypes' configuration key is
                                                      --# available for every interpreter
        },
        Python3_original = {
            error_truncate = "auto"         --# Truncate runtime errors 'long', 'short' or 'auto'
                                            --# the hint is available for every interpreter
                                            --# but may not be always respected
        }
  }, 
})
EOF

The “use_on_filetypes” key

The use_on_filetypes key is implicitely an option of every interpreter

interpreter_options = {
    GFM_original = {
        use_on_filetypes = {"markdown.pandoc", "rstudio" }
    }
}

The “error_truncate” key

Also available for every interpreter if you don’t like how sniprun truncate some outputs by default (auto), but it will not have an effect on all interpreters.

interpreter_options = {
    Python3_original = {
        error_truncate = "auto"     --# Truncate runtime errors 'long', 'short' or 'auto'
    }
}, 

The interpreter/compiler keys

Almost every interpreter support either the “interpreter” or “compiler” key even if not explicitely documented, depending on whether they’re about an interpreter or compiled language.

example:

interpreter_options = {
    Python3_original = {
        interpreter = "python3.9"
    }
    Rust_original = {
        compiler = "/home/user/bin/rustc-patched -Zlocation-detail=none"
    }
}, 

You can see what interpreters/compilers are being used at any time by watching sniprun’s log for the line “using compiler XXXX” or “using interpreter XXXX” when you run a snippet. While options can (generally) be added to these interpreters/compilers strings, mind that some options are often already passed, and sometimes mandatory (ex: “-o main_file_name”, “–nologo”) and whatever is added can mess up the format sniprun internally expect, or be straight out incompatible with the formers. Be careful!

Exceptions:

  • Scala_original has both interpreter and compiler keys that should be set consistently with each other

  • *_jupyter, Generic, GFM_original, Orgmode_original, and Neorg_original do not support any of these keys, as they rely on the interpreter for the code’s block language.