月額480円〜の高速レンタルサーバー ColorfulBox
[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:06579] Re: Filer: network 機能



こんばんわ。まじまです。

自己フォロー

> 亀井さん:
>> そういうもんですが、設定を "bash -i" にすれば出ます。
> 
> おぉ、ほんとだ出ました。
> でも、やっぱりTABでコマンドコンプリートしないですなぁ。
> とりあえず勘でプロセスに ¥t を送ってみたのですがだめでやんした。

というか、さらに勘で送ってみたらコンプリートしました。
しましたが、変な文字が表示されます
^G
と表示される。なんかエスケープコード?
で、足りない脳で考えると、bash からの標準出力をそのまま
つながずに、ひとつかませてから表示してやらええんとちゃうか?
じゃぁ、かませるものは何?と、ここで端末エミュレータ?とか
思い付いたのですが、まず、この方針であってるのかがわからない。
思いつきついでに、tterm.l もターミナルエミュレータなのか?
と思って l ファイルを見てあえなく撃沈。リスプの壁は高い。

なんとなくこの方針で それなりに bash が使えそうなきがする
のですが、どうでしょう?

とりあえず、プロセス→バッファの間になにかかませる方法があったら
教えて下さい。お願いします。

#超だめだめな bash.l を添付します。みてわろてください。

--
ま

Attachment: bash.l
Description: application/applefile

;;; -*- Mode: Lisp; Package: EDITOR -*-
;;;
;;; This file is part of xyzzy.
;;;

(provide "bash")

(in-package "editor")

(export '(*bash-mode-hook* *bash-mode-map* bash
					bash-send-interrupt))

(defvar *ebash* "bash -i")

(defvar *bash-mode-hook* nil)
(defvar *bash-mode-map* nil)
(unless *bash-mode-map*
	(setq *bash-mode-map* (make-keymap))
	(do ((n #x20 (+ n 1)))
			((> n #x7f))
		(define-key *bash-mode-map* (code-char n) 'bash-send-self-command))
	(define-key *bash-mode-map* '(#\C-c #\C-c) 'bash-send-interrupt))

(setf (symbol-function 'bash-send-interrupt) #'kill-subprocess)

(defun bash-mode ()
  (setq mode-name "Bash")
  (setq buffer-mode 'bash-mode)
  (use-keymap *bash-mode-map*)
	(setq need-not-save t)
	(setq auto-save nil)
	(setq kept-undo-information nil)
	(run-hooks '*bash-mode-hook*))

(defun bash ()
	(interactive)
	(set-buffer (create-new-buffer "*Bash*"))
	(let ((proc (buffer-process (selected-buffer))))
		(and proc
				 (eq (process-status proc) ':run)
				 (return-from bash t)))
	(goto-char (point-max)) ;; ��������������������
	(bash-mode)
  (make-process *ebash* :output (selected-buffer)))


(defun bash-send-self-command ()
	(interactive)
	(process-send-string (buffer-process (selected-buffer))
											 (string *last-command-char*)))

;;;;;;;;;;;;;;;;;;
(define-key *bash-mode-map* #\C-p
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "�[A")))

(define-key *bash-mode-map* #\C-n
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "�[B")))

(define-key *bash-mode-map* #\C-f
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "�[C")))

(define-key *bash-mode-map* #\C-b
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "�[D")))

(define-key *bash-mode-map* #\RET
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "\n")))

(define-key *bash-mode-map* #\TAB
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "\t")))

(define-key *bash-mode-map* #\F21
						#'(lambda ()
								(interactive)
								(process-send-string (buffer-process (selected-buffer))
																		 "\b")))
(set-extended-key-translate-table exkey-backspace #\F21)

Index Home