19 stable releases

new 1.3.3+0.100.0 Nov 16, 2024
1.3.1+0.98.0 Sep 19, 2024
1.2.0+0.95.0 Jun 26, 2024
1.1.1+0.91.0 Mar 6, 2024
1.0.5 Jul 30, 2023

#85 in Development tools

Download history 115/week @ 2024-07-29 30/week @ 2024-08-05 17/week @ 2024-08-12 154/week @ 2024-08-19 22/week @ 2024-08-26 10/week @ 2024-09-02 170/week @ 2024-09-16 66/week @ 2024-09-23 22/week @ 2024-09-30 9/week @ 2024-10-07 168/week @ 2024-10-14 26/week @ 2024-10-21 17/week @ 2024-10-28 26/week @ 2024-11-04

238 downloads per month

MIT and maybe CC-PDDC

25KB
420 lines

nu-plugin-highlight

A nushell plugin for syntax highlighting.


Version License

About

nu-plugin-highlight is a plugin for Nushell that provides syntax highlighting for source code. It uses the syntect library for syntax highlighting and the bat library for easy access to its ready-to-use assets. Custom themes can be loaded too.

Usage

The highlight command can be used for syntax highlighting source code. Here are a few examples:

# Highlight a Markdown file by guessing the type from the pipeline metadata
open README.md | highlight

# Highlight a TOML file by its file extension
open Cargo.toml -r | echo $in | highlight toml

# Highlight a Rust file by programming language name
open src/main.rs | echo $in | highlight Rust

# Highlight a bash script by inferring the language (the file should start with a shebang)
open example.sh | echo $in | highlight

# Highlight a TOML file with a different theme
open Cargo.toml -r | highlight -t ansi

# List all available themes
highlight --list-themes

Parameters

  • language <string>: This is an optional parameter that can be used to specify the language or file extension to aid language detection.

Flags

  • -h, --help: Display the help message for the highlight command.

  • -t, --theme <string>: The theme used for highlighting.

  • --list-themes: List all possible themes.

Configuration

The plugin can be configured using the $env.config.plugins.highlight variable.

true_colors

Enable or disable true colors (24-bit). By default, this is enabled.

$env.config.plugins.highlight.true_colors = true

theme

Set a theme to use. The default theme depends on the operating system. Use highlight --list-themes | where default == true to see your default theme. Setting this environment variable should allow highlight --list-themes | where id == $env.config.plugins.highlight.theme to result in a single row with your selected theme. If you get no results, you have set an invalid theme.

$env.config.plugins.highlight.theme = ansi

custom_themes

Set a directory to load custom themes from. Using synctects theme loader, you can load custom themes in the .tmtheme format from a directory that is passed as this configuration value.

$env.config.plugins.highlight.custom_themes = ~/.nu/highlight/themes

Plugin Installation

Installing and registering the nu-plugin-highlight is a straightforward process. Follow these steps:

  1. Install the plugin from crates.io using cargo:

    cargo install nu_plugin_highlight
    
  2. Restart your terminal session to ensure the newly installed plugin is recognized.

  3. Find path of your installation:

    which nu_plugin_highlight
    
  4. Register the plugin with Nushell:

    If you are using a version lower than 0.93.0, use register instead of plugin add.

    plugin add path/to/the/plugin/binary
    
  5. Make the plugin available for use:

    Tip: You can simply restart the shell or terminal. When nushell starts, it loads all plugins.

    If you are using a version lower than 0.93.0, you do not need to do this.

    plugin use highlight
    

After registering, the plugin is available as part of your set of commands:

help commands | where command_type == "plugin"

Version Numbering

Starting with version v1.1.0, the version number of nu-plugin-highlight incorporates the version number of its dependency, nu-plugin. This is denoted in the format v1.1.0+0.90.1, where v1.1.0 refers to the version of nu-plugin-highlight and 0.90.1 refers to the version of the nu-plugin dependency.

License

nu_plugin_highlight is licensed under the MIT License. See LICENSE for more information.

Dependencies

~33–67MB
~1M SLoC