Macro/投稿/158
をテンプレートにして作成
Land.to
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* VSライクなhtml終タグ自動補完 & texの\end補完 [#a40e6c88]
-ページ: [[Macro/投稿]]
-作者: [[peak]]
-カテゴリー: js
-投稿日: 2006-12-23 (土) 11:40:43
** メッセージ [#qc8ceefc]
gis_dur 氏のマクロにインスパイアされたものです。
*** HTML/XML [#jf6cbead]
#code(javascript){{
/////////////////////////////////////////////////////////...
// html, xml 入力支援
// <...>の直後に</...>を自動で補完します。
//
// インストール方法
// キー SHIFT + . にこのマクロを割り当ててください。
/////////////////////////////////////////////////////////...
// エントリーポイント
Entry();
function Entry()
{
// SHIFT + . で呼び出されるので、とりあえず > を出力する
Editor.Char(0x3e); // 0x3e = '>'
var strFileName = Editor.GetFileName();
if(/\.(htm|html|shtml)$/.test(strFileName)){
ComplementTag(true);
}
else if(/\.(xml|xhtml)$/.test(strFileName)){
ComplementTag(false);
}
}
function ComplementTag(isHTML)
{
var strLine = GetCurLineUntilCursor();
var astrMatched = strLine.match(/<([^<>"']|"[^"]*?"|'[^'...
if(astrMatched == null) return false;
var strTag = astrMatched[0];
// 終タグを必要としないタグなら何もしない
if(/-->$|\/>$|\?>$/.test(strTag)) return;
if(strTag.search(/^<\s*(\w+)/) < 0) return;
// タグ名を抽出
strTag = RegExp.$1;
if(isHTML){
// HTMLの場合は、タグの種類によっては終タグがいらない
if("|area|base|basefont|bgsound|br|col|embed|frame|hr|i...
.indexOf("|" + strTag + "|") >= 0)
{
return;
}
}
// 終タグを作って挿入
strTag = "</" + strTag + ">";
Editor.InsText(strTag);
for(var i = 0; i < strTag.length; ++i){
Editor.Left();
}
return true;
}
function GetCurLineUntilCursor()
{
// カーソル位置取得
var xCursor = parseInt(Editor.ExpandParameter('$x'));
var yCursor = parseInt(Editor.ExpandParameter('$y'));
// カーソル行全体を取得
var str = Editor.GetLineStr(yCursor);
// xCursor はマルチバイトコードでの値なのでユニコード用...
--xCursor; // 1起算だったものを0起算に直す
for (var x = 0; x < xCursor; ++x){
if(IsWide(str.charCodeAt(x))) --xCursor;
}
return str.substring(0, xCursor);
}
/////////////////////////////////////////////////////////...
// 2バイト文字判定
function IsWide(charCode)
{
return 0x80 <= charCode && (charCode <= 0xff60 || 0xffa...
}
}}
*** tex [#h9c374a2]
#code(javascript){{
/////////////////////////////////////////////////////////...
// tex 入力支援
// \begin{...}の直後に\end{...}を自動で補完します。
//
// インストール方法
// キー SHIFT + ] にこのマクロを割り当ててください。
/////////////////////////////////////////////////////////...
// エントリーポイント
Entry();
function Entry()
{
// SHIFT + ] で呼び出されるので、とりあえず } を出力する
Editor.Char(0x7d); // 0x7d = '}'
var strFileName = Editor.GetFileName();
var ixExt = strFileName.lastIndexOf('.');
if(ixExt >= 0){
var strExt = strFileName.substr(ixExt).toLowerCase();
if(strExt == '.tex'){
ComplementTag();
}
}
}
function ComplementTag()
{
var strLine = GetCurLineUntilCursor();
var astrMatched = strLine.match(/\\begin\{[^{}]+?\}$/);
if(astrMatched == null){
return false;
}
var strEndTag = astrMatched[0].replace(/^\\begin/, "\\en...
Editor.InsText(strEndTag);
for(var i = 0; i < strEndTag.length; ++i){
Editor.Left();
}
return true;
}
function GetCurLineUntilCursor()
{
// カーソル位置取得
var xCursor = parseInt(Editor.ExpandParameter('$x'));
var yCursor = parseInt(Editor.ExpandParameter('$y'));
// カーソル行全体を取得
var str = Editor.GetLineStr(yCursor);
// xCursor はマルチバイトコードでの値なのでユニコード用...
--xCursor; // 1起算だったものを0起算に直す
for (var x = 0; x < xCursor; ++x){
if(IsWide(str.charCodeAt(x))) --xCursor;
}
return str.substring(0, xCursor);
}
/////////////////////////////////////////////////////////...
// 2バイト文字判定
function IsWide(charCode)
{
return 0x80 <= charCode && (charCode <= 0xff60 || 0xffa...
}
}}
----
#comment
終了行:
* VSライクなhtml終タグ自動補完 & texの\end補完 [#a40e6c88]
-ページ: [[Macro/投稿]]
-作者: [[peak]]
-カテゴリー: js
-投稿日: 2006-12-23 (土) 11:40:43
** メッセージ [#qc8ceefc]
gis_dur 氏のマクロにインスパイアされたものです。
*** HTML/XML [#jf6cbead]
#code(javascript){{
/////////////////////////////////////////////////////////...
// html, xml 入力支援
// <...>の直後に</...>を自動で補完します。
//
// インストール方法
// キー SHIFT + . にこのマクロを割り当ててください。
/////////////////////////////////////////////////////////...
// エントリーポイント
Entry();
function Entry()
{
// SHIFT + . で呼び出されるので、とりあえず > を出力する
Editor.Char(0x3e); // 0x3e = '>'
var strFileName = Editor.GetFileName();
if(/\.(htm|html|shtml)$/.test(strFileName)){
ComplementTag(true);
}
else if(/\.(xml|xhtml)$/.test(strFileName)){
ComplementTag(false);
}
}
function ComplementTag(isHTML)
{
var strLine = GetCurLineUntilCursor();
var astrMatched = strLine.match(/<([^<>"']|"[^"]*?"|'[^'...
if(astrMatched == null) return false;
var strTag = astrMatched[0];
// 終タグを必要としないタグなら何もしない
if(/-->$|\/>$|\?>$/.test(strTag)) return;
if(strTag.search(/^<\s*(\w+)/) < 0) return;
// タグ名を抽出
strTag = RegExp.$1;
if(isHTML){
// HTMLの場合は、タグの種類によっては終タグがいらない
if("|area|base|basefont|bgsound|br|col|embed|frame|hr|i...
.indexOf("|" + strTag + "|") >= 0)
{
return;
}
}
// 終タグを作って挿入
strTag = "</" + strTag + ">";
Editor.InsText(strTag);
for(var i = 0; i < strTag.length; ++i){
Editor.Left();
}
return true;
}
function GetCurLineUntilCursor()
{
// カーソル位置取得
var xCursor = parseInt(Editor.ExpandParameter('$x'));
var yCursor = parseInt(Editor.ExpandParameter('$y'));
// カーソル行全体を取得
var str = Editor.GetLineStr(yCursor);
// xCursor はマルチバイトコードでの値なのでユニコード用...
--xCursor; // 1起算だったものを0起算に直す
for (var x = 0; x < xCursor; ++x){
if(IsWide(str.charCodeAt(x))) --xCursor;
}
return str.substring(0, xCursor);
}
/////////////////////////////////////////////////////////...
// 2バイト文字判定
function IsWide(charCode)
{
return 0x80 <= charCode && (charCode <= 0xff60 || 0xffa...
}
}}
*** tex [#h9c374a2]
#code(javascript){{
/////////////////////////////////////////////////////////...
// tex 入力支援
// \begin{...}の直後に\end{...}を自動で補完します。
//
// インストール方法
// キー SHIFT + ] にこのマクロを割り当ててください。
/////////////////////////////////////////////////////////...
// エントリーポイント
Entry();
function Entry()
{
// SHIFT + ] で呼び出されるので、とりあえず } を出力する
Editor.Char(0x7d); // 0x7d = '}'
var strFileName = Editor.GetFileName();
var ixExt = strFileName.lastIndexOf('.');
if(ixExt >= 0){
var strExt = strFileName.substr(ixExt).toLowerCase();
if(strExt == '.tex'){
ComplementTag();
}
}
}
function ComplementTag()
{
var strLine = GetCurLineUntilCursor();
var astrMatched = strLine.match(/\\begin\{[^{}]+?\}$/);
if(astrMatched == null){
return false;
}
var strEndTag = astrMatched[0].replace(/^\\begin/, "\\en...
Editor.InsText(strEndTag);
for(var i = 0; i < strEndTag.length; ++i){
Editor.Left();
}
return true;
}
function GetCurLineUntilCursor()
{
// カーソル位置取得
var xCursor = parseInt(Editor.ExpandParameter('$x'));
var yCursor = parseInt(Editor.ExpandParameter('$y'));
// カーソル行全体を取得
var str = Editor.GetLineStr(yCursor);
// xCursor はマルチバイトコードでの値なのでユニコード用...
--xCursor; // 1起算だったものを0起算に直す
for (var x = 0; x < xCursor; ++x){
if(IsWide(str.charCodeAt(x))) --xCursor;
}
return str.substring(0, xCursor);
}
/////////////////////////////////////////////////////////...
// 2バイト文字判定
function IsWide(charCode)
{
return 0x80 <= charCode && (charCode <= 0xff60 || 0xffa...
}
}}
----
#comment
ページ名: