unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
@ 2016-05-27 11:17 Bastian Beischer
  2016-06-13  7:40 ` Bastian Beischer
  2017-01-11 10:26 ` Tino Calancha
  0 siblings, 2 replies; 8+ messages in thread
From: Bastian Beischer @ 2016-05-27 11:17 UTC (permalink / raw)
  To: 23629


I have customized 'select-enable-primary' to 't' and I'm using it to
paste the X primary selection with 'mouse-2' often. This invokes
mouse-yank-primary and that works fine.

It does not work well in calc, though. In calc mouse-2 is bound to
calc-yank, which takes the thing to be yanked from the kill-ring.

I think it would be appropriate to add a dedicated function
"calc-yank-mouse" which forwards the data obtained by
'gui-selection-value' to 'calc-yank'.

I'm not sure that 'gui-selection-value' is the correct function: What I
mean is 'a function which respects 'select-enable-primary' and
'select-enable-clipboard' and returns the right thing from the
corresponding X buffer'.

To reproduce:

1) emacs -Q
2) M-x calc
3) Select a number in some other X window (xterm for example) with the
   mouse
4) Go back to emacs *calc* buffer and press mouse-2.



In GNU Emacs 25.0.94.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.20.6)
 of 2016-05-25 built on beischer-w520
Repository revision: 897fb6fa49d5ffc85f0a796e7414a43ef05ad096
Windowing system distributor 'The X.Org Foundation', version 11.0.11803000
Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-xft --with-modules --with-x-toolkit=gtk3
 --without-gconf --with-gsettings 'CFLAGS=-march=native -O2 -pipe
 -fstack-protector-strong' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  projectile-global-mode: t
  projectile-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  window-numbering-mode: t
  company-mode: t
  diff-auto-refine-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  flx-ido-mode: t
  ido-everywhere: t
  global-srecode-minor-mode: t
  global-semanticdb-minor-mode: t
  global-semantic-idle-scheduler-mode: t
  global-semantic-decoration-mode: t
  global-semantic-highlight-func-mode: t
  global-semantic-stickyfunc-mode: t
  global-semantic-show-parser-state-mode: t
  semantic-mode: t
  global-ede-mode: t
  shell-dirtrack-mode: t
  show-paren-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Recent messages:
.emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "lein2" to constructor ede-project-autoload
.emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "linux" to constructor ede-project-autoload
.emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "maven2" to constructor ede-project-autoload
Parsing  *srecode-map-tmp* (LALR)...done
Loading /home/beischer/.emacs.d/cedet/cedet-devel-load.el (source)...done
ad-handle-definition: ‘ido-completing-read’ got redefined
Loading buff-menu...done
ad-handle-definition: ‘add-log-current-defun’ got redefined
Turning on magit-auto-revert-mode...done
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
/home/beischer/.emacs.d/cedet/lisp/speedbar/loaddefs hides /home/beischer/.emacs.d/cedet/lisp/cedet/loaddefs
/home/beischer/.emacs.d/elpa/helm-20160526.248/helm-multi-match hides /home/beischer/.emacs.d/elpa/helm-core-20160526.349/helm-multi-match
/home/beischer/.emacs.d/elpa/cmake-mode-20160510.1140/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/usr/share/emacs/site-lisp/various/buff-menu hides /usr/share/emacs/25.0.94/lisp/buff-menu
/home/beischer/.emacs.d/cedet/lisp/speedbar/loaddefs hides /usr/share/emacs/25.0.94/lisp/loaddefs
/home/beischer/.emacs.d/elpa/emms-20160304.920/tq hides /usr/share/emacs/25.0.94/lisp/emacs-lisp/tq

