##// END OF EJS Templates
Fixed adding text to multiple lines with formatting panel
neko259 -
r685:5f7e76d5 default
parent child Browse files
Show More
@@ -25,9 +25,9 b''
25 25
26 26 /**
27 27 * Add the desired characters to the start and end of selection.
28 *
28 29 * @param start Start (left) text
29 30 * @param end End (right) text
30 * @returns {boolean}
31 31 */
32 32 function addMarkToMsg(start, end) {
33 33 if (end.length == 0) {
@@ -65,63 +65,38 b' function addMarkToMsg(start, end) {'
65 65 /**
66 66 * Add text to the beginning of each selected line. Partially selected lines
67 67 * are included
68 * @param textToAdd
69 * @returns {*}
68 *
69 * @param textToAdd Text to add to the each line
70 70 */
71 71 function addTextToEachLineOfSelection(textToAdd) {
72 var editor, end, newValue, start, value, _ref, _ref1;
73 editor = document.getElementsByTagName('textarea')[0];
74 _ref = [editor.selectionStart, editor.selectionEnd], start = _ref[0], end = _ref[1];
75 if (start == null) {
76 return;
77 }
78 if (start === end) {
79 return;
80 }
81 console.log("Selection range: start=" + start + " end=" + end);
82 value = editor.value;
83 _ref1 = getLinesRange(start, end, value), start = _ref1[0], end = _ref1[1];
84 newValue = replaceLines(start, end, value, textToAdd);
85 return editor.value = newValue;
86 }
72 var textareas = $('textarea');
73
74 for (var i = 0; i < textareas.length; i++) {
75 var textarea = textareas[i];
76
77 if (document.selection) {
78 textarea.focus();
79
80 var sel = document.selection.createRange();
81 sel.text = start + sel.text + end;
82 } else if (textarea.selectionStart || textarea.selectionStart == '0') {
83 textarea.focus();
87 84
88 function replaceLines(start, end, value, textToAdd) {
89 var line, replacedText, text;
90 text = value.slice(start, end);
91 replacedText = ((function() {
92 var _i, _len, _ref, _results;
93 _ref = text.split("\n");
94 _results = [];
95 for (_i = 0, _len = _ref.length; _i < _len; _i++) {
96 line = _ref[_i];
97 _results.push(textToAdd + line);
85 var startPos = textarea.selectionStart;
86 var endPos = textarea.selectionEnd;
87
88 var oldValue = textarea.value;
89
90 var textBeforeSelection = oldValue.substring(0, startPos);
91 var selectionText = oldValue.substring(startPos, endPos)
92 .replace(/\n/g, '\n' + textToAdd);
93 textarea.value = textBeforeSelection + textToAdd +
94 selectionText +
95 oldValue.substring(endPos, oldValue.length);
96 } else {
97 textarea.value += textToAdd;
98 98 }
99 return _results;
100 })()).join("\n");
101 return replaceSubstring(start, end, value, replacedText);
102 }
103
104 function replaceSubstring(start, end, string, replacingString) {
105 return string.slice(0, start) + replacingString + string.slice(end);
106 }
99 }
107 100
108 function getLinesRange(start, end, value) {
109 var i, rangeEnd, rangeStart, _i, _j, _ref, _ref1;
110 if (value[start] === "\n") {
111 start = start - 1;
112 }
113 _ref = [start, end], rangeStart = _ref[0], rangeEnd = _ref[1];
114 for (i = _i = start; start <= 0 ? _i <= 0 : _i >= 0; i = start <= 0 ? ++_i : --_i) {
115 if (value[i] === "\n") {
116 break;
117 }
118 rangeStart = i;
119 }
120 for (i = _j = end, _ref1 = value.length; end <= _ref1 ? _j < _ref1 : _j > _ref1; i = end <= _ref1 ? ++_j : --_j) {
121 if (value[i] === "\n") {
122 break;
123 }
124 rangeEnd = i;
125 }
126 return [rangeStart, rangeEnd];
101 return false;
127 102 }
General Comments 0
You need to be logged in to leave comments. Login now