[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: All-caps
From: |
Joe Corneli |
Subject: |
Re: All-caps |
Date: |
Sat, 11 Sep 2004 20:59:15 -0500 |
> I'm writing a major mode for building FOCUS reports for our S/390. I'd
> like to make all user input upper-case without using the caps-lock key.
> Does anybody know a good way to do this short of re-mapping all of the
> lowercase letters to their uppercase equivalents?
No, that's the best way to do it. But you can just use Joe
Cornell's caps-mode.el minor mode, posted to gnu.emacs.sources
last month (and consider using the suggestions posted by me and
Kim Storm in followup messages).
Thanks for the suggestions and the ping Kevin. BTW, its "CORNELI"
:). Here is a revised version of the mode, incorporating everyone's
nice suggestions and one additional fix, and giving credit to all.
Tested GNU Emacs 21.3.1 (i386-pc-linux-gnu, X toolkit) of 2003-10-31
on raven, modified by Debian
;;; caps-mode.el -- (minor mode) letters are inserted capitalized
;; Copyright (C) 2004 Joe Corneli <jcorneli@math.utexas.edu>,
;; Christoph Conrad <nospam@spamgourmet.com>, Kevin Rodgers
;; <ihs_4664@yahoo.com>, Kim F. Storm <no-spam@cua.dk>
;; Time-stamp: <jac -- Sat Aug 7 13:05:16 CDT 2004>
;; This file is not part of GNU Emacs, but it is distributed under
;; the same terms as GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; This is a simple minor mode in which all letters are inserted in
;; captialized form. I haven't bothered with letters outside of
;; ASCII.
;; Note that this mode has absolutely nothing to do with the toggle
;; state of your capslock.
;;; Code:
(defun caps-mode-self-insert-command (&optional n)
"Like `self-insert-command', but upcase the the typed character."
(interactive "p")
(insert-char (upcase last-command-char) n))
(defvar caps-mode-map
(let ((map (make-sparse-keymap)))
(mapc (lambda (char)
(define-key
map
(char-to-string char)
'caps-mode-self-insert-command))
"abcdefghijklmnopqrstuvwxyz")
map))
(define-minor-mode caps-mode
"Toggle caps mode.
With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode.
When caps mode is enabled, all letters are inserted in their
capitalized form."
:init-value nil
:lighter " Caps")
;;; caps-mode.el ends here