Features:
(shadow sort mail-extr emacsbug sendmail company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-template
company-css company-nxml company-bbdb company-edbi edbi sql view jedi
jedi-core python-environment epc ctable concurrent deferred
auto-complete popup cmake-project gist gh-gist gh-oauth gh-api logito
gh-cache pcache gh-auth gh-common gh-url url-http tls gnutls url-auth
url-gw gh-profile json map timezone org-install tempo url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse url-vars mailcap xml-parse doxymacs projectile
ibuf-ext ibuffer dropdown-list yasnippet cl my-term term disp-table
ehelp etags-table etags xref project cmake-mode thingatpt rx qt-pro
pastebin window-numbering company magit-topgit magit-blame magit-stash
magit-bisect magit-remote magit-commit epa magit-sequence magit esh-var
esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell
esh-module esh-mode esh-util magit-apply magit-wip magit-log magit-diff
smerge-mode diff-mode magit-core magit-autorevert autorevert filenotify
magit-process magit-popup magit-mode derived magit-git crm magit-section
magit-utils git-commit log-edit message idna rfc822 mml mml-sec epg
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
with-editor async-bytecomp easy-mmode async tramp-sh server hide-lines
buff-menu+ hideshow flx-ido flx ido dired-x dired ede/cpp-root
srecode/mode semantic/senator srecode/insert srecode/filters
srecode/args semantic/db-mode f dash s semantic/bovine/c hideif
semantic/bovine/c-by semantic/lex-spp semantic/idle working fame
semantic/bovine/gcc semantic/dep semantic/bovine semantic/analyze/refs
semantic/decorate/include semantic/db-find semantic/db-ref
semantic/decorate/mode semantic/decorate pulse cedet-devel-load
cogre/srecode cogre cogre/picture-hack rect picture eieio-opt find-func
srecode/find srecode/map semantic/edit srecode/srt-mode srecode/template
srecode/srt-wy semantic/wisent semantic/wisent/wisent srecode/ctxt
srecode/compile srecode/dictionary srecode/table srecode
semantic/canned-configs semantic/ia-sb semantic/analyze semantic/sort
semantic/scope semantic/analyze/fcn semantic/db semantic/ctxt
semantic/format semantic/tag-ls semantic/find semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local
sb-info ede/speedbar ede/files ede ede/detect ede/base ede/auto
ede/source eieio-compat eieio-base eieio-speedbar speedbar sb-image
ezimage dframe eieio-custom wid-edit cedet cedet-compat inversion
cedet-remove-builtin cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs flymake finder-inf tex-site
info package epg-config seq vc-cvs tramp tramp-compat auth-source cl-seq
eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core cl-macs
gv gnus-util mm-util help-fns help-mode easymenu mail-prsvr
password-cache tramp-loaddefs trampver ucs-normalize shell pcomplete
format-spec advice edmacro kmacro cl-loaddefs pcase cl-lib emacs-x-theme
paren grep compile comint ansi-color ring linum hi-lock cus-start
cus-load time-date mule-util tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 614175 16718)
 (symbols 48 51346 53)
 (miscs 40 87 180)
 (strings 32 120506 20978)
 (string-bytes 1 3736110)
 (vectors 16 72174)
 (vector-slots 8 1281781 10649)
 (floats 8 1544 163)
 (intervals 56 402 0)
 (buffers 976 14)
 (heap 1024 50297 2436))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2016-05-27 11:17 bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard Bastian Beischer
