all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* window-specific Caps Lock
@ 2009-11-08  8:41 Girish Kulkarni
  2009-11-08 11:01 ` Pascal J. Bourguignon
  2009-11-08 19:21 ` Andreas Politz
  0 siblings, 2 replies; 4+ messages in thread
From: Girish Kulkarni @ 2009-11-08  8:41 UTC (permalink / raw
  To: help-gnu-emacs

Hi,

I spend much time programming in Fortran 90 on my system, which is
Debian 5.0 with GNOME.  I type the code in GNU Emacs and I prefer
typing Fortran 90 ALL CAPS.

This usually means that I need to toggle the `Caps Lock' switch on my
keyboard every time I switch from the Emacs window to the terminal
(which for me is Xterm).

Is there a way I can set things up so that while I'm typing Fortran
90, text will automatically be entered ALL CAPS in the Emacs buffer,
but not in any other windows?  Maybe by telling Emacs?

Thanks,
Girish.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: window-specific Caps Lock
  2009-11-08  8:41 window-specific Caps Lock Girish Kulkarni
@ 2009-11-08 11:01 ` Pascal J. Bourguignon
  2009-11-13 11:29   ` Girish Kulkarni
  2009-11-08 19:21 ` Andreas Politz
  1 sibling, 1 reply; 4+ messages in thread
From: Pascal J. Bourguignon @ 2009-11-08 11:01 UTC (permalink / raw
  To: help-gnu-emacs

Girish Kulkarni <geeree@gmail.com> writes:

> Hi,
>
> I spend much time programming in Fortran 90 on my system, which is
> Debian 5.0 with GNOME.  I type the code in GNU Emacs and I prefer
> typing Fortran 90 ALL CAPS.
>
> This usually means that I need to toggle the `Caps Lock' switch on my
> keyboard every time I switch from the Emacs window to the terminal
> (which for me is Xterm).
>
> Is there a way I can set things up so that while I'm typing Fortran
> 90, text will automatically be entered ALL CAPS in the Emacs buffer,
> but not in any other windows?  Maybe by telling Emacs?

Use caps-mode:

(defun caps-mode-self-insert-command (&optional n)
  "Like `self-insert-command', but uppercase the the typed character."
  (interactive "p")
  (insert-char (upcase last-command-char) n))

(defvar caps-mode-map nil)

(when (fboundp 'define-minor-mode)
  (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"
    (setq caps-mode-map
          (let ((map (make-sparse-keymap)))
            (substitute-key-definition 'self-insert-command
                                       'caps-mode-self-insert-command
                                       map global-map)
            map))
    (if caps-mode
        (add-to-list 'minor-mode-map-alist (cons 'caps-mode caps-mode-map))
        (setq minor-mode-map-alist
              (delete (assoc 'caps-mode minor-mode-map-alist)
                      minor-mode-map-alist)))))


-- 
__Pascal Bourguignon__


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: window-specific Caps Lock
  2009-11-08  8:41 window-specific Caps Lock Girish Kulkarni
  2009-11-08 11:01 ` Pascal J. Bourguignon
@ 2009-11-08 19:21 ` Andreas Politz
  1 sibling, 0 replies; 4+ messages in thread
From: Andreas Politz @ 2009-11-08 19:21 UTC (permalink / raw
  To: help-gnu-emacs

Girish Kulkarni <geeree@gmail.com> writes:

> Hi,
>
> I spend much time programming in Fortran 90 on my system, which is
> Debian 5.0 with GNOME.  I type the code in GNU Emacs and I prefer
> typing Fortran 90 ALL CAPS.
>
> This usually means that I need to toggle the `Caps Lock' switch on my
> keyboard every time I switch from the Emacs window to the terminal
> (which for me is Xterm).
>
> Is there a way I can set things up so that while I'm typing Fortran
> 90, text will automatically be entered ALL CAPS in the Emacs buffer,
> but not in any other windows?  Maybe by telling Emacs?
>
> Thanks,
> Girish.


How about inverting the meaning of shift ? In case you need other
non-ascii characters you'll have to extend this.

(defvar inverse-case-mode-map
  (let ((km (make-sparse-keymap))
        (ch ?A))
    (while (<= ch ?z)
      (define-key km (vector ch) 'self-insert-inverse-case-command)
      (setq ch (1+ ch))
      (if (eq ch ?Z)
          (setq ch ?a)))
    km))

(defun self-insert-inverse-case-command (arg)
  (interactive "p")
  (let ((last-command-event
         (+ last-command-event
            (if (equal (downcase (string last-command-event))
                       (string last-command-event))
                (- ?A ?a)
              (- ?a ?A)))))
    (call-interactively 'self-insert-command)))

(define-minor-mode inverse-case-mode
  nil nil " InvCase")


;;;

(add-hook 'fortran-mode #'(lambda nil (inverse-case-mode 1)))
...or whatever.

-ap






^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: window-specific Caps Lock
  2009-11-08 11:01 ` Pascal J. Bourguignon
@ 2009-11-13 11:29   ` Girish Kulkarni
  0 siblings, 0 replies; 4+ messages in thread
From: Girish Kulkarni @ 2009-11-13 11:29 UTC (permalink / raw
  To: help-gnu-emacs

On Nov 8, 4:01 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> Use caps-mode:

Thanks for the help!


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-11-13 11:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-08  8:41 window-specific Caps Lock Girish Kulkarni
2009-11-08 11:01 ` Pascal J. Bourguignon
2009-11-13 11:29   ` Girish Kulkarni
2009-11-08 19:21 ` Andreas Politz

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.