「タブが「縦書き」モードかチェックする」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
注記・メモ節を追加
MSY-07 (トーク | 投稿記録)
<source>タグを<syntaxhighlight>タグに置き換え
11行目: 11行目:
   */
   */


<source lang="javascript">
<syntaxhighlight lang="javascript">
function CheckVertical( objDocument ) {
function CheckVertical( objDocument ) {
   var isViewVertical;
   var isViewVertical;
31行目: 31行目:
   return isViewVertical;
   return isViewVertical;
}
}
</source>
</syntaxhighlight>


== 使い方 ==
== 使い方 ==
37行目: 37行目:


① CheckVertical() 関数で、タブが「縦書き」モードかチェックする
① CheckVertical() 関数で、タブが「縦書き」モードかチェックする
<source lang="javascript">
<syntaxhighlight lang="javascript">
var d = editor.ActiveDocument;
var d = editor.ActiveDocument;
var isVertical = CheckVertical( d );
var isVertical = CheckVertical( d );
43行目: 43行目:
// var arlertStr = isVertical ? "縦書き" : "横書き";
// var arlertStr = isVertical ? "縦書き" : "横書き";
// Alert( arlertStr );
// Alert( arlertStr );
</source>
</syntaxhighlight>


② 条件にマッチしたら「縦書き」モードにする  
② 条件にマッチしたら「縦書き」モードにする  


※''editor.ExecuteCommandByID( 2238 )'' は「縦書き」の ON/OFF トグル切り替え機能であって「ON を指定する」ものではないので、「○○という条件に一致するタブが横書き表示だったときは → 縦書きに変更する」という書き方が必要になる
※''editor.ExecuteCommandByID( 2238 )'' は「縦書き」の ON/OFF トグル切り替え機能であって「ON を指定する」ものではないので、「○○という条件に一致するタブが横書き表示だったときは → 縦書きに変更する」という書き方が必要になる
<source lang="javascript">
<syntaxhighlight lang="javascript">
// 1. 編集モードが「青空文庫」なら「縦書き」モードにする
// 1. 編集モードが「青空文庫」なら「縦書き」モードにする
// 2.「小説」フォルダ配下の TXT ファイルなら「青空文庫」×「縦書き」モードにする
// 2.「小説」フォルダ配下の TXT ファイルなら「青空文庫」×「縦書き」モードにする
65行目: 65行目:
   editor.ExecuteCommandByID( MEID_VIEW_WRAP_BY_WINDOW = 2148 );
   editor.ExecuteCommandByID( MEID_VIEW_WRAP_BY_WINDOW = 2148 );
}
}
</source>
</syntaxhighlight>


== メモ ==
== メモ ==
[https://www.haijin-boys.com/software/mery/mery-2-7-5#14 Mery ベータ版 2.7.6] から'''マクロ機能の縦書きモード対応'''が部分的に仕様変更になった(縦書きモードのときの ''CharRight'' メソッドなどでのキャレットの移動方向が変更になった)ため、このページのマクロでは「タブが縦書きモードか」をチェックできなくなりました。
[https://www.haijin-boys.com/software/mery/mery-2-7-5#14 Mery ベータ版 2.7.6] から'''マクロ機能の縦書きモード対応'''が部分的に仕様変更になった(縦書きモードのときの ''CharRight'' メソッドなどでのキャレットの移動方向が変更になった)ため、このページのマクロでは「タブが縦書きモードか」をチェックできなくなりました。

2023年5月17日 (水) 04:38時点における版

2019/07/06 記 (sukemaru)
このページのマクロ(組み込み関数/サンプルコード)は、Mery ver. 2.6.5 - 2.7.5 でしか使えません。
Mery 2.7.6 以降では、タブが縦書きモードであるかどうかの状態を
マクロから取得することはできなくなりました。
>> メモ欄を参照

組み込み関数 CheckVertical()

/**
 * 組み込み関数 CheckVertical( objDocument )
 * 引数に与えられた Document オブジェクトが「縦書き」モードかチェックする
 * 戻り値は 真偽値 true / false
 */
function CheckVertical( objDocument ) {
  var isViewVertical;
  // Redraw = false;
  var d = objDocument || document, s = d.selection;
  var saved = d.Saved, readOnly = d.ReadOnly;
  var sx = ScrollX, sy = ScrollY;
  var act = s.GetActivePos(), anc = s.GetAnchorPos();
  var ay = s.GetActivePointY( mePosView );
  d.ReadOnly = false;
  d.Write( "\n" ); s.CharRight();
  var dy = s.GetActivePointY( mePosView );
  if ( dy == ay ) { isVertical = true; Status = "縦書き"; }
  else { isVertical = false; Status = "横書き"; }
  d.Undo();
  s.SetActivePos( act ); s.SetAnchorPos( anc );
  ScrollX = sx; ScrollY = sy;
  d.Saved = saved; d.ReadOnly = readOnly;
  return isViewVertical;
}

使い方

例. 「ファイルを開いた時」のイベントマクロなどで、特定の条件で「縦書き」モードにする

① CheckVertical() 関数で、タブが「縦書き」モードかチェックする

var d = editor.ActiveDocument;
var isVertical = CheckVertical( d );

// var arlertStr = isVertical ? "縦書き" : "横書き";
// Alert( arlertStr );

② 条件にマッチしたら「縦書き」モードにする

editor.ExecuteCommandByID( 2238 ) は「縦書き」の ON/OFF トグル切り替え機能であって「ON を指定する」ものではないので、「○○という条件に一致するタブが横書き表示だったときは → 縦書きに変更する」という書き方が必要になる

// 1. 編集モードが「青空文庫」なら「縦書き」モードにする
// 2.「小説」フォルダ配下の TXT ファイルなら「青空文庫」×「縦書き」モードにする
// ※「! isVertical」は「isVertical == false」と同義

var cond1 = ( d.Mode == "青空文庫" && ! isVertical );
var cond2 = ( d.FullName.match( /\\小説\\.*\.txt$/ ) && ! isVertical );

if ( cond1 ) {
  editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 );	// 縦書き
}
else if ( cond2 ) {
  d.Mode == "青空文庫";	// 編集モードを変更
  editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 );	// 縦書き
  // (おまけ) ウインドウの右端で折り返し
  editor.ExecuteCommandByID( MEID_VIEW_WRAP_BY_WINDOW = 2148 );
}

メモ

Mery ベータ版 2.7.6 からマクロ機能の縦書きモード対応が部分的に仕様変更になった(縦書きモードのときの CharRight メソッドなどでのキャレットの移動方向が変更になった)ため、このページのマクロでは「タブが縦書きモードか」をチェックできなくなりました。

スポンサーリンク