@ 2016-06-13  7:40 ` Bastian Beischer
  2020-08-11 15:07   ` Lars Ingebrigtsen
  2017-01-11 10:26 ` Tino Calancha
  1 sibling, 1 reply; 8+ messages in thread
From: Bastian Beischer @ 2016-06-13  7:40 UTC (permalink / raw)
  To: 23629

This patch solves the issue for me.

I don't know how the duplicated documentation is supposed to be
handled. If the documentation is put on the internal function it's
less likely to be seen, but if it is put on the two disjunct functions
it's duplicated. What's the preferred way?

--- a/calc-yank.el.bak 2016-06-13 09:25:24.376509910 +0200
+++ b/calc-yank.el 2016-06-13 09:26:18.824226799 +0200
@@ -150,34 +150,16 @@
 ;; otherwise it just parses the yanked string.
 ;; Modified to use Emacs 19 extended concept of kill-ring. -- daveg 12/15/96
 ;;;###autoload
-(defun calc-yank (radix)
-  "Yank a value into the Calculator buffer.
-
-Valid numeric prefixes for RADIX: 0, 2, 6, 8
-No radix notation is prepended for any other numeric prefix.
-
-If RADIX is 2, prepend \"2#\"  - Binary.
-If RADIX is 8, prepend \"8#\"  - Octal.
-If RADIX is 0, prepend \"10#\" - Decimal.
-If RADIX is 6, prepend \"16#\" - Hexadecimal.
+(defun calc-yank-internal (radix thing-raw)
+  "Internal common implementation for yank functions.

-If RADIX is a non-nil list (created using \\[universal-argument]), the user
-will be prompted to enter the radix in the minibuffer.
-
-If RADIX is nil or if the yanked string already has a calc radix prefix, the
-yanked string will be passed on directly to the Calculator buffer without any
-alteration."
-  (interactive "P")
+This function is used by both calc-yank and calc-yank-mouse-primary."
   (calc-wrapper
    (calc-pop-push-record-list
     0 "yank"
     (let* (radix-num
            radix-notation
            valid-num-regexp
-           (thing-raw
-            (if (fboundp 'current-kill)
-                (current-kill 0 t)
-              (car kill-ring-yank-pointer)))
            (thing
             (if (or (null radix)
                     ;; Match examples: -2#10, 10\n(10#10,01)
@@ -232,6 +214,50 @@
                       val))
                 val))))))))

+;;;###autoload
+(defun calc-yank-mouse-primary (radix)
+  "Yank the current primary selection into the Calculator buffer.
+
+Valid numeric prefixes for RADIX: 0, 2, 6, 8
+No radix notation is prepended for any other numeric prefix.
+
+If RADIX is 2, prepend \"2#\"  - Binary.
+If RADIX is 8, prepend \"8#\"  - Octal.
+If RADIX is 0, prepend \"10#\" - Decimal.
+If RADIX is 6, prepend \"16#\" - Hexadecimal.
+
+If RADIX is a non-nil list (created using \\[universal-argument]), the user
+will be prompted to enter the radix in the minibuffer.
+
+If RADIX is nil or if the yanked string already has a calc radix prefix, the
+yanked string will be passed on directly to the Calculator buffer without any
+alteration."
+  (interactive "P")
+  (calc-yank-internal radix (gui-get-primary-selection)))
+
+;;;###autoload
+(defun calc-yank (radix)
+  "Yank a value into the Calculator buffer.
+
+Valid numeric prefixes for RADIX: 0, 2, 6, 8
+No radix notation is prepended for any other numeric prefix.
+
+If RADIX is 2, prepend \"2#\"  - Binary.
+If RADIX is 8, prepend \"8#\"  - Octal.
+If RADIX is 0, prepend \"10#\" - Decimal.
+If RADIX is 6, prepend \"16#\" - Hexadecimal.
+
+If RADIX is a non-nil list (created using \\[universal-argument]), the user
+will be prompted to enter the radix in the minibuffer.
+
+If RADIX is nil or if the yanked string already has a calc radix prefix, the
+yanked string will be passed on directly to the Calculator buffer without any
+alteration."
+  (interactive "P")
+  (calc-yank-internal radix (if (fboundp 'current-kill)
+                                (current-kill 0 t)
+                              (car kill-ring-yank-pointer))))
+
 ;;; The Calc set- and get-register commands are modified versions of functions
 ;;; in register.el


On Fri, May 27, 2016 at 1:17 PM, Bastian Beischer
<bastian.beischer@rwth-aachen.de> wrote:
>
> I have customized 'select-enable-primary' to 't' and I'm using it to
> paste the X primary selection with 'mouse-2' often. This invokes
> mouse-yank-primary and that works fine.
>
> It does not work well in calc, though. In calc mouse-2 is bound to
> calc-yank, which takes the thing to be yanked from the kill-ring.
>
> I think it would be appropriate to add a dedicated function
> "calc-yank-mouse" which forwards the data obtained by
> 'gui-selection-value' to 'calc-yank'.
>
> I'm not sure that 'gui-selection-value' is the correct function: What I
> mean is 'a function which respects 'select-enable-primary' and
> 'select-enable-clipboard' and returns the right thing from the
> corresponding X buffer'.
>
> To reproduce:
>
> 1) emacs -Q
> 2) M-x calc
> 3) Select a number in some other X window (xterm for example) with the
>    mouse
> 4) Go back to emacs *calc* buffer and press mouse-2.
>
>
>
> In GNU Emacs 25.0.94.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.20.6)
>  of 2016-05-25 built on beischer-w520
> Repository revision: 897fb6fa49d5ffc85f0a796e7414a43ef05ad096
> Windowing system distributor 'The X.Org Foundation', version 11.0.11803000
> Configured using:
>  'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
>  --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
>  --with-sound=alsa --with-xft --with-modules --with-x-toolkit=gtk3
>  --without-gconf --with-gsettings 'CFLAGS=-march=native -O2 -pipe
>  -fstack-protector-strong' CPPFLAGS=-D_FORTIFY_SOURCE=2
>  LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
> ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
> GTK3 X11 MODULES
>
> Important settings:
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
>   projectile-global-mode: t
>   projectile-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   window-numbering-mode: t
>   company-mode: t
>   diff-auto-refine-mode: t
>   magit-auto-revert-mode: t
>   global-git-commit-mode: t
>   async-bytecomp-package-mode: t
>   flx-ido-mode: t
>   ido-everywhere: t
>   global-srecode-minor-mode: t
>   global-semanticdb-minor-mode: t
>   global-semantic-idle-scheduler-mode: t
>   global-semantic-decoration-mode: t
>   global-semantic-highlight-func-mode: t
>   global-semantic-stickyfunc-mode: t
>   global-semantic-show-parser-state-mode: t
>   semantic-mode: t
>   global-ede-mode: t
>   shell-dirtrack-mode: t
>   show-paren-mode: t
>   global-hi-lock-mode: t
>   hi-lock-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   hs-minor-mode: t
>
> Recent messages:
> .emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "lein2" to constructor ede-project-autoload
> .emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "linux" to constructor ede-project-autoload
> .emacs.d/cedet/lisp/cedet/ede/loaddefs.el: Obsolete name arg "maven2" to constructor ede-project-autoload
> Parsing  *srecode-map-tmp* (LALR)...done
> Loading /home/beischer/.emacs.d/cedet/cedet-devel-load.el (source)...done
> ad-handle-definition: ‘ido-completing-read’ got redefined
> Loading buff-menu...done
> ad-handle-definition: ‘add-log-current-defun’ got redefined
> Turning on magit-auto-revert-mode...done
> For information about GNU Emacs and the GNU system, type C-h C-a.
>
> Load-path shadows:
> /home/beischer/.emacs.d/cedet/lisp/speedbar/loaddefs hides /home/beischer/.emacs.d/cedet/lisp/cedet/loaddefs
> /home/beischer/.emacs.d/elpa/helm-20160526.248/helm-multi-match hides /home/beischer/.emacs.d/elpa/helm-core-20160526.349/helm-multi-match
> /home/beischer/.emacs.d/elpa/cmake-mode-20160510.1140/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
> /usr/share/emacs/site-lisp/various/buff-menu hides /usr/share/emacs/25.0.94/lisp/buff-menu
> /home/beischer/.emacs.d/cedet/lisp/speedbar/loaddefs hides /usr/share/emacs/25.0.94/lisp/loaddefs
> /home/beischer/.emacs.d/elpa/emms-20160304.920/tq hides /usr/share/emacs/25.0.94/lisp/emacs-lisp/tq
>
> Features:
> (shadow sort mail-extr emacsbug sendmail company-oddmuse
> company-keywords company-etags company-gtags company-dabbrev-code
> company-dabbrev company-files company-capf company-cmake company-xcode
> company-clang company-semantic company-eclim company-template
> company-css company-nxml company-bbdb company-edbi edbi sql view jedi
> jedi-core python-environment epc ctable concurrent deferred
> auto-complete popup cmake-project gist gh-gist gh-oauth gh-api logito
> gh-cache pcache gh-auth gh-common gh-url url-http tls gnutls url-auth
> url-gw gh-profile json map timezone org-install tempo url url-proxy
> url-privacy url-expand url-methods url-history url-cookie url-domsuf
> url-util url-parse url-vars mailcap xml-parse doxymacs projectile
> ibuf-ext ibuffer dropdown-list yasnippet cl my-term term disp-table
> ehelp etags-table etags xref project cmake-mode thingatpt rx qt-pro
> pastebin window-numbering company magit-topgit magit-blame magit-stash
> magit-bisect magit-remote magit-commit epa magit-sequence magit esh-var
> esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell
> esh-module esh-mode esh-util magit-apply magit-wip magit-log magit-diff
> smerge-mode diff-mode magit-core magit-autorevert autorevert filenotify
> magit-process magit-popup magit-mode derived magit-git crm magit-section
> magit-utils git-commit log-edit message idna rfc822 mml mml-sec epg
> mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
> ietf-drums mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
> with-editor async-bytecomp easy-mmode async tramp-sh server hide-lines
> buff-menu+ hideshow flx-ido flx ido dired-x dired ede/cpp-root
> srecode/mode semantic/senator srecode/insert srecode/filters
> srecode/args semantic/db-mode f dash s semantic/bovine/c hideif
> semantic/bovine/c-by semantic/lex-spp semantic/idle working fame
> semantic/bovine/gcc semantic/dep semantic/bovine semantic/analyze/refs
> semantic/decorate/include semantic/db-find semantic/db-ref
> semantic/decorate/mode semantic/decorate pulse cedet-devel-load
> cogre/srecode cogre cogre/picture-hack rect picture eieio-opt find-func
> srecode/find srecode/map semantic/edit srecode/srt-mode srecode/template
> srecode/srt-wy semantic/wisent semantic/wisent/wisent srecode/ctxt
> srecode/compile srecode/dictionary srecode/table srecode
> semantic/canned-configs semantic/ia-sb semantic/analyze semantic/sort
> semantic/scope semantic/analyze/fcn semantic/db semantic/ctxt
> semantic/format semantic/tag-ls semantic/find semantic/util-modes
> semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local
> sb-info ede/speedbar ede/files ede ede/detect ede/base ede/auto
> ede/source eieio-compat eieio-base eieio-speedbar speedbar sb-image
> ezimage dframe eieio-custom wid-edit cedet cedet-compat inversion
> cedet-remove-builtin cc-mode cc-fonts cc-guess cc-menus cc-cmds
> cc-styles cc-align cc-engine cc-vars cc-defs flymake finder-inf tex-site
> info package epg-config seq vc-cvs tramp tramp-compat auth-source cl-seq
> eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core cl-macs
> gv gnus-util mm-util help-fns help-mode easymenu mail-prsvr
> password-cache tramp-loaddefs trampver ucs-normalize shell pcomplete
> format-spec advice edmacro kmacro cl-loaddefs pcase cl-lib emacs-x-theme
> paren grep compile comint ansi-color ring linum hi-lock cus-start
> cus-load time-date mule-util tooltip eldoc electric uniquify ediff-hook
> vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd
> fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
> lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
> scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
> cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
> tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
> slovak czech european ethiopic indian cyrillic chinese charscript
> case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer
> cl-preloaded nadvice loaddefs button faces cus-face macroexp files
> text-properties overlay sha1 md5 base64 format env code-pages mule
> custom widget hashtable-print-readable backquote dbusbind inotify
> dynamic-setting system-font-setting font-render-setting move-toolbar gtk
> x-toolkit x multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 614175 16718)
>  (symbols 48 51346 53)
>  (miscs 40 87 180)
>  (strings 32 120506 20978)
>  (string-bytes 1 3736110)
>  (vectors 16 72174)
>  (vector-slots 8 1281781 10649)
>  (floats 8 1544 163)
>  (intervals 56 402 0)
>  (buffers 976 14)
>  (heap 1024 50297 2436))



-- 
Bastian Beischer
RWTH Aachen University of Technology

@RWTH Aachen
Office: 28 C 203
Phone: +49-241-80-27205
E-mail: beischer@physik.rwth-aachen.de
Address: I. Physikalisches Institut B, Sommerfeldstr. 14, D-52074 Aachen

@CERN
Office: Bdg 32-4-B12
Phone: +41-22-76-75750
E-mail: bastian.beischer@cern.ch
Address: CERN, CH-1211 Geneve 23





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2016-05-27 11:17 bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard Bastian Beischer
  2016-06-13  7:40 ` Bastian Beischer
