emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Jiegec <jiegec@qq.com>
To: John Kitchin <jkitchin@andrew.cmu.edu>
Cc: emacs-orgmode@gnu.org
Subject: Re: ox-clip.el
Date: Thu, 30 Jun 2016 18:19:04 +0800	[thread overview]
Message-ID: <43FD8784-D7FC-447E-809E-7DC36BB7D530@qq.com> (raw)
In-Reply-To: <m2wpl8m5qs.fsf@Johns-MacBook-Air.local>

[-- Attachment #1: Type: text/plain, Size: 5633 bytes --]

By reading nsselect.m, there is:

DEFUN ("ns-get-selection", Fns_get_selection,
       Sns_get_selection, 2, 2, 0,
       doc: /* Return text selected from some X window.
SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
\(Those are literal upper-case symbol names, since that's what X expects.)
TARGET-TYPE is the type of data desired, typically `STRING'.  */)
     (Lisp_Object selection_name, Lisp_Object target_type)
{
  Lisp_Object val = Qnil;

  check_window_system (NULL);
  CHECK_SYMBOL (selection_name);
  CHECK_SYMBOL (target_type);

  if (ns_get_pb_change_count (selection_name)
      == ns_get_our_change_count_for (selection_name))
      val = ns_get_local_selection (selection_name, target_type);
  if (NILP (val))
    val = ns_get_foreign_selection (selection_name, target_type);
  if (CONSP (val) && SYMBOLP (Fcar (val)))
    {
      val = Fcdr (val);
      if (CONSP (val) && NILP (Fcdr (val)))
        val = Fcar (val);
    }
  val = clean_local_selection_data (val);
  return val;
}

and It seems that it implements the selection API.

So we can use `gui-set-selection' and `gui-get-selection’.
And it works:

(gui-set-selection nil “hello”)
(gui-get-selection)
;=> “hello”

But the text to be copied here is in RTF, but Emacs
is hardcoded to copy texts. Damn. We have to use
pbcopy or to change Emacs internal code.

Now things go back to finding the culprit of
overwriting the clipboard. And I traced to
`evil-visual-update-x-selection’ called in 
`evil-visual-{pre,post}-command’. Oh I don’t understand
why evil does this. Disabling evil-mode works.

Then here comes another bug:

I’m testing on a Chinese org file. Here is the part:

*** Evil-Surround

[[https://github.com/timcharper/evil-surround][Evil-surround]] 是一个 Vim 上非常常用的插件改写的,使用它可以快速的将选中区域进行匹配的操作,例如选中区域两边同时进行添加或修改括号,引号等操作。

下载安装后使用下面的代码将其激活,

#+BEGIN_SRC emacs-lisp
(require 'evil-surround)
(global-evil-surround-mode)
#+END_SRC

简单的使用方法就是在选中所选区域后,使用  =S(= 来将选中区域包括在括号之中。如果想将括号改变成 ="= 可以在选中后使用 =cs("=

You can get the whole file in https://github.com/emacs-china/Spacemacs-rocks/blob/master/README.org <https://github.com/emacs-china/Spacemacs-rocks/blob/master/README.org>.

But pasting the formatted resulted this:



The encoding is wrong. Adding a ‘-inputencoding UTF-8’ fixes it.


Really cool! That’s what I want.

Any workaround for that unwanted evil behaviour? I rely on evil a lot. 


> On Jun 29, 2016, at 10:25 PM, John Kitchin <jkitchin@andrew.cmu.edu> wrote:
> 
> 
> Jiegec writes:
> 
>> I’m testing this in OS X. I can confirm this works though it seems to conflict with
>> some other packages here which constantly copy the selected region and then
>> overwrite the result of ox-clip.
> What kind of package is that? None of the kill commands can use the
> clipboard that ox-clip sends things too as far as I know. I don't see
> how this is possible.
> 
>> I have checked the output of textutil and use the 
>> same command in shell and that works. One feedback: are there internal functions
>> to manipulate the system clipboard? I am in favour of those instead of
>> pbcopy.
> 
> There are none that I know of (or I would have used them ;).
> 
>> As in mentioned in https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard <https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard> <https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard <https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard>>,
>> pbcopy sometimes does not work. The link above says ‘Under Yosemite 
>> (and later) pasteboard access seems to work fine without the program from 
>> this repository.’ but this is not true in my laptop in OS X El Capitan
>> 10.11.5.
> 
> That could be true. I don't have access to anything that modern yet. 
> 
>> 
>>> On Jun 29, 2016, at 9:16 PM, John Kitchin <jkitchin@andrew.cmu.edu> wrote:
>>> 
>>> its not there yet. I would like some people to test it out a little
>>> maybe? get some feedback on it. Then it will probably go to MELPA.
>>> 
>>> Jiege Chen writes:
>>> 
>>>> John Kitchin <jkitchin@andrew.cmu.edu> wrote:
>>>>> Hi everyone,
>>>>> 
>>>>> I extended the work I did here
>>>>> http://kitchingroup.cheme.cmu.edu/blog/2016/06/16/Copy-formatted-org-mode-text-from-Emacs-to-other-applications/
>>>>> on copying formatted org-mode to other applications so it is
>>>>> approximately cross-platform now. There is one command
>>>>> `ox-clip-formatted-copy' that should copy a region in an org-file with
>>>>> formatting to paste into other applications on Windows, Mac and Linux.
>>>>> 
>>>>> https://github.com/jkitchin/scimax/blob/master/ox-clip.el
>>>>> 
>>>>> Try it out!
>>>>> 
>>>> 
>>>> Impressive. I'd love ox-clip to be released in MELPA. Is that already done?
>>> 
>>> 
>>> -- 
>>> Professor John Kitchin
>>> Doherty Hall A207F
>>> Department of Chemical Engineering
>>> Carnegie Mellon University
>>> Pittsburgh, PA 15213
>>> 412-268-7803
>>> @johnkitchin
>>> http://kitchingroup.cheme.cmu.edu
>>> 
> 
> 
> -- 
> Professor John Kitchin
> Doherty Hall A207F
> Department of Chemical Engineering
> Carnegie Mellon University
> Pittsburgh, PA 15213
> 412-268-7803
> @johnkitchin
> http://kitchingroup.cheme.cmu.edu <http://kitchingroup.cheme.cmu.edu/>

[-- Attachment #2.1: Type: text/html, Size: 23681 bytes --]

[-- Attachment #2.2: PastedGraphic-1.png --]
[-- Type: image/png, Size: 87945 bytes --]

[-- Attachment #2.3: PastedGraphic-2.png --]
[-- Type: image/png, Size: 84612 bytes --]

  reply	other threads:[~2016-06-30 10:19 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-29  1:43 ox-clip.el John Kitchin
2016-06-29  5:09 ` ox-clip.el Jiege Chen
2016-06-29 13:16   ` ox-clip.el John Kitchin
2016-06-29 13:53     ` ox-clip.el Jiegec
2016-06-29 14:25       ` ox-clip.el John Kitchin
2016-06-30 10:19         ` Jiegec [this message]
2016-06-30 12:13           ` ox-clip.el John Kitchin
2016-06-30 12:36             ` ox-clip.el Jiegec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43FD8784-D7FC-447E-809E-7DC36BB7D530@qq.com \
    --to=jiegec@qq.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=jkitchin@andrew.cmu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).