Small edit to custom images for better text alignment.
* etc/images/custom/down-pushed.xpm, etc/images/custom/down.xpm:
* etc/images/custom/right-pushed.xpm:
* etc/images/custom/right-pushed.xpm: Increase height by four
pixels, to improve text alignment.
Tutorial do Emacs. Veja no fim as condi苺es para c�pia.Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezesnomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ouALT). Antes de escrever isso tudo toda vez, usaremos as seguintesabrevia苺es: C-<chr> Significa pressionar a tecla CONTROL enquanto digitar o caractere <chr>. Assim, C-f seria: Pressionar a tecla CONTROL e digitar f. M-<chr> Significa pressionar a tecla META, EDIT ou ALT enquanto digitar <chr>. Se n�o tiver META, EDIT ou ALT, no lugar digite ESC e depois <chr>. Escrevemos <ESC> para tecla ESC.Nota importante: para terminar a sess�o do Emacs, digite C-x C-c. (Doiscaracteres.) Os caracteres ">>" na margem esquerda indicam dire苺es paravoc� tentar usar um comando. Por exemplo:<<Linhas vazias inseridas ao redor da linha seguinte porajuda-com-tutorial>>[Metade da p�gina em branco para prop�sitos did�ticos. O texto continuaabaixo]>> Agora digite C-v (Ver pr�xima tela) para ir para pr�xima tela. (v� em frente, fa�a isso pressionando a tecla CONTROL enquanto digitar v). De agora em diante, voc� deve fazer isso de novo sempre que voc� terminar de ler a tela.Note que tem uma sobreposi艫o de duas linhas quando voc� move de tela emtela; isso fornece uma continuidade para que voc� continue lendo otexto.A primeira coisa que voc� precisa saber � como se mover de um lugar aoutro no texto. Voc� j� sabe como mover para pr�xima tela, comC-v. Para mover para tr�s uma tela, digite M-v (pressione a teclaMETA enquanto digita v, ou digite <ESC>v se o seu teclado n�o tiver a teclaMETA, EDIT ou ALT).>> Tente digitar M-v e depois C-v, algumas vezes.* SUM�RIO---------Os comandos a seguir s�o �teis para visualizar telas inteiras C-v Move para tela inteira posterior M-x Move para tela inteira anterior C-l Limpa a tela e re-mostr� todo o texto, movendo o texto ao redor do cursor para o centro da tela. (Isso � control-L, n�o control-1.)>> Encontre o cursor, e note o texto que est� perto dele. Digite C-l. Encontre o cursor novamente e perceba que o mesmo texto continua perto do cursor.* CONTROLE B�SICO DO CURSOR---------------------------Movendo de uma tela inteira para outra tela cheia � �til, mas como voc�move para um lugar especifico com o mesmo texto na tela?Existem diversas maneiras para voc� poder fazer isso. A maneira maisb�sica � utilizar os comandos C-p, C-b, C-f e C-n. Cada um dessescomandos movem o cursor uma linha ou coluna na tela em uma dire艫oparticular. Aqui est� uma tabela mostrando esses quatro comandos e asdire苺es que eles movem: Linha anterior, C-p : : Traz, C-b .... Posi艫o corrente do cursor .... Frente, C-f : : Linha posterior, C-n>> Mova o cursor para a linha no meio do diagrama acima utilizando C-n ou C-p. Digite C-l para ver o diagrama inteiro centralizado na tela.Voc� provavelmente achar� isso f�cil pensando neles pela letra: P paraPrevious (anterior), N para Next (Posterior), B para Backward (tr�s) e Fpara Forward (frente). Estes s�o os comandos b�sicos de posicionamentode cursor e voc� os estar� utilizando a TODO tempo, ent�o seria �timose voc� os aprendesse agora.>> Fa�a alguns C-n's para trazer o cursor abaixo desta linha.>> Mova para a linha com C-f's e depois para cima com C-p's. Veja o que C-p faz quando o cursor est� no meio da linha.Cada linha de texto termina com um caractere de nova linha, que servepara separar da pr�xima linha. No fim da �ltima linha deve ter umcaractere de nova linha (mas n�o � exigido pelo Emacs).>> Tente digitar C-b no come�o da linha. O cursor deve mover para o fim da linha anterior. Isso acontece por que ele se moveu para tr�s atrav�s do caractere de nova linha.C-f pode mover o cursor atrav�s de uma Nova linha do mesmo jeito que C-b.>> Fa�a mais alguns C-b's, assim voc� percebe onde o est� o cursor. Depois alguns C-f's para retornar para o fim da linha. Depois mais um C-f para mover para linha seguinte.Quando voc� move o cursor passando o topo ou o rodap� da tela, o pr�ximotexto al�m da borda desloca-se na tela. Isso � chamado rolagem. Issoativa o Emacs para mover o cursor para o lugar especificado no texto semmov�-lo fora da tela.>> Tente mover o cursor fora do rodap� da tela com C-n, e veja o que acontece.Se mover por caracteres � muito lento, voc� pode se mover porpalavras. M-f (Meta-f) move uma palavra para frente e M-b uma palavrapara tr�s.>> Digite alguns M-f's e M-b'sQuando voc� est� no meio de uma palavra, M-f move o cursor para o fim damesma. Quando voc� est� em um espa�o em branco no meio de duas palavras,M-f move o cursor para o fim da palavra seguinte. M-b funciona do mesmojeito na dire艫o contraria.>> Digite M-f e M-b algumas vezes, intercalado com C-f's e C-b's assim voc� pode observar a a艫o do M-f e M-b de varias lugares dentro e no meio de palavras.Observe o paralelismo entre C-f e C-b por um lado, e M-f e M-b por outrolado. Muito freq�entemente os caracteres Meta s�o usados para opera苺esrelacionadas com as unidades definidas pela linguagem (palavras,senten�as, par�grafos), enquanto caracteres Control operam nas unidadesb�sicas que s�o independente do que voc� est� editando (caracteres,linhas, etc).Esse paralelismo aplica-se entre linhas e senten�as: C-a e C-e move ocursor para o come�o ou fim da linha, e M-a e M-e move o cursor para ocome�o ou fim da senten�a.>> Tente alguns C-a's, e depois alguns C-e's. Tente alguns M-a's, e depois alguns M-e's.Veja como repetidos C-a's fazem nada, mas repetidos M-a's mant�m movendomais uma senten�a. Embora estes n�o sejam completamente an�logos, cadaum parece natural.A posi艫o do cursor no texto � tamb�m chamado "ponto" (point). Paraparafrasear, o cursor mostra na tela onde o ponto � encontrado no texto.Aqui est� um simples sum�rio das opera苺es de movimento de cursor,incluindo comandos de movimento de palavra e senten�a. C-f Move o cursor um caractere para frente C-b Move o cursor um caractere para tr�s M-f Move o cursor uma palavra para frente M-b Move o cursor uma palavra para tr�s C-n Move o cursor para linha posterior C-p Move o cursor para linha anterior C-a Move o cursor para o come�o da linha C-e Move o cursor para o fim da linha M-a Move o cursor para tr�s no come�o da senten�a M-e Move o cursor para frente no fim da senten�a>> Tente agora todos estes comandos algumas vezes para praticar. Estes s�o os comandos mais utilizados.Outros dois comandos de movimento de cursor importantes s�o M-< (MetaMenor-que), o qual move o cursor para o come�o de todo o texto, e M->(Meta Maior-que), o qual move para o fim de todo o texto.Na maioria dos terminais, o "<" � acima da v�rgula, ent�o voc� precisautilizar a tecla shift para digit�-la. Nestes terminais voc� precisautilizar a tecla shift para digitar M-< tamb�m; sem a tecla shift, voc�estaria teclando M-virgula.>> Tente agora M-<, para mover o cursor ao come�o do tutorial. Use ent�o C-v repetidamente para trazer o cursor novamente aqui.>> Tente agora M->, para mover o cursor ao fim do tutorial. Use ent�o M-v repetidamente para trazer o cursor novamente aqui.Voc� tamb�m pode mover o cursor com as setas, se o seu terminal temteclas com setas. N�s recomendamos aprender C-b, C-f, C-n e C-p por tr�sraz�es. Primeira, elas funcionam em todos os terminais. Segunda, uma vezque voc� ganhar pr�tica usando o Emacs, voc� descobrir� que digitarnestes caracteres Control � mais r�pido do que digitar nas setas (porquevoc� n�o tem que mover suas m�os t�o longe da posi艫o dedigita艫o). Terceira, uma vez que voc� tiver o h�bito de utilizar estescomandos de caracteres Control, voc� pode facilmente aprender como usaroutros comandos avan�ados de movimenta艫o do cursor.A maioria dos comandos do Emacs aceitam argumentos num�ricos; paramaioria dos comandos, isso serve como um fator de repeti艫o. A maneiraque voc� da a um comando uma repeti艫o teclando C-u e depois os d�gitosantes de digitar o comando. Se voc� tem o META (EDIT ou ALT), tem outraalternativa para digitar um argumento num�rico: digite os d�gitosenquanto pressionando a tecla META. N�s recomendamos aprender o m�todoC-u porque funciona em todos os terminais. O argumento num�rico tamb�m �chamado de "argumento prefixo", porque voc� digita o argumento antes docomando que ele se aplica.Por exemplo, C-u 8 C-f move o cursor oito caracteres para frente>> Tente usar C-n ou C-p com um argumento num�rico, para mover o cursor para um linha perto dessa com um �nico comando.A maioria dos comandos usam o argumento num�rico para um fator derepeti艫o, mas alguns comandos usam isso de outra maneira. Diversoscomandos (mas nenhum daqueles comandos que voc� tenha aprendido at�agora) usam isso como uma marca -- a presen�a de um argumento prefixo,independente do seu valor, faz o comando fazer alguma coisa diferente.C-v e M-v s�o outro tipo de exce艫o. Quando voc� da um argumento, elesrolam a tela para cima ou para baixo por aquele n�mero de linhas, deprefer�ncia com a tela cheia. Por exemplo, C-u 8 C-v rola a tela 8linhas.>> Tente agora digitar C-u 8 C-v.Isso deve ter rolado a tela para cima 8 linhas. Se voc� quiser rolar atela para baixo novamente, voc� pode dar um argumento para o M-v.Se voc� est� usando um display com janelas, como o X11 ou MS-Windows,deve ter uma �rea retangular alta chamada barra de rolagem na m�oesquerda da janela do Emacs. Voc� pode rolar o texto clicando o mouse nabarra de rolagem.>> Tente pressionar o bot�o do meio no topo da �rea destacada junto a barra de rolagem. Isso deve rolar o texto para uma determinada posi艫o dependendo de qu�o alto ou baixo voc� clicar.>> Tente mover o mouse para cima e para baixo, enquanto pressionar o bot�o do meio. Voc� ver� que o texto rolar� para cima e baixo assim que voc� mover o mouse.* QUANDO O EMACS PARECE MORTO-----------------------------Se o Emacs parar de responder os seus comandos, voc� pode seguramentepar�-lo digitando C-g. Voc� pode utilizar C-g para parar um comando queest� levando muito tempo para executar.Voc� tamb�m pode utilizar C-g para interromper um argumento num�rico ouo inicio de um comando que voc� n�o quer terminar.>> Digite C-u 100 para fazer um argumento num�rico de 100, e depois digite C-g. Agora digite C-f. O Cursor deve mover apenas um caractere, porque voc� cancelou o argumento com C-g.Se voc� digitou um <ESC> por engano, voc� pode sair dele com um c-g.* COMANDOS DESABILITADOS------------------------Alguns comandos do Emacs s�o "desabilitados" para que os usu�riosiniciantes n�o utilizem por acidente.Se voc� digita um dos comandos desabilitados, o Emacs mostrar� umamensagem dizendo qual comando foi, e pergunta se voc� quer seguir eexecutar o comando.Se voc� realmente quiser tentar o comando, digite Espa�o na resposta dapergunta. Normalmente, se voc� n�o quer executar o comando desabilitado,responda a pergunta com "n".>> Digite C-x C-l (que � um comando desabilitado), e ent�o digite n para responder a pergunta.* JANELAS---------O Emacs pode ter diversas janelas, cada uma mostrando seu pr�priotexto. N�s vamos explicar mais tarde como utilizar estas m�ltiplasjanelas. Neste momento nos queremos explicar como se livrar das janelasextras e voltar a edi艫o b�sica em uma janela. � simples: C-x 1 Uma janela (mate todas as outras janelas).Isto � Control-x seguido pelo digito 1. C-x 1 expande a janela que est�com o cursor, para ocupar a tela inteira. Ela remove todas as outrasjanelas.>> Mova o cursor para esta linha e digite C-u 0 C-l.>> Digite Control-h k Control-f. Veja como esta janela diminui, enquanto uma nova aparece para mostrar a documenta艫o do comando Control-f.>> Digite C-x 1 e veja a listagem de documenta艫o desaparecer.Este comando � diferente dos outros que voc� aprendeu por isso eleconsiste em dois caracteres. Ele inicia com o caractere Control-x. Temuma grande serie de comandos que iniciam com Control-x; a maioria delestem a ver com janelas, arquivos, buffers, e coisas relacionadas. Estescomandos tem dois, tr�s ou quatro caracteres de tamanho.* INSERINDO E REMOVENDO-----------------------Se voc� quiser inserir um texto, apenas digite o texto. Os caracteresque voc� ver�, como A, 7, *, etc. s�o vistos pelo Emacs como texto e s�oinseridos imediatamente. Digite <Return> para inserir um caractere denova linha.Voc� pode remover o �ltimo caractere que voc� inseriu digitando<Delete>. <Delete> � uma tecla no teclado, que est� nomeado como"Del". Em algumas casos, a tecla "Backspace" serve como o <Delete>, masnem sempre!Mas geralmente, <Delete> remove o caractere imediatamente anterior aposi艫o corrente do cursor.>> Fa�a isso agora - Digite alguns caracteres, ent�o remova-os digitando <Delete> algumas vezes. N�o se preocupe em modificar este arquivo; voc� n�o alterar� o arquivo principal. Esta � a sua c�pia pessoal dele.Quando uma linha de texto fica muito grande na tela, a linha do texto �continuada na linha seguinte. Uma barra invertida ("\") na margemdireita indica a linha que foi continuada.>> Insira texto at� que voc� alcance a margem direita, e mantenha inserindo. Voc� ver� a linha de continua艫o aparecer.>> Utilize <Delete> para remover o texto at� a linha caber em uma linha novamente. A linha de continua艫o ir� embora.Voc� pode remover o caractere de nova linha como qualquer outrocaracter. Removendo o caractere de nova linha entre duas linhas voc�juntar� as duas em uma �nica linha. Se o resultado for muito longo paraacomodar na largura da tela, aparecer� um caractere de continua艫o.>> Mova o cursor para o inicio da linha e digite <Delete>. Isso juntar� esta linha com a anterior.>> Digite <Return> para re-inserir a nova linha que voc� removeu.Lembre-se que a maioria dos comandos do Emacs podem receber um n�mero derepeti艫o; isso inclui texto de caracteres. Repetir um texto decaractere o insere algumas vezes.>> Tente isso agora -- digite C-u 8 * para inserir ********.Voc� acabou de aprender o jeito mais simples de digitar alguma coisa noEmacs e corrigir os erros. Voc� pode remover palavras ou linhastamb�m. Aqui vai um sum�rio dos comandos de dele艫o: <Delete> remove o caractere imediatamente antes do cursor M-d remove o pr�ximo caractere apos o cursor M-<Delete> Mata a palavra imediatamente antes do cursor M-d Mata a pr�xima palavra depois do cursor C-k Mata a posi艫o do cursor at� o fim da linha M-k Mata at� o fim da senten�a correnteNote que o <Delete> e o C-d vs M-<Delete> e M-d estende o paraleloiniciado por C-f e M-f (bem, <Delete> n�o � realmente um controle decaractere, mas n�o vamos nos preocupar com isso). C-k e M-k s�o como C-ee M-e, uma parte, nessas linhas s�o senten�as opostas.Voc� pode tamb�m matar parte de um buffer com um m�todo uniforme. Movapara o fim dessa parte, e digite C-@ ou C-SPC (um ou outro). (SPC � aBarra de Espa�o.) Mova para o outro fim dessa parte, e digite C-w. Issomatar� todo o texto entre as duas posi苺es.>> Mova o cursor para o V no inicio do par�grafo anterior.>> Digite C-SPC. Emacs vai mostrar a mensagem "Mark set" no rodap� da tela.>> Mova o cursor para o . (ponto) no "fim", na segunda linha do par�grafo.>> Digite C-w. Isso vai matar o texto iniciando no V, e terminando bem antes do . (ponto).A diferen�a entra "matar" e "remover" � que o texto "matado" pode serre-inserido, onde os textos "removidos" n�o podem ser re-inseridos.Re-inser艫o de um texto matado chama-se colar (yanking). Geralmente, ocomando que pode remover bastante texto mata o texto (eles fazem com quevoc� possa colar (yank) o texto), enquanto os comandos que removem umcaractere, ou apenas linhas brancas ou espa�os, fazem dele艫o (para quevoc� n�o possa colar esse texto).>> Mova o cursor para o inicio da linha que n�o esteja vazia. Agora digite C-k para matar o texto nessa linha.>> Digite C-k pela segunda vez. Voc� ver� que a nova linha que segue a linha ser� matada.Note que um simples C-k mata o conte�do de uma linha, � um segundo C-kmata a linha, e faz com que todas as outras linhas movam para cima. C-ktrata um argumento num�rico especialmente: ele mata tantas linhas E seusconte�dos. Isso n�o � uma simples repeti艫o. C-u 2 C-k mata duas linhase suas novas linhas; digitar C-k duas vezes n�o faria isso.Para trazer o texto matado novamente � chamado colar "yaking". (Pensenisso como colar, ou trazer de volta, algum texto que foi levadoembora.) Voc� pode colar (yank) o texto matado no mesmo lugar onde elefoi matado, ou em qualquer outro lugar do buffer, ou ate em um arquivodiferente. Voc� pode colar o texto diversas vezes, o que far� diversasc�pias dele.O comando para colar � C-y. Ele re-insere o �ltimo texto matado, naposi艫o corrente do cursor.>> Tente; digite C-y para colar o texto novamente.Se voc� fizer diversos C-k's em uma linha, todo esse texto matado ser�salvo junto, ent�o aquele C-y vai colar todas aquelas linhas de uma vez.>> Faca isso agora, digite C-k diversas vezes.Agora pegue o texto matado:Digite C-y. Ent�o mova o cursor para baixo algumas linhas e digite C-ynovamente. Agora voc� sabe como copiar determinado texto.O que voc� faria se voc� tivesse determinado texto que voc� gostaria decolar, e ent�o voc� mata alguma outra coisa? C-y colar� o kill maisrecente. Mas o antigo texto ainda n�o foi perdido. Voc� pode t�-lonovamente usando o comando M-y. Depois que voc� der um C-y para pegar okill mais recente, digitar M-y troca o que voc� colou pelo anterior aele. Digitar M-y novamente e novamente traz kills anteriores eanteriores. Quando voc� tiver alcan�ado o texto que voc� que estaprocurando, voc� n�o precisa fazer nada para mant�-lo. Apenas continuecom a sua edi艫o, deixando o texto onde ele esta.Se voc� digitar M-y o suficiente, voc� come�ar� do inicio novamente (okill mais recente).>> Mate uma linha, mova por ai, mate mais uma linha. Agora digite C-y para colar a segunda linha matada. Agora digite M-y e ele vai ser trocado pelo primeiro kill. Faca mais alguns M-y's e veja o que voc� tem. Faca isso ate que o segundo kill volte, e depois mais alguns. Se voc� preferir, voc� pode tentar dar argumentos positivos e negativos.* DESFAZENDO (UNDO)-------------------Se voc� fizer uma mudan�a no texto, e ent�o decidir que isso foi umerro, voc� pode desfazer com o comando de desfazer (undo), C-x u.Normalmente, C-x u desfaz as mudan�as feitas por um comando; se voc�repetir C-x u diversas vezes em uma linha, cada repeti艫o desfar�um comando adicional.Mas tem duas exce苺es: comandos que n�o trocam o texto n�o contam (issoinclui o movimento do cursor e a barra de rolagem), e caracteresauto-inseridos s�o usualmente cuidados em grupos de mais de 20 (Isso epara reduzir o numero de C-x u's que voc� deve digitar para desfazer ainser艫o de um texto.).>> Mate essa linha com C-k, ent�o digite C-x u e isso vai re-aparecer.C-_ � um comando alternativo para desfazer; ele funciona exatamente comoo C-x u, mas � mais f�cil de digitar diversas vezes em uma linha. Adesvantagem de C-_ � que alguns teclados ele n�o � t�o obvio paradigitar. � exatamente por isso que o C-x u � fornecido. Em algunsterminais, voc� pode digitar C-_ digitando / enquanto segurando oCONTROL.Um argumento num�rico para C-_ ou C-x u age como um contador derepeti艫o.Voc� pode desfazer a dele艫o de texto da mesma maneira que voc� podedesfazer o kill de um texto. A distin艫o entre matar e remover algumacoisa afeta se voc� pode colar com C-y; isso n�o faz diferen�a para odesfazer (undo).* ARQUIVOS----------Para poder fazer o texto que voc� edita permanente, voc� precisacoloc�-lo em um arquivo. Ou ent�o, isso ser� perdido quando o seu Emacsfor fechado. Para colocar seu texto em um arquivo, voc� precisa"encontrar" o arquivo antes de digitar o texto (Isso tamb�m � chamado"visitar" um arquivo.).Encontrando um arquivo significa que voc� ver� o conte�do de um arquivocom o Emacs. De diversas maneiras, isso � como se voc� estivesseeditando o arquivo. De qualquer maneira, as mudan�as que voc� fizerutilizando o Emacs n�o se tornar�o permanente ate que voc� "salve" oarquivo. Isso e para que voc� evite deixar um arquivo meio-modificado nosistema enquanto voc� n�o quer isso. Mesmo quando voc� salva, o Emacsdeixa o arquivo original sobre um arquivo de nome alterado no caso quevoc� mais tarde decida que aquelas mudan�as foram um erro.Se voc� olhar no rodap� da tela voc� ver� a linha que come�a e terminacom tra�os e inicia com "--:-- TUTORIAL.pt_BR" ou algo parecido comisso. Essa parte da tela normalmente mostra o nome do arquivo que voc�esta visitando. Agora mesmo, voc� esta visitando um arquivo chamado"TUTORIAL.pt_BR" que � sua pr�pria c�pia do tutorial do Emacs. Quandovoc� encontra um arquivo com o Emacs, o nome do arquivo aparecer� nesselugar espec�fico.Algo especial para se dizer sobre o comando de encontrar arquivo e quevoc� tem que dizer qual nome do arquivo voc� quer. Dizemos que o comando"l� um argumento do terminal" (nesse caso, o argumento e o nome doarquivo). Depois que voc� digitar o comando C-x C-f Encontrar um arquivoO Emacs pede para voc� digitar o nome do arquivo. O nome do arquivoaparece no rodap� da tela. A linha de rodap� � chamada de minibufferquando � utilizada para esse tipo de introdu艫o de dados. Voc� podeutilizar os comandos padr�es do Emacs para editar o nome do arquivo.Enquanto voc� estiver digitando o nome do arquivo (ou qualquer outrotipo de dado para o minibuffer), voc� pode cancelar o comando com atecla C-g.>> Digite C-x C-f, ent�o digite C-g. Isso cancelar� o minibuffer, e tamb�m cancelar� o comando C-x C-f que estava sendo utilizado no minibuffer. Para que voc� n�o procure nenhum arquivo.Quando voc� terminar de digitar o nome do arquivo, digite <Return> paraterminar. Ent�o o comando C-x C-f executar�, e encontrar� o arquivoque voc� escolheu. O minibuffer desaparece quando o comando C-x C-f efinalizado.Em pouco tempo o conte�do do arquivo aparece na tela, e voc� poder�editar o conte�do dele. Quando voc� terminar de fazer suas altera苺espermanentes digite o comando C-x C-s Salve o arquivoIsso copia o texto do Emacs para o arquivo. A primeira vez que voc�fizer isso, o Emacs vai renomear o arquivo original para um novo nomepara que voc� n�o o perca. O nome novo e feito adicionando "~" no fim donome original do arquivo.Quando o salvamento for conclu�do, Emacs imprimir� o nome do arquivoescrito. Voc� deve salvar o conte�do do seu arquivo regularmente, paraque voc� n�o perca muito trabalho caso o sistema caia por um algummotivo.>> Digite C-x C-s, salvar� a c�pia do seu tutorial. Isso imprimir� "Wrote ...TUTORIAL.pt_BR" no fim da tela.Voc� pode encontrar um arquivo j� existente, para v�-lo ou edit�-lo. Voc�tamb�m pode encontrar um arquivo que ainda n�o existe. Essa � a maneirade criar um arquivo com o Emacs: encontre o arquivo, que iniciar�vazio, ent�o come�e a inserir o texto para o arquivo. Quando voc� pedirpara "salvar" o arquivo, o Emacs perguntar� se voc� realmente quercriar o arquivo com o texto que voc� acabou de inserir. De agora emdiante, voc� pode considerar que esta editando um arquivo j� existente.* BUFFERS---------Se voc� encontrar um segundo arquivo com C-x C-f, o primeiro continuaradentro do Emacs. Voc� pode voltar para ele encontrando-o novamente comC-x C-f. Dessa maneira voc� pode ter um grande numero de arquivos dentrodo Emacs.>> Crie um arquivo chamado "foo" digitando C-x C-f foo <Return>. Depois digite algum texto, edite-o, e salve "foo" digitando C-x C-s. Finalmente, digite C-x C-f TUTORIAL.pt_BR <Return> para voltar ao tutorial.O Emacs guarda cada texto de um arquivo em um objeto chamado"buffer". Encontrar um arquivo cria um novo buffer dentro do Emacs. Paraver uma lista dos buffers que existem no servi�o do seu Emacs, digite C-x C-b Lista os buffers>> Tente C-x C-b agora.Veja como cada buffer tem um nome, e ele tamb�m pode ter um nome dearquivo para o conte�do de arquivo que ele armazena. Alguns buffers n�ocorrespondem a arquivos. Por exemplo, o buffer chamado "*Buffer List*"n�o tem nenhum arquivo. Esse � o buffer que contem a lista de buffersque foi feito com C-x C-b. QUALQUER texto que voc� ver numa janela doEmacs e sempre parte de algum buffer.>> Digite C-x 1 para sair da lista dos buffers.Se voc� fizer mudan�as no texto de um arquivo, ent�o encontrar um novoarquivo, isso n�o salva o conte�do do primeiro arquivo. As mudan�ascontinuam dentro do Emacs, nos buffers de arquivo. A cria艫o ou edi艫odo buffer do segundo arquivo n�o tem nenhum efeito no buffer do primeiroarquivo. Isso � muito �til, mas tamb�m significa que voc� precisa de umamaneira conveniente de salvar o buffer do primeiro arquivo. Seriainconveniente ter que voltar para ele com C-x C-f para salv�-lo com C-xC-s. Por isso temos C-x s Salve alguns buffersC-x s pergunta a voc� sobre cada buffer que contem modifica艫o e voc�n�o salvou. Ele te pergunta, para cada buffer, se voc� quer salvar.>> Insira uma linha de texto, ent�o digite C-x s. Isso deve te perguntar se voc� quer salvar o buffer chamado TUTORIAL.pt_BR. Responda sim para a pergunta digitando "y".* ESTENDENDO O COMANDO SET--------------------------Existem mais, muito mais comandos que o Emacs poderia possivelmente sercolocado em todos os control e caracteres meta. O Emacs faz isso com ocomando X (estender). Que vem em duas vers�es: C-x Extensor de caractere. Seguido por um caractere. M-x Extensor de nome de comando. Seguido por um longo nome.Esses comandos que s�o geralmente �teis mas pouco usados que os comandosque voc� j� aprendeu. Voc� j� viu dois deles: os comandos de arquivosC-x C-f para Encontrar e C-x C-s para Salvar. Outro exemplo de umcomando para finalizar a sess�o do Emacs - esse � o comando C-x C-c (N�ose preocupe em perder as mudan�as que voc� fez; C-x C-c oferece salvarcada arquivo modificado antes de matar o Emacs.).C-z � o comando para sair do Emacs *temporariamente* - ent�o voc� podevoltar para a mesma se艫o do Emacs depois.Em sistemas que permitem isso, C-z "suspende" o Emacs; isso e, retornaao shell mas n�o destr�i o Emacs. Nos shells mais comum, voc� poderesumir o Emacs com o comando 'fg' ou com '%emacs'.Nos sistemas que n�o implementam suspens�o, C-z cria um subshell rodandosobre o Emacs para dar a voc� a chance de rodar outros programas eretornar ao Emacs depois; isso n�o "sai" verdadeiramente do Emacs. Nessecaso, o comando shell 'exit' � o comando usual para voltar ao Emacs dosubshell.A hora de usar o C-x C-c � quando voc� esta prestes a sair do sistemaoperacional. � tamb�m a maneira correta de sair do Emacs quando chamadoatrav�s de um cliente de e-mail ou outros utilit�rios, porque eles n�ocontrolam a suspens�o do Emacs. Em outras circunst�ncias, se voc� n�oestiver saindo do sistema operacional, � melhor suspender o Emacs comC-z ao inv�s de sair do Emacs.Existem diversos comando C-x. Aqui esta uma lista dos que voc� aprendeu: C-x C-f Encontrar arquivo. C-x C-s Salvar arquivo. C-x C-b Listar buffers. C-x C-c Sair do Emacs. C-x 1 Remover todas menos a janela atual. C-x u Desfazer.O extensor de nome de comando � usado menos ainda, ou comandos que s�ousados apenas em alguns modos. Um exemplo � o comando replace-string,que globalmente troca uma string por outra. Quando voc� digita M-x, oEmacs te pergunta no rodap� da tela M-x e voc� deve digitar o nome docomando; nesse caso, "replace-string". Apenas digite "repl s<TAB>" e oEmacs completar� o nome. (<TAB> � a tecla Tab, usualmente encontrandoabaixo do CapsLock ou Shift bem na extremidade do teclado.). Termine ocomando com <Return>.O comando replace-string requer dois argumentos - a string para sertrocada, e a string que a substituir�. Voc� precisa terminar cadaargumento com <Return>.>> Mova o cursor para a linha branca duas linhas abaixo dessa. Digite ent�o M-x repl s<Return>mudou<Return>alterado<Return>. Note como essa linha mudou: voc� substituiu a palavra m-u-d-o-u por "alterado" quando ocorreu, apos a posi艫o inicial do cursor.* SALVAMENTO AUTOM�TICO-----------------------Quando voc� fizer mudan�as em um arquivo, mas voc� ainda n�o tiversalvo, elas podem ser perdidas se o seu computador der algum problema.Para proteger voc� disso, o Emacs periodicamente escreve um arquivo "autosalvo" para cada arquivo que voc� estiver editando. O nome do arquivoauto salvo tem um # no inicio e no fim; por exemplo, se o seu arquivotiver o nome "ola.c", o nome do arquivo auto salvo dele ser�"#ola.c#". Quando voc� salvar o arquivo da maneira normal, o Emacsremover� os arquivos auto salvos.Se o computador der problema, voc� pode recuperar suas modifica苺es autosalvas abrindo o arquivo normalmente (o arquivo que voc� estavaeditando, n�o o arquivo auto salvo) e ent�o digitar M-x recoverfile<Return>. Quando for pedida a confirma艫o, digite yes<Return>para ir em frente e recuperar os dados auto salvos.* �REA DE SA�DA (ECHO AREA)---------------------------Se o Emacs ver que voc� esta digitando comandos multi-caracterelentamente, ele os mostrar� para voc� no fim da tela numa �rea chamada�rea de Sa�da ou Echo Area. A �rea de sa�da contem a linha de rodap� datela.* MODE LINE-----------A linha imediatamente acima da �rea de sa�da � chamada de "mode line". Omode line diz algo algo mais ou menos assim:--:** TUTORIAL.pt_BR (Fundamental)--L670--58%----------------Essa linha da informa苺es �teis sobre o status do Emacs e o texto quevoc� esta editando.Voc� j� sabe o que o nome do arquivo significa -- � o arquivo que voc�encontrou. -NN%-- indica sua posi艫o no arquivo texto; significa que NNporcento do texto esta acima do topo da tela. Se o topo do arquivoestiver na tela, ele mostrar� --Top-- ao inv�s de --00%--. Se o rodap� dotexto estiver na tela, ele mostrar� --Bot--. Se voc� estiver olhando umtexto muito pequeno que cabe todo na tela, o mode line mostrar�--All--.O L s�o d�gitos e indicam a posi艫o de uma outra maneira: eles mostram alinha corrente do ponto.Os asteriscos pr�ximo ao inicio significam que voc� fez mudan�as notexto. Logo ap�s voc� visitar um arquivo ou salvar um arquivo, essaparte do mode line n�o mostrar� asteriscos, apenas tra�os.A parte do mode line dentro do par�nteses lhe diz quais modos voc� estautilizando. O modo padr�o � o Fundamental que � o que voc� estautilizando agora. � um exemplo de um "modo majorit�rio".O Emacs tem diversos diferentes modos majorit�rios. Alguns deles s�opara edi艫o de diferentes linguagens de programa艫o e/ou tipos de texto,como modo Lisp, modo Texto, etc. Em qualquer momento um � apenas um modomajorit�rio e ativo, e seu nome pode ser encontrado no mode lineexatamente onde o "Fundamental" esta agora.Cada modo majorit�rio faz com que alguns comandos operem de mododiferente. Por exemplo, existem comandos para criar coment�rios nosprogramas, e desde que cada linguagem de programa艫o tem uma id�iadiferente de como um coment�rio deve ser, cada modo majorit�rio tem queinserir seus coment�rios individualmente. Cada modo majorit�rio � o nomede um comando estendido, e � assim que voc� pode mudar para determinadomodo. Por exemplo, M-x fundamental-mode � o comando para trocar para omodo Fundamental.Se voc� vai editar texto em Portugu�s, como neste arquivo, voc� podeutilizar o modo Texto.>> Digite M-x text mode<Return>.N�o se preocupe, nenhum dos comandos do Emacs que voc� aprendeumudar�o. Mas voc� pode observar que o M-f e o M-b tratam os ap�strofoscomo parte das palavras. Anteriormente, no modo Fundamental, M-f e M-btrataram os ap�strofos como separadores de palavras.Modos majorit�rios fazem usualmente modifica苺es como esta: a maioriados comandos fazem "a mesma coisa" em cada modo majorit�rio, mas elestrabalham um pouquinho diferente.Para ver a documenta艫o do seu modo majorit�rio, digite C-h m.>> Utilize C-u C-v uma ou mais para trazer essa linha pr�xima ao topo da tela.>> Digite C-h m, para ver como o modo texto difere do modo Fundamental.>> Digite C-x 1 para remover a documenta艫o da tela.Modos majorit�rios s�o chamados de majorit�rios porque tamb�m existemmodos minorit�rios. Modos minorit�rios n�o s�o alternativos aos modosmajorit�rios, apenas uma modifica艫o minorit�ria deles. Cada modominorit�rio pode ser ligado ou desligado por ele mesmo, independente detodos os outros modos minorit�rios, � independente do modomajorit�rio. Ent�o voc� pode n�o utilizar modos minorit�rios, ou um modominorit�rio, ou qualquer combina艫o de modos minorit�rios.Um modo minorit�rio que � bastante �til, especialmente para editar textoem Portugu�s, � o modo Auto Fill. Quando ele esta ligado, o Emacs quebraa linha entre as palavras automaticamente quando voc� inserir um texto ecriar uma linha muito comprida.Voc� pode ligar o modo Auto Fill fazendo M-x auto fillmode<Return>. Quando o modo estiver ligado, voc� pode deslig�-lonovamente fazendo M-x auto fill mode<Return>. Se o modo estiverdesligado, esse comando o liga, e se ele estiver ligado, este comando odesligara. Nos dizemos que o comando inverte seu status.>> Digite M-x auto fill mode<Return> agora. Ent�o insira uma linha de "asdf " diversas vezes ate que voc� veja dividir em duas linhas. Voc� precisa colocar espa�os entre as palavras porque o modo Auto Fill quebra apenas nos espa�os.A margem � usualmente definida com 70 caracteres, mas voc� podemodific�-la com o comando C-x f. Voc� deve dar a margem que voc� quercomo um argumento num�rico.>> Digite C-x f com um argumento de 20. (C-u 20 C-x f). Ent�o digite algum texto e veja o Emacs encher linhas com ate 20 caracteres. Ent�o, volte a definir a margem para 70 utilizando C-x f.Se voc� fizer uma mudan�a no meio de um par�grafo, o modo Auto Fill n�ore-preencher� para voc�. Para re-preencher o par�grafo, digite M-q(Meta-q) com o cursor dentro do par�grafo.>> Mova o cursor dentro do par�grafo anterior e digite M-q.* PESQUISANDO-------------O Emacs pode fazer pesquisas por strings (esses sao grupos de caracteresligados ou palavras) tanto para frente do texto ou para traz. Pesquisarpor uma string e um comando de movimento do cursor; ele move o cursorpara o pr�ximo lugar onde a string aparece.O comando de pesquisa do Emacs � diferente dos comandos de pesquisa damaioria dos editores, porque � uma pesquisa "incremental". Issosignifica que a pesquisa acontece enquanto voc� digita uma string parapesquisar.O comando para iniciar a pesquisa � C-s para pesquisa para frente ou C-rpara pesquisa inversa. MAS ESPERE! N�o tente fazer agora.Quando voc� digitar C-s voc� percebera que uma string "I-search"aparecer� como prompt na �rea de sa�da. Isso diz para voc� que o Emacsesta no que chamamos de pesquisa incremental esperando que voc� digite oque voc� quer procurar. <Return> termina a pesquisa.>> Agora digite C-s para iniciar a pesquisa. DEVAGAR, uma letra por vez, digite o caractere 'cursor', pausando cada vez que voc� digitar um caractere, perceba o que acontece com o cursor. Agora que voc� pesquisou por "cursor", uma vez.>> Digite C-s novamente, para pesquisa a pr�xima ocorr�ncia de "cursor".>> Agora digite <Delete> quatro vezes e veja como o cursor move.>> Digite <Return> para terminar a pesquisa.Voc� viu o que aconteceu? O Emacs, em uma pesquisa incremental, tenta irpara a ocorr�ncia que voc� digitou ate o momento. Para ir para pr�ximaocorr�ncia de 'cursor' apenas digite C-s novamente. Se nenhumaocorr�ncia existir, o Emacs bipa e te diz que a pesquisa atualfalhou. C-g tamb�m termina a pesquisa.NOTA: Em alguns sistemas, digitar C-s trava a tela e voc� n�o ver� asa�da do Emacs. Isso indica que um "recurso" do sistema operacionalchamado "controle de fluxo" (flow control) esta interceptando o C-s en�o deixando que passe pelo Emacs. Para destravar a tela, digiteC-q. Ent�o, leia na se艫o "Spontaneous Entry to Incremental Search" nomanual do Emacs para uma dica de como lhe dar com esse "recurso".Se voc� estiver no meio de uma pesquisa incremental e digitar <Delete>,voc� perceber� que o �ltimo caractere da pesquisa ser� apagado e apesquisa voltar� para o �ltimo lugar da pesquisa. Por exemplo, imagineque voc� tenha digitado "c", para pesquisar a primeira ocorr�ncia de"c". Agora se voc� digitar "u", o cursor mover� para a primeiraocorr�ncia de "cu". Agora digite <Delete>. Isso apagar� o "u" dastring de pesquisa, e o cursor mover� de volta para a primeiraocorr�ncia de "c".Se voc� estiver no meio de uma pesquisa e digitar um caractere controlou meta (com algumas exce苺es--caracteres que s�o especiais em umapesquisa, como C-s e C-r), a pesquisa � terminada.O C-s inicia uma pesquisa que procura por qualquer ocorr�ncia da stringde pesquisa AP�S a posi艫o corrente do cursor. Se voc� quiser pesquisarpor alguma coisa anterior no texto, digite C-r ao inv�s. Tudo que nosdissemos sobre C-s tamb�m implica para C-r, tirando a dire艫o dapesquisa que � reversa.* M�LTIPLAS JANELAS-------------------Um dos recursos mais interessantes do Emacs � que voc� pode mostrar maisde uma janela na tela ao mesmo tempo.>> Mova o cursor para essa linha e digite C-u 0 C-l (isso � control-L, n�o control-1).>> Agora digite C-x 2 que vai dividir a tela em duas janelas. As duas janelas v�o mostrar esse tutorial. O cursor fica na janela do topo.>> Digite C-M-v para rolar para o fim da janela. (Se voc� n�o tiver uma tecla Meta de verdade, digite ESC C-v.).>> Digite C-x o ("o" para "outra") para mover o cursor para o rodap� da janela.>> Use C-v e M-v no rodap� da janela para rod�-la. Continue lendo essas dire苺es na janela do topo.>> Digite C-x o novamente para mover o cursor de volta para a janela do topo. O cursor na janela do topo esta exatamente como estava antes.Voc� pode continuar usando C-x o para alternar entre as janelas. Cadajanela tem sua pr�pria posi艫o de cursor, mas apenas uma janela mostra ocursor. Todos os comandos mais comuns de edi艫o aplicam para a janelaque o cursor esta. Chamamos isso de "janela selecionada".O comando C-M-v � muito �til para quando voc� estiver editando o textoem uma janela e utilizando a outra janela para referencia. Voc� podemanter o cursor sempre na janela que voc� estiver editando, e avan�arpela outra janela seq�encialmente utilizando C-M-v.C-M-v � um exemplo de um caractere CONTROL-META. Se voc� tiver uma teclaMETA real, voc� pode digitar C-M-v segurando ambos CONTROL e METAenquanto digitar v. N�o importa se CONTROL ou META "vem primeiro,"porque ambas as teclas agem modificando o caractere que voc� digita.Se voc� n�o tiver um tecla META real, voc� pode utilizar ESC ao inv�s, aordem n�o importa: voc� precisa digitar ESC seguido por Control-v,porque Control-ESC v n�o funcionar�. Isso porque ESC � um caracterecom seu pr�prio direito, n�o � uma tecla de modifica艫o.>> Digite C-x 1 (na janela do topo) para fugir da janela do rodap�.(Se voc� tivesse digitado C-x 1 na janela do rodap�, voc� fugiria dajanela do topo. Pense neste comando como "Mantenha apenas uma janela--ajanela que estou dentro.")Voc� n�o precisa mostrar o mesmo buffer nas duas janelas. Se voc�utilizar C-x C-f para encontrar um arquivo em outra janela, a outrajanela n�o mudara. Voc� pode encontrar um arquivo em cada janelaindependentemente.Aqui esta uma maneira de utilizar duas janelas para mostrar coisasdiferentes:>> Digite C-x 4 C-f seguido pelo nome de um dos seus arquivos. Termine com <Return>. Veja o arquivo especificado aparece na janela do rodap�. O cursor ir� para l�, tamb�m.>> Digite C-x o para voltar a janela do topo, e C-x1 para remover a janela de rodap�.* N�VEIS RECURSIVOS DE EDI巴O-----------------------------Algumas vezes voc� entrar� no que chamamos de "n�vel de edi艫orecursiva". Isso � indicado por colchetes no mode line, envolvendo ospar�nteses em volta do nome do modo majorit�rio. Por exemplo, voc� podever [(Fundamental)] ao inv�s de (Fundamental).Para sair desses n�veis recorr�veis de edi艫o, digite ESC ESC ESC. Issoe um comando de todos os prop�sitos "saia". Voc� pode tamb�m utilizarpara eliminar janelas extras, e sair de um minibuffer.>> Digite M-x para entrar no minibuffer; ent�o digite ESC ESC ESC para sair.Voc� n�o pode utilizar C-g para sair de um n�vel de edi艫orecursiva. Isso porque o C-g � utilizado para cancelar comandos eargumentos COM o n�vel de edi艫o recursiva.* CONSEGUINDO MAIS AJUDA------------------------Neste tutorial nos tentamos suprimir informa苺es suficientes para quevoc� comece a utilizar o Emacs. Existe tanto dispon�vel sobre Emacs queseria imposs�vel explicar tudo aqui. De qualquer maneira, voc� podequerer aprender mais sobre Emacs mesmo porque ele tem muitos outrosrecursos �teis. O Emacs proporciona comandos para leitura dedocumenta艫o sobre comandos do Emacs. Esses comandos de "ajuda" iniciamcom o caractere Control-h, que � chamado de "o caractere de ajuda".Para utilizar os recursos de ajuda, digite o caractere C-h, e ent�o umcaractere dizendo que tipo de ajuda voc� quer. Se voc� REALMENTE estiverperdido, digite C-h ? e o Emacs lhe dir� que tipo de ajuda ele podelhe dar. Se voc� digitar C-h e decidir que voc� n�o quer nenhuma ajuda,apenas digite C-g para cancelar.(Alguns sistemas mudam o significado do caractere C-h. Eles n�o deveriamfazer isso para todos os usu�rios, ent�o voc� deve reclamar com oadministrador do sistema. Enquanto isso, se C-h n�o mostrar a mensagemsobre ajuda no rodap� da tela, tente digitar a tecla F1 ou M-x help<Return>.)O recurso de ajuda mais b�sico � o C-h c. Digite C-h, e o caractere c, �um comando de caractere ou seq鵰ncia; ent�o o Emacs mostrar� uma brevedescri艫o do comando.>> Digite C-h c C-p A mensagem deve ser algo assim C-p roda o comando linha-anteriorIsso diz a voc� "o nome da fun艫o". Nome de fun苺es s�o utilizadosbasicamente para personalizar o estender o Emacs. Mas desde que nomes defun苺es s�o utilizados para indicar que o que o comando faz, eles podemservir tamb�m como uma breve documenta艫o--suficiente para lembrar voc�os comandos que voc� j� aprendeu.Comandos multi-caractere como C-x C-s e (se voc� n�o tiver a tecla METAou EDIT ou ALT) <ESC>v � tamb�m permitido depois de C-h c.Para ter mais informa艫o sobre um comando, utilize C-h k ao inv�s de C-hc.>> Digite C-h k C-p.Isso mostra a documenta艫o da fun艫o, assim como seu nome, em uma janelado Emacs. Quando voc� terminar de ler a sa�da, digite C-x 1 para sair dasa�da do texto de ajuda. Voc� n�o precisa fazer isso imediatamenteapos. Voc� pode fazer alguma edi艫o enquanto utilizando como referenciao texto de ajuda, e ent�o digite C-x 1.Aqui est�o algumas outras op苺es �teis do comando C-h: C-h f Descreve a fun艫o. Digite o nome da fun艫o.>> Tente digitar C-h f previous-line<Return> Isso imprimir� toda informa艫o que o Emacs tem sobre a fun艫o que implementa o comando C-p. C-h a Comando Apropos. Digite uma palavra chave e o Emacs listar� todos os comandos que o nome contem essa palavra. Esses comandos podem ser chamados com Meta-x. Para alguns comandos, o comando Apropos tamb�m listar� um ou dois caracteres de seq鵰ncia que roda o mesmo comando.>> Digite C-h a file<Return>.Isso mostra em uma outra janela a lista de todos os comandos M-x com"arquivo" em seus nomes. Voc� ver� comandos-caractere como C-x C-flistados ao lado do comando correspondente assim como o find-file.>> Digite C-M-v para rolar a janela de ajuda. Faca isso algumas vezes.>> Digite C-x 1 para remover a janela de ajuda.* CONCLUS�O-----------Lembre, para sair permanentemente do Emacs utilize C-x C-c. Para sairpara um shell temporariamente, para que voc� possa voltar ao Emacs maistarde, utilize C-z.Esse tutorial foi feito para ser entend�vel para todos os novosusu�rios, ent�o se voc� encontrou algo que parece n�o estar claro, n�osente e se culpe - reclame!* C�PIA-------Esse tutorial descende de uma longa linha de tutoriais do Emacsiniciando com um escrito por Stuart Cracraft para o Emacs original.Essa vers�o do tutorial foi originalmente traduzida por Marcelo Toledo<marcelo@gnu.org> e como o GNU Emacs, tem um copyright, e vemcom uma permiss�o de distribui艫o de c�pias nas seguintes condi苺es:Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Permiss�o � garantida a qualquer um para fazer ou distribuir c�pias integrais deste documento como recebido, em qualquer meio, deixando dispon�vel e preservados o aviso de copyright e o aviso de permiss�o, e o distribuidor garante que a permiss�o para distribui苺es posteriores permitam o mesmo que esta nota. Permiss�o garantida para distribuir vers�es modificadas deste documento, ou partes dele, sobre as condi苺es acima, sempre que elas tenham uma nota vis�vel de quem foi o �ltimo a alter�-lo.As condi苺es para copiar o Emacs especificamente s�o mais complexas, masno mesmo esp�rito. Por favor, leia o arquivo COPYING e d� c�pias do GNUEmacs para seus amigos. Ajude a erradicar o obstrucionismo de software("propriet�rio") usando, escrevendo, e compartilhando software livre!;;; Local Variables:;;; coding: latin-1;;; sentence-end-double-space: nil;;; End:;;; arch-tag: 8ea256d6-2c4a-49ee-ac08-0ea6ef25bf8d