Skip to content

Instantly share code, notes, and snippets.

@cvmat
Created September 16, 2010 19:05
Show Gist options
  • Save cvmat/582957 to your computer and use it in GitHub Desktop.
Save cvmat/582957 to your computer and use it in GitHub Desktop.
diff -r 8c43f3b117db -r 82c5b6f07685 twittering-mode.el
--- a/twittering-mode.el Fri Sep 17 01:07:19 2010 +0900
+++ b/twittering-mode.el Fri Sep 17 01:37:16 2010 +0900
@@ -117,6 +117,8 @@
"Alist of tinyfy services.")
(defvar twittering-mode-map (make-sparse-keymap))
+(defvar twittering-mode-menu-on-uri-map (make-sparse-keymap "Twittering Mode"))
+(defvar twittering-mode-on-uri-map (make-sparse-keymap))
(defvar twittering-tweet-history nil)
(defvar twittering-user-history nil)
@@ -3507,6 +3509,8 @@
(define-key km (kbd "C-m") 'twittering-enter)
(define-key km (kbd "C-c C-l") 'twittering-update-lambda)
(define-key km (kbd "<mouse-1>") 'twittering-click)
+ (define-key km (kbd "C-<down-mouse-3>") 'mouse-set-point)
+ (define-key km (kbd "C-<mouse-3>") 'twittering-push-tweet-onto-kill-ring)
(define-key km (kbd "C-c C-v") 'twittering-view-user-page)
(define-key km (kbd "C-c D") 'twittering-delete-status)
(define-key km (kbd "a") 'twittering-toggle-activate-buffer)
@@ -3548,6 +3552,16 @@
(define-key km (kbd "C-c C-q") 'twittering-search)
nil))
+(let ((km twittering-mode-menu-on-uri-map))
+ (when km
+ (define-key km [ct] '("Copy tweet" . twittering-push-tweet-onto-kill-ring))
+ (define-key km [cl] '("Copy link" . twittering-push-uri-onto-kill-ring))
+ (define-key km [ll] '("Load link" . twittering-click))
+ (let ((km-on-uri twittering-mode-on-uri-map))
+ (when km-on-uri
+ (define-key km-on-uri (kbd "C-<down-mouse-3>") 'mouse-set-point)
+ (define-key km-on-uri (kbd "C-<mouse-3>") km)))))
+
(defun twittering-keybind-message ()
(let ((important-commands
'(("Timeline" . twittering-friends-timeline)
@@ -4933,6 +4947,7 @@
(add-text-properties
0 (length user-name)
`(mouse-face highlight
+ keymap ,twittering-mode-on-uri-map
uri ,(twittering-get-status-url user-screen-name)
screen-name-in-text ,user-screen-name
goto-spec ,(twittering-string-to-timeline-spec
@@ -4944,6 +4959,7 @@
(add-text-properties
0 (length user-screen-name)
`(mouse-face highlight
+ keymap ,twittering-mode-on-uri-map
uri ,(twittering-get-status-url user-screen-name)
screen-name-in-text ,user-screen-name
goto-spec ,(twittering-string-to-timeline-spec
@@ -4982,6 +4998,7 @@
(setq prop
`(mouse-face
highlight
+ keymap ,twittering-mode-on-uri-map
uri ,url goto-spec ,spec
face twittering-username-face))))
(listname
@@ -4989,6 +5006,7 @@
end (match-end 2)
prop `(mouse-face
highlight
+ keymap ,twittering-mode-on-uri-map
uri ,(twittering-get-status-url listname)
goto-spec
,(twittering-string-to-timeline-spec
@@ -4999,6 +5017,7 @@
end (match-end 3)
prop `(mouse-face
highlight
+ keymap ,twittering-mode-on-uri-map
uri ,(twittering-get-status-url
screenname)
screen-name-in-text ,screenname
@@ -5011,6 +5030,7 @@
end (match-end 4)
prop `(mouse-face
highlight
+ keymap ,twittering-mode-on-uri-map
uri ,uri
face twittering-uri-face)))
(t
@@ -5028,6 +5048,7 @@
(add-text-properties
0 (length source)
`(mouse-face highlight
+ keymap ,twittering-mode-on-uri-map
uri ,uri
face twittering-uri-face
source ,source)
@@ -5534,6 +5555,7 @@
(url (cdr pair))
(properties
(list 'mouse-face 'highlight 'face 'twittering-uri-face
+ 'keymap twittering-mode-on-uri-map
'uri url)))
(when (and str url)
(concat " " (apply 'propertize str properties))))))
@@ -5574,6 +5596,7 @@
(cdr (assq 'id ,status-sym)))))
(properties
(list 'mouse-face 'highlight 'face 'twittering-uri-face
+ 'keymap twittering-mode-on-uri-map
'uri url)))
(twittering-make-passed-time-string
nil nil created-at ,time-format properties))
@@ -6636,6 +6659,24 @@
(message "Copied %s" uri)
uri))))
+(defun twittering-push-tweet-onto-kill-ring ()
+ "Copy the tweet (format: \"username: text\") to the kill-ring."
+ (interactive)
+ (let* ((username (get-text-property (point) 'username))
+ (text (get-text-property (point) 'text))
+ (copy (if (and username text)
+ (format "%s: %s" username text)
+ nil)))
+ (cond
+ ((null copy)
+ nil)
+ ((and kill-ring (string= copy (current-kill 0 t)))
+ (message "Already copied %s" copy))
+ (t
+ (kill-new copy)
+ (message "Copied %s" copy)
+ copy))))
+
(defun twittering-suspend ()
"Suspend twittering-mode then switch to another buffer."
(interactive)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment