まずは、JavaScriptを整形するライブラリ beautify.js を jsbeautifier.org からダウンロードさせてもらい、Kate用Scriptのライブラリ置き場
/usr/share/kde4/apps/katepart/script/librariesに設置しておきます。これは次に作るKate用Script本体から読み込みます。
それでは、Kate用Script本体を作りましょう。
beautifyJS.js
/* kate-script
 * author: akirattii, <tanaka.akira.2006@gmail.com>
 * license: BSD
 * revision: 1
 * kate-version: 3.11.2
 * type: commands
 * functions: beautifyJS
 */
require("range.js");
require("beautify.js"); // for js_beautify
function help(cmd) {
  if (cmd == "beautifyJS") {
    return i18n("beautify javascript code");
  }
}
function action(cmd) {
  var a = new Object();
  if (cmd == "beautifyJS") {
    a.text = i18n("beautify JavaScript");
    a.icon = "";
    a.category = "";
    a.interactive = false;
    a.shortcut = "Ctrl+Alt+f";
  }
  return a;
}
function beautifyJS() {
  var selectionRange = view.selection();
  if (view.hasSelection()) {
    if (selectionRange.isValid()) {
      var fromLine = selectionRange.start.line;
      var toLine = selectionRange.end.line;
      var fromColumn = selectionRange.start.column;
      var toColumn = selectionRange.end.column;
      var newCode = _beautify(view.selectedText());
      document.editBegin();
      document.removeText(fromLine, fromColumn, toLine, toColumn);
      document.insertText(fromLine, fromColumn, newCode);
      document.editEnd();
    }
  } else {
    var line = view.cursorPosition().line;
    var endColumn = document.lineLength(line);
    var newCode = _beautify(view.selectedText());
    document.editBegin();
    document.removeText(line, 0, line, endColumn);
    document.insertText(line, 0, newCode);
    view.setCursorPosition(line + 1, 0);
    document.editEnd();
  }
}
function _beautify(jsSrcTxt) {
  return js_beautify(jsSrcTxt, {
    indent_size: 2,
    indent_char: ' '
  });
}上記のJSをKate用Script置き場
/usr/share/kde4/apps/katepart/script/commandsに保存します。
これだけです。
使い方
Kateエディタを再起動し、JSソースコードを開いてフォーマット箇所を選択、メニューバーの Tools > Scripts > beautify JavaScript を実行します。
なお、action()内で指定したショートカットキー(Ctrl+Alt+F)でも実行可能です。
参考にさせていただいたサイト
Kateの機能拡張(KDE4.10):kore1server
 
0 件のコメント:
コメントを投稿