Emacs Lisp

Emacs Lisp é um dialeto da linguagem de programação Lisp , usada entre outras pelos editores de texto GNU Emacs e XEmacs (que terão o nome comum de Emacs neste artigo). É usado para a implementação da maioria dos recursos de edição padrão do Emacs, o resto sendo escrito em C. Os usuários do Emacs geralmente escrevem código em Lisp do Emacs para personalizar e adicionar funcionalidade ao Emacs.

Emacs Lisp é algumas vezes referido como "ELisp", o que cria o risco de confusão com outro dialeto de Lisp com o mesmo nome, mas não tendo nada a ver com isso. Em termos de funcionalidade, o Emacs Lisp é semelhante aos dialetos MacLisp e Common Lisp . Ele suporta programação funcional e imperativa , por isso é uma linguagem multiparadigma. Lisp foi escolhida como uma linguagem de extensão por seus muitos recursos, incluindo sua capacidade de tratar funções como dados.

Existem várias maneiras de personalizar o Emacs, o usuário não precisa saber programar em Emacs Lisp. De fato, desde a versão 20, GNU Emacs inclui Personalizar , que permite aos usuários definir variáveis por meio de uma interface gráfica. Personalizar tem funcionalidade limitada, entretanto, e é, portanto, reservado para pequenas mudanças no comportamento do Emacs. Os usuários que desejam aproveitar ao máximo a extensibilidade do Emacs, em vez disso, escreverão seus próprios módulos no Emacs Lisp.

Exemplo

Aqui está um exemplo simples de uma extensão para Emacs escrita em Emacs Lisp. No Emacs, a área de edição pode ser separada em várias áreas chamadas "janelas", cada uma das quais pode exibir um buffer diferente. Um buffer é aproximadamente uma área de texto carregada na memória pelo Emacs a partir de uma fonte (um arquivo, por exemplo). O buffer pode, quando solicitado pelo usuário, ser salvo em um arquivo.

O comando do usuário para abrir uma nova janela vertical é Cx 2 (que significa "pressione a tecla x enquanto mantém a tecla de controle pressionada e, a seguir, pressione a tecla 2  "). Este comando chama uma função Emacs Lisp, dividir a janela verticalmente . Normalmente, quando a nova janela aparece, ela é exibida da mesma forma que o buffer anterior . Suponha que queremos que ele exiba o conteúdo do próximo buffer disponível. Para conseguir isso, o usuário escreve o seguinte código Emacs Lisp, em um arquivo fonte ou em um buffer vazio:

(defun my-split-window-function () (interactive) (split-window-vertically) (set-window-buffer (next-window) (other-buffer))) (global-set-key "\C-x2" 'my-split-window-function)

A primeira expressão, (defun ...) , define uma nova função chamada my-split-window-function que primeiro chama a função split-window-verticalmente (a antiga função de separação de janela) e, em seguida, diz à nova janela para exibir outro buffer . A segunda expressão, (global-set-key ...) , reatribui o atalho de teclado "Cx 2" à nova função.

Veja também

Artigos relacionados

links externos