M-xしたミニバッファでの補完(その3)

たぶん今回のでその3くらい

  1. その1
  2. その2
  3. その3
  4. その4

その3バージョンはlispモードでlisp-complete-symbolをミニバッファ以外でも使いそうだったので(というか自分が使っていたので)それでおかしくなったのをなくしておいた。
■具体的な変えた所

  1. EOFが直後にあるとおかしな事になったので、それを修正
  2. ミニバッファで実行しているかを一応判別するように。
(setq *print-completion-list-hook*
	  '(lambda (list prefix &optional string)
		(popup-list list
					'(lambda (arg)
					  (let ((end (point)) (begin))
						(unless (minibuffer-window-p(selected-window))
						;minibufferじゃない所で使った場合を考えて
						  ;EOFが直後にあったらおかしくなったのでそれ対策
						  (if (next-line) ;
							  (goto-char end)
							(open-line)))
						;直前のprefix部分が補完したときに重複しないように削除
						(backward-word)
						(setq begin (point))
						(delete-region begin end)
						(insert arg)
						(refresh-screen))
					  )
					)))