فهرست منبع

org-w3m.el: Minor updates and fixes.

This commit adds an option to org-w3m, to decide whether the mark
should be deactivated after copying the region.

New version from author Andy Steward.
Carsten Dominik 17 سال پیش
والد
کامیت
feef4db6d3
2فایلهای تغییر یافته به همراه72 افزوده شده و 50 حذف شده
  1. 7 0
      lisp/ChangeLog
  2. 65 50
      lisp/org-w3m.el

+ 7 - 0
lisp/ChangeLog

@@ -1,3 +1,10 @@
+2009-01-04  Carsten Dominik  <carsten.dominik@gmail.com>
+
+	* org-w3m.el (org-w3m): New customization group.
+	(org-w3m-deactivate-mark): New option.
+	(org-w3m-copy-for-org-mode): Deactivate region, unless the user
+	option say not to.
+
 2009-01-02  Carsten Dominik  <carsten.dominik@gmail.com>
 
 	* org.el (org-set-font-lock-defaults): Trigger footnote

+ 65 - 50
lisp/org-w3m.el

@@ -43,99 +43,114 @@
 (require 'org)
 (declare-function w3m-anchor "ext:w3m-util" (position))
 
+(defgroup org-w3m nil
+  "Transforming the HTML content in w3m buffer with org-mode style."
+  :group 'org)
+
+(defcustom org-w3m-deactivate-mark t
+  "Non-nil means, deactivate mark after copying and region in Org-mode style.
+When nil, keep the region active."
+  :type 'boolean
+  :group 'org-w3m)
+
 (defun org-w3m-copy-for-org-mode ()
   "Copy current buffer content or active region with `org-mode' style links.
 This will encode `link-title' and `link-location' with
 `org-make-link-string', and insert the transformed test into the kill ring,
 so that it can be yanked into an Org-mode buffer with links working correctly."
   (interactive)
-  (let ((regionp (org-region-active-p))
-	transform-start transform-end
-	return-content
-	link-location link-title
-	temp-position out-bound)
-    (setq transform-start (if regionp (region-beginning) (point-min))
-	  transform-end (if regionp (region-end) (point-max)))
+  (let* ((regionp (org-region-active-p))
+         (transform-start (point-min))
+         (transform-end (point-max))
+         return-content
+         link-location link-title
+         temp-position out-bound)
+    (when regionp
+      (setq transform-start (region-beginning))
+      (setq transform-end (region-end))
+      ;; Deactivate mark if current mark is activate.
+      (if org-w3m-deactivate-mark
+          (deactivate-mark)))
     (message "Transforming links...")
     (save-excursion
       (goto-char transform-start)
-      (while (and (not out-bound)   ; still inside region to copy
-		  (not (org-w3m-no-next-link-p))) ; no next link current buffer
-	;; store current point before jump next anchor
-	(setq temp-position (point))
-	;; move to next anchor when current point is not at anchor
-	(or (w3m-anchor (point)) (org-w3m-get-next-link-start))
-	(if (<= (point) transform-end)  ; if point is inside transform bound
-	    (progn
-	      ;; get content between two links.
-	      (if (> (point) temp-position)
-		  (setq return-content (concat return-content
-					       (buffer-substring
-						temp-position (point)))))
-	      ;; get link location at current point.
-	      (setq link-location (w3m-anchor (point)))
-	      ;; get link title at current point.
-	      (setq link-title (buffer-substring (point)
-						 (org-w3m-get-anchor-end)))
-	      ;; concat `org-mode' style url to `return-content'.
-	      (setq return-content (concat return-content
-					   (org-make-link-string
-					    link-location link-title))))
-	  (goto-char temp-position)     ; reset point before jump next anchor
-	  (setq out-bound t)		; for break out `while' loop
-	  ))
+      (while (and (not out-bound)                 ; still inside region to copy
+                  (not (org-w3m-no-next-link-p))) ; no next link current buffer
+        ;; store current point before jump next anchor
+        (setq temp-position (point))
+        ;; move to next anchor when current point is not at anchor
+        (or (w3m-anchor (point)) (org-w3m-get-next-link-start))
+        (if (<= (point) transform-end)  ; if point is inside transform bound
+            (progn
+              ;; get content between two links.
+              (if (> (point) temp-position)
+                  (setq return-content (concat return-content
+                                               (buffer-substring
+                                                temp-position (point)))))
+              ;; get link location at current point.
+              (setq link-location (w3m-anchor (point)))
+              ;; get link title at current point.
+              (setq link-title (buffer-substring (point)
+                                                 (org-w3m-get-anchor-end)))
+              ;; concat `org-mode' style url to `return-content'.
+              (setq return-content (concat return-content
+                                           (org-make-link-string
+                                            link-location link-title))))
+          (goto-char temp-position)     ; reset point before jump next anchor
+          (setq out-bound t)            ; for break out `while' loop
+          ))
       ;; add the rest until end of the region to be copied
       (if (< (point) transform-end)
-	  (setq return-content
-		(concat return-content
-			(buffer-substring (point) transform-end))))
+          (setq return-content
+                (concat return-content
+                        (buffer-substring (point) transform-end))))
       (kill-new return-content)
       (message "Transforming links...done, use C-y to insert text into Org-mode file")
       (message "Copy with link transformation complete."))))
 
 (defun org-w3m-get-anchor-start ()
-  "Move to and return `point' for the start of the current anchor."
+  "Move cursor to the start of current anchor.  Return point."
   ;; get start position of anchor or current point
   (goto-char (or (previous-single-property-change (point) 'w3m-anchor-sequence)
-		 (point))))
+                 (point))))
 
 (defun org-w3m-get-anchor-end ()
-  "Move and return `point' after the end of current anchor."
+  "Move cursor to the end of current anchor.  Return point."
   ;; get end position of anchor or point
   (goto-char (or (next-single-property-change (point) 'w3m-anchor-sequence)
 		 (point))))
 
 (defun org-w3m-get-next-link-start ()
-  "Move and return `point' for that start of the current link."
+  "Move cursor to the start of next link.  Return point."
   (catch 'reach
     (while (next-single-property-change (point) 'w3m-anchor-sequence)
       ;; jump to next anchor
       (goto-char (next-single-property-change (point) 'w3m-anchor-sequence))
       (when (w3m-anchor (point))
-	;; return point when current is valid link
-	(throw 'reach nil))))
+        ;; return point when current is valid link
+        (throw 'reach nil))))
   (point))
 
 (defun org-w3m-get-prev-link-start ()
-  "Move and return `point' for that end of the current link."
+  "Move cursor to the start of prevoius link.  Return point."
   (catch 'reach
     (while (previous-single-property-change (point) 'w3m-anchor-sequence)
       ;; jump to previous anchor
       (goto-char (previous-single-property-change (point) 'w3m-anchor-sequence))
       (when (w3m-anchor (point))
-	;; return point when current is valid link
-	(throw 'reach nil))))
+        ;; return point when current is valid link
+        (throw 'reach nil))))
   (point))
 
 (defun org-w3m-no-next-link-p ()
-  "Return t if no next link after cursor.
-Otherwise, return nil."
+  "Whether there is no next link after the cursor.
+Return t if there is no next link; otherwise, return nil."
   (save-excursion
     (equal (point) (org-w3m-get-next-link-start))))
 
 (defun org-w3m-no-prev-link-p ()
-  "Return t if no previous link after cursor.
-Otherwise, return nil."
+  "Whether there is no previous link after the cursor.
+Return t if there is no previous link; otherwise, return nil."
   (save-excursion
     (equal (point) (org-w3m-get-prev-link-start))))
 
@@ -143,11 +158,11 @@ Otherwise, return nil."
 (defvar w3m-mode-map)
 (defvar w3m-minor-mode-map)
 (when (and (boundp 'w3m-mode-map)
-	   (keymapp w3m-mode-map))
+           (keymapp w3m-mode-map))
   (define-key w3m-mode-map "\C-c\C-x\M-w" 'org-w3m-copy-for-org-mode)
   (define-key w3m-mode-map "\C-c\C-x\C-w" 'org-w3m-copy-for-org-mode))
 (when (and (boundp 'w3m-minor-mode-map)
-	   (keymapp w3m-minor-mode-map))
+           (keymapp w3m-minor-mode-map))
   (define-key w3m-minor-mode-map "\C-c\C-x\M-w" 'org-w3m-copy-for-org-mode)
   (define-key w3m-minor-mode-map "\C-c\C-x\C-w" 'org-w3m-copy-for-org-mode))
 (add-hook