como ligar uma chave a mais de uma operação no emacs

2

Estou usando o emacs há anos, mas sou relativamente novo na personalização do lisp (além de inserir linhas de outros scripts emacs / instruções de instalação de pacotes). Eu programei esquema antes, então estou um pouco familiar, mas isso também foi há muito tempo.

Como mapear uma chave para mais de uma operação? Estou adaptando o formulário de código lisp de tamanhos de fontes do ciclo: link

exceto que eu gostaria de maximizar a janela (estou usando o Mac OSX) após o redimensionamento da fonte.

Eu posso maximizar a janela usando o maxframe:

(require 'maxframe)
(add-hook 'window-setup-hook 'maximize-frame t)

Como adiciono isso às associações de teclas de tamanho de fonte. Eu gostaria de fazer algo como:

(define-key global-map (read-kbd-macro "C-0")   
  (lambda()
    'font-zoom-reset-font-size
    (add-hook 'window-setup-hook 'maximize-frame t))
)

Isso não está correto porque define-key está esperando um tipo diferente. Isto é provavelmente muito trivial depois de ver um exemplo ...

    
por daj 13.12.2011 / 18:59

1 resposta

3

Atualizar

Você está muito perto - só precisa definir sua função como interativa, incluindo a linha de uma única linha(interactive) e fazer a chamada para font-zoom-reset-font-size chamar a função, não apenas uma referência à função:

(define-key global-map (read-kbd-macro "C-0")   
  (lambda()
    (interactive)
    (font-zoom-reset-font-size)
    (add-hook 'window-setup-hook 'maximize-frame t))
)

Resposta original (e ainda válida)

Você pode definir uma função com suas várias etapas e depois vincular a chave a essa função. Algo como:

(defun zoom-font-and-max()
  (interactive)
  (font-zoom-reset-font-size)
  (add-hook 'window-setup-hook 'maximize-frame t))


(global-set-key (kbd "C-0") 'zoom-font-and-max)
    
por 13.12.2011 / 20:00

Tags