id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc 168,sendUnicode() funktioniert nicht mit emacs 23.1,Dennis-ſ,,"== Problem == Unter emacs 23.1 ist es nicht mehr möglich, Unicode-Zeichen (bspw. »«„“∀∃ oder nur über Compose erzeugbare Zeichen wie ₰) einzugeben. Stattdessen werden nur die Fehlermeldungen » is undefined« oder » is undefined« ausgegeben. Unter emacs Ver. 22.3 hat noch alles wunderbar funktioniert. Die E-Mail mit der urspünglichen Fehlerbericht von Jan findet sich [http://lists.neo-layout.org/pipermail/diskussion/2009-August/014003.html hier], ich konnte das Problem reproduzieren mit Windows XP-SP3, NeoVars_r2005_r2004 und Emacs 23.1. == Analyse == In Version 23.1 von emacs wurden mehrere wichtige Dinge geändert: * Es wird nicht mehr Lucid, sondern GTK+ als GUI-Toolkit verwendet, * Die interne Dateikodierung wurde auf eine Obermenge von Unicode umgestellt, * Die Eingabe beliebiger Unicode-Zeichen ist über die Tastenkombination »C-x 8 RET 17f RET« möglich (für Nicht-emacs-Kundige: »Strg+x 8 Return 17f Return«). Dieses Beispieleingabe erzeugt das lange ſ, Unicode-Codepoint 0x0017f. Leider versagt das GTK-Toolkit unter Windows, wenn Unicodezeichen über die Windows-API gesendet werden (genaueres hierzu findet sich in Ticket #3). Der NeoVars hat deswegen extra [http://neo-layout.org/svn/windows/neo-vars/src/source/varsfunctions.ahk einen Fix in der Methode sendUnicode()] eingebaut, in dem Unicodezeichen über eine GTK-spezifische Möglichkeit gesendet werden. Leider scheint dieser bei der neuen emacs-Version jedoch nicht mehr zu funktionieren (bei Inkscape, das auch auf dem GTK basiert, funktioniert er hingegen weiterhin). == Lösungsansätze == Mögliche Wege, um dieses Problem zu lösen: * GTK unter Windows sollte endlich Unicode-Zeichen verarbeiten können, die über die Windows-API gesendet wurden; * emacs sollte den funktionieren GTK-Workarround (send % ""^+u"" . SubStr(charCode,3) . "" "") nicht zerschießen, * wir könnten im NeoVars eine Ausnahme für emacs innerhalb der GTK-Ausnahme einbauen und die Unicode-Zeichen über send ^x . 8 . return 17f return schicken. Ich habe eben versucht, diesen Weg umzusetzen, bin aber leider gescheitert (mein AHK ist leider etwas eingerostet :-(). * Als Worarround emacs 22.3 verwenden.",Fehler/Defekt,reopened,normal,Neo Version 2.0,Treiber: Windows – AHK,2.0 BETA,,"AHK, NeoVars, emacs, GTK, GTK+",