* ようやく見つけた一太郎マクロで,カーソルがある段落のテキストを取得する関数

:LOGBOOK:
CLOCK: [2020-08-08 土 23:05]--[2020-08-08 土 23:54] => 0:49
:END:

:CATEGORIES: パソコン

〉〉〉:Emacs: 2020-08-08(土曜日)23:05  〉〉〉

▶▶▶ kk_hironoのリツイート ▶▶▶

> 一太郎マクロ | こだわり探求隊 https://t.co/nNEEPaplsM %Str = GetCsvItem(1) MsgBox(%Str)

 「GetCsvItem(1)」という関数のようですが,情報を見つけた記事には,「カーソル位置の段落をCSV形式と見なし、指定された位置の文字列を取得します。」という説明があります。

 CSVというのは区切り文字で表計算の原形のようなテキストファイルという理解でいますが,どうも一太郎では表敬式でテキストを扱う仕組みがあるように思われます。

 1という引数を入れないと,引数がないというエラーが出ていたのですが,1と引数を入れてみたところ段落のテキストというか文字列の取得ができました。区切りがなくてもCSVで1番目の絡むという扱いになるようです。

 ずいぶんややこしく感じて,なかなか情報が見つからなかったのも納得でしたが,これで段落の文字数を計算することも出来るようになりました。

 記事には一太郎のマクロと思われる沢山の関数が掲載されていて,文字列でページ内検索をしながらようやくそれらしい関数を見つけることができました。

 単純に段落の文字列を取得できる関数名があってもよさそうですが,段落を意味するParagraphで他にそれらしい関数は見当たりません。なぜこんなに分かりづらくしているのか疑問で,ずいぶんと時間を無駄にさせられたという不満もあります。

 エディタでは行が,ワープロソフトでは文をまとめた段落という概念,取り扱いの違いもあるようですが,調べて簡単に見つかる情報ではなく,なぜこんなにややこしくなっているのか疑問で,エディタではとても簡単な操作になります。


(let *1
(ep nil))
(end-of-line)
(setq ep (point))
(setq text (buffer-substring sp ep))

 EmacsでのEmacs-Lispのカレント行の文字列の取得が,上記のコードになりますが,一つの関数にはなっておらず,これもややこしいかもしれません。行頭と行末のポイント位置を取得し,その範囲の文字列を取得しています。

 以前は簡単に出来るものが普通だったという感覚があって,Vimのscriptで調べたところ,「getline('.')」でカーソル業の文字列の取得ができました。テキスト処理の基本中の基本と思うのですが,このテキスト処理の需要と情報が乏しいのが不思議です。

〈〈〈:Emacs: 2020-08-08(土曜日)23:54  〈〈〈

*1:sp (point