Instantly share code, notes, and snippets.
Created
September 16, 2010 19:05
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save cvmat/582957 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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