@ 2017-01-11 10:26 ` Tino Calancha
  2017-01-11 13:06   ` Bastian Beischer
  1 sibling, 1 reply; 8+ messages in thread
From: Tino Calancha @ 2017-01-11 10:26 UTC (permalink / raw)
  To: Bastian Beischer; +Cc: 23629, tino.calancha

Bastian Beischer <bastian.beischer@rwth-aachen.de> writes:

> I have customized 'select-enable-primary' to 't' and I'm using it to
> paste the X primary selection with 'mouse-2' often. This invokes
> mouse-yank-primary and that works fine.
>
> It does not work well in calc, though. In calc mouse-2 is bound to
> calc-yank, which takes the thing to be yanked from the kill-ring.
> To reproduce:
>
> 1) emacs -Q
> 2) M-x calc
> 3) Select a number in some other X window (xterm for example) with the
>    mouse
> 4) Go back to emacs *calc* buffer and press mouse-2.
Hi Bastian,

In addition to customize select-enable-primary to t, as you do,
i also like to set select-enable-clipboard to nil.  Then, the kill-ring
uses the primary selection, i.e., `calc-yank' pastes the same text
as `mouse-yank-primary' or `yank'.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2017-01-11 10:26 ` Tino Calancha
@ 2017-01-11 13:06   ` Bastian Beischer
  0 siblings, 0 replies; 8+ messages in thread
