列関数は、文字位置(バッファの先頭から文字数をカウント)と列位置(行の先頭から画面文字数をカウント)を相互に変換します。
これらの関数は、各文字が画面上で占有する列数に基づいてカウントします。つまり、制御文字はctl-arrowの値に応じて2列または4列を占有するものと数えられ、タブはtab-widthの値およびタブが始まる列に応じて、一定の列数を占有するものと数えられます。一般的な表示規約を参照してください。
列番号の計算では、ウィンドウの幅や水平スクロール量は考慮されません。そのため、列の値は任意に大きな値になる可能性があります。最初の(または最も左側の)列は0番となります。また、不可視状態を除き、オーバーレイやテキストプロパティも無視されます。不可視テキストは幅が0とみなされますが、buffer-invisibility-spec
で不可視テキストを省略記号として表示するように指定した場合はこの限りではありません(不可視テキストを参照)。
この関数は、左端を0として列数で計測した、pointの水平位置を返します。列位置は、現在の行の先頭からpointまでの間に表示されるすべての文字表現の幅の合計となります。
この関数は、ポイントを現在の行の column に移動します。column の計算では、行頭からポイントまでの文字の表示幅が考慮されます。
対話的に呼び出された場合、column は接頭辞付き数値引数の値となります。column が整数でない場合は、エラーが報告されます。
column
列への移動が不可能な場合(そこがタブなどの複数列文字の途中であるため)、ポイントはその文字の末尾に移動します。ただし、force が nil ではなく、かつ column がタブの途中にある場合、move-to-column はタブをスペースに変換するか(indent-tabs-mode が nil
の場合)、あるいはその前に十分なスペースを挿入し(それ以外の場合)、ポイントが正確に column
列に移動できるようにします。その他の複数列文字は、分割する方法がないため、force
があっても異常が発生することがあります。
引数 force は、行の長さが列 column
に達するのに不十分な場合にも効果を発揮します。もし t
であれば、その列に達するために行末に空白を追加することを意味します。
戻り値は、実際に移動した列番号です。