aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuuki Harano2018-05-12 23:49:00 +0900
committerJeff Walsh2020-11-22 14:46:55 +1100
commita9c8a56ba1fdbb6645ddebdabbb826993b6dca23 (patch)
tree96b9c0c3a323d64a8c997580486eaa0a4233c3ae
parent045e25278bdec3e08c3c069a537e4ae7a66de262 (diff)
downloademacs-a9c8a56ba1fdbb6645ddebdabbb826993b6dca23.tar.gz
emacs-a9c8a56ba1fdbb6645ddebdabbb826993b6dca23.zip
Fix xdg-open handling
* ../src/pgtkterm.c (pgtk_term_init, NUM_ARGV, pgtk_term_init): * ../lisp/net/browse-url.el (browse-url): xdg-open できなかったのを修正。
-rw-r--r--lisp/net/browse-url.el13
-rw-r--r--src/pgtkterm.c25
2 files changed, 29 insertions, 9 deletions
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 8b245b01066..27a4f1be5ab 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -888,8 +888,17 @@ If ARGS are omitted, the default is to pass
888 ;; When connected to various displays, be careful to use the display of 888 ;; When connected to various displays, be careful to use the display of
889 ;; the currently selected frame, rather than the original start display, 889 ;; the currently selected frame, rather than the original start display,
890 ;; which may not even exist any more. 890 ;; which may not even exist any more.
891 (if (stringp (frame-parameter nil 'display)) 891 (let ((dpy (frame-parameter nil 'display))
892 (setenv "DISPLAY" (frame-parameter nil 'display))) 892 classname)
893 (if (stringp dpy)
894 (cond
895 ((featurep 'pgtk)
896 (setq classname (pgtk-backend-display-class))
897 (if (equal classname "GdkWaylandDisplay")
898 (setenv "WAYLAND_DISPLAY" dpy)
899 (setenv "DISPLAY" dpy)))
900 (t
901 (setenv "DISPLAY" dpy)))))
893 (if (functionp function) 902 (if (functionp function)
894 (apply function url args) 903 (apply function url args)
895 (error "No suitable browser for URL %s" url)))) 904 (error "No suitable browser for URL %s" url))))
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 4f2c4542372..d84e3b1ae54 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -5846,6 +5846,9 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5846 struct pgtk_display_info *dpyinfo; 5846 struct pgtk_display_info *dpyinfo;
5847 static int x_initialized = 0; 5847 static int x_initialized = 0;
5848 static unsigned x_display_id = 0; 5848 static unsigned x_display_id = 0;
5849 static char *initial_display = NULL;
5850 char *dpy_name;
5851 Lisp_Object lisp_dpy_name = Qnil;
5849 5852
5850 block_input (); 5853 block_input ();
5851 5854
@@ -5861,6 +5864,11 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5861 ++x_initialized; 5864 ++x_initialized;
5862 } 5865 }
5863 5866
5867 dpy_name = SSDATA (display_name);
5868 if (strlen(dpy_name) == 0 && initial_display != NULL)
5869 dpy_name = initial_display;
5870 lisp_dpy_name = build_string (dpy_name);
5871
5864 { 5872 {
5865#define NUM_ARGV 10 5873#define NUM_ARGV 10
5866 int argc; 5874 int argc;
@@ -5870,7 +5878,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5870 5878
5871 if (x_initialized++ > 1) 5879 if (x_initialized++ > 1)
5872 { 5880 {
5873 xg_display_open (SSDATA (display_name), &dpy); 5881 xg_display_open (dpy_name, &dpy);
5874 } 5882 }
5875 else 5883 else
5876 { 5884 {
@@ -5883,10 +5891,10 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5883 argc = 0; 5891 argc = 0;
5884 argv[argc++] = initial_argv[0]; 5892 argv[argc++] = initial_argv[0];
5885 5893
5886 if (strlen(SSDATA(display_name)) != 0) 5894 if (strlen(dpy_name) != 0)
5887 { 5895 {
5888 argv[argc++] = display_opt; 5896 argv[argc++] = display_opt;
5889 argv[argc++] = SSDATA (display_name); 5897 argv[argc++] = dpy_name;
5890 } 5898 }
5891 5899
5892 argv[argc++] = name_opt; 5900 argv[argc++] = name_opt;
@@ -5910,6 +5918,10 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5910 xg_initialize (); 5918 xg_initialize ();
5911 5919
5912 dpy = DEFAULT_GDK_DISPLAY (); 5920 dpy = DEFAULT_GDK_DISPLAY ();
5921
5922 initial_display = g_strdup (gdk_display_get_name(dpy));
5923 dpy_name = initial_display;
5924 lisp_dpy_name = build_string(dpy_name);
5913 } 5925 }
5914 } 5926 }
5915 5927
@@ -5929,8 +5941,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5929 struct pgtk_display_info *share; 5941 struct pgtk_display_info *share;
5930 5942
5931 for (share = x_display_list; share; share = share->next) 5943 for (share = x_display_list; share; share = share->next)
5932 if (same_x_server (SSDATA (XCAR (share->name_list_element)), 5944 if (same_x_server (SSDATA (XCAR (share->name_list_element)), dpy_name))
5933 SSDATA (display_name)))
5934 break; 5945 break;
5935 if (share) 5946 if (share)
5936 terminal->kboard = share->terminal->kboard; 5947 terminal->kboard = share->terminal->kboard;
@@ -5951,7 +5962,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5951 dpyinfo->next = x_display_list; 5962 dpyinfo->next = x_display_list;
5952 x_display_list = dpyinfo; 5963 x_display_list = dpyinfo;
5953 5964
5954 dpyinfo->name_list_element = Fcons (display_name, Qnil); 5965 dpyinfo->name_list_element = Fcons (lisp_dpy_name, Qnil);
5955 dpyinfo->gdpy = dpy; 5966 dpyinfo->gdpy = dpy;
5956 5967
5957 /* https://lists.gnu.org/r/emacs-devel/2015-11/msg00194.html */ 5968 /* https://lists.gnu.org/r/emacs-devel/2015-11/msg00194.html */
@@ -5959,7 +5970,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
5959 dpyinfo->smallest_char_width = 1; 5970 dpyinfo->smallest_char_width = 1;
5960 5971
5961 /* Set the name of the terminal. */ 5972 /* Set the name of the terminal. */
5962 terminal->name = xlispstrdup (display_name); 5973 terminal->name = xlispstrdup (lisp_dpy_name);
5963 5974
5964 Lisp_Object system_name = Fsystem_name (); 5975 Lisp_Object system_name = Fsystem_name ();
5965 ptrdiff_t nbytes; 5976 ptrdiff_t nbytes;