From: Bastian Beischer @ 2017-01-11 13:06 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 23629

Hey Tino,

On Wed, Jan 11, 2017 at 11:26 AM, Tino Calancha <tino.calancha@gmail.com> wrote:
>
> Bastian Beischer <bastian.beischer@rwth-aachen.de> writes:
>
> > I have customized 'select-enable-primary' to 't' and I'm using it to
> > paste the X primary selection with 'mouse-2' often. This invokes
> > mouse-yank-primary and that works fine.
> >
> > It does not work well in calc, though. In calc mouse-2 is bound to
> > calc-yank, which takes the thing to be yanked from the kill-ring.
> > To reproduce:
> >
> > 1) emacs -Q
> > 2) M-x calc
> > 3) Select a number in some other X window (xterm for example) with the
> >    mouse
> > 4) Go back to emacs *calc* buffer and press mouse-2.
> Hi Bastian,
>
> In addition to customize select-enable-primary to t, as you do,
> i also like to set select-enable-clipboard to nil.  Then, the kill-ring
> uses the primary selection, i.e., `calc-yank' pastes the same text
> as `mouse-yank-primary' or `yank'.

I didn't check whether this works as you describe in calc, but I don't
want to set "select-enable-clipboard" to "nil". I'm using it to move
things in and out of the clipboard in other buffers.

