diff options
| author | Yuuki Harano | 2018-05-12 23:49:00 +0900 |
|---|---|---|
| committer | Jeff Walsh | 2020-11-22 14:46:55 +1100 |
| commit | a9c8a56ba1fdbb6645ddebdabbb826993b6dca23 (patch) | |
| tree | 96b9c0c3a323d64a8c997580486eaa0a4233c3ae /src/pgtkterm.c | |
| parent | 045e25278bdec3e08c3c069a537e4ae7a66de262 (diff) | |
| download | emacs-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 できなかったのを修正。
Diffstat (limited to 'src/pgtkterm.c')
| -rw-r--r-- | src/pgtkterm.c | 25 |
1 files changed, 18 insertions, 7 deletions
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; |