mieki256's diary



2022/08/25(木) [n年前の日記]

#1 [xyzzy] xyzzyで行結合

xyzzy 0.2.2.253 で行結合(行連結?)をしたい。ちなみに、環境は Windows10 x64 21H2。

今まで、以下で紹介されてる「セレクションを行結合(join-line)」を便利に使わせてもらっていたのだけど。

_xyzzy の音 - 編集

xyzzy_joinline_ss00.gif

各行を隙間なくピッチリ結合するのがちょっとアレで。各行にスペース1文字を入れつつ結合したい…。

そんなわけで、少しだけ処理を追加して動作を変えた版を、自分用の siteinit.l に追加しておいた、とメモ。

(defun join-line-with-space ()
  (interactive)
  (when (get-selection-type)
    (selection-start-end (start end)
      (narrow-to-region start end)
      (goto-char (point-min))
      (replace-buffer "^[ \t]*\\(.*?\\)[ \t]*" "\\1" :regexp  t)
      (goto-char (point-min))
      (replace-buffer "^\\(.*?\\)\n" " \\1" :regexp  t)
      (goto-char (point-min))
      (replace-buffer "^[ \t]*" "" :regexp  t)
      (widen))))

xyzzy_joinline_ss01.gif

2回目の正規表現置換時に、各行の先頭に空白1文字を入れて、3回目の正規表現で行頭の空白文字を消去してるだけ。

余談。自分の環境では、C-z j と C-z k に割り当てておいた。
(global-set-key '(#\C-z #\j) 'join-line)
(global-set-key '(#\C-z #\k) 'join-line-with-space)

似たような機能が既にあった。 :

上記の内容を ~/.xyzzy or siteinit.l に追加した後で、関連情報をググっていて気が付いた。emacs系エディタには、最初から delete-indentation という機能があるそうで…。M-^ に割り当てられている模様。

現在行を上の行に連結していく機能で、連結時に空白1文字も入れてくれる。キーをポンポンポンと押していくだけで上記と同じ結果を得られてしまう。

xyzzy_joinline_ss02.gif

わざわざ関数を作らなくても良かったのだな…。

サクラエディタの場合。 :


以上です。

過去ログ表示

Prev - 2022/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project