[Komodo Edit] SciMozのメソッド一覧

ActiveState SciMoz

前回は、SciMozの属性値を実際に使用し一覧化した。

このエントリでは、Komodo Edit 8.5のマニュアルに記載されているSicMozのメソッドを実際に使用し、その動作についてコメントを付けて一覧化する。 属性値とこのメソッドを利用することで、ユーザがテキストに対して行える操作の全てをマクロから実施することができる。

scimozのメソッド

ここにscimozのメソッド一覧を記述する。しかしたら捉え違いをしているものもあるかもしれない。 一部のメソッドについては、動作を理解できなかったものがあり、コメント部はマニュアルのままとしている。判明次第修正する。次の5メソッド。

  • replaceTarget()
  • homeDisplay()
  • homeDisplayExtend()
  • lineEndDisplay()
  • lineEndDisplayExtend()

また、注意点を最初に記載しておく。

  • メソッドの多くは「ポジション」という値をを扱う。この値はファイル先頭(1行目の行頭)を0とした絶対位置を表す。メソッドの解説で用いている「位置」は、特に注釈ない限りこの「ポジション」を意味する。
  • 行番号を扱うメソッドが存在するが、そこで言う行番号とは0から開始する値で、エディタの行番号表示機能により表示される値とは異なる事に注意すること。

