10/03/17 22:30:40
eshellの質問なんですがここでよろしいでしょうか
eshellでlsしたときにそのリストのフォルダ上で"c"を押すと
cd "そのフォルダ"
みたいな動きをさせたいのですが自分では無理でした
普通にやっても無理だからフルパス渡すようにしたいのですがわかりません
%fとか渡しても駄目でした。どうかご教授お願いします
(eval-after-load "em-ls" '(progn
(defun eshell-ls-cd ()
(interactive) (let ((fname (buffer-substring-no-properties
(previous-single-property-change (point) 'help-echo)
(next-single-property-change (point) 'help-echo))))
(setq fname (replace-regexp-in-string "^[ \t\n]*" "" fname))
(setq fname (replace-regexp-in-string "[ \t\n]*$" "" fname))
(setq fname (concat ふるぱす fname))
(cond
((equal "" fname)
(message "No file name found at point"))
(fname (cd fname)))))
(let ((map (make-sparse-keymap)))
(define-key map (kbd "c") 'eshell-ls-cd)
(defvar ted-eshell-ls-keymap map))
(defadvice eshell-ls-decorated-name
(after ted-electrify-ls activate)
"Eshell's `ls' now lets you click or RET on file names to open them."
(add-text-properties 0
(length ad-return-value)
(list 'help-echo "RET, mouse-2: visit this file"
'mouse-face 'highlight
'keymap ted-eshell-ls-keymap)
ad-return-value)
ad-return-value)))