Thanks for your comment, though :-)

Cheers
Bastian





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2016-06-13  7:40 ` Bastian Beischer
@ 2020-08-11 15:07   ` Lars Ingebrigtsen
  2020-08-11 15:55     ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-11 15:07 UTC (permalink / raw)
  To: Bastian Beischer; +Cc: 23629

Bastian Beischer <bastian.beischer@rwth-aachen.de> writes:

> This patch solves the issue for me.
>
> I don't know how the duplicated documentation is supposed to be
> handled. If the documentation is put on the internal function it's
> less likely to be seen, but if it is put on the two disjunct functions
> it's duplicated. What's the preferred way?

No, we usually just have the doc string in one function, and then we
refer to that function in the doc string.  Like the following tweaked
patch.

This makes calc work a lot better when yanking with mouse-2, so I'd like
to include it in Emacs 28.  However, it's longer than ten lines, so we
need a copyright assignment for it -- would you be willing to assign the
copyright here to the FSF?

Hm...  or...  is that necessary here?  The patch is mostly rearranging
code, and I think if we count new lines, it's less than ten...  Eli?

diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index f5150ca552..6cea115f76 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -150,34 +150,16 @@ math-number-regexp
 ;; otherwise it just parses the yanked string.
 ;; Modified to use Emacs 19 extended concept of kill-ring. -- daveg 12/15/96
 ;;;###autoload
-(defun calc-yank (radix)
-  "Yank a value into the Calculator buffer.
-
-Valid numeric prefixes for RADIX: 0, 2, 6, 8
-No radix notation is prepended for any other numeric prefix.
-
-If RADIX is 2, prepend \"2#\"  - Binary.
-If RADIX is 8, prepend \"8#\"  - Octal.
-If RADIX is 0, prepend \"10#\" - Decimal.
-If RADIX is 6, prepend \"16#\" - Hexadecimal.
+(defun calc-yank-internal (radix thing-raw)
+  "Internal common implementation for yank functions.
 
-If RADIX is a non-nil list (created using \\[universal-argument]), the user
-will be prompted to enter the radix in the minibuffer.
-
-If RADIX is nil or if the yanked string already has a calc radix prefix, the
-yanked string will be passed on directly to the Calculator buffer without any
-alteration."
-  (interactive "P")
+This function is used by both calc-yank and calc-yank-mouse-primary."
   (calc-wrapper
    (calc-pop-push-record-list
     0 "yank"
     (let* (radix-num
            radix-notation
            valid-num-regexp
-           (thing-raw
-            (if (fboundp 'current-kill)
-                (current-kill 0 t)
-              (car kill-ring-yank-pointer)))
            (thing
             (if (or (null radix)
                     ;; Match examples: -2#10, 10\n(10#10,01)
@@ -232,6 +214,36 @@ calc-yank
                       val))
                 val))))))))
 
