Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Tab autocomplete
- // @version 0.2.1
- // @description irc-like feature, improved and better looking version, shift+tab adds @
- // @author Ravana
- // @match https://plug.dj/*
- // @require http://code.jquery.com/jquery-latest.js
- // ==/UserScript==
- var knownNames = [];
- var savedNames = [];
- var msgStart = "";
- var msgEnd = "";
- var message = "";
- $.extend($.expr[":"], {
- "starts-with": function(elem, i, data, set) {
- var text = $.trim($(elem).text()),
- term = data[3];
- return text.indexOf(term) === 0;
- },
- "ends-with": function(elem, i, data, set) {
- var text = $.trim($(elem).text()),
- term = data[3];
- return text.lastIndexOf(term) === text.length - term.length;
- }
- });
- setTimeout(function() {
- $.each(API.getUsers(), function(index, value) {
- if (knownNames.indexOf(value["username"]) == -1) knownNames.push(value["username"]);
- });
- knownNames.sort();
- API.on(API.USER_JOIN, userJoin);
- function userJoin(data) {
- if (knownNames.indexOf(data.username) == -1) knownNames.push(data.username);
- knownNames.sort();
- }
- API.on(API.USER_LEAVE, userLeave);
- function userLeave(data) {
- knownNames.splice(knownNames.indexOf(data.username), 1);
- }
- $("#chat-input-field").keydown(function(e) {
- if (e.keyCode == 13 || e.keyCode==8 || e.keyCode==32 || e.keyCode==27) {
- savedNames = [];
- msgStart = "";
- message = "";
- $(".cm:starts-with(Matched: ):not(:last)").remove();
- }
- if (e.keyCode == 27) {
- knownNames = [];
- $.each(API.getUsers(), function(index, value) {
- if (knownNames.indexOf(value["username"]) == -1) knownNames.push(value["username"]);
- });
- knownNames.sort();
- $(".cm:starts-with(Matched: )").remove();
- }
- if (e.keyCode == 9) {
- e.preventDefault();
- if(e.shiftKey) {
- message = $("#chat-input-field").val();
- $("#chat-input-field").val(message+"@");
- } else {
- if(savedNames.length<1){
- message = $("#chat-input-field").val();
- message = message.split(" ");
- msgEnd = message.pop();
- message = message.join(" ");
- for(var i = 0; i < knownNames.length;i++){
- if(knownNames[i].toLowerCase().indexOf(msgEnd.toLowerCase())==0)savedNames.push(knownNames[i]);
- }
- if(savedNames.length==0){
- return;
- }
- if(message){$("#chat-input-field").val(message+" "+savedNames[0]);}else{$("#chat-input-field").val(savedNames[0]);}
- if(savedNames.length==1){
- return;
- }
- if(msgEnd)API.chatLog("Matched: " + savedNames.join("/"));
- $(".cm:starts-with(Matched: ):not(:last)").remove();
- } else {
- //console.log("saved > 1");
- var q = savedNames.shift();
- savedNames.push(q);
- if(message){$("#chat-input-field").val(message+" "+savedNames[0]);}else{$("#chat-input-field").val(savedNames[0]);}
- }
- }
- }
- });
- },10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement