![]() ![]() ![]() |
![]() ![]() ![]() |
こんばんわ。まじまです。 自己フォロー > 亀井さん: >> そういうもんですが、設定を "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)