emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] xwidget_mvp 63fbe83 2/4: Cleanup, and delete plugin remova


From: Joakim Verona
Subject: [Emacs-diffs] xwidget_mvp 63fbe83 2/4: Cleanup, and delete plugin removal function
Date: Thu, 12 Feb 2015 23:25:59 +0000

branch: xwidget_mvp
commit 63fbe839623b9b108950b0e3d3925193def41887
Author: Joakim Verona <address@hidden>
Commit: Joakim Verona <address@hidden>

    Cleanup, and delete plugin removal function
---
 lisp/xwidget.el |  211 ++++++++++++++++++++++++++++++-------------------------
 src/xwidget.c   |   18 -----
 2 files changed, 116 insertions(+), 113 deletions(-)

diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index 3a7d3c1..33f9a18 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -57,8 +57,8 @@ Optional argument ARGS usage depends on the xwidget."
 
 (defun xwidget-at (pos)
   "Return xwidget at POS."
-  ;;TODO this function is a bit tedious because the C layer isnt well 
protected yet and
-  ;;xwidgetp aparently doesnt work yet
+  ;;TODO this function is a bit tedious because the C layer isnt well
+  ;;protected yet and xwidgetp aparently doesnt work yet
   (let* ((disp (get-text-property pos 'display))
          (xw (car (cdr (cdr  disp)))))
     ;;(if ( xwidgetp  xw) xw nil)
@@ -66,7 +66,7 @@ Optional argument ARGS usage depends on the xwidget."
 
 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; webkit support
 (require 'browse-url)
 (require 'image-mode);;for some image-mode alike functionality
@@ -90,7 +90,8 @@ defaults to the string looking like a url around the cursor 
position."
 
 ;;shims for adapting image mode code to the webkit browser window
 (defun xwidget-image-display-size  (spec &optional pixels frame)
-  "Image code adaptor.  SPEC PIXELS FRAME like the corresponding `image-mode' 
fn."
+  "Image code adaptor.  SPEC PIXELS FRAME like the corresponding
+`image-mode' fn."
   (let ((xwi (xwidget-info  (xwidget-at 1))))
     (cons (aref xwi 2)
           (aref xwi 3))))
@@ -116,19 +117,19 @@ defaults to the string looking like a url around the 
cursor position."
     (define-key map "w" 'xwidget-webkit-current-url)
 
     ;;similar to image mode bindings
-    (define-key map (kbd "SPC")                    'xwidget-webkit-scroll-up)
-    (define-key map (kbd "DEL")                    'xwidget-webkit-scroll-down)
+    (define-key map (kbd "SPC")                 'xwidget-webkit-scroll-up)
+    (define-key map (kbd "DEL")                 'xwidget-webkit-scroll-down)
 
-    (define-key map [remap scroll-up]              'xwidget-webkit-scroll-up)
-    (define-key map [remap scroll-up-command]      'xwidget-webkit-scroll-up)
+    (define-key map [remap scroll-up]           'xwidget-webkit-scroll-up)
+    (define-key map [remap scroll-up-command]   'xwidget-webkit-scroll-up)
 
-    (define-key map [remap scroll-down]            'xwidget-webkit-scroll-down)
-    (define-key map [remap scroll-down-command]    'xwidget-webkit-scroll-down)
+    (define-key map [remap scroll-down]         'xwidget-webkit-scroll-down)
+    (define-key map [remap scroll-down-command] 'xwidget-webkit-scroll-down)
 
-    (define-key map [remap forward-char]           
'xwidget-webkit-scroll-forward)
-    (define-key map [remap backward-char]          
'xwidget-webkit-scroll-backward)
-    (define-key map [remap right-char]             
'xwidget-webkit-scroll-forward)
-    (define-key map [remap left-char]              
'xwidget-webkit-scroll-backward)
+    (define-key map [remap forward-char]        'xwidget-webkit-scroll-forward)
+    (define-key map [remap backward-char]       
'xwidget-webkit-scroll-backward)
+    (define-key map [remap right-char]          'xwidget-webkit-scroll-forward)
+    (define-key map [remap left-char]           
'xwidget-webkit-scroll-backward)
     ;; (define-key map [remap previous-line]          'image-previous-line)
     ;; (define-key map [remap next-line]              'image-next-line)
 
@@ -188,9 +189,10 @@ defaults to the string looking like a url around the 
cursor position."
   (let*
       ((xwidget-event-type (nth 1 last-input-event))
        (xwidget (nth 2 last-input-event))
-                                        ;(xwidget-callback (xwidget-get 
xwidget 'callback));;TODO stopped working for some reason
+       ;;(xwidget-callback (xwidget-get xwidget 'callback))
+       ;;TODO stopped working for some reason
        )
-                                        ;(funcall  xwidget-callback xwidget 
xwidget-event-type)
+    ;;(funcall  xwidget-callback xwidget xwidget-event-type)
     (message "xw callback %s" xwidget)
     (funcall  'xwidget-webkit-callback xwidget xwidget-event-type)))
 
@@ -202,17 +204,23 @@ XWIDGET instance, XWIDGET-EVENT-TYPE depends on the 
originating xwidget."
            (set-buffer (xwidget-buffer xwidget))
            (let* ((strarg  (nth 3 last-input-event)))
              (cond ((eq xwidget-event-type 'document-load-finished)
-                    (xwidget-log "webkit finished loading: '%s'" 
(xwidget-webkit-get-title xwidget))
+                    (xwidget-log "webkit finished loading: '%s'"
+                                 (xwidget-webkit-get-title xwidget))
                     ;;TODO - check the native/internal scroll
                     ;;(xwidget-adjust-size-to-content xwidget)
-                    (xwidget-webkit-adjust-size-dispatch) ;;TODO send xwidget 
here
-                    (rename-buffer (format "*xwidget webkit: %s *" 
(xwidget-webkit-get-title xwidget)))
+                    (xwidget-webkit-adjust-size-dispatch) ;;TODO xwidget arg
+                    (rename-buffer (format "*xwidget webkit: %s *"
+                                           (xwidget-webkit-get-title xwidget)))
                     (pop-to-buffer (current-buffer)))
-                   ((eq xwidget-event-type 
'navigation-policy-decision-requested)
+                   ((eq xwidget-event-type
+                        'navigation-policy-decision-requested)
                     (if (string-match ".*#\\(.*\\)" strarg)
-                        (xwidget-webkit-show-id-or-named-element xwidget 
(match-string 1 strarg))))
+                        (xwidget-webkit-show-id-or-named-element
+                         xwidget
+                         (match-string 1 strarg))))
                    (t (xwidget-log "unhandled event:%s" xwidget-event-type)))))
-          (t (xwidget-log "error: callback called for xwidget with dead 
buffer")))))
+          (t (xwidget-log
+              "error: callback called for xwidget with dead buffer")))))
 
 (defvar bookmark-make-record-function)
 (define-derived-mode xwidget-webkit-mode
@@ -227,7 +235,8 @@ XWIDGET instance, XWIDGET-EVENT-TYPE depends on the 
originating xwidget."
 "Integrate Emacs bookmarks with the webkit xwidget."
   (nconc (bookmark-make-record-default t t)
          `((page     . ,(xwidget-webkit-current-url))
-           (handler  . (lambda (bmk) (browse-url   (bookmark-prop-get bmk 
'page)))))))
+           (handler  . (lambda (bmk) (browse-url
+                                      (bookmark-prop-get bmk 'page)))))))
 
 
 (defvar xwidget-webkit-last-session-buffer nil)
@@ -240,15 +249,17 @@ XWIDGET instance, XWIDGET-EVENT-TYPE depends on the 
originating xwidget."
     nil))
 
 (defun xwidget-webkit-current-session ()
-  "Either the webkit in the current buffer, or the last one used, which might 
be nil."
+  "Either the webkit in the current buffer, or the last one used,
+which might be nil."
   (if (xwidget-at 1)
       (xwidget-at 1)
     (xwidget-webkit-last-session)))
 
 (defun xwidget-adjust-size-to-content (xw)
   "Resize XW to content."
-  ;;xwidgets doesnt support widgets that have their own opinions about size 
well yet
-  ;;this reads the desired size and resizes the emacs allocated area 
accordingly
+  ;;xwidgets doesnt support widgets that have their own opinions about
+  ;;size well yet this reads the desired size and resizes the emacs
+  ;;allocated area accordingly
   (let ((size (xwidget-size-request xw)))
     (xwidget-resize xw (car size) (cadr size))))
 
@@ -280,8 +291,9 @@ function findactiveelement(doc){
   ;;yes its ugly. because:
   ;; - there is aparently no way to find the active frame other than recursion
   ;; - the js "for each" construct missbehaved on the "frames" collection
-  ;; - a window with no frameset still has frames.length == 1, but 
frames[0].document.activeElement != document.activeElement
-  ;;TODO the activeelement type needs to be examined, for iframe, etc. sucks.
+  ;; - a window with no frameset still has frames.length == 1, but
+  ;; frames[0].document.activeElement != document.activeElement
+  ;;TODO the activeelement type needs to be examined, for iframe, etc.
   )
 
 (defun xwidget-webkit-insert-string (xw str)
@@ -295,8 +307,12 @@ Argument STR string."
           (field-value
            (progn
              (xwidget-webkit-execute-script xww 
xwidget-webkit-activeelement-js)
-             (xwidget-webkit-execute-script-rv xww 
"findactiveelement(document).value;" )))
-          (field-type (xwidget-webkit-execute-script-rv xww 
"findactiveelement(document).type;" )))
+             (xwidget-webkit-execute-script-rv
+              xww
+              "findactiveelement(document).value;" )))
+          (field-type (xwidget-webkit-execute-script-rv
+                       xww
+                       "findactiveelement(document).type;" )))
      (list xww
            (cond ((equal "text" field-type)
                   (read-string "text:" field-value))
@@ -304,7 +320,9 @@ Argument STR string."
                   (read-passwd "password:" nil field-value))
                  ((equal "textarea" field-type)
                   (xwidget-webkit-begin-edit-textarea xww field-value))))))
-  (xwidget-webkit-execute-script xw (format 
"findactiveelement(document).value='%s'" str)))
+  (xwidget-webkit-execute-script
+   xw
+   (format "findactiveelement(document).value='%s'" str)))
 
 (defvar xwidget-xwbl)
 (defun xwidget-webkit-begin-edit-textarea (xw text)
@@ -322,8 +340,10 @@ XW is the xwidget identifier, TEXT is retrieved from the 
webkit."
   (goto-char (point-min))
   (while (search-forward "\n" nil t)
     (replace-match "\\n" nil t))
-  (xwidget-webkit-execute-script xwidget-xwbl (format 
"findactiveelement(document).value='%s'"
-                                              (buffer-substring (point-min) 
(point-max))))
+  (xwidget-webkit-execute-script
+   xwidget-xwbl
+   (format "findactiveelement(document).value='%s'"
+           (buffer-substring (point-min) (point-max))))
   ;;TODO convert linefeed to \n
   )
 
@@ -331,22 +351,27 @@ XW is the xwidget identifier, TEXT is retrieved from the 
webkit."
   "Make named-element show.  for instance an anchor.
 Argument XW is the xwidget.
 Argument ELEMENT-NAME is the element name to display in the webkit xwidget."
-  (interactive (list (xwidget-webkit-current-session) (read-string "element 
name:")))
-  ;;TODO
-  ;; since an xwidget is an Emacs object, it is not trivial to do some things 
that are taken for granted in a normal browser.
+  (interactive (list (xwidget-webkit-current-session)
+                     (read-string "element name:")))
+  ;;TODO since an xwidget is an Emacs object, it is not trivial to do
+  ;; some things that are taken for granted in a normal browser.
   ;; scrolling an anchor/named-element into view is one such thing.
-  ;; this function implements a proof-of-concept for this.
-  ;; problems remaining:
-  ;; - the selected window is scrolled but this is not always correct
-  ;; - this needs to be interfaced into browse-url somehow. the tricky part is 
that we need to do this in two steps:
-  ;;   A: load the base url, wait for load signal to arrive B: navigate to the 
anchor when the base url is finished rendering
-
-  ;;this part figures out the Y coordinate of the element
+  ;; This function implements a proof-of-concept for this.  Problems
+  ;; remaining: - The selected window is scrolled but this is not
+  ;; always correct - This needs to be interfaced into browse-url
+  ;; somehow. the tricky part is that we need to do this in two steps:
+  ;; A: load the base url, wait for load signal to arrive B: navigate
+  ;; to the anchor when the base url is finished rendering
+
+  ;; This part figures out the Y coordinate of the element
   (let ((y (string-to-number
-            (xwidget-webkit-execute-script-rv xw
-                                              (format 
"document.getElementsByName('%s')[0].getBoundingClientRect().top" element-name)
-                                              0))))
-    ;;now we need to tell emacs to scroll the element into view.
+            (xwidget-webkit-execute-script-rv
+             xw
+             (format
+              "document.getElementsByName('%s')[0].getBoundingClientRect().top"
+              element-name)
+             0))))
+    ;; Now we need to tell emacs to scroll the element into view.
     (xwidget-log "scroll: %d" y)
     (set-window-vscroll (selected-window) y t)))
 
@@ -357,10 +382,12 @@ Argument ELEMENT-ID is the id of the element to show."
   (interactive (list (xwidget-webkit-current-session)
                      (read-string "element id:")))
   (let ((y (string-to-number
-            (xwidget-webkit-execute-script-rv xw
-                                              (format 
"document.getElementById('%s').getBoundingClientRect().top" element-id)
-                                              0))))
-    ;;now we need to tell emacs to scroll the element into view.
+            (xwidget-webkit-execute-script-rv
+             xw
+             (format 
"document.getElementById('%s').getBoundingClientRect().top"
+                     element-id)
+             0))))
+    ;; Now we need to tell emacs to scroll the element into view.
     (xwidget-log "scroll: %d" y)
     (set-window-vscroll (selected-window) y t)))
 
@@ -371,15 +398,17 @@ Argument ELEMENT-ID is either a name or an element id."
   (interactive (list (xwidget-webkit-current-session)
                      (read-string "element id:")))
   (let* ((y1 (string-to-number
-              (xwidget-webkit-execute-script-rv xw
-                                                (format 
"document.getElementsByName('%s')[0].getBoundingClientRect().top" element-id)
-                                                "0")))
+              (xwidget-webkit-execute-script-rv
+               xw
+               (format 
"document.getElementsByName('%s')[0].getBoundingClientRect().top" element-id)
+               "0")))
          (y2 (string-to-number
-              (xwidget-webkit-execute-script-rv xw
-                                                (format 
"document.getElementById('%s').getBoundingClientRect().top" element-id)
+              (xwidget-webkit-execute-script-rv
+               xw
+               (format 
"document.getElementById('%s').getBoundingClientRect().top" element-id)
                                                 "0")))
          (y3 (max y1 y2)))
-    ;;now we need to tell emacs to scroll the element into view.
+    ;; Now we need to tell emacs to scroll the element into view.
     (xwidget-log "scroll: %d" y3)
     (set-window-vscroll (selected-window) y3 t)))
 
