From ca5d0c82509cedb94f9bfa4a40e77706a58faafe Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sat, 11 Apr 2015 18:32:24 -0400 Subject: [PATCH] Add hotkey for "reply with selected text" to Issueable --- .../javascripts/shortcuts_issueable.coffee | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/shortcuts_issueable.coffee b/app/assets/javascripts/shortcuts_issueable.coffee index f2d30eb364d..f645d4ae515 100644 --- a/app/assets/javascripts/shortcuts_issueable.coffee +++ b/app/assets/javascripts/shortcuts_issueable.coffee @@ -11,9 +11,35 @@ class @ShortcutsIssueable extends ShortcutsNavigation $('.js-milestone').select2('open') return false ) - + Mousetrap.bind('r', => + @replyWithSelectedText() + return false + ) + if isMergeRequest @enabledHelp.push('.hidden-shortcut.merge_requests') else @enabledHelp.push('.hidden-shortcut.issues') + replyWithSelectedText: -> + if window.getSelection + selected = window.getSelection().toString() + replyField = $('.js-main-target-form #note_note') + + return if selected.trim() == "" + + # Put a '>' character before each non-empty line in the selection + quote = _.map selected.split("\n"), (val) -> + "> #{val}\n" if val.trim() != '' + + # If replyField already has some content, add a newline before our quote + separator = replyField.val().trim() != "" and "\n" or '' + + replyField.val (_, current) -> + current + separator + quote.join('') + "\n" + + # Trigger autosave for the added text + replyField.trigger('input') + + # Focus the input field + replyField.focus()