Next: , Previous: , Up: テキスト   [Contents][Index]


33.16 列を数える

列関数は文字位置(バッファー先頭から数えた文字数)と列位置(行先頭から数えたスクリーン文字数)を変換する関数です。

これら列関数はスクリーン上占める列数に応じて各文字を数えます。これはコントロール文字はctl-arrowの値に応じて2列または4列を、タブはtab-widthの値と、タブが始まる列の位置に依存する列数を占めるものとして数えられることを意味します。通常の表示の慣習を参照してください。

列数計算はウィンドウ幅と水平スクロール量を無視します。結果として列値は任意に大きくなる可能性があります。最初(または左端)の列は0と数えられます。列値は不可視性を別としてオーバーレイとテキストプロパティを無視します。buffer-invisibility-specで不可視のテキストを省略記号(ellipsis)として表示するように指定していないかぎり(不可視のテキストを参照)、不可視のテキストは幅が0であるとみなされます。

Function: current-column

この関数は左マージンを0として列単位で数えたポイントの水平位置をリターンする。列の位置はカレント行の開始からポイントまでの間の文字の表示上の表現すべての幅の和。

Command: move-to-column column &optional force

この関数はカレント行のcolumnにポイントを移動する。columnの計算には行の開始からポイントまでの文字の表示上の表現の幅が考慮される。

インタラクティブに呼び出された際には、columnはプレフィクス数引数の値。columnが整数でなければエラーがシグナルされる。

columnがタブのような複数列を占める文字の中間にあるために列を移動することが不可能な場合には、ポイントはその文字の終端に移動される。しかしforceが非nil、かつcolumnがタブの中間にあるなら、(indent-tabs-modenilなら)move-to-columnはタブをスペースに変換するか、(それ以外なら)その前に十分なスペースを挿入するので正確に列columnに移動することができる。それ以外の複数列文字については分割する手段がないので、force指定に関わらず異常を引き起こす恐れがある。

その行が列columnに達するほど長くない場合にも引数forceは効果をもつ。columntならその列に達するよう行端に空白を追加することを意味する。

リターン値は実際に移動した列番号。