@@ -394,9 +423,9 @@ Argument ELEMENT-ID is either a name or an element id."
   (if (eq xwidget-webkit-scroll-behaviour 'native)
       (xwidget-webkit-adjust-size-to-window)
     (xwidget-webkit-adjust-size-to-content))
-  ;;the recenter is intended to correct a visual glitch
-  ;;it errors out if the buffer isnt visible, but then we dont get the glitch,
-  ;;so silence errors
+  ;; The recenter is intended to correct a visual glitch.
+  ;; It errors out if the buffer isn't visible, but then we dont get the 
glitch,
+  ;; so silence errors
   (ignore-errors
     (recenter-top-bottom))
   )
@@ -404,13 +433,14 @@ Argument ELEMENT-ID is either a name or an element id."
 (defun xwidget-webkit-adjust-size-to-window ()
   "Adjust webkit to window."
   (interactive)
-    (xwidget-resize ( xwidget-webkit-current-session) (window-pixel-width) 
(window-pixel-height)))
+  (xwidget-resize ( xwidget-webkit-current-session) (window-pixel-width)
+                  (window-pixel-height)))
 
 (defun xwidget-webkit-adjust-size (w h)
   "Manualy set webkit size.
 Argument W width.
 Argument H height."
-  ;;TODO shouldnt be tied to the webkit xwidget
+  ;; TODO shouldn't be tied to the webkit xwidget
   (interactive "nWidth:\nnHeight:\n")
   (xwidget-resize ( xwidget-webkit-current-session) w h))
 
