From a9794d037d9a33bed76bcf310c39ddbd4e787436 Mon Sep 17 00:00:00 2001
From: mirabilos <m@mirbsd.org>
Date: Sun, 5 Aug 2018 02:54:33 +0200
Subject: [PATCH] handle UTF-8 characters in lstlistings properly

might even fix the general case and render the use of literate moot
---
 unicodedomino.sty | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/unicodedomino.sty b/unicodedomino.sty
index 8915838..016e694 100644
--- a/unicodedomino.sty
+++ b/unicodedomino.sty
@@ -1,6 +1,6 @@
 % -*- mode: tex -*-
 %-
-% Copyright © 2017
+% Copyright © 2017, 2018
 %	mirabilos <t.glaser@tarent.de>
 % with contributions by (among others)
 %	David Carlisle <http://tex.stackexchange.com/users/1090>
@@ -24,7 +24,7 @@
 % encountering characters not set up with newunicodechar.
 
 \NeedsTeXFormat{LaTeX2e}%
-\ProvidesPackage{unicodedomino}[2017/02/19 1.1 Domino for unknown codepoints]%
+\ProvidesPackage{unicodedomino}[2018/08/05 1.2~ Domino for unknown codepoints]%
 \makeatletter%
 
 \ifx\numexpr\@undefined%
@@ -137,6 +137,38 @@
  }%
 }%
 
+% retrieve the last octet (lstlistings compatibility)
+\def\unicodedomino@last#1{%
+ \expandafter\unicodedomino@l@st#1\empty\empty\empty%
+}%
+\def\unicodedomino@l@st#1#2#3\empty{%
+ \ifx#2\empty%
+  #1%
+ \else%
+  \unicodedomino@l@st#2#3\empty\empty%
+ \fi%
+}%
+
+% handle trimmed octets
+\def\unicodedomino@octets#1\empty{%
+ \expandafter\UTFviii@defined\csname u8:#1\endcsname%
+}%
+
+% collect octet tokens, trim them, pass on to handler
+\long\def\UTFviii@two@octets#1#2{%
+ \edef\temp{#1\unicodedomino@last{\string#2}}%
+ \expandafter\unicodedomino@octets\temp\empty%
+}%
+\long\def\UTFviii@three@octets#1#2#3{%
+ \edef\temp{#1\unicodedomino@last{\string#2}\unicodedomino@last{\string#3}}%
+ \expandafter\unicodedomino@octets\temp\empty%
+}%
+\long\def\UTFviii@four@octets#1#2#3#4{%
+ \edef\temp{#1\unicodedomino@last{\string#2}\unicodedomino@last{\string#3}\unicodedomino@last{\string#4}}%
+ \expandafter\unicodedomino@octets\temp\empty%
+}%
+
+% main handler
 \def\UTFviii@defined#1{%
  \ifx#1\relax%
   % unknown char
-- 
GitLab