2014-04-09 2 views
3

yanked 텍스트를 Emacs의 변수에 저장하려고합니다.yanked 텍스트를 Emacs의 문자열에 저장하십시오.

그것은 다음과 같은 작품처럼 보인다 : 나는 궁금

(let ((str nil)) 
    (with-temp-buffer 
    (yank) 
    (setq str (buffer-string))) 

,이를 달성하기위한 어떤 간단한 방법이있다? 잡힌 텍스트를 얻기 위해 임시 버퍼를 여는 것이 과잉이라고 생각합니다.

(defun was-yanked() 
    "When called after a yank, store last yanked value in let-bound yanked. " 
    (interactive) 
    (let (yanked) 
    (and (eq last-command 'yank) 
     (setq yanked (car kill-ring)))) 

어쩌면 메시지도 반환 :

당신이 당신의 기능에서 찾고있는 값을 사용할 수

답변

7

(car kill-ring) 

으로이 작업을해야

(defun was-yanked() 
    "When called after a yank, store last yanked value in let-bound yanked. " 
    (interactive) 
    (let (yanked) 
    (and (eq last-command 'yank) 
     (setq yanked (car kill-ring)))) 
    (when (interactive-p) (message "%s" yanked)) 
    yanked) 
+0

고마워요! 완벽하게 작동하는 것 같습니다. 그런데''(yank)'와'(insert (car kill-ring))'의 차이점은 무엇입니까? –

+0

좋은 질문입니다. Drew가 말한 것 이외에 : 코드를 살펴 보는 것보다 나은 것은 없습니다. 아주 짧은 방법과 포괄적 인 해결책이 있습니다. 후자는 simple.el에서 보았고, 짧은 것은 여기에있다. :-) –

3

당신은 할 수있다 사용하려는 (current-kill 0) 대신 (car kill-ring).

kill-ring의 문서화 문자열을 참조하십시오

,---- 
| List of killed text sequences. 
| Since the kill ring is supposed to interact nicely with cut-and-paste 
| facilities offered by window systems, use of this variable should 
| interact nicely with `interprogram-cut-function' and 
| `interprogram-paste-function'. The functions `kill-new', 
| `kill-append', and `current-kill' are supposed to implement this 
| interaction; you may want to use them instead of manipulating the kill 
| ring directly. 
,---- 

이것은 또한 귀하의 코멘트에서, 두 번째 질문에 대한 대답. 이 문서 문자열 등에서 언급 한 기능에 대한 문서를 참조하십시오.

관련 문제