メソッド一覧

  • void **emptyUndoBuffer()**アンドゥの履歴をクリアする。
  • void **undo()**アンドゥを実行する。
  • void **cut()**選択領域内の文字列を切り取る。
  • void **copy()**選択領域内の文字列をコピーする。
  • void **paste()**カーソル位置にクリップボードの内容を挿入する。
  • void **clear()**選択領域内の文字列を消去する。
  • long **replaceTarget(in long length, in string text)**Replace the target text with the argument text. Text is counted so it can contain NULs. Returns the length of the replacement text..
  • string **getTextRange(in long min, in long max)**テキスト中から指定した範囲の文字列を返却する。パラメータは開始と終了位置。、”end”の関係)
  • void **insertText(in long pos, in string text)**指定した位置へ文字列を挿入する。カーソル位置とは無関係。
  • void **colourise(in long start, in long end)**指定した範囲内の文字列に対しハイライトを再設定する。
  • wchar **getWCharAt(in long pos)**指定した位置の文字を返却する。Unicode対応。
  • void **addText(in long length, in string text)**指定の文字列をカーソル位置に指定の長さで挿入する。与えた文字列長以上のサイズ、または長さ未指定の場合は全文が挿入される。長さに0を指定した場合は挿入なし。
  • void **selectAll()**テキストを全選択する。
  • void **gotoLine(in long line)**指定した行の行頭へカーソルを移動する。行番号は0から開始する(1行目は0)。
  • void **gotoPos(in long pos)**指定した位置へカーソルを移動する。位置の指定はテキスト先頭からのバイトサイズ。
  • void **deleteBack()**カーソルの左一文字を削除する。カーソルが行頭にある場合は、前の行の改行が削除される。
  • void **newLine()**カーソル位置で改行する。
  • void **redo()**リドゥを実行する。
  • boolean **canRedo()**リドゥが可能であるかを返却する。
  • void **beginUndoAction()**Undo操作(Undoスタックに積む単位)の開始を設定する。例外発生時でも必ずendUndoAction()が実行されるようコーディングする事。(後述の『Undoスタックについて』を参照)
  • void **endUndoAction()**Undo操作(Undoスタックに積む単位)の終了を設定する。(後述の『Undoスタックについて』を参照)
  • long **getColumn(in long pos)**指定した位置に対応する行の、行頭を0とした行中の位置を返却する。
  • long **getLineEndPosition(in long line)**指定した行の行末の位置を返却する。
  • void **setSel(in long start, in long end)**指定した開始位置から終了位置までを選択する。
  • long **lineFromPosition(in long pos)**指定した位置の行番号を返却する。行番号は0から開始する(1行目が0)。
  • long **positionFromLine(in long line)**指定した行の行頭位置を返却する。
  • void **lineScroll(in long columns, in long lines)**指定した列(水平方向)、指定した行(垂直方向)へウィンドウの内容をスクロールする。カーソルは移動しない。垂直方向の場合には、正の値を指定するとファイル末尾へ、負の値ではファイル先頭へとスクロールする。水平方向の場合には、正の値で右へとスクロールし、負の値で左へとスクロールする。但し、水平方向のスクロールはWord Wrapが有効である場合には無効である(自動折り返しのため)。
  • void **scrollCaret()**カーソルがウィンドウ外に外れている場合、ウィンドウ内に表示するようスクロールする。カーソルがウィンドウ内に表示されていても、ウィンドウの際(きわ)に位置する場合は、若干のスクロールが発生する事がある。
  • long **lineLength(in long line)**指定した行の長さを得る。改行文字も数えられる。EOF(End Of File)のみ、または存在しない行番号を指定した場合には0が返却される。
  • void **replaceSel(string)**選択領域を指定の文字列で置換する。選択していない場合は、カーソル位置に指定の文字列を挿入する。
  • void **lineDown()**カーソルを次の行へ移動する。
  • void **lineDownExtend()**カーソルを次の行へ移動させ、移動先までを選択する。
  • void **lineUp()**カーソルを前の行へ移動する。
  • void **lineUpExtend()**カーソルを前の行へ移動させ、移動先までを選択する。
  • void **charLeft()**カーソルを1文字分左へ移動する。
  • void **charLeftExtend()**カーソルを1文字分左へ移動させ、移動先までを選択する。
  • void **charRight()**カーソルを1文字分右へ移動する。
  • void **charRightExtend()**カーソルを1文字分右へ移動させ、移動先までを選択する。
  • void **wordLeft()**カーソルより左に存在する単語の先頭にカーソルを移動する。行頭に達している場合、前の行へ移動する。
  • void **wordLeftExtend()**カーソルの動きはwordLeft()と同じ。移動先までを選択する。
  • void **wordRight()**カーソルより左に存在する単語の先頭にカーソルを移動する。行頭に達している場合、前の行へ移動する。行末に達している場合、次の行へ移動する。
  • void **wordRightExtend()**カーソルの動きはwordRight()と同じ。移動先までを選択する。
  • void **home()**カーソルを行頭へ移動する。
  • void **homeExtend()**カーソル位置から行頭までを選択する。
  • void **lineEnd()**カーソルを行末へ移動する。
  • void **lineEndExtend()**カーソル位置から行末までを選択する。
  • void **documentStart()**カーソルをファイル先頭(1行目の行頭)へ移動する。
  • void **documentStartExtend()**カーソル位置からファイル先頭(1行目の行頭)までを選択する。
  • void **documentEnd()**カーソルをファイル終端(最終行の行末)へ移動する。
  • void **documentEndExtend()**カーソル位置からファイル終端(最終行の行末)までを選択する。
  • void **pageUp()**ウィンドウの内容を、約1画面分文章の先頭方向へ遷移させる。カーソル位置も遷移に合わせて移動する。
  • void **pageUpExtend()**カーソルの動きはpageUp()と同じ。合わせて、現在のカーソル位置から遷移に合わせて移動した先のカーソル位置までを選択する。
  • void **pageDown()**ウィンドウの内容を、約1画面分文章の終端方向へ遷移させる。カーソル位置も遷移に合わせて移動する。
  • void **pageDownExtend()**カーソルの動きはpageDown()と同じ。合わせて、現在のカーソル位置から遷移に合わせて移動した先のカーソル位置までを選択する。
  • void editToggleOvertype()「挿入」と「上書」モードの切り替え。トグル動作する。
  • void **vCHome()**カーソルを行のインデント位置まで移動する。インデントしていない場合は行頭へ移動する。
  • void **vCHomeExtend()**カーソルの動きはvCHome()と同じ。合わせて、現在のカーソル位置から移動した先のカーソル位置までを選択する。
  • void **zoomIn()**フォントを拡大する。
  • void **zoomOut()**フォントを縮小する。
  • void **delWordLeft()**カーソル左の単語を削除する。カーソルが単語上に存在する場合は、カーソル位置から単語先頭までを削除する。
  • void **delWordRight()**カーソル右の単語を削除する。カーソルが単語上に存在する場合は、カーソル位置から単語末尾までを削除する。
  • void **lineCopy()**カーソル行をコピーする(改行含む)。
  • void **lineCut()**カーソル行を切り取る(改行含む)。
  • void **lineDelete()**カーソル行を削除する(改行含む)。
  • void **lineTranspose()**カーソル行を1つ前の行と入れ替える。
  • void **lineDuplicate()**カーソル行を複製し、次の行との間に貼り付ける。
  • void **lowerCase()**選択した文字を小文字へ変換する。アルファベットが対象。マルチバイト文字のアルファベットにも機能する。
  • void **upperCase()**選択した文字を大文字へ変換する。アルファベットが対象。マルチバイト文字のアルファベットにも機能する。
  • void **lineScrollDown()**ウィンドウの内容を1行分下へスクロールする。
  • void **lineScrollUp()**ウィンドウの内容を1行分上へスクロールする。
  • void **deleteBackNotLine()**カーソル左の文字を削除する。deleteBack()と異なる点として、カーソルが行頭にある場合は何も動作しない。
  • void **homeDisplay()**Move cursor to Home position for the current display line (as opposed to the buffer line when word wrap is enabled).
  • void **homeDisplayExtend()**Extend selection to the Home position for the current display line (as opposed to the buffer line when word wrap is enabled).
  • void **lineEndDisplay()**Move cursor to end of the current display line (as opposed to the buffer line when word wrap is enabled).
  • void **lineEndDisplayExtend()**Extend selection to the end of the current display line (as opposed to the buffer line when word wrap is enabled).
  • void **wordPartLeft()**単語単位でカーソルを左方向へ移動させる。wordLeft()との違いは、カーソルが単語の先頭に存在する場合、左の単語の末尾へ移動する事。
  • void **wordPartLeftExtend()**カーソルの動きはwordPartLeft()と同じ。合わせて、現在のカーソル位置から移動した先のカーソル位置までを選択する。
  • void **wordPartRight()**単語単位でカーソルを右方向へ移動させる。wordRight()との違いは、カーソルが単語の先頭に存在する場合、その単語の末尾へ移動する事。
  • void **wordPartRightExtend()**カーソルの動きはwordPartRight()と同じ。合わせて、現在のカーソル位置から移動した先のカーソル位置までを選択する。
  • void **delLineLeft()**カーソル位置から行頭までを削除する。
  • void **delLineRight()**カーソル位置から行末までを削除する(改行は含まない)。
  • void **paraDown()**次のパラグラフ(文章)先頭へカーソルを移動する。
  • void **paraDownExtend()**カーソル位置から次のパラグラフ(文章)先頭までを選択する。
  • void **paraUp()**前のパラグラフ(文章)先頭へカーソルを移動する。
  • void **paraUpExtend()**カーソル位置から前のパラグラフ(文章)先頭までを選択する。

Undoスタックについて

Undoスタックについて以下に概略を記述する。詳しくはマニュアル記載の”The Undo Stack”を参照の事。

ScintillaはUndo履歴をスタック管理している(scimozはScintillaのプラグイン)。マクロからテキストに対して操作を行うにあたり、その操作単位を意図的に区切りる場合はbeginUndoAction()/endUndoAction()を用いる必要がある。 またその場合、例外発生時にも必ずendUndoAction()が実行されるよう注意する事。正しく用いられない場合には、その情報が失われる可能性がある。

※ beginUndoAction()/endUndoAction()を用いずとも、各操作はスタックに積まれるが、その単位は1操作毎となる。