function previewWrapWithAbbreviation(editor, abbr) { abbr = String(abbr); if (!abbr) return null; var editorUtils = require('editorUtils'); var utils = require('utils'); var info = editorUtils.outputInfo(editor); var range = editor.getSelectionRange(), startOffset = range.start, endOffset = range.end; if (startOffset == endOffset) { // no selection, find tag pair var match = require('htmlMatcher').find(info.content, startOffset); if (!match) { // nothing to wrap return null; } var narrowedSel = utils.narrowToNonSpace(info.content, match.range); startOffset = narrowedSel.start; endOffset = narrowedSel.end; } var newContent = utils.escapeText(info.content.substring(startOffset, endOffset)); var ctx = require('actionUtils').captureContext(editor); return require('wrapWithAbbreviation').wrap(abbr, editorUtils.unindent(editor, newContent), info.syntax, info.profile, ctx) || null; }
require('actions').add('merge_lines', function(editor) { var matcher = require('htmlMatcher'); var utils = require('utils'); var editorUtils = require('editorUtils'); var info = editorUtils.outputInfo(editor); /** @type Range */ var selection = require('range').create(editor.getSelectionRange()); if (!selection.length()) { // find matching tag var pair = matcher.find(info.content, editor.getCaretPos()); if (pair) { selection = pair.outerRange; } } if (selection.length()) { // got range, merge lines var text = selection.substring(info.content); var lines = utils.splitByLines(text); for (var i = 1; i < lines.length; i++) { lines[i] = lines[i].replace(/^\s+/, ''); } text = lines.join('').replace(/\s{2,}/, ' '); var textLen = text.length; text = utils.escapeText(text); editor.replaceContent(text, selection.start, selection.end); editor.createSelection(selection.start, selection.start + textLen); return true; } return false; });