「
カッコで囲う
」を編集中
2018年8月28日 (火) 14:03時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(修正)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
ポップアップメニューから任意の'''カッコ'''や'''ダッシュ'''などの種類を選択して、選択範囲を囲います。<br> 選択範囲がないばあい、基本的にはカーソル位置に (), <>, [], {}, 「」, … などを挿入します。 ルーラーの行番号のドラッグでの複数行選択やトリプルクリックでの行選択などで末尾改行が含まれているばあい、さいごの改行を無視します。 作成にあたり、「[[引用の追加]]」マクロと[[キーアサイン集]]の「[[%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86#.E6.8B.AC.E5.BC.A7.E3.81.A7.E6.8C.9F.E3.82.80|括弧で挟む]]」マクロのコードを参考にしました。 <source lang="javascript"> #title = "カッコ..." #tooltip = "カッコで囲う" /** * ポップアップメニューからカッコの種類を選択して、選択範囲をカッコで囲う * 複数行の選択範囲で末尾が改行 \n のとき、さいごの改行は除外する * 非選択時には、それぞれことなる動作をする * * 項目(カッコの種類)の追加や変更も自由にでき、 * 項目を減らしたいばあいは m.Add(); の行を // でコメントアウトするだけでよい */ // 開きカッコ p1 を配列で定義 var p1 = new Array( "", "(", "<", "[", "{", "(", "「", "『", "【", " (", " (", " \"", " ", " - ", "――", "~", "" ); // 閉じカッコ p2 を配列で定義 var p2 = new Array( "", ")", ">", "]", "}", ")", "」", "』", "】", ") ", ") ", "\" ", " ", " - ", "――", "~", "" ); // メニュー項目のID("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "" ) // ポップアップメニュー項目の定義 var m = CreatePopupMenu(); // m.Add( "カッコの種類・表示名 (&アクセラレータキー)", ID ) ※インデックス ID は 0番 スタートで p1, p2 の並び順に対応 m.Add( " ( 半角 丸カッコ ) (&P)", 1 ); // Parenthesis m.Add( "< 半角 山カッコ > (&A)", 2 ); // Angle brackets ※半角不等号 < / > (キーボードの[ね]/[る] m.Add( " [ 半角 角カッコ ] (&B)", 3 ); // square Brackets m.Add( " { 半角 波カッコ } (&C)", 4 ); // Curly brackets m.Add( "", 0, meMenuSeparator ); m.Add( "( 全角 丸カッコ ) (&R)", 5 ); // Round brackets m.Add( "", 0, meMenuSeparator ); m.Add( "「 全角 かぎカッコ 」 (&K)", 6 ); // Kakko m.Add( "『 全角 二重かぎカッコ 』 (&W)", 7 ); // White corner brackets m.Add( "【 全角 スミ付きカッコ 】 (&L)", 8 ); // Lenticular brackets m.Add( "", 0, meMenuSeparator ); m.Add( "␣( 全角 丸カッコ )␣ (&Z)", 9 ); // Zenkaku (full-width) m.Add( "␣ ( 半角 丸カッコ ) ␣ (&H)", 10 ); // Hankaku (half-width) m.Add( "␣ \" 半角 引用符 \" ␣ (&Q)", 11 ); // double Quotation mark キーボードの[ふ]キー m.Add( "␣ 半角 スペース ␣ (&S)", 12 ); // Space m.Add( "", 0, meMenuSeparator ); m.Add( "␣-␣ 半角 ハイフン ␣-␣ (&M)", 13 ); // hyphen-Minus キーボードの[ほ]キー m.Add( "―― 全角 ダッシュ ―― (&D)", 14 ); // Dash m.Add( "~ 全角 チルダ ~ (&T)", 15 ); // Tilde キーボードの[へ]キー m.Add( "", 0, meMenuSeparator ); m.Add( "1文字ずつ前後を削除 (&1)", 16 ); m.Add( "2文字ずつ前後を削除 (&2)", 17 ); // m.Add( "", 0, meMenuSeparator ); // m.Add( "キャンセル", 0 ); // Escキーでキャンセルできるのでアクセラレータなし // ポップアップメニューを表示 // m.Track(0); ならキャレット位置、Track(1); ならカーソル位置にサブメニューがポップアップ var r = m.Track( mePosMouse = 1 ); // 選択されたメニュー項目のIDを r に格納する if ( r > 0 ) { var s = document.selection // 選択範囲の各座標を取得 var ax = s.GetTopPointX( mePosLogical ); var ay = s.GetTopPointY( mePosLogical ); var bx = s.GetBottomPointX( mePosLogical ); var by = s.GetBottomPointY( mePosLogical ); // 選択範囲の文字列を取得(さいごの改行を含めない) if ( ! s.IsEmpty && bx == 1 ) { s.SetActivePoint( mePosLogical, 1, by - 1 ); s.EndOfLine( false, mePosLogical ); s.SetAnchorPoint( mePosLogical, ax, ay ); } var st = s.Text; // IDごとのテキスト変換処理 switch (r) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: // カッコ(スペースなし) if ( s.IsEmpty ) { // 選択範囲がなければ document.Write( p1[r] + p2[r] ); // カッコ p1 & p2 だけをカーソル位置に挿入 s.SetActivePos( s.GetActivePos() - p2[r].length ); // カーソルをカッコのなかに移動 } else { // 選択範囲があれば s.Text = p1[r] + st + p2[r]; // 選択範囲 st をカッコ p1 & p2 で囲う s.SetAnchorPoint( mePosLogical, ax, ay ); // 選択範囲を復元 } break; case 9: case 10: case 11: case 12: // カッコ(スペースつき) if ( ! s.IsEmpty ) { // 選択範囲があれば s.Text = p1[r] + st + p2[r]; // 選択範囲 st をカッコ p1 & p2 で囲う s.SetAnchorPoint( mePosLogical, ax, ay ); // 選択範囲を復元 } break; case 13: case 14: case 15: // ハイフン、ダッシュ、チルダ if ( s.IsEmpty ) { // 選択範囲がなければ document.Write( p1[r] ); // 片側 p1 だけをカーソル位置に挿入 } else { // 選択範囲があれば s.Text = p1[r] + st + p2[r]; // 選択範囲 st をカッコ p1 & p2 で囲う s.SetAnchorPoint( mePosLogical, ax, ay ); // 選択範囲を復元 } break; case 16: case 17: // n文字ずつ前後を削除 if ( ! s.IsEmpty ) { // 選択範囲があれば if ( r == 16 ) var n = 1; else var n = 2; s.Text = st.slice( n, st.length - n ); // 選択範囲の前後から 1文字 or 2文字 消す s.SetAnchorPoint( mePosLogical, ax, ay ); // 選択範囲を復元 } break; default: break; } } </source> <!-- 記 case1~8 の "s.CharLeft( false, p2[r].length );" を "s.SetActivePos( s.GetActivePos() - p2[r].length );" に変更 (2018/08/27 sukemaru) --> = カッコで囲う (ポップアップメニューなし) = 特定の種類のカッコを一発で追加する小マクロは[[キーアサイン集#括弧で挟む|キーアサイン集]]にもありますが、コードを改変して前後に付ける "カッコ" のかわりに "任意の文字列" を指定するばあいに「折り返し」表示と相性のよくない部分があります。 また、マクロ実行後のカーソル位置を選択範囲'''なし'''のときと'''あり'''のときとで変えたいばあいも、こちらのコードがよいでしょう。 <source lang="javascript"> #title = "( カッコ )" #tooltip = "( カッコ ) で囲う" // MeryWiki の マクロライブラリ >> キーアサイン集 の「括弧で挟む」を改変 // 選択範囲の前後にカッコ以外にも任意の文字列を追加するマクロとしても流用できます var s = document.selection; // 選択範囲の各座標を取得 var ax = s.GetTopPointX( mePosLogical ); var ay = s.GetTopPointY( mePosLogical ); // 選択範囲のテキストを取得し、カッコを追加 var st = s.Text; var pre = "("; // 前に付ける文字列 var sur = ")"; // 後ろに付ける文字列 s.Text = pre + st + sur; // カーソルを移動、または範囲選択 if ( ! st ) // 選択範囲なしだったばあい s.SetActivePos( s.GetActivePos() - sur.length ); // 後ろに付けた文字列 sur の前にカーソルを移動 else // 選択範囲があったばあい s.SetAnchorPoint( mePosLogical, ax, ay ); // カッコを含めて範囲選択 </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク