суббота, 8 августа 2009 г.

MacOS clipboarding

В Mac OS есть отличное приложение — X11.app. Реальный и работающий X сервер. Оно позволило при переходе с FreeBSD на MacOS практически не менять среду разработки и использовать привычные, старые добрые X приложения, такие как xterm, Inkscape или SXEmacs. Единственный минус это отсутствие внятного межклипбордного взаимодействия между Cocoa приложениями и X приложениями, особенно бесило, что я не могу выделить что-то в SXEmacs и вставить в Firefox. Давеча нашёл способ как это можно сделать:

(when (eq system-type 'darwin)
  ;; Make C-w, M-y interact with Mac OS X clipboard
  (defun lg-paste-from-osx ()
    (shell-command-to-string "pbpaste"))
  (defun lg-paste-to-osx (text &optional push)
    (let* ((process-connection-type nil)
           (proc (start-process "pbcopy" nil "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc)))
  (setq interprogram-paste-function 'lg-paste-from-osx)
  (setq interprogram-cut-function 'lg-paste-to-osx))

Теперь, после C-w или M-w в SXEmacs, я могу делать C-v в Cocoa приложениях, а выделив что-то в Cocoa приложениях и скопировав, я могу вставлять в SXEmacs с помощью C-y.

ReST source Скачать оригинал