code highlight extension for Libre Office writer

It's not a plug-in, but I put the code into a website that colors syntax for you. The site I use is tohtml. I don't use the html generated code however, I just copy the colored and highlighted code from the browser and paste it into my document and WYSIWYG.


UPDATE 2: LibreOffice Extension

I have published my previous macro script as an extension: Code Highlighter which is available in LibreOffice Extensions store.

1. How to install?

Follow these steps to install the extension:

Step 1: Install libreoffice-script-provider-python:

sudo apt-get install libreoffice-script-provider-python

Step 2: Install pygments for Python 3:

sudo pip3 install pygments

Step 3: Download and add the codehighlighter.oxt extension to Libre Office

2. How to use?

  • Open LibreOffice Writer/Calc/Impress.
  • Insert a Text Box (Insert -> Text Box).
  • Copy and paste any code snippet into that Text Box.
  • Select the Text Box.
  • Highlight by Tools -> Highlight Code -> < Language-Name >

enter image description here

You can assign keyboard shortcuts for frequently used languages. To see how to assign keyboard shortcut, visit the Git Hub page: libreoffice-code-highlighter


I leave my original answer here since it is still valid for LO <= 5.

I had the same requirement and none of these solutions worked for me in LibreOffice 5 except 'Code Colorizer Formatter'. But Code Colorizer Formatter worked in Writer only (I also needed for Impress). Later I found another solution using Python macro which is tested in LibreOffice 5.

Installation

Step 1: Install libreoffice-script-provider-python:

sudo apt-get install libreoffice-script-provider-python

Step 2: Install pygments for Python 3:

sudo pip3 install pygments

Step 3: Download Highlight.py

Step 4: Copy the Highlight.py to /usr/lib/libreoffice/share/Scripts/python/

sudo cp Highlight.py /usr/lib/libreoffice/share/Scripts/python/

Step 5: Set the Read-Only permission to the script.

sudo chmod 0444 /usr/lib/libreoffice/share/Scripts/python/Highlight.py

Step 6: Open the LibreOffice Writer and goto Tools -> Customize -> Keyboard

  • Select the LibreOffice option button (Available on top left corner)
  • Select any desired shortcut
  • Select share/Highlight/Highlight_source_code under the Functions Category
  • Click on the Modify button to set the shortcut

Usage

LibreOffice Impress

  • Open LibreOffice Impress.
  • Insert a Text Box (Insert -> Text Box).
  • Copy and paste any code snippet into that Text Box.
  • Create a new Style (Right click on an existing style -> New...)
  • Name the Style as code-<language>
  • Apply the style to your code snippet Text Box.
  • Select the Text Box.
  • Use your shortcut keys to execute the macro.

LibreOffice Writer/Calc

  • Open LibreOffice Writer/Calc.
  • Insert a Text Box (Insert -> Text Box).
  • Copy and paste any code snippet into that Text Box.
  • Right click on the Text Box and select 'Description'.
  • Add a description in the following format: code-<language>
  • Select the Text Box
  • Use your shortcut keys to execute the macro.

UPDATE 1:

I have added custom style support to this extension. Use code-<language> for default style and code-<language>-<style> for custom style. Available styles are listed in my Git Hub page.

For example, Code-Java-Emacs will color the Java code using Emacs style.


COOder

COOder seems to be abandoned, and it can't be installed in LibreOffice 4.2.8.2.

Code Colorizer Formatter

Code Colorizer Formatter installs and works correctly in LibreOffice. Code Colorizer Formatter has also added PHP support, but HTML support is missing completely and JavaScript didn't work when I tested it. The instructions for how to get it to work on the Code Colorizer Formatter website didn't work for me, however I've gotten Code Colorizer Formatter to work in LibreOffice the hard way, and here are my instructions:

  1. Download Code Colorizer Formatter from Code Colorizer Formatter project homepage and install it in LibreOffice Writer like any other LibreOffice extension.

  2. Open your code file in LibreOffice Writer. Code Colorizer Formatter supports Bash, Basic, C++, Java, Perl, PHP, Python, R, SQL, XML, C#, 8085 Assembler, and x86 Assembler.

  3. Select the code to be colorized.

  4. Select Tools -> Macros -> Organize Macros -> LibreOffice Basic.

  5. A new LibreOffice Basic Macros window will open. Under the Macro from heading, select My Macros -> MacroFormatterADP -> a supported programming language. In the screenshot below, Java is selected.

  6. Under the Existing macros in... heading, select HighlightSelLanguage where Language in HighlightSelLanguage is the same as the programming language that was selected in step five. In the screenshot below, HighlightSelJava is selected.

  7. Click the Run button to colorize the selected code.

    enter image description here


I have to select programming language each time I highlight which will be about 100 times in one report, that's way too much

Actually there's a way to bind coloring in a given language to a hot key. Make the following sub and bind it to a hot key:

Go to Tools → Macros → Organaize macros → LibreOffice Basic. Select Module1 and press Edit:

enter image description here

Then copy-paste this code:

Sub COOoderInPython
  ExecuteCOOoder("python")
End Sub

Sub ExecuteCOOoder(sLanguage As String)
  oLanguage = org.openoffice.coooder.theLanguagesManager.get(GetDefaultContext()).getLanguage(sLanguage)
  If NOT isNull(oLanguage) Then
    oHighlighter = CreateUnoService("org.openoffice.coooder.Highlighter")
    oHighlighter.Language = oLanguage
    oHighlighter.parse(Null)
  End If
End Sub

Finally bind that to a hot key:

enter image description here