Skip to content

Repository files navigation

Emoji Description for Notepad++

Version 0.4.17

A Notepad++ plugin that automatically displays detailed character encoding information in the status bar for the character under the cursor.

CI Build Release GitHub release License: GPL v2

GitHub: https://github.com/Ruberoid/npp_emoji_description

Features

When you move the cursor through text, the plugin automatically displays for the current character:

Field Example for Т Shown by default
Code point U+0422 yes
HTML entity (html) Т yes
UTF-8 bytes, hexadecimal (hex) 0xD0 0xA2 no
UTF-8 bytes, decimal (dec) 208 162 no
UTF-8 bytes, octal — the notation git status uses for non-ASCII bytes (oct) \320\242 no
Description — the Unicode character name, handy for telling look-alike characters apart; covers the entire code space including emoji CYRILLIC CAPITAL LETTER TE yes

The layout follows two rules. Everything tagged (hex), (dec) and (oct) is the same UTF-8 byte sequence in a different base, so switching between them never changes what you are looking at, only how it is written; U+ and the description need no tag because they identify themselves. The description always comes last — it is the only variable-length field, so the short technical ones keep stable positions as the caret moves.

Each field can be toggled individually from the Plugins → Emoji Description menu, so you can show just the information you care about. Your choices are remembered between sessions.

Getting the data out

Plugins → Emoji Description → Copy character details... opens a dialog describing the character at the caret with every field, whatever the status bar happens to be showing:

Character          Т
Code point         U+0422
HTML entity        Т
UTF-8 bytes (hex)  0xD0 0xA2
UTF-8 bytes (dec)  208 162
UTF-8 bytes (oct)  \320\242
Description        CYRILLIC CAPITAL LETTER TE

The character also gets its own large field — which is the whole point for the ones you cannot see, since NO-BREAK SPACE and friends show up as an empty box rather than as nothing at all. Copy to clipboard takes the whole block; the text is preselected on open so Ctrl+C does the same, and dragging over part of it copies just that part. The dialog follows the Notepad++ theme, dark mode included.

The clipboard is only ever written by pressing that button. There is no default keyboard shortcut and no click gesture that could fire by accident — if you want a key for it, the command appears in Settings → Shortcut Mapper → Plugin commands like any other.

Supported Characters

  • All ASCII characters
  • All Unicode characters (including Cyrillic, Chinese, etc.)
  • Emoji and other characters outside the Basic Multilingual Plane (BMP)
  • Full support for multi-byte UTF-8 sequences

Output Examples

With the default fields, for Cyrillic Т:

U+0422 | (html) Т | CYRILLIC CAPITAL LETTER TE

With every field enabled, for Т, A and 😀:

U+0422 | (html) Т | (hex) 0xD0 0xA2 | (dec) 208 162 | (oct) \320\242 | CYRILLIC CAPITAL LETTER TE
U+0041 | (html) A | (hex) 0x41 | (dec) 65 | (oct) \101 | LATIN CAPITAL LETTER A
U+1F600 | (html) 😀 | (hex) 0xF0 0x9F 0x98 0x80 | (dec) 240 159 152 128 | (oct) \360\237\230\200 | GRINNING FACE

The plugin prepends the document type Notepad++ normally shows in that status bar segment, so the full line reads e.g. C++ source file | U+0422 | ….

Installation

Option 1: From Release (Recommended)

  1. Download the latest release from Releases page

  2. Choose the appropriate ZIP file for your Notepad++ version:

    • EmojiDescription_x64_*.zip for 64-bit Notepad++
    • EmojiDescription_x86_*.zip for 32-bit Notepad++
    • EmojiDescription_arm64_*.zip for ARM64 Notepad++
  3. Extract the DLL file

  4. Copy it into a EmojiDescription subfolder of your Notepad++ plugins directory, so that the final path is plugins\EmojiDescription\EmojiDescription.dll. The plugins directory depends on how Notepad++ was installed:

    • Standard installer (e.g. C:\Program Files\Notepad++): C:\Program Files\Notepad++\plugins\EmojiDescription\
    • Per-user / "Don't use %APPDATA%" installs and portable builds: %APPDATA%\Notepad++\plugins\EmojiDescription\

    If unsure, check Settings → Import → Import plugin(s)... or look at where your existing plugins live. You may need administrator rights to write into C:\Program Files.

  5. Restart Notepad++

Option 2: Build from Source

See Building from Source section below.

Usage

