Skip to content

Latest commit

 

History

History
131 lines (111 loc) · 5.44 KB

README_pt.org

File metadata and controls

131 lines (111 loc) · 5.44 KB

Índice

O Que Faz

Cool Moves é um pacote para Emacs de movimentação de texto. Ele usa funções básicas para mover palavras, linhas, sentenças, parágrafos e expressões simbólicas. Veja o Cool Moves em ação.

Motivos

Sou usuário do pacote Evil e escrevo todo meu texto em prosa no Emacs. Este pacote foi inpirado por esta e esta postagens. Ele usa funções básicas casa para movimentar dinamicamente linhas, palavras, parágrafos, sentenças e expressões simbólicas. Poder reorganizar minha prosa facilmente é extremamente importante para mim. Essa é a primeira vez que público código e toda crítica é bem vinda!

Instalação

Com o use-package

Coloque o arquivo `cool-moves.el` em seu diretório de configuração e substitua `~/.emacs.d/lisp/cool-moves` por este caminho. Veja o exemplo (os atalhos de teclado são opcionais):

(use-package cool-moves
:load-path "~/.emacs.d/lisp/cool-moves"
:config
(general-define-key
 :keymaps 'override
"<C-down>" 'cool-moves/paragraph-forward
"<C-up>" 'cool-moves/paragraph-backward
"C-S-j" 'cool-moves/line-forward
"C-S-k" 'cool-moves/line-backward
"C-M-n" 'cool-moves/word-forward
"C-M-p" 'cool-moves/word-backwards))

Sem use-package

Lembre de substituir `~/.emacs.d/lisp/cool-moves`. O resto é simples.

(add-to-list 'load-path "~/.emacs.d/lisp/cool-moves")
(load "cool-moves")

(general-define-key
 :keymaps 'override
"<C-down>" 'cool-moves/paragraph-forward
"<C-up>" 'cool-moves/paragraph-backward
"C-S-j" 'cool-moves/line-forward
"C-S-k" 'cool-moves/line-backward
"C-M-n" 'cool-moves/word-forward
"C-M-p" 'cool-moves/word-backwards)

Comandos

Cada um desses comandos move algo para frente ou para trás. Este pacote não possui keybindings padrão, mas você pode seguir as sugestões deste documento.

ComandoTradução
cool-moves/character-backwardcaractere ←
cool-moves/character-forwardcaractere →
cool-moves/word-backwardspalavra ←
cool-moves/word-forwardpalavra →
cool-moves/sentence-backwardsentença ←
cool-moves/sentence-forwardsentença →
cool-moves/line-backwardlinha ←
cool-moves/line-forwardlinha →
cool-moves/paragraph-forwardparágrafo ←
cool-moves/paragraph-backwardparágrafo →
cool-moves/sexp-backwardexpressão ←
cool-moves/sexp-forwardexpressão →

Configurações

Além dos atalhos de teclado, não há configurações a fazer.

Atalhos de teclado sugeridos

São as mesmas de seção anteriores, aqui repetidas apenas para fácil referência. Eu uso o excelente general.el para minhas keybidings, então:

(general-define-key
:keymaps 'override
"C-S-j" 'cool-moves/line-forward
"C-M-n" 'cool-moves/word-forward
"C-S-k" 'cool-moves/line-backward
"C-M-p" 'cool-moves/word-backwards
"<C-up>" 'cool-moves/paragraph-backward
"<C-down>" 'cool-moves/paragraph-forward)

Se você não usa o General e não sabem como criar keybidings, este artigo pode ser útil.

Hydra sugerida

Você pode usar um Hydra para deixar os comandos mais acessíveis.

(defhydra hydra-text-motions (:color amaranth :hint nil :foreign-keys nil)
"
^
	^Motions^
	-------------------------
	_l_: line ↓      _w_: word →
	_L_: line ↑      _W_: word ←
	_p_: par  ↓      _c_: char →
	_P_: par  ↑      _C_: char ←
	_s_: sentence →  _x_: sexp →
	_S_: sentence ←  _X_: sexp ←

"

("<escape>" nil)
("u" nil)

("l" cool-moves/line-forward)
("L" cool-moves/line-backward)

("p" cool-moves/paragraph-forward)
("P" cool-moves/paragraph-backward)

("w" cool-moves/word-forward)
("W" cool-moves/word-backwards)

("c" cool-moves/character-forward)
("C" cool-moves/character-backward)

("s" cool-moves/sentence-forward)
("S" cool-moves/sentence-backward)

("x" cool-moves/sexp-forward)
("X" cool-moves/sexp-backward))

Diferenças com o pacote drag-stuff

drag-stuff é maior, mais robusto e capaz de arrastar regiões. Ao contrário de cool-moves, não move sentenças ou caracteres. Ao tentar usar drag-stuff-right na primeira palavra de uma linha, a mesma é trocada com a última palavra do paragrafo anterior. De todo modo, drag-stuff é claramente um bom modo/plugin que faz muito com poucos comandos, mas em edição de texto previsibilidade é essencial e eu não preço da complexidade extra. Eu não usei nenhum código deste pacote, mas minhas funções foram muito inspiradas no artigo de Bozhidar Batsov mencionado anteriormente.