Hi, now that I have a dual head I must finally migrate to a more capable sawfish version. To see how big the differences are, I commented out the things that choke, but the one that would really hurt me is the little jewel I attached. To me, 30 years an Emacs fan, especially grow-pack would be useless without prefix arguments! Afaict various commands accept them, but none set them. Not sure if the way I did this 10 years ago still matches your programming style. My bind-prefix-keys function that must be called in the rc file is debatable. If I were to choose, those key bindings would be standard — feel free to integrate this in sawfish.wm.commands. But if you find that too intrusive, you are welcome to have a more elegant, i.e. easily customizable, way of setting this. regards — Daniel coralament / best Grötens / liebe Grüße / best regards / elkorajn salutojn Daniel Pfeiffer -- lerne / learn / apprends / lär dig / ucz się Esperanto: http://lernu.net / http://ikurso.net |
#| prefix.jl -- emacs style prefix arguments Copyright (C) 2001, 02 Daniel Pfeiffer <occitan esperanto org> This file is part of sawfish. sawfish is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. sawfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with sawfish; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |# (define-structure sawfish.wm.commands.prefix (export numeric-arg negative-arg universal-arg set-prefix-arg bind-prefix-keys) (open rep sawfish.wm.commands sawfish.wm.events) (define (numeric-arg digit arg) "Add a digit to the prefix-arg." (setq digit (string->number (substring digit (1- (length digit)))) prefix-arg (cond ((numberp arg) ((if (< arg 0) - +) (* arg 10) digit)) ((eq arg '-) (- digit)) (digit)) this-command last-command)) (define (negative-arg arg) "Negate the prefix-arg." (setq prefix-arg (cond ((numberp arg) (* arg -1)) ((eq arg '-) nil) ('-)) this-command last-command)) (define (universal-arg arg) "Set a special universal prefix-arg which usually increases by factor 4." (setq prefix-arg (cond ((consp arg) (rplaca arg (* 4 (car arg))) arg) ((cons 4 nil))) this-command last-command)) (define (set-prefix-arg arg) "Prompt for the prefix-arg. You can enter a positive or negative number, or nothing to unset the prefix arg." (require 'sawfish.wm.util.prompt) (let ((str (if arg (number->string (prefix-numeric-argument arg)) "")) (cmd last-command)) (setq arg ()) (while (not (numberp arg)) (setq str (prompt "Enter numeric prefix: " str) arg (read-from-string str))) (setq prefix-arg arg this-command cmd))) (define-command 'numeric-arg numeric-arg #:spec "E\nP") (define-command 'negative-arg negative-arg #:spec "P") (define-command 'universal-arg universal-arg #:spec "P") (define-command 'set-prefix-arg set-prefix-arg #:spec "P") (define (bind-prefix-keys) (bind-keys global-keymap "W-0" 'numeric-arg "W-1" 'numeric-arg "W-2" 'numeric-arg "W-3" 'numeric-arg "W-4" 'numeric-arg "W-5" 'numeric-arg "W-6" 'numeric-arg "W-7" 'numeric-arg "W-8" 'numeric-arg "W-9" 'numeric-arg "W--" 'negative-arg "W-u" 'universal-arg)))