From baf9c34aa202602fb402e16009781599539414c8 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Fri, 10 Feb 2017 21:15:12 +0000 Subject: Add a code plugin, for sending highlighted snippets of code. --- plugins/code.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 plugins/code.py (limited to 'plugins') diff --git a/plugins/code.py b/plugins/code.py new file mode 100644 index 00000000..44afd3d8 --- /dev/null +++ b/plugins/code.py @@ -0,0 +1,44 @@ +""" +This plugin adds a :term:`/code` command, to send syntax highlighted snippets +of code using pygments and XHTML-IM (XEP-0071). + +Install +------- + +Either use your distribution tools to install python3-pygments or equivalent, +or run: + +.. code-block:: shell + + pip install --user pygments + +Usage +----- + +.. glossary:: + + /code + + Run this command to send the of code, syntax highlighted + using pygments’s lexer. +""" + +from plugin import BasePlugin + +from pygments import highlight +from pygments.lexers import get_lexer_by_name +from pygments.formatters import HtmlFormatter +FORMATTER = HtmlFormatter(noclasses=True) + +class Plugin(BasePlugin): + def init(self): + self.api.add_command('code', self.command_code, + usage='', + short='Sends syntax-highlighted code', + help='Sends syntax-highlighted code in the current tab') + + def command_code(self, args): + language, code = args.split(None, 1) + lexer = get_lexer_by_name(language) + room = self.api.current_tab() + room.command_xhtml(highlight(code, lexer, FORMATTER).strip().replace('\n', '')) -- cgit v1.2.3