2012-03-01 2 views

답변

2
(defun my-named-shell() 
    "Equivalent to C-u M-x shell RET" 
    (interactive) 
    (shell (get-buffer 
      (read-buffer 
      "Shell buffer: " 
      (generate-new-buffer-name "*shell*"))))) 

나는 shell의 행동을 조사하기 describe-functionfind-function을 사용하고, 특히 그 interactive 선언하고 난 그냥 shell 함수에 대화 형이 아닌 통화에 인수로 그것을 설정하는 데 필요한 코드를 복사 (그러나 버퍼 인수를 제공하기 위해 get-buffer에 랩핑).

원격 코드를 처리하는 일부 코드를 생략했습니다. 코드의 주석이 다소 혼란스러워 보였기 때문입니다. Tramp를 통해 원격 파일에 액세스하는 버퍼에 C-u M-x shell을 사용하는 습관이 없다면 그 생략은 영향을 미치지 않습니다. 모든 말했다

는 더 간단한 (그리고 더 완전한) 접근 방식은 간단하다 :

(defun my-named-shell() 
    "Equivalent to C-u M-x shell RET" 
    (interactive) 
    (let ((current-prefix-arg '(4))) 
    (call-interactively 'shell))) 

자세한 내용은 어떤 nil이 아닌 값이 될 수있다이 경우 current-prefix-arg에서 https://stackoverflow.com/a/9388058/324105

참조 하지만 C-u이 실제로 생성하는 값을 사용하는 것이 좋은 습관이라고 생각합니다.

+0

좋아요, 작동합니다! 고맙습니다. – Xun

관련 문제