This is a mini-script to convert Ctrl+Space to a non-break-space (0x160, not
).
You can copy-paste the code below (if you want to change the includes, for example), or check out the gist here:
UPDATE, now converts "
to «
and »
(alternately).
Click HERE to install the user script.
Click HERE to preview the code.
// ==UserScript==
// @name NonBreakSpaces+
// @namespace benjol
// @description Make Ctrl-space add a non-break-space in textareas
// @include http://french.stackexchange.com/questions/*
// @include http://meta.french.stackexchange.com/questions/*
// @include http://chat.stackexchange.com/rooms/1098/*
// ==/UserScript==
function inject(f) {
var script = document.createElement("script");
script.type = "text/javascript";
script.textContent = "(" + f.toString() + ")()";
document.body.appendChild(script);
};
//Note that if you copy in Firefox, you'll get the impression that the nbsp isn't there, but it is!
// (https://bugzilla.mozilla.org/show_bug.cgi?id=359303)
inject(function () {
var nbsp = String.fromCharCode(160),
left = "«" + nbsp, //171
right = nbsp + "»", //187
next = left;
function insert(field, val) {
if(field.selectionStart || field.selectionStart == '0') {
var cursorAfter = field.selectionStart + val.length;
var first = field.value.slice(0, field.selectionStart);
var second = field.value.slice(field.selectionEnd);
field.value = first + val + second;
field.setSelectionRange(cursorAfter, cursorAfter);
}
else //won't work in IE, sorry!
field.value += val;
}
$(document).keypress(function(event) {
var field = event.target;
if(event.ctrlKey && event.charCode == 32) {
insert(field, nbsp);
event.preventDefault();
} else if (event.charCode == 34) {
insert(field, next);
next = (next == left) ? right : left;
event.preventDefault();
};
});
});
«
and before»
. I'm a total js-ignorant, would it be possible to perform automatic substitutions just before submitting content? e.g. "\u020?" → "\u202F?". or "\u020:" → "\u00A0:"?