aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2012-12-06 21:25:08 +0100
committerJoakim Verona2012-12-06 21:25:08 +0100
commitb43215c5b50002dbc28e652b8922754a67c777af (patch)
tree3cd2e2dc8b84119136246f695f8929c912f40970
parentff176d434419a9366656c36d89f0382f2c5b5885 (diff)
parent1812c7246ef5ab9256adffd4d2b5eabeb16757d1 (diff)
downloademacs-b43215c5b50002dbc28e652b8922754a67c777af.tar.gz
emacs-b43215c5b50002dbc28e652b8922754a67c777af.zip
auto upstream
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/ses.el24
2 files changed, 20 insertions, 11 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 58b7e443798..41c535dc889 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * ses.el: Use advice-add/remove.
4 (ses--advice-copy-region-as-kill, ses--advice-yank): New functions.
5 (copy-region-as-kill, yank): Use advice-add.
6 (ses-unload-function): Use advice-remove.
7
12012-12-06 Jonas Bernoulli <jonas@bernoul.li> 82012-12-06 Jonas Bernoulli <jonas@bernoul.li>
2 9
3 * button.el: Make them work in header-lines (bug#12817). 10 * button.el: Make them work in header-lines (bug#12817).
diff --git a/lisp/ses.el b/lisp/ses.el
index a0b69232e19..80260185942 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2718,8 +2718,9 @@ inserts a new row if at bottom of print area. Repeat COUNT times."
2718;; Cut and paste, import and export 2718;; Cut and paste, import and export
2719;;---------------------------------------------------------------------------- 2719;;----------------------------------------------------------------------------
2720 2720
2721(defadvice copy-region-as-kill (around ses-copy-region-as-kill 2721(defun ses--advice-copy-region-as-kill (crak-fun beg end &rest args)
2722 activate preactivate) 2722 ;; FIXME: Why doesn't it make sense to copy read-only or
2723 ;; intangible attributes? They're removed upon yank!
2723 "It doesn't make sense to copy read-only or intangible attributes into the 2724 "It doesn't make sense to copy read-only or intangible attributes into the
2724kill ring. It probably doesn't make sense to copy keymap properties. 2725kill ring. It probably doesn't make sense to copy keymap properties.
2725We'll assume copying front-sticky properties doesn't make sense, either. 2726We'll assume copying front-sticky properties doesn't make sense, either.
@@ -2730,14 +2731,15 @@ hard to override how mouse-1 works."
2730 (let ((temp beg)) 2731 (let ((temp beg))
2731 (setq beg end 2732 (setq beg end
2732 end temp))) 2733 end temp)))
2733 (if (not (and (eq major-mode 'ses-mode) 2734 (if (not (and (derived-mode-p 'ses-mode)
2734 (eq (get-text-property beg 'read-only) 'ses) 2735 (eq (get-text-property beg 'read-only) 'ses)
2735 (eq (get-text-property (1- end) 'read-only) 'ses))) 2736 (eq (get-text-property (1- end) 'read-only) 'ses)))
2736 ad-do-it ; Normal copy-region-as-kill. 2737 (apply crak-fun beg end args) ; Normal copy-region-as-kill.
2737 (kill-new (ses-copy-region beg end)) 2738 (kill-new (ses-copy-region beg end))
2738 (if transient-mark-mode 2739 (if transient-mark-mode
2739 (setq deactivate-mark t)) 2740 (setq deactivate-mark t))
2740 nil)) 2741 nil))
2742(advice-add 'copy-region-as-kill :around #'ses--advice-copy-region-as-kill)
2741 2743
2742(defun ses-copy-region (beg end) 2744(defun ses-copy-region (beg end)
2743 "Treat the region as rectangular. Convert the intangible attributes to 2745 "Treat the region as rectangular. Convert the intangible attributes to
@@ -2801,7 +2803,7 @@ We clear the killed cells instead of deleting them."
2801 (ses-clear-cell row col)) 2803 (ses-clear-cell row col))
2802 (ses-jump (car ses--curcell))) 2804 (ses-jump (car ses--curcell)))
2803 2805
2804(defadvice yank (around ses-yank activate preactivate) 2806(defun ses--advice-yank (yank-fun &optional arg &rest args)
2805 "In SES mode, the yanked text is inserted as cells. 2807 "In SES mode, the yanked text is inserted as cells.
2806 2808
2807If the text contains 'ses attributes (meaning it went to the kill-ring from a 2809If the text contains 'ses attributes (meaning it went to the kill-ring from a
@@ -2819,9 +2821,9 @@ When inserting formulas, the text is treated as a string constant if it doesn't
2819make sense as a sexp or would otherwise be considered a symbol. Use 'sym to 2821make sense as a sexp or would otherwise be considered a symbol. Use 'sym to
2820explicitly insert a symbol, or use the C-u prefix to treat all unmarked words 2822explicitly insert a symbol, or use the C-u prefix to treat all unmarked words
2821as symbols." 2823as symbols."
2822 (if (not (and (eq major-mode 'ses-mode) 2824 (if (not (and (derived-mode-p 'ses-mode)
2823 (eq (get-text-property (point) 'keymap) 'ses-mode-print-map))) 2825 (eq (get-text-property (point) 'keymap) 'ses-mode-print-map)))
2824 ad-do-it ; Normal non-SES yank. 2826 (apply yank-fun arg args) ; Normal non-SES yank.
2825 (ses-check-curcell 'end) 2827 (ses-check-curcell 'end)
2826 (push-mark (point)) 2828 (push-mark (point))
2827 (let ((text (current-kill (cond 2829 (let ((text (current-kill (cond
@@ -2839,6 +2841,7 @@ as symbols."
2839 arg))) 2841 arg)))
2840 (if (consp arg) 2842 (if (consp arg)
2841 (exchange-point-and-mark)))) 2843 (exchange-point-and-mark))))
2844(advice-add 'yank :around #'ses--advice-yank)
2842 2845
2843(defun ses-yank-pop (arg) 2846(defun ses-yank-pop (arg)
2844 "Replace just-yanked stretch of killed text with a different stretch. 2847 "Replace just-yanked stretch of killed text with a different stretch.
@@ -3586,10 +3589,9 @@ current column and continues until the next nonblank column."
3586 3589
3587(defun ses-unload-function () 3590(defun ses-unload-function ()
3588 "Unload the Simple Emacs Spreadsheet." 3591 "Unload the Simple Emacs Spreadsheet."
3589 (dolist (fun '(copy-region-as-kill yank)) 3592 (advice-remove 'yank #'ses--advice-yank)
3590 (ad-remove-advice fun 'around (intern (concat "ses-" (symbol-name fun)))) 3593 (advice-remove 'copy-region-as-kill #'ses--advice-copy-region-as-kill)
3591 (ad-update fun)) 3594 ;; Continue standard unloading.
3592 ;; continue standard unloading
3593 nil) 3595 nil)
3594 3596
3595(provide 'ses) 3597(provide 'ses)