このセクションではLispプログラムがバッファー内の任意の範囲にあるテキストを文字列に変換するための関数を説明します。
この関数はカレントバッファー内の位置startとendで定義されるリージョンのテキストのコピーを含む文字列をリターンする。引数がバッファーのアクセス可能範囲内の位置でなければ、buffer-substring
はargs-out-of-range
エラーをリターンする。
以下の例ではFont-Lockモードが有効でないものとする:
---------- Buffer: foo ---------- This is the contents of buffer foo ---------- Buffer: foo ----------
(buffer-substring 1 10) ⇒ "This is t"
(buffer-substring (point-max) 10) ⇒ "he contents of buffer foo\n"
コピーされるテキストが何らかのテキストプロパティをもっていたら、それらのプロパティが属する文字とともに文字列にコピーされる。しかしバッファー内のオーバーレイ(オーバーレイを参照)、およびそれらのプロパティは無視されるためコピーされない。
たとえばFont-Lockモードが有効なら以下のような結果を得るだろう:
(buffer-substring 1 10) ⇒ #("This is t" 0 1 (fontified t) 1 9 (fontified t))
これはbuffer-substring
と同様だが、テキストプロパティはコピーせずに文字自体だけをコピーする点が異なる。テキストのプロパティを参照のこと。
この関数はカレントバッファーのアクセス可能範囲全体のコンテンツを文字列としてリターンする。コピーするテキストに何らかのテキストプロパティがあれば、それらを所有する文字とともに文字列にコピーされる。
異なる場所からのコピー時に双方向テキストの再配置によって結果の文字列の視覚的外見が変更されないように保証する必要があるなら、buffer-substring-with-bidi-context
関数を使用すること(buffer-substring-with-bidi-contextを参照)。
この関数は変数filter-buffer-substring-function
により指定された関数を使用して、startとendの間のバッファーテキストをフィルターしてその結果をリターンする。
デフォルトのフィルター関数は時代遅れとなったラッパーフックfilter-buffer-substring-functions
(この時代遅れの機能に関する詳細はマクロwith-wrapper-hook
のドキュメント文字列を参照)がnil
ならバッファーから未変更のテキスト、すなわちbuffer-substring
がリターンするであろうテキストをリターンする。
deleteが非nil
なら、この関数はdelete-and-extract-region
と同じように、コピー後にstartとendの間のテキストを削除する。
Lispコードはkillリング、Xクリップボード、レジスターのようなユーザーがアクセス可能なデータ構造内にコピーする際にはbuffer-substring
、buffer-substring-no-properties
、delete-and-extract-region
のかわりにこの関数を使用すること。メジャーモードとマイナーモードはバッファー外部にコピーするテキストを変更するためにfilter-buffer-substring-function
を変更することができる。
この変数の値は実際の処理を行うためにfilter-buffer-substring
が呼び出す関数。その関数はfilter-buffer-substring
と同じように3つの引数を受けとり、それらはfilter-buffer-substring
にドキュメントされているように扱うこと。関数はフィルターされたテキストをリターン(およびオプションでソーステキストを削除)すること。
The following two variables are obsoleted by
以下の2つの変数はfilter-buffer-substring-function
により時代遅れになりましたが、後方互換のために依然としてサポートされます。
これは時代遅れとなったラッパーフックであり、このフックのメンバーはfun、start、end、deleteの4つの引数を受け取る関数であること。funは3つの引数(start、end、delete)を受け取り、文字列をリターンする関数。いずれも引数start、end、deleteはfilter-buffer-substring
のときと同様の意味をもつ。
1つ目のフック関数はfilter-buffer-substring
のデフォルトの処理と同じくstartとendの間のバッファー部分文字列をリターン(オプションでバッファーから元テキストを削除)する関数であり、それがfunに渡される。ほとんどの場合にはフック関数はfunを1回だけ呼び出してから、その結果にたいして自身の処理を行う。次のフック関数はこれと等しいfunを受け取って、それが順次繰り返されていく。実際のリターン値はすべてのフック関数が順次処理した結果。
この関数はポイント位置またはその付近のシンボル(または単語)を文字列としてリターンする。リターン値にテキストプロパティは含まれない。
オプション引数really-wordが非nil
なら単語、それ以外はシンボル(単語文字とシンボル構成文字の両方を含む)を探す。
オプション引数strictが非nil
のならポイントは単語(またはシンボル)の内部にあるか隣接しなければならない。そこに単語(またはシンボル)がなければ、この関数はnil
をリターンする。strictがnil
ならポイントと同一行にある近接する単語(またはシンボル)を許容する。
ポイントに隣接または周辺にあるthingを文字列としてリターンする。
引数thingは構文エンティティの種別を指定するシンボルである。可能なシンボルとしてはsymbol
、list
、sexp
、defun
、filename
、existing-filename
、url
、word
、sentence
、whitespace
、line
、page
、string
、および他が含まれる。
オプション引数no-propertiesは非nil
なら、この関数はリターン値からテキストプロパティを取り除く。
---------- Buffer: foo ---------- Gentlemen may cry ``Pea∗ce! Peace!,'' but there is no peace. ---------- Buffer: foo ---------- (thing-at-point 'word) ⇒ "Peace" (thing-at-point 'line) ⇒ "Gentlemen may cry ``Peace! Peace!,''\n" (thing-at-point 'whitespace) ⇒ nil
ユーザーおよびモードは、この変数によってthing-at-point
が機能する方法を調節できる。これはthing、およびそれ(thing)をリターンする関数(パラメーターなしで呼び出される)の連想リストである。thingのエントリーは非nil
の結果がリターンされるまで順に評価される。
たとえばメジャーモードは以下のように指定できる:
(setq-local thing-at-point-provider-alist (append thing-at-point-provider-alist '((url . my-mode--url-at-point))))
非nil
をリターンするproviderがなければ、標準的な方法によってthingを計算する。