2006年 1月 30日 (月)

Emacs にコピー/ペースト

Aqua なアプリケーション (と言ってもまず大半が Web ブラウザ) から文字列のコピーは,一回 terminal で pbpaste を実行して,ソレをマウスでドラッグしてペースト…と,『何か間違っている』と思いながら暮らしていたワケだ。
ペーストする先も,大半は Emacs だし,どうにか pbpaste を Emacs 内で済ませられないかと…,探せばあるもんだ。
 
osx-clipboard.el
http://www.macosxhints.com/article.php?story=20030711113941990
 
XEmacs 用の lisp みたいで region-exists-p のトコロで怒られる。
region-exists-p を判定している if 文を取ってみる。使えているみたいなのでコレで良しとする。
paste はともかく,copy と cut は kill-region,kill-ring-save を上書き(?) してやれば,もう少し *シームレス* に生活できそうなんだが,どう書くんだろ?
コレくらいの lisp はサクサクッと書けるようになりたいなぁ… (万年 lisp 初心者)。
;; osx-clipboard.el begins here.
 
;; k. montuori <montuori at ignavus.info>
;; 11 july 2003
 
;; this is free software; 
;; if you make significant improvements, let me know!
 
;; of all the things apple's X implementation does well, managing the
;; global/os x clipboard isn't one of them.  these functions allow the 
;; osx clipboard to be "pasted" into the buffer at point or have the
;; current region (or zmacs-region) copied (or cut) into the clipboard.  
 
;; C-cM-c -- copy the region to clipboard (like cmd-c)
;; C-cM-x -- cut the region into the clipboard (like cmd-x)
;; C-cM-v -- paste the clipboard into the buffer at point (like cmd-v)
 
;; to install, put this .el file in your load-path somewhere and call
;;   (require 'osx-clipboard) 
;; in your .emacs file.
 
(defvar osx-pbpaste-cmd "/usr/bin/pbpaste"
  "*command-line paste program")
 
(defvar osx-pbcopy-cmd "/usr/bin/pbcopy"
  "*command-line copy program")
 
(defun osx-pbpaste ()
  "paste the contents of the os x clipboard into the buffer at point."
  (interactive)
  (call-process osx-pbpaste-cmd nil t t))
 
(defun osx-pbcopy ()
  "copy the contents of the region into the os x clipboard."
  (interactive)
  ;(if (region-exists-p)
    ;(call-process-region 
     ;(region-beginning) (region-end) osx-pbcopy-cmd nil t t)
    ;(error "region not selected")))
  (call-process-region
   (region-beginning) (region-end) osx-pbcopy-cmd nil t t))
 
(defun osx-pbcut ()
  "cut the contents of the region; put in os x clipboard."
  (interactive)
  ;(if (region-exists-p)
    ;(call-process-region 
     ;(region-beginning) (region-end) osx-pbcopy-cmd t t t)
    ;(error "region not selected")))
  (call-process-region 
   (region-beginning) (region-end) osx-pbcopy-cmd t t t))
 
(define-key global-map "\C-c\M-v" 'osx-pbpaste)
(define-key global-map "\C-c\M-c" 'osx-pbcopy)
(define-key global-map "\C-c\M-x" 'osx-pbcut)
 
(provide 'osx-clipboard)
 
;; end osx-clipboard.el

QRcode Tweet

このページの半分はフィクションです。もし同一の名称があった場合も,実在の人物・団体・事件などとはあんまり関係ありません。
CAPTCHA

[月インデックス] [単語インデックス] [コメントインデックス] [画像インデックス]
[TAKEchonNET] → [大いなる疲労の告知]
Donate us![TAKEchonNET]