スキップしてメイン コンテンツに移動

投稿

2025の投稿を表示しています

まだまだ helm-swoop.el を使ってマルチバッファ検索する

最近はまた helm.el の開発が活発に行われているようです。 少し前から helm の仕様変更のためか、 helm-multi-swoop コマンドを実行したときに、検索語句は背後で開いているバッファも含めた全体のものが表示されるものの、語句の位置に移動できるのは現在開いているバッファのみに限られてしまうようになりました。 helm-swoop.el のマルチバッファ横断検索が便利過ぎて、他のパッケージに移行できないため、こちらも ChatGPT に解決策を教えてもらいました。 問題点は、「選択移動だけでは persistent-action が走らない」ことで、 helm-multi-swoop の「選択を上下に動かすだけで対象バッファへプレビュー移動する」機能が働かなくなっているようでした。 対処法は、候補移動時に必ず persistent-action を実行させることで各候補の場所へプレビュー/ジャンプを可能にすること、および multi-swoop の source に follow を有効化することだそうです。以下を init.el に追記します。 ;;; --- 1) 候補移動+persistent-action を実行する関数を追加 (defun helm-swoop--next-line-follow () "Move to next line and execute persistent action (preview/jump)." (interactive) (helm-next-line) (helm-execute-persistent-action)) (defun helm-swoop--previous-line-follow () "Move to previous line and execute persistent action (preview/jump)." (interactive) (helm-previous-line) (helm-execute-persistent-action)) ;;; --- 2) マルチバッファ用のキーマップを『follow つき移動』へ差し替え (with-eval-after-l...

TeX Live 2025 で upLaTeX + glossaries.sty を動かす

TeX Live 2024 の最終版で glossaries.sty に大きな変更があったようで、TeX Live 2025 版の uplatex コマンドでタイプセットを行うと (c:/texlive/2025/texmf-dist/tex/latex/datatool/datatool-utf8.ldf) ! Use of \??? doesn't match its definition. <argument> \??? ! LaTeX Error: Character code ##1 too large in \x{##2} regex. l.2220 } というエラーが表示されるようになりました。同様の問題が下記のサイトでも確認されているようです。 TeX Live 2024 で pLaTeX + glossaries.sty が動かない 原因は glossaries.sty が内部で読み込む datatool-base.sty の中の LaTeX3 の正規表現処理が upLaTeX で上手く扱えないことにあるようでした。エラーメッセージは LaTeX3(expl3) の l3regex が出しているようです。 こちらのサイトにあるコードをコピペしてみると、今度は (c:/texlive/2025/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzli brarypositioning.code.tex)) ! Argument of \__char_generate_aux:w has an extra }. <inserted text> \par l.32 \makeindex というエラーが表示されました。今度は修正した部分が expl3 を利用している Tikz のほうで問題を起こしてしまうようです。 解決の糸口が見えないため TeX Live 2024 の最終版よりも前の環境を使って誤魔化していましたが、最近 ChatGPT に尋ねると問題の回避策を提案してくれたので記録しておきます。 datatool-base.sty の先頭付近で、いま使っているエ...

YaTeXでインライン数式の括弧を挿入する関数

EmacsのLaTeXの入力支援モードであるYaTeXでは、YaTeX-insert-dollarという関数が定義されていて、ドル記号"\$"を入力すると"\$\$"が入力され、カーソルは2つのドル記号の間に移動し、入力モードは直接入力に切り替わります。 日本語入力をオフにしなくとも直接数式入力に移行できることや、インライン数式環境の閉じ忘れが防げるので重宝しています。 LaTeXのインライン数式モードとして、他にも"\\("と"\\)"で括る方法があり、ドル記号を入力するのと同じような挙動をする関数が欲しいなと思っていたので作成してみました。 とはいってもYaTeX-insert-dollarとYaTeX-insert-dollars-regionの挿入文字列を変えてみただけです。 今のところの問題点は、数式モードの開始にドル記号が使われていても、"\\)"で閉じてしまうところです。ドル記号と括弧のどちらで開始された数式モードであるか判定する機能が欲しいところです。 (defun YaTeX-insert-math-paren () (interactive) (if (or (not (YaTeX-closable-p)) ; (= (preceding-char) 92) ;; (and (YaTeX-in-math-mode-p) ;; (or (/= (preceding-char) ?$) (/= (following-char) ?$))) (YaTeX-in-math-mode-p)) (insert "\\)") (insert "\\(\\)") (forward-char -2) (and YaTeX-use-jmode-hook (fboundp 'add-text-properties) (add-text-properties (- 2 (point)) (+ 2 (point)) (list 'point-left 'YaTeX-jmode-hook 'point...

mozc.elでの日本語入力における句読点の自動修正

通常の日本語の文章を書くときの句読点は「、」や「。」を使うけれど、数式を含む文章を書くときの句読点は「,」と「.」を使いたい派です。 10年くらいほど前にこの機能を実現するpunch.elというEmacsのパッケージを配布されている方がいて、便利に使わせて頂いてました。 このpunch.elはMacやWindowsのOSのIMEを利用した場合には上手く動くものの、mozc.elを利用した入力には対応していませんでした。 mozc.elで同じ機能を実現するelispをGrokにお願いして出力してもらったところ、ほぼそのまま利用できるコードを生成してくれました。 mozc-handle-event関数の実行前後の文字列入力位置を記録しておき、その範囲内の句読点をmozc-handle-event実行後に書き換えるという操作をするコードになっています。以下の内容をpunct-mozc.elという名前でEmacs Lispのライブラリに保存します。 (defgroup punct-mozc nil "Punctuation switcher in mozc" :group 'punct-mozc :prefix "punct-mozc-") (defun punct-mozc-lighter () " Punct") (defun punct-mozc-replace-punctuation (beg end) "挿入された範囲内の句読点を変換する関数。 BEG と END は挿入された文字列の開始点と終了点を表す。" (interactive) (when punct-mozc-mode (save-excursion (goto-char (1- beg)) (while (< (point) end) (let ((char (char-after))) ; (message "Position: %d, Char: %c" (point) char) (cond ((= char ?、) (delete-...