diff --git a/client/js/chat.js b/client/js/chat.js index 0437e0bb..00ceec4a 100644 --- a/client/js/chat.js +++ b/client/js/chat.js @@ -65,7 +65,8 @@ $(function() { .sticky() .end() .find(".input") - .tabcomplete(commands, {hint: false}); + .tabcomplete(commands, {hint: false}) + .history(); $("#network-" + data.id) .append(render("channels", {channels: [data.chan]})) @@ -97,6 +98,7 @@ $(function() { chat.html(render("windows", {windows: channels})) .find(".input") .tabcomplete(commands, {hint: false}) + .history() .end() .find(".hidden") .prev(".show-more") diff --git a/client/js/jquery.plugins.js b/client/js/jquery.plugins.js index 7db9e0e2..dac8212e 100644 --- a/client/js/jquery.plugins.js +++ b/client/js/jquery.plugins.js @@ -351,6 +351,69 @@ } })(jQuery); +/*! + * inputhistory + * https://github.com/erming/inputhistory + * v0.2.1 + */ +(function($) { + $.fn.history = // Alias + $.fn.inputhistory = function(options) { + var settings = $.extend({ + history: [], + submit: true, + }, options); + + var self = this; + if (self.size() > 1) { + return self.each(function() { + $(this).history(options); + }); + } + + self.data('history', settings.history.concat([''])); + + var i = 0; + self.on('keydown', function(e) { + var history = self.data('history'); + var key = e.which; + switch (key) { + + case 13: // Enter + if (self.val() != '') { + i = history.length; + history[i - 1] = self.val(); + history.push(''); + } + if (settings.submit) { + self.parents('form').eq(0).submit(); + } + self.val(''); + break; + + case 38: // Up + case 40: // Down + history[i] = self.val(); + if (key == 38 && i != 0) { + i--; + } else if (key == 40 && i < history.length - 1) { + i++; + } + self.val(history[i]); + break; + + default: + return; + + } + + return false; + }); + + return this; + } +})(jQuery); + /*! * jQuery Cookie Plugin v1.4.0 * https://github.com/carhartl/jquery-cookie