aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorJoakim Verona2011-07-23 09:34:37 +0200
committerJoakim Verona2011-07-23 09:34:37 +0200
commit37d53e76fafe8ba6732cbeb1c481a23ea5ade726 (patch)
treea604697b2525954e1a712784cf1e936a9664c1de /lisp
parentde37acc4249c95bd02295f7c3a8c080297335a1d (diff)
parent043604ee51e5b5e0d0f645b999a35a1609a16b24 (diff)
downloademacs-37d53e76fafe8ba6732cbeb1c481a23ea5ade726.tar.gz
emacs-37d53e76fafe8ba6732cbeb1c481a23ea5ade726.zip
experiment send key event to xwidget. this version had som bad merges from trunk so it seems unstble
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/shr.el3
-rw-r--r--lisp/window.el60
-rw-r--r--lisp/xwidget-screencast.el32
-rw-r--r--lisp/xwidget-test.el138
-rw-r--r--lisp/xwidget.el4
7 files changed, 64 insertions, 186 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d96ad569543..a2169898670 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,12 @@
12011-07-21 Martin Rudalics <rudalics@gmx.at>
2
3 * window.el (display-buffer-pop-up-window)
4 (display-buffer-pop-up-side-window)
5 (display-buffer-in-side-window): Call display-buffer-set-height
6 and display-buffer-set-width after setting the new window's
7 buffer so `fit-window-to-buffer' and friends work on the right
8 buffer.
9
12011-07-20 Sam Steingold <sds@gnu.org> 102011-07-20 Sam Steingold <sds@gnu.org>
2 11
3 * progmodes/etags.el (etags-file-of-tag, etags-tags-table-files) 12 * progmodes/etags.el (etags-file-of-tag, etags-tags-table-files)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index a1cb003a8ff..a8065fc5ca4 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12011-07-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * shr.el (shr-tag-comment): Ignore HTML comments.
4
12011-07-20 Andrew Cohen <cohen@andy.bu.edu> 52011-07-20 Andrew Cohen <cohen@andy.bu.edu>
2 6
3 * nnir.el (gnus-group-make-nnir-group): Allow optional search query 7 * nnir.el (gnus-group-make-nnir-group): Allow optional search query
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index f8a85579b4f..8faa5071616 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -761,6 +761,9 @@ ones, in case fg and bg are nil."
761(defun shr-tag-script (cont) 761(defun shr-tag-script (cont)
762 ) 762 )
763 763
764(defun shr-tag-comment (cont)
765 )
766
764(defun shr-tag-sup (cont) 767(defun shr-tag-sup (cont)
765 (let ((start (point))) 768 (let ((start (point)))
766 (shr-generic cont) 769 (shr-generic cont)
diff --git a/lisp/window.el b/lisp/window.el
index 12c9da85d57..905db8dc9b6 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5051,14 +5051,22 @@ description."
5051 (funcall side window))))) 5051 (funcall side window)))))
5052 5052
5053 (when (window-live-p window) 5053 (when (window-live-p window)
5054 ;; Adjust sizes if asked for. 5054 ;; In `quit-restore' parameter record that we popped up
5055 (display-buffer-set-height window specifiers) 5055 ;; this window, its buffer and which window was selected.
5056 (display-buffer-set-width window specifiers)
5057 (set-window-parameter 5056 (set-window-parameter
5058 window 'quit-restore (list 'new-window buffer selected-window)) 5057 window 'quit-restore (list 'new-window buffer selected-window))
5058 ;; For `display-buffer-window' mark window as new.
5059 (setq display-buffer-window (cons window 'new-window)) 5059 (setq display-buffer-window (cons window 'new-window))
5060 ;; Install BUFFER in the new window.
5060 (display-buffer-in-window buffer window specifiers) 5061 (display-buffer-in-window buffer window specifiers)
5062 ;; Adjust sizes if asked for (for `fit-window-to-buffer'
5063 ;; and friends BUFFER must be already shown in the new
5064 ;; window).
5065 (display-buffer-set-height window specifiers)
5066 (display-buffer-set-width window specifiers)
5067 ;; Reset list of window's previous buffers to nil.
5061 (set-window-prev-buffers window nil) 5068 (set-window-prev-buffers window nil)
5069 ;; Return the new window.
5062 (throw 'done window)))))))) 5070 (throw 'done window))))))))
5063 5071
5064(defun display-buffer-pop-up-frame (buffer &optional graphic-only specifiers) 5072(defun display-buffer-pop-up-frame (buffer &optional graphic-only specifiers)
@@ -5113,26 +5121,33 @@ failed."
5113 (display-buffer-split-window main-or-root on-side specifiers)) 5121 (display-buffer-split-window main-or-root on-side specifiers))
5114 fun) 5122 fun)
5115 (when window 5123 (when window
5124 ;; We were able to split off a new window.
5116 (unless main 5125 (unless main
5117 (walk-window-subtree 5126 (walk-window-subtree
5118 (lambda (window) 5127 (lambda (window)
5119 ;; Make all main-or-root subwindows main windows. 5128 ;; Make all main-or-root subwindows main windows.
5120 (set-window-parameter window 'window-side 'none)) 5129 (set-window-parameter window 'window-side 'none))
5121 main-or-root t)) 5130 main-or-root t))
5122 ;; Make sure that parent's window-side is nil. 5131 ;; Reset window-side parameter of new window's parent to nil.
5123 (set-window-parameter (window-parent window) 'window-side nil) 5132 (set-window-parameter (window-parent window) 'window-side nil)
5124 ;; Initialize side. 5133 ;; Initialize window-side parameter of new window to SIDE.
5125 (set-window-parameter window 'window-side side) 5134 (set-window-parameter window 'window-side side)
5126 ;; Adjust sizes if asked for. 5135 ;; Install window-slot parameter of new window.
5127 (display-buffer-set-height window specifiers) 5136 (set-window-parameter window 'window-slot slot)
5128 (display-buffer-set-width window specifiers) 5137 ;; In `quit-restore' parameter record that we popped up a new
5129 ;; Set window parameters. 5138 ;; window.
5130 (set-window-parameter 5139 (set-window-parameter
5131 window 'quit-restore (list 'new-window buffer selected-window)) 5140 window 'quit-restore (list 'new-window buffer selected-window))
5141 ;; For `display-buffer-window' mark window as new.
5132 (setq display-buffer-window (cons window 'new-window)) 5142 (setq display-buffer-window (cons window 'new-window))
5133 (set-window-parameter window 'window-slot slot) 5143 ;; Install BUFFER in new window.
5134 (display-buffer-in-window buffer window specifiers) 5144 (display-buffer-in-window buffer window specifiers)
5145 ;; Adjust sizes of new window if asked for.
5146 (display-buffer-set-height window specifiers)
5147 (display-buffer-set-width window specifiers)
5148 ;; Reset list of new window's previous buffers to nil.
5135 (set-window-prev-buffers window nil) 5149 (set-window-prev-buffers window nil)
5150 ;; Return the new window.
5136 window))) 5151 window)))
5137 5152
5138(defun display-buffer-in-side-window (buffer side &optional slot specifiers) 5153(defun display-buffer-in-side-window (buffer side &optional slot specifiers)
@@ -5160,7 +5175,7 @@ SPECIFIERS must be a list of buffer display specifiers."
5160 window-sides-slots)) 5175 window-sides-slots))
5161 (selected-window (selected-window)) 5176 (selected-window (selected-window))
5162 window this-window this-slot prev-window next-window 5177 window this-window this-slot prev-window next-window
5163 best-window best-slot abs-slot dedicated) 5178 best-window best-slot abs-slot dedicated new-window)
5164 5179
5165 (unless (numberp slot) 5180 (unless (numberp slot)
5166 (setq slot 0)) 5181 (setq slot 0))
@@ -5233,13 +5248,16 @@ SPECIFIERS must be a list of buffer display specifiers."
5233 (setq window (display-buffer-split-window 5248 (setq window (display-buffer-split-window
5234 prev-window prev-side specifiers))))) 5249 prev-window prev-side specifiers)))))
5235 (progn 5250 (progn
5236 (display-buffer-set-height window specifiers) 5251 ;; In `quit-restore' parameter record that we popped up
5237 (display-buffer-set-width window specifiers) 5252 ;; this window, its buffer and the old selected window.
5238 (set-window-parameter 5253 (set-window-parameter
5239 window 'quit-restore 5254 window 'quit-restore
5240 (list 'new-window buffer selected-window)) 5255 (list 'new-window buffer selected-window))
5256 ;; For `display-buffer-window' mark window as new.
5241 (setq display-buffer-window (cons window 'new-window)) 5257 (setq display-buffer-window (cons window 'new-window))
5242 window)) 5258 ;; Record that window is new, we need this for
5259 ;; adjusting sizes below.
5260 (setq new-window window)))
5243 (and best-window 5261 (and best-window
5244 (setq window best-window) 5262 (setq window best-window)
5245 ;; Reuse best window (the window nearest to SLOT). 5263 ;; Reuse best window (the window nearest to SLOT).
@@ -5262,7 +5280,17 @@ SPECIFIERS must be a list of buffer display specifiers."
5262 (unless (window-parameter window 'window-slot) 5280 (unless (window-parameter window 'window-slot)
5263 ;; Don't change exisiting slot value. 5281 ;; Don't change exisiting slot value.
5264 (set-window-parameter window 'window-slot slot)) 5282 (set-window-parameter window 'window-slot slot))
5265 (display-buffer-in-window buffer window specifiers))))) 5283 ;; Install BUFFER in the window.
5284 (display-buffer-in-window buffer window specifiers)
5285 (when new-window
5286 ;; Adjust sizes if asked for (for `fit-window-to-buffer' and
5287 ;; friends BUFFER must be already shown in the new window).
5288 (display-buffer-set-height window specifiers)
5289 (display-buffer-set-width window specifiers)
5290 ;; Reset list of new window's previous buffers to nil.
5291 (set-window-prev-buffers window nil))
5292 ;; Return the window used.
5293 window))))
5266 5294
5267(defun window-normalize-buffer-to-display (buffer-or-name) 5295(defun window-normalize-buffer-to-display (buffer-or-name)
5268 "Normalize BUFFER-OR-NAME argument for buffer display functions. 5296 "Normalize BUFFER-OR-NAME argument for buffer display functions.
@@ -6926,7 +6954,7 @@ WINDOW was scrolled."
6926 ;; `with-selected-window' should orderly restore the current buffer. 6954 ;; `with-selected-window' should orderly restore the current buffer.
6927 (with-selected-window window 6955 (with-selected-window window
6928 ;; We are in WINDOW's buffer now. 6956 ;; We are in WINDOW's buffer now.
6929 (let* ( ;; Adjust MIN-HEIGHT. 6957 (let* (;; Adjust MIN-HEIGHT.
6930 (min-height 6958 (min-height
6931 (if override 6959 (if override
6932 (window-min-size window nil window) 6960 (window-min-size window nil window)
diff --git a/lisp/xwidget-screencast.el b/lisp/xwidget-screencast.el
deleted file mode 100644
index f85dbe8f247..00000000000
--- a/lisp/xwidget-screencast.el
+++ /dev/null
@@ -1,32 +0,0 @@
1;;(require 'screencast)
2(require 'xwidget)
3(defconst xwidget-screencast-webkit '("Hello, and welcome to a
4 short demo of the Emacs xwidget branch, and the Webkit
5 integration it provides." n
6 "Xwidgets are toolkit widgets that behave like images in an
7 Emacs buffer. Except they are actual widgets, so you can
8 interact with them." n
9 "There are several, but people seem to fancy the webkit the most so lets have a look!"
10 (insert "some text")
11 (xwidget-insert (point-min) 'webkit-osr "webkit-osr" 500 1000 5)
12 n
13 "Okay so thats an actual webkit instance in an Emacs buffer! " n
14 "Mouse-overs work" n
15 "Mouse-clicks work" n
16 (split-window-vertically)
17 "You can split the buffer and scroll the windows separately, as
18 usual in Emacs. This is however not so usual in the browser
19 world for some reason." n
20 "So, can you use the xwidget branch as your main Emacs instance?"n
21 "Not yet, its still not mature. There are many tricky issues
22 left. That being said, there are many simple tasks to help out
23 with also if you like!" ))
24
25
26(defun xwidget-screencast(&optional arg)
27 "Displays the screencast for xwidgets."
28 (interactive "P")
29 (apply (if arg
30 'screencast-record
31 'screencast)
32 xwidget-screencast-webkit "xvidgets" 1 ()))
diff --git a/lisp/xwidget-test.el b/lisp/xwidget-test.el
deleted file mode 100644
index 087892244df..00000000000
--- a/lisp/xwidget-test.el
+++ /dev/null
@@ -1,138 +0,0 @@
1;;test like:
2;; cd /path/to/xwidgets-emacs-dir
3;; make all&& src/emacs -q --eval "(progn (load \"`pwd`/lisp/xwidget-test.el\") (xwidget-demo-basic))"
4
5
6;; you should see:
7;; - a gtk button
8;; - a gtk toggle button
9;; - a gtk slider button
10;; - an xembed window(using gtk_socket) showing another emacs instance
11;; - an xembed window(using gtk_socket) showing an uzbl web browser if its installed
12
13;;the widgets will move when you type in the buffer. good!
14
15;;there will be redrawing issues when widgets change rows, etc. bad!
16
17;;its currently difficult to give kbd focus to the xembedded emacs,
18;;but try evaling the following:
19
20;; (xwidget-set-keyboard-grab 3 1)
21
22
23
24
25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27;; demo/test functions
28(require 'xwidget)
29
30(defmacro xwidget-demo (name &rest body)
31 `(defun ,(intern (concat "xwidget-demo-" name)) ()
32 (interactive)
33 (switch-to-buffer ,(format "*xwidget-demo-%s*" name))
34 (text-mode);;otherwise no local keymap
35 (insert "Some random text for xwidgets to be inserted in for demo purposes.\n")
36 ,@body))
37
38(xwidget-demo "a-button"
39 (xwidget-insert (point-min) 'button "button" 40 50)
40 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
41
42(xwidget-demo "a-big-button"
43 (xwidget-insert (point-min) 'button "button" 400 500)
44 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
45
46(xwidget-demo "a-socket"
47 (xwidget-insert (point-min) 'socket "socket" 500 500)
48 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
49
50
51(xwidget-demo "a-slider"
52 (xwidget-insert (point-min) 'slider "slider" 500 100)
53 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
54
55(xwidget-demo "a-canvas"
56 (xwidget-insert (point-min) 'cairo "canvas" 1000 1000)
57 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
58
59(xwidget-demo "a-webkit"
60 (xwidget-insert (point-min) 'webkit "webkit" 1000 1000)
61 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
62
63(xwidget-demo "a-webkit-osr"
64 (xwidget-insert (point-min) 'webkit-osr "webkit-osr" 1000 1000)
65 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
66
67
68
69(xwidget-demo "basic"
70 (xwidget-insert (point-min) 'button "button" 40 50 )
71 (xwidget-insert 15 'toggle "toggle" 60 30 )
72 (xwidget-insert 30 'socket "emacs" 400 200 )
73 (xwidget-insert 20 'slider "slider" 100 50 )
74 (xwidget-insert 40 'socket "uzbl-core" 400 400 )
75 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic)
76)
77
78
79;it doesnt seem gtk_socket_steal works very well. its deprecated.
80; xwininfo -int
81; then (xwidget-embed-steal 3 <winid>)
82(defun xwidget-demo-grab ()
83 (interactive)
84 (insert "0 <<< grabbed appp will appear here\n")
85 (xwidget-insert 1 1 3 "1" 1000 )
86 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-grab)
87 )
88
89;ive basically found these xembeddable things:
90;openvrml
91;emacs
92;mplayer
93;surf
94;uzbl
95
96;try the openvrml:
97;/usr/libexec/openvrml-xembed 0 ~/Desktop/HelloWorld.wrl
98
99
100(defun xwidget-handler-demo-basic ()
101 (interactive)
102 (message "stuff happened to xwidget %S" last-input-event)
103 (let*
104 ((xwidget-event-type (nth 2 last-input-event))
105 (xwidget-id (nth 1 last-input-event)))
106 (cond ( (eq xwidget-event-type 'xembed-ready)
107 (let*
108 ((xembed-id (nth 3 last-input-event)))
109 (message "xembed ready event: %S xw-id:%s" xembed-id xwidget-id)
110 ;;will start emacs/uzbl in a xembed socket when its ready
111 (cond
112 ((eq 3 xwidget-id)
113 (start-process "xembed" "*xembed*" (format "%ssrc/emacs" default-directory) "-q" "--parent-id" (number-to-string xembed-id) ) )
114 ((eq 5 xwidget-id)
115 (start-process "xembed2" "*xembed2*" "uzbl-core" "-s" (number-to-string xembed-id) "http://www.fsf.org" ) )
116
117 )
118 )))))
119
120
121
122(defun xwidget-handler-demo-grab ()
123 (interactive)
124 (message "stuff happened to xwidget %S" last-input-event)
125 (let*
126 ((xwidget-event-type (nth 2 last-input-event)))
127 (cond ( (eq xwidget-event-type 'xembed-ready)
128 (let*
129 ((xembed-id (nth 3 last-input-event)))
130 (message "xembed ready %S" xembed-id)
131 )
132 ))))
133(defun xwidget-dummy-hook ()
134 (message "xwidget dummy hook called"))
135
136; (xwidget-resize-hack 1 200 200)
137
138;(xwidget-demo-basic)
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index 837f8454671..7f1ffd56fb9 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -110,6 +110,10 @@ defaults to the string looking like a url around the cursor position."
110 (interactive) 110 (interactive)
111 ( xwidget-adjust-size-to-content ( xwidget-webkit-last-session))) 111 ( xwidget-adjust-size-to-content ( xwidget-webkit-last-session)))
112 112
113(defun xwidget-webkit-adjust-size (w h)
114 (interactive "nWidth:\nnHeight:\n")
115 ( xwidget-resize ( xwidget-webkit-last-session) w h))
116
113 117
114(defun xwidget-webkit-new-session (url) 118(defun xwidget-webkit-new-session (url)
115 119