Dimitri,

Cool snippet!

I have not tried to run your code, but just looking over it brielfy:
- Why are you setting `sel` in the `let` expression and immediately after
using `setf`?
- I believe copy-seq does a shallow copy, so the elements will still be
aliased, causing `quantum entanglement`
- I haven't looked into the `get-x-selection` routine, but it could be
stateful. Try looking into the source and maybe doing a deep copy on its
return value.

Hope that helps!

Dany

On Fri, May 13, 2016 at 5:23 AM Patricio Martinez <maxx...@gmail.com> wrote:

> Amazing, I'll probe it soon and I'll see how work.
>
> Thank you very much
>
> Sent from Nylas N1 <https://nylas.com/n1?ref=n1>, the extensible, open
> source mail client.
> On may. 13 2016, at 1:27 pm, Dimitri Minaev <min...@gmail.com> wrote:
>
>> Hello,
>>
>> I'm trying to write a Stumpwm command that would create a note in
>> Org-mode and paste the current selection and some other info taken
>> from Firefox -- the URL and the tab title. While trying to implement
>> the command I met a couple of problems.
>>
>> First, it doesn't work with non-Latin characters. I'm not sure whether
>> this is related to Stumpwm or Emacs. Stump's get-x-selection yields
>> correct result, but window-send-string seemingly drops all Cyrillic
>> characters from that string.
>>
>> Then the other problem appeared. To avoid confusion between the
>> primary selection and the URL, I save the selection content in a
>> variable before putting the URL to another variable, but it seems that
>> these two variables are in the state of quantum entanglement. When one
>> of them is changed, the other one changes, too. I thought that the two
>> calls of (get-x-selection) might return the same object, which would
>> result in 'url' being replaced by 'sel'. So, I tried to copy the
>> string using copy-seq before assigning it to 'sel', but it didn't
>> help. Now I'm completely lost :)
>>
>> Finally, I came up with the version that works correctly when it is
>> run two times :). After the first execution, it pastes two selections
>> and no URL. If you re-select the area in Firefox and run the same
>> command, the expected output will appear. What is wrong here?
>>
>> (defcommand emacs-remember () ()
>>   "Send selection into emacs org-mode"
>>   (let ((current-window-name (if (current-window) (window-title
>> (current-window)) "No current window"))
>>       (current-window-class (if (current-window) (window-class
>> (current-window)) "No window class"))
>>       (copy-from-firefox (equal (window-class (current-window))
>> "Firefox"))
>>       (sel (get-x-selection))
>>       (url ""))
>>       (setf sel (get-x-selection))
>>     (when copy-from-firefox
>>         (send-meta-key (current-screen) (kbd "F6"))
>>         (send-meta-key (current-screen) (kbd "C-c"))
>>         (setf url (get-x-selection))
>>         (send-meta-key (current-screen) (kbd "F6")))
>>     (run-or-raise "emacs" '(:class "Emacs"))
>>     (send-meta-key (current-screen) (kbd "M-x"))
>>     (window-send-string "org-capture")
>>     (send-meta-key (current-screen) (kbd "RET"))
>>     (window-send-string "f")
>>     (window-send-string (format nil "~a~%~a~%~%" current-window-name url))
>>     (window-send-string sel)))
>>
>> Thanks.
>>
>> --
>> With best regards,
>> Dimitri Minaev
>>
>> _______________________________________________
>> Stumpwm-devel mailing list
>> Stumpwm-devel@nongnu.org
>> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel
>>
> _______________________________________________
> Stumpwm-devel mailing list
> Stumpwm-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel
>
_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/stumpwm-devel

Reply via email to