+;;;###autoload
+(defun calc-yank-mouse-primary (radix)
+  "Yank the current primary selection into the Calculator buffer.
+See `calc-yank' for details about RADIX."
+  (interactive "P")
+  (calc-yank-internal radix (gui-get-primary-selection)))
+
+;;;###autoload
+(defun calc-yank (radix)
+  "Yank a value into the Calculator buffer.
+
+Valid numeric prefixes for RADIX: 0, 2, 6, 8
+No radix notation is prepended for any other numeric prefix.
+
+If RADIX is 2, prepend \"2#\"  - Binary.
+If RADIX is 8, prepend \"8#\"  - Octal.
+If RADIX is 0, prepend \"10#\" - Decimal.
+If RADIX is 6, prepend \"16#\" - Hexadecimal.
+
+If RADIX is a non-nil list (created using \\[universal-argument]), the user
+will be prompted to enter the radix in the minibuffer.
+
+If RADIX is nil or if the yanked string already has a calc radix prefix, the
+yanked string will be passed on directly to the Calculator buffer without any
+alteration."
+  (interactive "P")
+  (calc-yank-internal radix (if (fboundp 'current-kill)
+                                (current-kill 0 t)
+                              (car kill-ring-yank-pointer))))
+
 ;;; The Calc set- and get-register commands are modified versions of functions
 ;;; in register.el
 


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2020-08-11 15:07   ` Lars Ingebrigtsen
@ 2020-08-11 15:55     ` Eli Zaretskii
  2020-08-11 16:45       ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2020-08-11 15:55 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: bastian.beischer, 23629

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 23629@debbugs.gnu.org, eliz@gnu.org
> Date: Tue, 11 Aug 2020 17:07:44 +0200
> 
> This makes calc work a lot better when yanking with mouse-2, so I'd like
> to include it in Emacs 28.  However, it's longer than ten lines, so we
> need a copyright assignment for it -- would you be willing to assign the
> copyright here to the FSF?
> 
> Hm...  or...  is that necessary here?  The patch is mostly rearranging
> code, and I think if we count new lines, it's less than ten...  Eli?

Yes, I think we can accept this without legal paperwork.

Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2020-08-11 15:55     ` Eli Zaretskii
@ 2020-08-11 16:45       ` Lars Ingebrigtsen
  2020-08-12 16:04         ` Bastian Beischer
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-11 16:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bastian.beischer, 23629

Eli Zaretskii <eliz@gnu.org> writes:

> Yes, I think we can accept this without legal paperwork.

OK; applied to Emacs 28.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard
  2020-08-11 16:45       ` Lars Ingebrigtsen
@ 2020-08-12 16:04         ` Bastian Beischer
  0 siblings, 0 replies; 8+ messages in thread
From: Bastian Beischer @ 2020-08-12 16:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23629

Hello Lars,

thanks for applying the patch.

Cheers
Bastian


On Tue, Aug 11, 2020 at 6:45 PM Lars Ingebrigtsen <larsi@gnus.org> wrote:
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > Yes, I think we can accept this without legal paperwork.
>
> OK; applied to Emacs 28.
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-08-12 16:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-27 11:17 bug#23629: 25.0.94; Calc: Yanking with mouse-2 does not use X primary selection/clipboard Bastian Beischer
2016-06-13  7:40 ` Bastian Beischer
2020-08-11 15:07   ` Lars Ingebrigtsen
2020-08-11 15:55     ` Eli Zaretskii
2020-08-11 16:45       ` Lars Ingebrigtsen
2020-08-12 16:04         ` Bastian Beischer
2017-01-11 10:26 ` Tino Calancha
2017-01-11 13:06   ` Bastian Beischer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).