After installation, the plugin starts working automatically. Access plugin commands via Plugins → Emoji Description:

  • Show Character Info - Toggle the whole display on/off (enabled by default)
  • Copy character details... - Open the details dialog for the character at the caret (see Getting the data out above)
  • Show: code point / (html) / (hex) / (dec) / (oct) / description - Toggle each field individually. Every item carries a sample value in its label, so the menu doubles as the legend for the tags used in the status bar.
  • About - Plugin information

Simply move the cursor through text, and character information will be displayed in the status bar at the bottom of the Notepad++ window.

Building from Source

Requirements

  • Visual Studio 2017 or later with "Desktop development with C++" workload
  • Windows SDK
  • (Optional) CMake 3.15 or later for CMake-based builds

Build Option 1: Visual Studio (Recommended)

  1. Open vs.proj\EmojiDescription.vcxproj in Visual Studio
  2. Select Release configuration and x64 platform (or Win32 for 32-bit)
  3. Build → Build Solution (or press Ctrl+Shift+B)
  4. Compiled DLL will be in bin64\ (or bin\ for x86)

Build Option 2: MSBuild from Developer Command Prompt

  1. Open "Developer Command Prompt for VS 2022" (or your VS version)
  2. Navigate to project folder:
cd <path_to_project>
  1. Build:
msbuild vs.proj\EmojiDescription.vcxproj /p:Configuration=Release /p:Platform=x64

Build Option 3: CMake

  1. Create build directory:
mkdir build
cd build
  1. Open "Developer Command Prompt for VS 2022"
  2. Generate project:
cmake ..
  1. Build:
cmake --build . --config Release

Development

Repository: https://github.com/Ruberoid/npp_emoji_description

Project Structure

EmojiDescription/
├── src/
│   ├── PluginDefinition.h       - Header with declarations
│   ├── PluginDefinition.cpp     - Main plugin logic
│   ├── CharDetailsDialog.h      - Details dialog: resource IDs and entry point
│   ├── CharDetailsDialog.cpp    - Details dialog implementation
│   ├── UnicodeNames.cpp         - Embedded Unicode character-name lookup
│   ├── EmojiDescription.cpp     - DLL entry point
│   ├── EmojiDescription.rc      - Resources (version, name table, dialog)
│   ├── PluginInterface.h        - Notepad++ plugin interface
│   ├── Scintilla.h              - Scintilla API
│   └── ...
├── vs.proj/
│   └── EmojiDescription.vcxproj - Visual Studio project
├── .github/workflows/
│   ├── CI_build.yml             - CI for builds
│   └── release.yml              - Automated releases
├── CMakeLists.txt               - CMake configuration
└── README.md                    - This file

Key Functions

  • decodeUtf8Char() - Decodes the UTF-8 character at the caret into a code point (src/PluginDefinition.cpp:200)
  • encodeUtf8() - Encodes a code point back into UTF-8 bytes, shared by the (hex) / (dec) / (oct) fields (src/PluginDefinition.cpp:258)
  • formatCharacterCodes() - Composes the enabled fields into the status-bar line (src/PluginDefinition.cpp:339)
  • readCaretCodePoint() - Reads the character at the caret; shared by the status bar and the dialog so the two cannot disagree (src/PluginDefinition.cpp:443)
  • updateCharacterInfo() - Updates character info under cursor (src/PluginDefinition.cpp:475)
  • pluginBeNotified() - Handles notifications from Notepad++ and Scintilla (src/PluginDefinition.cpp:506)
  • buildCharacterDetails() - Composes the full block shown in the details dialog (src/PluginDefinition.cpp:613)
  • showCharDetailsDialog() - Runs the modal details dialog (src/CharDetailsDialog.cpp:174)

CI/CD

The project uses GitHub Actions for automated builds and releases:

  • CI Build: Runs on every commit to verify compilation for all platforms
  • Release: Automatically creates releases with binaries when a version tag is pushed

See PUBLISHING.md for details on creating releases.

License

This plugin is distributed under the GPL v2 license, same as Notepad++.

See LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

If you encounter any issues or have suggestions, please open an issue on GitHub.

Author

Ruberoid

Changelog

See CHANGELOG.md for version history and changes.

About

Notepad++ plugin that shows Unicode info for the character at the caret in the status bar: code point, HTML entity, UTF-8 bytes in hex/dec/oct, and the official character name. Includes a copy-to-clipboard details dialog.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages