Несмещенные символы в Emacs - PullRequest
6 голосов
/ 08 июня 2011

Мне бы хотелось, чтобы второстепенный режим позволял смещенным символам на цифровых клавишах быть доступным без смещения (и затем сдвигать цифры). Кажется, это может быть полезно с кодом Perl ($, @,% и т. Д.). В идеале должна быть клавиша для переключения этого режима. Вроде как колпачок, но только для цифровых клавиш.

Такой режим уже существует?

Ответы [ 3 ]

9 голосов
/ 08 июня 2011

Один способ сделать свой собственный бросок будет примерно таким:

(define-minor-mode snoopy-mode
  "Toggle snoopy mode.
   With no argument, this command toggles the mode.
   Non-null prefix argument turns on the mode.
   Null prefix argument turns off the mode."
  ;;   The initial value.
  nil
  ;; The indicator for the mode line.
  " Snoopy"
  ;; The minor mode bindings.
  '(("1" . (lambda () (interactive) (insert-char ?! 1)))
    ("!" . (lambda () (interactive) (insert-char ?1 1)))
    ;;etc
))

См. второстепенные режимы и раскладки клавиш .

5 голосов
/ 08 июня 2011

Большое спасибо Джейби за ответ.Вот расширенное определение для всех чисел:

(define-minor-mode shifted-numbers-mode
  "Toggle shifted numbers mode."
  nil
  " shifted"
  '(("1" . (lambda () (interactive) (insert-char ?! 1)))
    ("2" . (lambda () (interactive) (insert-char ?@ 1)))
    ("3" . (lambda () (interactive) (insert-char ?# 1)))
    ("4" . (lambda () (interactive) (insert-char ?$ 1)))
    ("5" . (lambda () (interactive) (insert-char ?% 1)))
    ("6" . (lambda () (interactive) (insert-char ?^ 1)))
    ("7" . (lambda () (interactive) (insert-char ?& 1)))
    ("8" . (lambda () (interactive) (insert-char ?* 1)))
    ("9" . (lambda () (interactive) (insert-char ?( 1)))
    ("0" . (lambda () (interactive) (insert-char ?) 1)))

    ("!" . (lambda () (interactive) (insert-char ?1 1)))
    ("@" . (lambda () (interactive) (insert-char ?2 1)))
    ("#" . (lambda () (interactive) (insert-char ?3 1)))
    ("$" . (lambda () (interactive) (insert-char ?4 1)))
    ("%" . (lambda () (interactive) (insert-char ?5 1)))
    ("^" . (lambda () (interactive) (insert-char ?6 1)))
    ("&" . (lambda () (interactive) (insert-char ?7 1)))
    ("*" . (lambda () (interactive) (insert-char ?8 1)))
    ("(" . (lambda () (interactive) (insert-char ?9 1)))
    (")" . (lambda () (interactive) (insert-char ?0 1)))))

В Perl скобки часто встречаются чаще, чем скобки, поэтому вам также может понадобиться:

("[" . (lambda () (interactive) (insert-char ?{ 1)))
("]" . (lambda () (interactive) (insert-char ?} 1)))

("{" . (lambda () (interactive) (insert-char ?[ 1)))
("}" . (lambda () (interactive) (insert-char ?] 1)))
1 голос
/ 08 июня 2011

Это не полное решение, но мой приятель написал второстепенный режим, который автоматически вставляет тире или подчеркивание в зависимости от контекста: Режим Smart-Dash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...