home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / elisp / functions / swap-bsdel.el < prev    next >
Encoding:
Text File  |  1990-07-22  |  3.4 KB  |  85 lines

  1. ;From ark1!uakari.primate.wisc.edu!zaphod.mps.ohio-state.edu!rpi!netserv2!deven Mon Feb 12 10:18:02 1990
  2. ;Article 1126 of gnu.emacs:
  3. ;Path: ark1!uakari.primate.wisc.edu!zaphod.mps.ohio-state.edu!rpi!netserv2!deven
  4. ;From deven@rpi.edu (Deven T. Corzine)
  5. ;Newsgroups: gnu.emacs
  6. ;Subject: Re: how to use emacs with 'backspace' as 'delete'
  7. ;Message-ID: <DEVEN.90Feb9200209@netserv2.rpi.edu>
  8. ;Date: 10 Feb 90 01:01:42 GMT
  9. ;References: <7813@chaph.usc.edu> <1990Feb3.183918.17186@eagle.lerc.nasa.gov>
  10. ;Organization: Rensselaer Polytechnic Institute, Troy, NY
  11. ;Lines: 69
  12. ;In-Reply-To: mikef@sarah.lerc.nasa.gov's message of 3 Feb 90 18:39:18 GMT
  13. ;
  14. ;
  15. ;On 3 Feb 90 18:39:18 GMT, mikef@sarah.lerc.nasa.gov (Mike J. Fuller) said:
  16. ;
  17. ;mikef> I'm posting this because I have seen more than a few requests
  18. ;mikef> for this recently.  Just put this in your .emacs file:
  19. ;
  20. ;mikef> (progn
  21. ;mikef>   (setq keyboard-translate-table (make-string 128 0))
  22. ;mikef>   (let ((i 0))
  23. ;mikef>     (while (< i 128)
  24. ;mikef>       (aset keyboard-translate-table i i)
  25. ;mikef>       (setq i (1+ i)))))
  26. ;mikef> (aset keyboard-translate-table ?\^? ?\^h)
  27. ;mikef> (aset keyboard-translate-table ?\^h ?\^?)
  28. ;
  29. ;This seems to be the solution everyone has posted.  I wrote a somewhat
  30. ;more extensive function, which is intended to work even if
  31. ;keyboard-translate-table already exists, and it swaps the real
  32. ;bindings of backspace and delete, not hardcoding the real values.
  33. ;Also, the function can be called interactively to swap the keys at any
  34. ;time, and can be called noninteractively, forcing swapped or unswapped.
  35. ;(When forcing one or the other mapping, it does use hardcoded bs or
  36. ;del chars instead of what's in their positions in the current
  37. ;keyboard-translate-table.
  38. ;
  39. ;Here is the function:
  40.  
  41. (defun swap-bs-del (&optional arg)
  42.   "Accepts single optional argument.  If no argument, or nil, swaps values
  43. for backspace and delete keys in keybpoard-translate-table, initializing
  44. table if necessary.  If arg is t or an integer greater than 0, forces a
  45. mapping of bs->del and del->bs.  Any other argument forces untranslated
  46. mapping of bs->bs and del->del."
  47.   (interactive)
  48.   ;; initialize keyboard-translate-table
  49.   (if (not keyboard-translate-table)
  50.       (setq keyboard-translate-table ""))
  51.   (let ((char (length keyboard-translate-table)))
  52.     (while (< char 128)
  53.       (setq keyboard-translate-table
  54.             (concat keyboard-translate-table (char-to-string char))
  55.             char (1+ char))))
  56.   ;; check arg
  57.   (if (not arg)
  58.       ;; no arg or nil, swap backspace and delete
  59.       (let ((bs (aref keyboard-translate-table 8))
  60.             (del (aref keyboard-translate-table 127)))
  61.         (aset keyboard-translate-table 8 del)
  62.         (aset keyboard-translate-table 127 bs))
  63.     ;; argument given
  64.     (if (or (eq arg t)
  65.             (and (integerp arg)
  66.                  (> arg 0)))
  67.         ;; t or integer greater than zero, force bs->del, del->bs
  68.         (progn
  69.           (aset keyboard-translate-table 127 8)
  70.           (aset keyboard-translate-table 8 127))
  71.       ;; other argument, force untranslated bs->bs, del->del
  72.       (aset keyboard-translate-table 8 8)
  73.       (aset keyboard-translate-table 127 127))))
  74.  
  75. ;Enjoy!
  76. ;
  77. ;Deven
  78. ;-- 
  79. ;Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
  80. ;Snail:  2151 12th St. Apt. 4, Troy, NY 12180   Phone:  (518) 274-0327
  81. ;Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
  82. ;Simple things should be simple and complex things should be possible.
  83.  
  84.  
  85.