Thunderbird-Version: 24.4.0
Betriebssystem + Version: Win7
Kontenart (POP / IMAP): IMAP
Postfachanbieter (z.B. GMX): GMX
Vorab: Die Tastenkombinationen Alt+0132 bzw. Alt+0147 sind mir für die deutschen typographischen Anführungszeichen bekannt.
Ich möchte in Thunderbird die deutschen typographischen Anführungszeichen nutzen und habe dazu bereits das von Mark Simon entwickelte Add-on namens "smart_quotes-0.1-tb.xpi" installiert. Auch konnte ich erfolgreich diese Datei mit WinZip entpacken und die darin enthaltene Datei namens "script.js" aus dem Ordner "Content" bearbeiten (siehe unten) und erneut (über WinZip) zur funktionierenden .xpi-Datei zurückspeichern. Folgendes Problem besteht jedoch auch in dem von Mark Simon entwickelten Add-on: Beim Verfassen einer Textnachricht scheint zunächst in der 1. Zeile alles richtig zu funktionieren. (Bei meiner kleinen Umprogrammierung erscheinen die typographischen Anführungszeichen ordnungsgemäß erst unten, danach oben.) Ab der 2. Zeile (manueller Zeilenumbruch bzw. Absatzmarke mittels Entertaste) jedoch funktioniert dieses Add-on nicht richtig (auch in der englischen Version!). Die Anführungszeichen erscheinen nun unwillkürlich steuerbar mal oben oder auch unten, scheinbar keinem erkennbaren Muster folgend. Das wird auch daran deutlich, wenn man in der ersten Zeile vielfach hintereinander (ohne dazwischenstehenden Text das Anführungszeichen drückt ("), erscheint es zunächst immer unten, gebe ich dann einen Text ein und setze das Ausführungszeichen mehrfach, erscheint es immer oben und nach einem Leerzeichen wieder unten. Ab Zeile 2 erscheint dagegen beim vielfachen Drücken des Anführungszeichens (") dieses Zeichen unterschiedlich wechselnd mal oben und dann plötzlich mal unten. Der Programmierung durch Herrn Mark Simon fehlt wahrscheinlich leider die Information bzw. der Befehl, dass das Prinzip der 1. Zeile auch bei manuellem Zeilenumbruch (Entertaste) fortgesetzt werden soll. Ich bin kein Programmierer und würde mich daher sehr freuen, wenn mir jemand im Forum helfen könnte. Sicher gibt es auch weitere Nutzer von TB, die sich über ein solches Add-on freuen würden. Vielleicht könnte bei dieser Gelegenheit dieses Add-on gleich weiterentwickelt werden, so dass auch weitere Anführungszeichen mit entsprechender Umschaltmöglichkeit zur Auswahl stünden.
Hier die Programminformationen aus der Datei "script.js" des Ordners "Content" [mit meiner Bearbeitung der Punkte "function smartQuotes(text)" und if(code==34) char=before.match(/\B/)?'„':'“'; else char=before.match(/\B/)?'‚':'‘';]:
/* tbSmartQuotes
============================================================
Mark Simon
http://smartquotes.info
Thunderbird Extension Development:
// https://developer.mozilla.org/en-US/docs/Web/API/Selection
// https://developer.mozilla.org/en-US/docs/Extensions/Thunderbird/HowTos
// http://mdn.beonex.com/en/Extensions/Thunderbird/HowTos/Common_Thunderbird_Use_Cases/Compose_New_Message.html
// https://developer.mozilla.org/en/docs/Submitting_an_add-on_to_AMO
// https://developer.mozilla.org/en-US/docs/Extensions/Thunderbird/Building_a_Thunderbird_extension_2:_extension_filesystem
// https://developer.mozilla.org/en-US/docs/Extensions/Thunderbird/Creating_a_Custom_Column
============================================================ */
/* Feed Back
============================================================ */
function say(message) {
alert(message);
}
/* insertChar()
============================================================ */
function insertChar(editor,char) {
editor.beginTransaction();
editor.insertText(char);
editor.endTransaction();
}
/* Smart Quotes
============================================================ */
// var theWindow = document.commandDispatcher.focusedWindow;
// theWindow.addEventListener('keypress',handleQuotes);
var button;
window.addEventListener("load", function() {
button=document.getElementById('smartQuotesAuto');
button.state=1;
window.addEventListener("keypress", handleQuotes, false);
}, false);
function smartQuotes(text) {
text=text.replace(/(^|\B)(')\b/g,'‚');
text=text.replace(/(^|\B)(")\b/g,'„');
text=text.replace(/'/g,'‘');
text=text.replace(/"/g,'“');
return text;
}
/* Handle Quote Character: attach to element.onkeypress
------------------------------------------------------------ */
//alert(range);
//alert(range.startOffset);
//alert(document.commandDispatcher.focusedWindow==window); // false implies compose window which is good
function handleQuotes(e) {
// var target=e.target;
if(!button.state) return;
var code=e.charCode;
if(code==34||code==39) {
var editor = GetCurrentEditor();
if(e.ctrlKey) { // ctrl->allow straight quotes
insertChar(editor,e.shiftKey?'"':"'");
return false;
}
var char;
var selection = document.commandDispatcher.focusedWindow.getSelection();
var text = editor.outputToString('text/plain', 8);
var range=selection.getRangeAt(0);
var l=range.startOffset;
var before = text.substr(l-1,1);
if(code==34) char=before.match(/\B/)?'„':'“';
else char=before.match(/\B/)?'‚':'‘';
//alert(char);
insertChar(editor,char);
e.preventDefault();
return false;
}
else return true;
}
function doSmartQuotesAuto() {
if(button.state) {
button.image="chrome://smartquotes/content/images/sq0.png";
button.state=0;
}
else {
button.image="chrome://smartquotes/content/images/sq1.png";
button.state=1;
}
}
/* Doit
============================================================ */
function doSmartQuotesConvert() {
// var editor = gMsgCompose.editor;
// editor = editor.QueryInterface(Components.interfaces.nsIHTMLEditor);
var editor = GetCurrentEditor();
var selection = document.commandDispatcher.focusedWindow.getSelection();
var text = selection.toString();
text=smartQuotes(text);
editor.beginTransaction();
editor.insertText(text);
editor.endTransaction();
}
Alles anzeigen