diff --git a/js/irc-utils.js b/js/irc-utils.js index 1e97536..11782da 100644 --- a/js/irc-utils.js +++ b/js/irc-utils.js @@ -70,14 +70,18 @@ var IrcUtils = { * @param caretPos Current caret position (0 means before the first character) * @param iterCandidate Current iteration candidate (null if not iterating) * @param nickList Array of current nicks sorted alphabetically + * @param suf Custom suffix (at least one character, escaped for regex) * @return Object with following properties: * text: new complete replacement text * caretPos: new caret position within new text * foundNick: completed nick (or null if not possible) * iterCandidate: current iterating candidate */ - completeNick: function(text, caretPos, iterCandidate, nickList) { + completeNick: function(text, caretPos, iterCandidate, nickList, suf) { var doIterate = (iterCandidate !== null); + if (suf === null) { + suf = ':'; + } // text before and after caret var beforeCaret = text.substring(0, caretPos); @@ -92,12 +96,12 @@ var IrcUtils = { }; // iterating nicks at the beginning? - var m = beforeCaret.match(/^([a-zA-Z0-9_\\\[\]{}^`|-]+): $/); + var m = beforeCaret.match(new RegExp('^([a-zA-Z0-9_\\\\\\[\\]{}^`|-]+)' + suf + ' $')); if (m) { if (doIterate) { // try iterating var newNick = IrcUtils._nextNick(iterCandidate, m[1], nickList); - beforeCaret = newNick + ': '; + beforeCaret = newNick + suf + ' '; return { text: beforeCaret + afterCaret, caretPos: beforeCaret.length, @@ -119,7 +123,7 @@ var IrcUtils = { // no match return ret; } - beforeCaret = newNick + ': '; + beforeCaret = newNick + suf + ' '; if (afterCaret[0] == ' ') { // swallow first space after caret if any afterCaret = afterCaret.substring(1); diff --git a/js/websockets.js b/js/websockets.js index 5998b1f..85421fa 100644 --- a/js/websockets.js +++ b/js/websockets.js @@ -595,7 +595,7 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', // complete nick var nickComp = IrcUtils.completeNick(inputText, caretPos, - $rootScope.iterCandidate, flatNickList); + $rootScope.iterCandidate, flatNickList, ':'); // remember iteration candidate $rootScope.iterCandidate = nickComp.iterCandidate;