@@ -426,7 +456,8 @@ Argument H height."
   (let*
       ((bufname (generate-new-buffer-name "*xwidget-webkit*"))
        xw)
-    (setq xwidget-webkit-last-session-buffer (switch-to-buffer 
(get-buffer-create bufname)))
+    (setq xwidget-webkit-last-session-buffer (switch-to-buffer
+                                              (get-buffer-create bufname)))
     (insert " 'a' adjusts the xwidget size.")
     (setq xw (xwidget-insert 1 'webkit-osr  bufname 1000 1000))
     (xwidget-put xw 'callback 'xwidget-webkit-callback)
@@ -444,12 +475,14 @@ Argument H height."
 (defun xwidget-webkit-back ()
   "Back in history."
   (interactive)
-  (xwidget-webkit-execute-script (xwidget-webkit-current-session)  
"history.go(-1);"))
+  (xwidget-webkit-execute-script (xwidget-webkit-current-session)
+                                 "history.go(-1);"))
 
 (defun xwidget-webkit-reload ()
   "Reload current url."
   (interactive)
-  (xwidget-webkit-execute-script (xwidget-webkit-current-session)  
"history.go(0);"))
+  (xwidget-webkit-execute-script (xwidget-webkit-current-session)
+                                 "history.go(0);"))
 
 (defun xwidget-webkit-current-url ()
   "Get the webkit url.  place it on kill ring."
@@ -464,15 +497,17 @@ Argument H height."
   "Same as 'xwidget-webkit-execute-script' but but with return value.
 XW is the webkit instance.  SCRIPT is the script to execut.
 DEFAULT is the defaultreturn value."
-  ;;notice the fugly "title" hack. it is needed because the webkit api
-  ;;doesnt support returning values.  this is a wrapper for the title
-  ;;hack so its easy to remove should webkit someday support JS return
-  ;;values or we find some other way to access the DOM
+  ;; Notice the ugly "title" hack.  It is needed because the Webkit
+  ;; API at the time of writing didn't support returning values.  This
+  ;; is a wrapper for the title hack so its easy to remove should
+  ;; Webkit someday support JS return values or we find some other way
+  ;; to access the DOM.
 
-  ;;reset webkit title. fugly.
+  ;; Reset webkit title. Not very nice.
   (let* ((emptytag "titlecantbewhitespaceohthehorror")
          title)
-    (xwidget-webkit-execute-script xw (format "document.title=\"%s\";" (or 
default emptytag)))
+    (xwidget-webkit-execute-script xw (format "document.title=\"%s\";"
+                                              (or default emptytag)))
     (xwidget-webkit-execute-script xw (format "document.title=%s;" script))
     (setq title (xwidget-webkit-get-title xw))
     (if (equal emptytag title)
@@ -482,7 +517,7 @@ DEFAULT is the defaultreturn value."
     title))
 
 
-;; use declare here?
+;; Use declare here?
 ;; (declare-function xwidget-resize-internal "xwidget.c" )
 ;; check-declare-function?
 
@@ -499,7 +534,7 @@ DEFAULT is the defaultreturn value."
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; xwidget plist management(similar to the process plist functions)
+;; Xwidget plist management(similar to the process plist functions)
 
 (defun xwidget-get (xwidget propname)
   "Return the value of XWIDGET' PROPNAME property.
@@ -525,17 +560,17 @@ It can be retrieved with `(xwidget-get XWIDGET 
PROPNAME)'."
 
 (defun xwidget-cleanup ()
   "Delete zombie xwidgets."
-  ;;its still pretty easy to trigger bugs with xwidgets.
-  ;;this function tries to implement a workaround
+  ;; During development it was sometimes easy to wind up with zombie
+  ;; xwidget instances.
+  ;; This function tries to implement a workaround should it occur again.
   (interactive)
-  ;; kill xviews who should have been deleted but stull linger
+  ;; Kill xviews who should have been deleted but stull linger.
   (xwidget-delete-zombies)
-  ;; redraw display otherwise ghost of zombies  will remain to haunt the screen
+  ;; Redraw display otherwise ghost of zombies will remain to haunt the screen
   (redraw-display))
 
-;;this is a workaround because I cant find the right place to put it in C
-;;seems to work well in practice though
-;;(add-hook 'window-configuration-change-hook 'xwidget-cleanup)
+;; This would have felt better in C, but this seems to work well in
+;; practice though.
 (add-hook 'window-configuration-change-hook 'xwidget-delete-zombies)
 
 (defun xwidget-kill-buffer-query-function ()
@@ -549,20 +584,6 @@ It can be retrieved with `(xwidget-get XWIDGET PROPNAME)'."
 
 (add-hook 'kill-buffer-query-functions 'xwidget-kill-buffer-query-function)
 
-;;killflash is sadly not reliable yet.
-(defvar xwidget-webkit-kill-flash-oneshot t)
-(defun xwidget-webkit-kill-flash ()
-  "Disable the flash plugin in webkit.
-This is needed because Flash is non-free and doesnt work reliably
-on 64 bit systems and offscreen rendering.  Sadly not reliable
-yet, so deinstall Flash instead for now."
-  ;;you can only call this once or webkit crashes and takes emacs with it. odd.
-  (unless xwidget-webkit-kill-flash-oneshot
-    (xwidget-disable-plugin-for-mime "application/x-shockwave-flash")
-    (setq xwidget-webkit-kill-flash-oneshot t)))
-
-(xwidget-webkit-kill-flash)
-
 (defun report-xwidget-bug ()
   "Report a bug in GNU Emacs about the XWidget branch.
 Prompts for bug subject.  Leaves you in a mail buffer."
@@ -571,7 +592,7 @@ Prompts for bug subject.  Leaves you in a mail buffer."
     (reporter-submit-bug-report "address@hidden" nil nil nil nil
                                 (format "Package: emacs-xwidgets
 
-Please describee xactly whata ctions triggered the bug, and the
+Please describe exactly what actions triggered the bug, and the
 precise symptoms of the bug.  If you can, give a recipe starting
 from `emacs -Q'.
 
diff --git a/src/xwidget.c b/src/xwidget.c
index fb1a987..71f9cf6 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -759,23 +759,6 @@ from the exec method.  */ )
   return build_string (str);
 }
 
-DEFUN ("xwidget-disable-plugin-for-mime",
-       Fxwidget_disable_plugin_for_mime, Sxwidget_disable_plugin_for_mime,
-       1, 1, 0, doc:   /* */ )
-  (Lisp_Object mime)
-{
-  WebKitWebPlugin *wp = webkit_web_plugin_database_get_plugin_for_mimetype
-    (webkit_get_web_plugin_database (), SSDATA (mime));
-  if (wp == NULL)
-    return Qnil;
-  if (webkit_web_plugin_get_enabled (wp))
-    {
-      webkit_web_plugin_set_enabled (wp, FALSE);
-      return Qt;
-    }
-  return Qnil;
-}
-
 DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc:
        /* Resize XWIDGET.
           NEW_WIDTH NEW_HEIGHT defines the new size.)
@@ -1112,7 +1095,6 @@ syms_of_xwidget (void)
 
   defsubr (&Sxwidget_size_request);
   defsubr (&Sdelete_xwidget_view);
-  defsubr (&Sxwidget_disable_plugin_for_mime);
 
   defsubr (&Sxwidget_plist);
   defsubr (&Sxwidget_buffer);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]