*/
var Suggester = {
- // 入力データを利用した補完を行うか
- byInputs: true,
-
keywords: {
html: (function() {
'<br />',
'<div>#{c}</div>\n',
'<span>#{c}</span>',
+ '<p>#{c}</p>\n',
'<h1>#{c}</h1>\n',
'<h2>#{c}</h2>\n',
'<dt>#{c}</dt>\n',
'<dt>#{c}</dd>\n',
+ '<table>\n#{c}\n</table>\n',
+ '<tr>#{c}</tr>',
+ '<th>#{c}</th>',
+ '<td>#{c}</td>',
+
'<strong>#{c}</strong>',
'<em>#{c}</em>',
'<form>\n#{c}\n</form>',
+ '<fieldset>#{c}</fieldset>',
'<input type="#{c}" />',
'<!--',
// 属性
var attributes = [
'href="#{c}"',
+ 'src="#{c}"',
+ 'cols="#{c}"',
+ 'rows="#{c}"',
'id="#{c}"',
'class="#{c}"',
'style="#{c}"',
+ 'colspan="#{c}"',
+ 'rowspan="#{c}"',
+ 'border="#{c}"',
+
'onload="#{c}"',
'onclick="#{c}"',
'onmouseover="#{c}"',
'margin-left: ',
'margin-top: ',
'margin-bottom: ',
+
'padding: ',
+ 'padding-right: ',
+ 'padding-left: ',
+ 'padding-top: ',
+ 'padding-bottom: ',
+
+ 'border: ',
+ 'border-right: ',
+ 'border-left: ',
+ 'border-top: ',
+ 'border-bottom: ',
+
+ 'background: ',
+ 'background-color: ',
+ 'background-repeat: ',
+
'float: ',
'clear: '
];
toolbar.append(
$('<p class="tagget_replace"></p>')
.append('<input type="text" value="Before" title="置換前" />')
- .append('<img src="img/v_arrow010102.gif" />')
+ .append('<img src="tagget/img/v_arrow010102.gif" />')
.append('<input type="text" value="After" title="置換後" />')
.append('<input type="button" value="Replace All" title="全て置換" />')
);
return cookie;
},
+ // 入力データを利用した補完を行うか
checkIntelli: function(t) {
var intelli = $(t).parents('.tagget_wrapper')
.find('.tagget_intelli input').attr('checked');
// 改行がたくさんある場合スクロールバーを下にずらす
if (/\n/g.test(s) && s.match(/\n/g).length > 2) {
- top += parseInt(getComputedStyle(t, '').getPropertyValue('line-height'), 10);
+ top += parseInt(getComputedStyle(t, '').getPropertyValue('font-size'), 10) + 3;
}
// スクロールバーを戻す
};
-
/* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- */
- // tagget初期化
- var init = function(t, i) {
+ /**
+ * textareaのEventに設定する関数群
+ */
+ Event = {
- // 被らないコードを振る
- while ($('textarea').is('.tagget_' + i)) {
- i = '0' + i;
- }
- $(t).addClass('tagget_' + i);
-
- Wrapper.wrap(t);
- Wrapper.absolutes(t);
-
-// setTimeout(function() {
-//
-// });
-
- // イベント設定
-
- // keyup(発生タイミングが一番少ない)で候補表示
- $(t).keyup(function(e) {
+ // keyupは発生タイミングが一番少ない
+ // 候補表示に使用
+ keyup: function(e) {
+
+ var t = this;
// 十字キー、Enterの時は補完を表示しない
if(!(37 <= e.which && e.which <= 40) && !(e.which == 13)) {
Wrapper.showPopup(t);
- } else if(e.which == 37 || e.which == 39) {
+
+ }
+ // 左右キーで補完を非表示化
+ else if(e.which == 37 || e.which == 39) {
Wrapper.getPopup(t).hide();
}
Wrapper.setLine(t);
- })
-
- // 入力キーに応じた処理
- .keydown(function(e) {
+ },
+
+ // 入力内容に応じた処理はdownで
+ // press,upだとおかしくなるものもこっちで
+ keydown: function(e) {
+
+ var t = this;
// タブキャンセル
// keydown以外だとうまくいかない
}
// Shift+Enterで改行 or <br />入力
- // 補完却下も可能
if (e.shiftKey && e.which == 13) {
var n = '\n';
-// if (!Wrapper.isPopup(t) && Wrapper.checkType(t, 'html')) {
if (Wrapper.checkType(t, 'html')) {
n = '<br />';
}
Cursor.insert(t, n);
+ // 補完処理終了。
+ // 以下同様で後続処理は行わない
return false;
}
var indent = Cursor.getText(t, /^[\t ]*/mg);
Cursor.insert(t, '\n' + (indent ? indent[indent.length - 1] : ''));
+ // TODO:もっとちゃんとスクロールの高さ直す
var $t = $(t);
if (window.getComputedStyle) {
- $t.scrollTop($t.scrollTop() + parseInt(getComputedStyle(t, '').getPropertyValue('line-height'), 10));
+ $t.scrollTop($t.scrollTop() + parseInt(getComputedStyle(t, '').getPropertyValue('font-size'), 10) + 3);
}
return false;
}
- });
+ }
+
+ };
+
+
+ /* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- */
+ // tagget初期化
+ var init = function(t, i) {
+
+ // 被らないコードを振る
+ while ($('textarea').is('.tagget_' + i)) {
+ i = '0' + i;
+ }
+ $(t).addClass('tagget_' + i);
+
+ Wrapper.wrap(t);
+ Wrapper.absolutes(t);
+
+ // イベント設定
+
+ // keyup(発生タイミングが一番少ない)で候補表示
+ $(t).keyup(Event.keyup)
+
+ // 入力キーに応じた処理
+ .keydown(Event.keydown);
// 最初に1回だけ呼び出し。
var data = Cookie.load(Wrapper.getId(t));