magit; sphinx GNU/Emacs 29.1

Confirmación (commit) tanomarcelo-git
This commit is contained in:
tanomarcelo 2024-05-04 20:28:53 -03:00
parent 59cd9b52c1
commit 9a7be78013
67 changed files with 391 additions and 328 deletions

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
^<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -206,7 +206,7 @@
<p>A menudo puede usar una característica llamada <em>completado</em> para ayudar a introducir argumentos. Esto significa que después de teclear parte del argumento, Emacs puede rellenar el resto, o parte de él, basándose en lo tecleado hasta el momento.</p>
<p>Cuando el completado está disponible, ciertas teclas (normalmente <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>), <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>), y <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>)) son redirigidas en el minibuffer a comandos
especiales de completado ver <a class="reference internal" href="#id5"><span class="std std-ref">9.4.2 Comandos de Completado</span></a>). Estos comandos intentan completar el texto en el minibuffer, basándose en un conjunto de <em>alternativas de completado</em> proporcionadas por el comando que solicitó el argumento. Normalmente puede teclear <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">?</span></code>) para ver una lista de alternativas de completado.</p>
<p>Aunque el completado normalmente se lleva a cabo en el minibuffer, a veces esta función también está disponible en los buffers normales. Véase <a class="reference internal" href="27_EdDePrograms.html#id22"><span class="std std-ref">27.8 Completado de Nombres de Símbolos</span></a>.</p>
<p>Aunque el completado normalmente se lleva a cabo en el minibuffer, a veces esta función también está disponible en los buffers normales. Véase <a class="reference internal" href="27_EdDePrograms.html#id23"><span class="std std-ref">27.8 Completado de Nombres de Símbolos</span></a>.</p>
<section id="ejemplos-de-completado">
<h3>9.4.1 Ejemplos de Completado<a class="headerlink" href="#ejemplos-de-completado" title="Link to this heading"></a></h3>
<p>Un simple ejemplo puede ser de ayuda. <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>) usa el minibuffer para leer el nombre de un comando, por lo que el completado funciona comparando el texto del minibuffer con los nombres de los comandos Emacs existentes. Suponga que desea ejecutar el comando auto-fill-mode. Puede hacerlo tecleando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>), pero es más fácil usar el completado.</p>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -223,7 +223,7 @@
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">M-&#64;</span></code>, (<code class="docutils literal notranslate"><span class="pre">mark-word</span></code>, marcar palabra) coloca la marca al final de la palabra siguiente (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id2"><span class="std std-ref">26.1 Palabras</span></a>, para obtener información sobre las palabras). Las invocaciones repetidas de este comando amplían la región haciendo avanzar la marca una palabra cada vez. Como excepción, si la marca está activa y situada antes del punto, <code class="docutils literal notranslate"><span class="pre">M-&#64;</span></code> desplaza la marca hacia atrás desde su posición actual una palabra cada vez.</p>
<p>Este comando también acepta un argumento numérico <em>n</em>, que le indica que avance la marca <em>n</em> palabras. Un argumento negativo <em>-n</em> hace retroceder la marca <em>n</em> palabras.</p>
<p>Del mismo modo, <code class="docutils literal notranslate"><span class="pre">C-M-&#64;</span></code> (<code class="docutils literal notranslate"><span class="pre">marca-sexp</span></code>) coloca la marca al final de la siguiente expresión equilibrada (véase <a class="reference internal" href="27_EdDePrograms.html#id10"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>). Las invocaciones repetidas extienden la región a expresiones posteriores, mientras que los argumentos numéricos positivos o negativos desplazan la marca hacia delante o hacia atrás el número de expresiones especificado.</p>
<p>Del mismo modo, <code class="docutils literal notranslate"><span class="pre">C-M-&#64;</span></code> (<code class="docutils literal notranslate"><span class="pre">marca-sexp</span></code>) coloca la marca al final de la siguiente expresión equilibrada (véase <a class="reference internal" href="27_EdDePrograms.html#id11"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>). Las invocaciones repetidas extienden la región a expresiones posteriores, mientras que los argumentos numéricos positivos o negativos desplazan la marca hacia delante o hacia atrás el número de expresiones especificado.</p>
<p>Los demás comandos de la lista anterior establecen tanto el punto como la marca, para delimitar un objeto en el búfer. <code class="docutils literal notranslate"><span class="pre">M-h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-paragraph</span></code>) marca párrafos (véase véase <a class="reference internal" href="26_ComandsLengsHuma.html#id5"><span class="std std-ref">26.4 Páginas</span></a>), <code class="docutils literal notranslate"><span class="pre">C-M-h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-defun</span></code>) marca definiciones de nivel superior (véase <a class="reference internal" href="27_EdDePrograms.html#id2"><span class="std std-ref">27.2 Definiciones de Nivel Superior, o Defuns</span></a>), y <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-p</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-page</span></code>) marca páginas. Las invocaciones repetidas juegan de nuevo el mismo papel, extendiendo la región a objetos consecutivos; de forma similar, los argumentos numéricos especifican por cuántos objetos mover la marca.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-whole-buffer</span></code>) establece todo el buffer como región, poniendo el punto al principio y la marca al final.</p>
</section>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -256,7 +256,7 @@
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-k</span></code>)</p>
<blockquote>
<div><p>Mata la siguiente expresión equilibrada (<code class="docutils literal notranslate"><span class="pre">kill-sexp</span></code>). Véase <a class="reference internal" href="27_EdDePrograms.html#id10"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>.</p>
<div><p>Mata la siguiente expresión equilibrada (<code class="docutils literal notranslate"><span class="pre">kill-sexp</span></code>). Véase <a class="reference internal" href="27_EdDePrograms.html#id11"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">z</kbd> <em>caracter</em> (<code class="docutils literal notranslate"><span class="pre">M-z</span></code> <em>caracter</em>)</p>
<blockquote>
@ -265,7 +265,7 @@
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">zap-up-to-char</span></code> <em>caracter</em> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">zap-up-to-char</span></code> <em>caracter</em>)</p>
<p>20 Mata hasta, pero sin incluir, la siguiente aparición de <em>caracter</em>.</p>
<p>Uno de los comandos de eliminación más usados es <code class="docutils literal notranslate"><span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-region</span></code>), que elimina el texto de la región (véase <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id1"><span class="std std-ref">12 La marca y la región</span></a>). Del mismo modo, <code class="docutils literal notranslate"><span class="pre">M-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-ring-save</span></code>) copia el texto de la región en el anillo de muertes sin eliminarlo del búfer. Si la marca está inactiva cuando teclea <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-w</span></code>) o <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">M-w</span></code>), el comando actúa sobre el texto entre el punto y donde puso la marca por última vez (ver <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id6"><span class="std std-ref">12.3 Operar en la Región</span></a>).</p>
<p>Emacs también proporciona comandos para matar unidades sintácticas específicas: palabras, con <code class="docutils literal notranslate"><span class="pre">M-DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-d</span></code> (vea <a class="reference internal" href="26_ComandsLengsHuma.html#id2"><span class="std std-ref">26.1 Palabras</span></a>); expresiones compuestas, con <code class="docutils literal notranslate"><span class="pre">C-M-k</span></code> (vea <a class="reference internal" href="27_EdDePrograms.html#id10"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>); y frases, con <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-k</span></code> (vea <a class="reference internal" href="26_ComandsLengsHuma.html#id3"><span class="std std-ref">26.2 Frases (u oraciones)</span></a>).</p>
<p>Emacs también proporciona comandos para matar unidades sintácticas específicas: palabras, con <code class="docutils literal notranslate"><span class="pre">M-DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-d</span></code> (vea <a class="reference internal" href="26_ComandsLengsHuma.html#id2"><span class="std std-ref">26.1 Palabras</span></a>); expresiones compuestas, con <code class="docutils literal notranslate"><span class="pre">C-M-k</span></code> (vea <a class="reference internal" href="27_EdDePrograms.html#id11"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>); y frases, con <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-k</span></code> (vea <a class="reference internal" href="26_ComandsLengsHuma.html#id3"><span class="std std-ref">26.2 Frases (u oraciones)</span></a>).</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">M-z</span></code> (<code class="docutils literal notranslate"><span class="pre">zap-to-char</span></code>) combina matar con buscar: lee un carácter y mata desde el punto hasta (e incluyendo) la siguiente aparición de ese carácter en el búfer. Un argumento numérico actúa como contador de repeticiones; un argumento negativo significa buscar hacia atrás y matar el texto anterior al punto. Se mantiene un historial de los caracteres usados anteriormente, al que se puede acceder mediante las teclas <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> / <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>/<code class="docutils literal notranslate"><span class="pre">M-n</span></code>). Esto es útil sobre todo si el carácter que se va a utilizar tiene que introducirse mediante un método de entrada complicado. Un comando similar <code class="docutils literal notranslate"><span class="pre">zap-up-to-char</span></code> mata desde el punto hasta, pero sin incluir, la siguiente aparición de un carácter, con un argumento numérico que actúa como contador de repeticiones.</p>
</section>
<section id="opciones-de-matado">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -204,7 +204,7 @@
</div></blockquote>
<p>El error común de transponer dos caracteres puede solucionarse, cuando son adyacentes, con el comando <code class="docutils literal notranslate"><span class="pre">C-t</span></code> (<code class="docutils literal notranslate"><span class="pre">transpose-chars</span></code>). Normalmente, <code class="docutils literal notranslate"><span class="pre">C-t</span></code> transpone los dos caracteres a ambos lados del punto. Cuando se da al final de una línea, en lugar de transponer el último carácter de la línea con la nueva línea, lo que sería inútil, <code class="docutils literal notranslate"><span class="pre">C-t</span></code> transpone los dos últimos caracteres de la línea. Por lo tanto, si detecta el error de transposición enseguida, puede solucionarlo con <code class="docutils literal notranslate"><span class="pre">C-t</span></code>. Si no lo detecta tan rápido, debe volver a colocar el cursor entre los dos caracteres transpuestos antes de teclear <code class="docutils literal notranslate"><span class="pre">C-t</span></code>. Si ha transpuesto un espacio con el último carácter de la palabra delante, los comandos de movimiento de palabra (<code class="docutils literal notranslate"><span class="pre">M-f</span></code>, <code class="docutils literal notranslate"><span class="pre">M-b</span></code>, etc.) son una buena forma de llegar hasta allí. De lo contrario, una búsqueda inversa (<code class="docutils literal notranslate"><span class="pre">C-r</span></code>) suele ser la mejor manera. Véase <a class="reference internal" href="16_BusqReemp.html#id1"><span class="std std-ref">16 Búsqueda y Reemplazo</span></a>.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-t</span></code> transpone la palabra antes del punto con la palabra después del punto (<code class="docutils literal notranslate"><span class="pre">transpose-words</span></code>). Desplaza el punto hacia delante sobre una palabra, arrastrando también hacia delante la palabra que precede o contiene al punto. Los caracteres de puntuación entre las palabras no se mueven. Por ejemplo, <code class="docutils literal notranslate"><span class="pre">FOO,</span> <span class="pre">BAR</span></code> se transpone a <code class="docutils literal notranslate"><span class="pre">BAR,</span> <span class="pre">FOO</span></code> en lugar de <code class="docutils literal notranslate"><span class="pre">BAR</span> <span class="pre">FOO,</span></code>. Si el punto se encuentra al final de la línea, la palabra anterior al punto se transpondrá con la primera palabra de la línea siguiente.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-M-t</span></code> (<code class="docutils literal notranslate"><span class="pre">transpose-sexps</span></code>) es un comando similar para transponer dos expresiones (véase <a class="reference internal" href="27_EdDePrograms.html#id10"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>), y <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-t</span></code> (<code class="docutils literal notranslate"><span class="pre">transpose-lines</span></code>) intercambia líneas. <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">transpose-sentences</span></code> y <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">transpose-paragraphs</span></code> transponen frases y párrafos, respectivamente. Estos comandos funcionan como <code class="docutils literal notranslate"><span class="pre">M-t</span></code> excepto en lo que respecta a las unidades de texto que transponen.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-M-t</span></code> (<code class="docutils literal notranslate"><span class="pre">transpose-sexps</span></code>) es un comando similar para transponer dos expresiones (véase <a class="reference internal" href="27_EdDePrograms.html#id11"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>), y <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-t</span></code> (<code class="docutils literal notranslate"><span class="pre">transpose-lines</span></code>) intercambia líneas. <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">transpose-sentences</span></code> y <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">transpose-paragraphs</span></code> transponen frases y párrafos, respectivamente. Estos comandos funcionan como <code class="docutils literal notranslate"><span class="pre">M-t</span></code> excepto en lo que respecta a las unidades de texto que transponen.</p>
<p>Un argumento numérico para un comando de transposición sirve como recuento de repeticiones: indica al comando de transposición que mueva el carácter (o palabra o expresión o línea) anterior o que contenga el punto a través de varios otros caracteres (o palabras o expresiones o líneas). Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">3</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">3</span> <span class="pre">C-t</span></code>) desplaza el carácter anterior al punto hacia adelante a través de otros tres caracteres. Cambiaría <code class="docutils literal notranslate"><span class="pre">foobar</span></code> por <code class="docutils literal notranslate"><span class="pre">oobfar</span></code>. Esto equivale a repetir <code class="docutils literal notranslate"><span class="pre">C-t</span></code> tres veces. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">-</kbd> <kbd class="kbd docutils literal notranslate">4</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">-</span> <span class="pre">4</span> <span class="pre">M-t</span></code>) mueve la palabra anterior al punto anterior a través de cuatro palabras. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">-</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">-</span> <span class="pre">C-M-t</span></code>) anularía el efecto de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-t</span></code>) simple.</p>
<p>A un argumento numérico de cero se le asigna un significado especial (porque de otro modo un comando con un recuento de repeticiones de cero no haría nada): transponer el carácter (o palabra o expresión o línea) que termina después del punto con el que termina después de la marca.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">transpose-regions</span></code> transpone el texto entre el punto y la marca con el texto entre las dos últimas marcas empujado al anillo de la marca (véase <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id2"><span class="std std-ref">12.1 Fijar la Marca</span></a>). Con un argumento de prefijo numérico, transpone el texto entre punto y marca con el texto entre dos marcas sucesivas que muchas entradas atrás en el anillo de marca. Este comando se usa mejor para transponer varios caracteres (o palabras o frases o párrafos) de una sola vez.</p>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -253,7 +253,7 @@
<span class="s1">&#39;((&quot;</span><span class="se">\\</span><span class="s1">([^/]+</span><span class="se">\\</span><span class="s1">)</span><span class="se">\\</span><span class="s1">.c</span><span class="se">\\</span><span class="s1">&#39;</span><span class="s2">&quot; &quot;</span>\\<span class="mf">1.</span><span class="n">h</span><span class="s2">&quot;)))</span>
</pre></div>
</div>
<p>(<code class="docutils literal notranslate"><span class="pre">ff-find-related-file</span></code> ofrece una funcionalidad similar especialmente orientada a archivos C, vea <a class="reference internal" href="27_EdDePrograms.html#id32"><span class="std std-ref">27.12.4 Otros comandos para el Modo C</span></a>).</p>
<p>(<code class="docutils literal notranslate"><span class="pre">ff-find-related-file</span></code> ofrece una funcionalidad similar especialmente orientada a archivos C, vea <a class="reference internal" href="27_EdDePrograms.html#id31"><span class="std std-ref">27.12.4 Otros comandos para el Modo C</span></a>).</p>
<p>O, si quiere considerar todos los ficheros bajo <code class="docutils literal notranslate"><span class="pre">&quot;src/emacs/DIR/nombre-archivo&quot;</span></code> como hermanos de otros <em>directorios</em>, se podría escribir:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">setq</span> <span class="n">find</span><span class="o">-</span><span class="n">sibling</span><span class="o">-</span><span class="n">rules</span>
<span class="s1">&#39;((&quot;src/emacs/[^/]+/</span><span class="se">\\</span><span class="s1">(.*</span><span class="se">\\</span><span class="s1">)</span><span class="se">\\</span><span class="s1">&#39;</span><span class="s2">&quot; &quot;</span><span class="n">src</span><span class="o">/</span><span class="n">emacs</span><span class="o">/.*/</span>\\<span class="mi">1</span><span class="s2">&quot;)))</span>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -156,10 +156,10 @@
</pre></div>
</div>
<p>Si el valor por defecto de <code class="docutils literal notranslate"><span class="pre">major-mode</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, el modo mayor se toma del búfer previamente actual.</p>
<p>Los modos principales especializados a menudo cambian el significado de ciertas teclas para hacer algo más adecuado para el modo. Por ejemplo, los modos de lenguaje de programación vinculan <code class="docutils literal notranslate"><span class="pre">TAB</span></code> para sangrar la línea actual de acuerdo con las reglas del lenguaje (ver <a class="reference internal" href="25_Indentacion.html#id1"><span class="std std-ref">25 Indentación</span></a>). Las teclas que suelen cambiarse son <code class="docutils literal notranslate"><span class="pre">TAB</span></code>, <code class="docutils literal notranslate"><span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">C-j</span></code>. Muchos modos también definen comandos especiales propios, normalmente ligados a secuencias de teclas cuyo prefijo es <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span></code>) (ver <a class="reference internal" href="../03_Teclas.html#id1"><span class="std std-ref">3 Teclas</span></a>). Los modos principales también pueden alterar las opciones y variables del Usuario; por ejemplo, los modos de lenguaje de programación suelen establecer un valor local en el búfer para la variable <code class="docutils literal notranslate"><span class="pre">comment-start</span></code>, que determina cómo se delimitan los comentarios del código fuente (véase <a class="reference internal" href="27_EdDePrograms.html#id13"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>).</p>
<p>Los modos principales especializados a menudo cambian el significado de ciertas teclas para hacer algo más adecuado para el modo. Por ejemplo, los modos de lenguaje de programación vinculan <code class="docutils literal notranslate"><span class="pre">TAB</span></code> para sangrar la línea actual de acuerdo con las reglas del lenguaje (ver <a class="reference internal" href="25_Indentacion.html#id1"><span class="std std-ref">25 Indentación</span></a>). Las teclas que suelen cambiarse son <code class="docutils literal notranslate"><span class="pre">TAB</span></code>, <code class="docutils literal notranslate"><span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">C-j</span></code>. Muchos modos también definen comandos especiales propios, normalmente ligados a secuencias de teclas cuyo prefijo es <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span></code>) (ver <a class="reference internal" href="../03_Teclas.html#id1"><span class="std std-ref">3 Teclas</span></a>). Los modos principales también pueden alterar las opciones y variables del Usuario; por ejemplo, los modos de lenguaje de programación suelen establecer un valor local en el búfer para la variable <code class="docutils literal notranslate"><span class="pre">comment-start</span></code>, que determina cómo se delimitan los comentarios del código fuente (véase <a class="reference internal" href="27_EdDePrograms.html#id14"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>).</p>
<p>Para ver la documentación del modo principal actual, incluida una lista de sus combinaciones de teclas, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">m</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-mode</span></code>). Consulte <a class="reference internal" href="11_Ayuda.html#id7"><span class="std std-ref">11.8 Otros comandos de Ayuda</span></a>.</p>
<p>Cada modo principal, aparte del modo Fundamental, define un gancho (hook) de modo, una lista personalizable de funciones Lisp que se ejecutarán cada vez que se active el modo en un búfer. Para obtener más información sobre ganchos, consulte <a class="reference internal" href="50_Personlzc.html#id7"><span class="std std-ref">50.2.2 Ganchos (Hooks)</span></a>. Cada gancho de modo recibe el nombre de su modo principal, por ejemplo, el modo Fortran tiene <code class="docutils literal notranslate"><span class="pre">fortran-mode-hook</span></code>. Además, todos los modos principales basados en texto ejecutan <code class="docutils literal notranslate"><span class="pre">text-mode-hook</span></code>, y muchos modos de lenguaje de programación <a class="footnote-reference brackets" href="#id4" id="id3" role="doc-noteref"><span class="fn-bracket">[</span>11<span class="fn-bracket">]</span></a> (incluyendo todos los distribuidos con Emacs) ejecutan <code class="docutils literal notranslate"><span class="pre">prog-mode-hook</span></code>, antes de ejecutar sus propios ganchos de modo. Las funciones gancho pueden mirar el valor de la variable <code class="docutils literal notranslate"><span class="pre">major-mode</span></code> para ver en qué modo se está entrando realmente.</p>
<p>Los ganchos de modo se usan comúnmente para habilitar modos menores (vea <a class="reference internal" href="#id5"><span class="std std-ref">24.2 Modos Menores</span></a>). Por ejemplo, puede poner las siguientes líneas en su archivo init para habilitar el modo menor Flyspell en todos los modos mayores basados en texto (vea <a class="reference internal" href="17_CmdCorrecErrsTipogr.html#id6"><span class="std std-ref">17.4 Comprobar y Corregir la Ortografía</span></a>), y el modo menor ElDoc en el modo Emacs Lisp (vea <a class="reference internal" href="27_EdDePrograms.html#id18"><span class="std std-ref">27.6.3. Búsqueda de Documentación en Lenguajes de Programación</span></a>):</p>
<p>Los ganchos de modo se usan comúnmente para habilitar modos menores (vea <a class="reference internal" href="#id5"><span class="std std-ref">24.2 Modos Menores</span></a>). Por ejemplo, puede poner las siguientes líneas en su archivo init para habilitar el modo menor Flyspell en todos los modos mayores basados en texto (vea <a class="reference internal" href="17_CmdCorrecErrsTipogr.html#id6"><span class="std std-ref">17.4 Comprobar y Corregir la Ortografía</span></a>), y el modo menor ElDoc en el modo Emacs Lisp (vea <a class="reference internal" href="27_EdDePrograms.html#id19"><span class="std std-ref">27.6.3. Búsqueda de Documentación en Lenguajes de Programación</span></a>):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">add</span><span class="o">-</span><span class="n">hook</span> <span class="s1">&#39;text-mode-hook &#39;</span><span class="n">flyspell</span><span class="o">-</span><span class="n">mode</span><span class="p">)</span>
<span class="p">(</span><span class="n">add</span><span class="o">-</span><span class="n">hook</span> <span class="s1">&#39;emacs-lisp-mode-hook &#39;</span><span class="n">eldoc</span><span class="o">-</span><span class="n">mode</span><span class="p">)</span>
</pre></div>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -142,8 +142,8 @@
<section id="indentacion">
<span id="id1"></span><h1>25 Indentación<a class="headerlink" href="#indentacion" title="Link to this heading"></a></h1>
<p>La <em>sangría</em> o <em>identación</em> se refiere a la inserción o ajuste de caracteres de <em>espacio en blanco</em> (caracteres de espacio y/o tabulación) al principio de una línea de texto. Este capítulo documenta los comandos y opciones de sangría que son comunes al modo Texto y modos relacionados, así como a los modos de lenguaje de programación. Consulte <a class="reference internal" href="27_EdDePrograms.html#id6"><span class="std std-ref">27.3 Indentación de Programas</span></a>, para obtener documentación adicional sobre la indentación en los modos de programación.</p>
<p>La forma más sencilla de realizar la sangría es la tecla <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>). En la mayoría de los modos principales, esto ejecuta el comando <code class="docutils literal notranslate"><span class="pre">indent-for-tab-command</span></code>. (En C y modos relacionados, <code class="docutils literal notranslate"><span class="pre">TAB</span></code> ejecuta el comando <code class="docutils literal notranslate"><span class="pre">c-indent-line-or-region</span></code>, que se comporta de forma similar, ver <a class="reference internal" href="27_EdDePrograms.html#id8"><span class="std std-ref">27.3.4 Comandos para la Indentación en C</span></a>).</p>
<p>La <em>sangría</em> o <em>identación</em> se refiere a la inserción o ajuste de caracteres de <em>espacio en blanco</em> (caracteres de espacio y/o tabulación) al principio de una línea de texto. Este capítulo documenta los comandos y opciones de sangría que son comunes al modo Texto y modos relacionados, así como a los modos de lenguaje de programación. Consulte <a class="reference internal" href="27_EdDePrograms.html#id7"><span class="std std-ref">27.3 Indentación de Programas</span></a>, para obtener documentación adicional sobre la indentación en los modos de programación.</p>
<p>La forma más sencilla de realizar la sangría es la tecla <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>). En la mayoría de los modos principales, esto ejecuta el comando <code class="docutils literal notranslate"><span class="pre">indent-for-tab-command</span></code>. (En C y modos relacionados, <code class="docutils literal notranslate"><span class="pre">TAB</span></code> ejecuta el comando <code class="docutils literal notranslate"><span class="pre">c-indent-line-or-region</span></code>, que se comporta de forma similar, ver <a class="reference internal" href="27_EdDePrograms.html#id9"><span class="std std-ref">27.3.4 Comandos para la Indentación en C</span></a>).</p>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p>Inserta un espacio en blanco o aplica una sangría (o indentación) a la línea actual según el modo (comando sangría por tabulación). Si la
@ -231,7 +231,7 @@ grande, como este:</p>
</section>
<section id="funciones-practicas-para-la-sangria">
<span id="id4"></span><h2>25.4 Funciones Prácticas para la Sangría<a class="headerlink" href="#funciones-practicas-para-la-sangria" title="Link to this heading"></a></h2>
<p>La variable <code class="docutils literal notranslate"><span class="pre">tab-always-indent</span></code> modifica el comportamiento del comando <code class="docutils literal notranslate"><span class="pre">TAB</span></code> (<code class="docutils literal notranslate"><span class="pre">indent-for-tab-command</span></code> ,sangría para el comando tab). El valor por defecto, <code class="docutils literal notranslate"><span class="pre">t</span></code>, proporciona el comportamiento descrito en Sangría. Si cambia el valor por el símbolo complete, TAB intentará primero aplicar la sangría a la línea actual y, si la línea ya estaba sangrada, intentará completar el texto en el punto (véase <a class="reference internal" href="27_EdDePrograms.html#id22"><span class="std std-ref">27.8 Completado de Nombres de Símbolos</span></a>). Si el valor es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, <code class="docutils literal notranslate"><span class="pre">TAB</span></code> aplica sangría a la línea actual sólo si el punto está en el margen izquierdo o en la sangría de la línea; en caso contrario, inserta un carácter de tabulación.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">tab-always-indent</span></code> modifica el comportamiento del comando <code class="docutils literal notranslate"><span class="pre">TAB</span></code> (<code class="docutils literal notranslate"><span class="pre">indent-for-tab-command</span></code> ,sangría para el comando tab). El valor por defecto, <code class="docutils literal notranslate"><span class="pre">t</span></code>, proporciona el comportamiento descrito en Sangría. Si cambia el valor por el símbolo complete, TAB intentará primero aplicar la sangría a la línea actual y, si la línea ya estaba sangrada, intentará completar el texto en el punto (véase <a class="reference internal" href="27_EdDePrograms.html#id23"><span class="std std-ref">27.8 Completado de Nombres de Símbolos</span></a>). Si el valor es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, <code class="docutils literal notranslate"><span class="pre">TAB</span></code> aplica sangría a la línea actual sólo si el punto está en el margen izquierdo o en la sangría de la línea; en caso contrario, inserta un carácter de tabulación.</p>
<p>Si <code class="docutils literal notranslate"><span class="pre">tab-always-indent</span></code> es completo, la opción de expandir o sangrar puede personalizarse aún más mediante la variable <code class="docutils literal notranslate"><span class="pre">tab-first-completion</span></code>. Por ejemplo, si esa variable es eol, sólo completa si el punto está al final de una línea. Vea <strong>Modo Específico de Sangría</strong> en el Manual de Referencia de Emacs Lisp, para más detalles.</p>
<p>El modo Electric Indent es un modo global menor que automáticamente indenta la línea después de cada <code class="docutils literal notranslate"><span class="pre">RET</span></code> que escriba. Este modo está activado por defecto. Para activar este modo menor, escriba <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">electric-indent-mode</span></code>. Para activar este modo en un único búfer, use <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">electric-indent-local-mode</span></code>.</p>
</section>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
@ -112,7 +112,7 @@
<li class="toctree-l3"><a class="reference internal" href="#busqueda-de-documentacion-en-lenguajes-de-programacion">27.6.3. Búsqueda de Documentación en Lenguajes de Programación</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#modo-secundario-presentacion-hideshow">27.7 Modo Secundario Presentación (Hideshow)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#modo-menor-para-ocultamiento-hideshow">27.7 Modo Menor para Ocultamiento (Hideshow)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#completado-de-nombres-de-simbolos">27.8 Completado de Nombres de Símbolos</a></li>
<li class="toctree-l2"><a class="reference internal" href="#palabras-en-mayusculas-y-minusculas">27.9 Palabras en Mayúsculas y Minúsculas</a></li>
<li class="toctree-l2"><a class="reference internal" href="#semantica">27.10 Semántica</a></li>
@ -205,9 +205,9 @@
<blockquote>
<div><ul class="simple">
<li><p>Búsqueda o desplazamiento sobre definiciones de nivel superior (véase <a class="reference internal" href="#id2"><span class="std std-ref">27.2 Definiciones de Nivel Superior, o Defuns</span></a>).</p></li>
<li><p>Aplicación de las convenciones de sangría habituales del lenguaje (véase <a class="reference internal" href="#id6"><span class="std std-ref">27.3 Indentación de Programas</span></a>).</p></li>
<li><p>Equilibrar paréntesis (ver <a class="reference internal" href="#id9"><span class="std std-ref">27.4 Comandos para la Edición con Paréntesis</span></a>).</p></li>
<li><p>Insertar, eliminar o alinear comentarios (véase <a class="reference internal" href="#id13"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>).</p></li>
<li><p>Aplicación de las convenciones de sangría habituales del lenguaje (véase <a class="reference internal" href="#id7"><span class="std std-ref">27.3 Indentación de Programas</span></a>).</p></li>
<li><p>Equilibrar paréntesis (ver <a class="reference internal" href="#id10"><span class="std std-ref">27.4 Comandos para la Edición con Paréntesis</span></a>).</p></li>
<li><p>Insertar, eliminar o alinear comentarios (véase <a class="reference internal" href="#id14"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>).</p></li>
<li><p>Resaltar la sintaxis del programa (véase <a class="reference internal" href="15_ControlDisplay.html#id3"><span class="std std-ref">15.3 Desplazamiento Automático</span></a>).</p></li>
</ul>
</div></blockquote>
@ -217,7 +217,7 @@
<p>Emacs tiene modos de lenguaje de programación para Lisp, Scheme, el lenguaje de expresión DSSSL basado en Scheme, Ada, ASM, AWK, C, C++, C#, Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, M4, Makefiles, Metafont (compañero de TeX para la creación de fuentes), Modula2, Object Pascal, Objective-C, Octave, Pascal, Perl, Pike, PostScript, Prolog, Python, Ruby, Simula, SQL, Tcl, TypeScript, Verilog y VHDL. Un modo alternativo para Perl se denomina modo CPerl. También hay modos disponibles para los lenguajes de scripting de los shells comunes de GNU y Unix, y archivos “BAT” de MS-DOS/MS-Windows, JSON, archivos maestros DNS, CSS (Cascading Style Sheets), Dockerfiles, archivos CMake, y varios tipos de archivos de configuración.</p>
<p>Idealmente, Emacs debería tener un modo principal para cada lenguaje de programación que quiera editar. Si no tiene un modo para su lenguaje favorito, dicho modo puede estar implementado en un paquete no distribuido con Emacs (ver <a class="reference internal" href="49_PaqEmacsLisp.html#id1"><span class="std std-ref">49 Paquetes Emacs Lisp</span></a>); o puede contribuir con uno.</p>
<p>Si Emacs ha sido compilado con la librería <code class="docutils literal notranslate"><span class="pre">tree-sitter</span></code>, ofrece varios modos de edición opcionales basados en esa librería, que utilizan las capacidades de análisis incremental proporcionadas por <code class="docutils literal notranslate"><span class="pre">tree-sitter</span></code>. Estos modos tienen <code class="docutils literal notranslate"><span class="pre">-ts-</span></code> en sus nombres; por ejemplo <code class="docutils literal notranslate"><span class="pre">c-ts-mode</span></code>, <code class="docutils literal notranslate"><span class="pre">python-ts-mode</span></code>, etc.</p>
<p>En la mayoría de los lenguajes de programación, la sangría debe variar de una línea a otra para ilustrar la estructura del programa. Por lo tanto, en la mayoría de los lenguajes de programación, teclear <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) actualiza la sangría de la línea actual (ver <a class="reference internal" href="#id6"><span class="std std-ref">27.3 Indentación de Programas</span></a>). Además, <code class="docutils literal notranslate"><span class="pre">DEL</span></code> suele estar vinculado a <code class="docutils literal notranslate"><span class="pre">backward-delete-char-untabify</span></code>, que borra hacia atrás tratando cada tabulación como si fuera el número equivalente de espacios, de modo que puede borrar una columna de sangría sin preocuparse de si el espacio en blanco está formado por espacios o tabulaciones.</p>
<p>En la mayoría de los lenguajes de programación, la sangría debe variar de una línea a otra para ilustrar la estructura del programa. Por lo tanto, en la mayoría de los lenguajes de programación, teclear <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) actualiza la sangría de la línea actual (ver <a class="reference internal" href="#id7"><span class="std std-ref">27.3 Indentación de Programas</span></a>). Además, <code class="docutils literal notranslate"><span class="pre">DEL</span></code> suele estar vinculado a <code class="docutils literal notranslate"><span class="pre">backward-delete-char-untabify</span></code>, que borra hacia atrás tratando cada tabulación como si fuera el número equivalente de espacios, de modo que puede borrar una columna de sangría sin preocuparse de si el espacio en blanco está formado por espacios o tabulaciones.</p>
<p>Al entrar en un modo de lenguaje de programación se ejecutan las funciones personalizadas de Lisp especificadas en la variable de gancho <code class="docutils literal notranslate"><span class="pre">prog-mode-hook</span></code>, seguidas de las especificadas en el propio <em>gancho de modo</em> del propio modo (véase <a class="reference internal" href="24_ModosMayores-Y-Menores.html#id2"><span class="std std-ref">24.1 Modos Mayores (o Principales)</span></a>). Por ejemplo, al entrar en modo C se ejecutan los ganchos <code class="docutils literal notranslate"><span class="pre">prog-mode-hook</span></code> y <code class="docutils literal notranslate"><span class="pre">c-mode-hook</span></code>. Ver <a class="reference internal" href="50_Personlzc.html#id7"><span class="std std-ref">50.2.2 Ganchos (Hooks)</span></a>, para información sobre éstos.</p>
<p>Hay manuales separados disponibles para los modos para Ada (ver <a class="reference external" href="https://elpa.gnu.org/packages/ada-mode.html#Top">Modo Ada</a>), C/C++/Objective C/Java/Corba IDL/Pike/AWK (ver CC Mode en CC Mode), Octave, VHDL, e IDLWAVE (ver <strong>IDLWAVE</strong> en en el Manual de IDLWAVE).</p>
</section>
@ -252,7 +252,7 @@
externos</em> en su lugar.</p>
</section>
<section id="imenu">
<h3>27.2.3 Imenu<a class="headerlink" href="#imenu" title="Link to this heading"></a></h3>
<span id="id5"></span><h3>27.2.3 Imenu<a class="headerlink" href="#imenu" title="Link to this heading"></a></h3>
<p>La función Imenu permite encontrar las definiciones principales de un archivo por su nombre. También es útil en los modos principales del formateador de texto, donde trata cada capítulo, sección, etc., como una definición. (Véase <a class="reference internal" href="29_ManyProgrsGrands.html#id13"><span class="std std-ref">29.4 Buscar Referencias de Identificador</span></a>, para una función más potente que trata varios archivos juntos).</p>
<p>Si teclea <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">i</span></code>, <code class="docutils literal notranslate"><span class="pre">imenu</span></code>), lee el nombre de una definición usando el minibúfer, luego mueve el punto a esa definición. Puede usar completar para especificar el nombre; el comando siempre muestra la lista completa de nombres válidos.</p>
<p>Alternativamente, puede vincular el comando <code class="docutils literal notranslate"><span class="pre">imenu</span></code> a un clic del ratón. Por lo que se muestran los menús del ratón para que seleccione un nombre de definición. También puede añadir el índice del búfer a la barra de menús llamando a <code class="docutils literal notranslate"><span class="pre">imenu-add-menubar-index</span></code>. Si quiere que este elemento de la barra de menús esté disponible para todos los búferes en un determinado modo principal, puede hacerlo añadiendo <code class="docutils literal notranslate"><span class="pre">imenu-add-menubar-index</span></code> a su gancho de modo. Pero si ha hecho eso, tendrá que esperar un poco cada vez que visite un archivo en ese modo, mientras Emacs encuentra todas las definiciones en ese búfer.</p>
@ -260,21 +260,21 @@ externos</em> en su lugar.</p>
<p><code class="docutils literal notranslate"><span class="pre">imenu-auto-rescan</span></code> se desactivará en búferes mayores que <code class="docutils literal notranslate"><span class="pre">imenu-auto-rescan-maxout</span></code> en bytes, y la exploración se detendrá si tarda más de <code class="docutils literal notranslate"><span class="pre">imenu-max-index-time</span> <span class="pre">segundos</span></code>.</p>
<p>Puede personalizar la forma en que se ordenan los menús configurando la variable <code class="docutils literal notranslate"><span class="pre">imenu-sort-function</span></code>. Por defecto, los nombres se ordenan según aparecen en el búfer; si desea una ordenamiento alfabético, use el símbolo <code class="docutils literal notranslate"><span class="pre">imenu--sort-by-name</span></code> como valor. También puede definir su propia función de comparación escribiendo código Lisp.</p>
<p>Si Eglot está activado para el proyecto del búfer actual (véase <a class="reference internal" href="29_ManyProgrsGrands.html#id9"><span class="std std-ref">29.2 Trabajar con Proyectos</span></a>) y el modo principal del búfer actual, Eglot proporciona su propia facilidad para producir el índice del búfer basándose en el análisis del código fuente del programa por parte del servidor de lenguaje que gestiona el búfer actual. Ver <strong>Características de Eglot</strong> en Eglot: El cliente LSP de Emacs.</p>
<p>Imenu proporciona la información para guiar el modo Which Function (ver <a class="reference internal" href="#id5"><span class="std std-ref">27.2.4 Modo Qué función (Which Function Mode)</span></a>). El Speedbar también puede usarlo (ver <a class="reference internal" href="22_MarcosPantallasGraf.html#id10"><span class="std std-ref">22.9 Marcos con Speedbar (con barra de control o barra rápida)</span></a>).</p>
<p>Imenu proporciona la información para guiar el modo Which Function (ver <a class="reference internal" href="#id6"><span class="std std-ref">27.2.4 Modo Qué función (Which Function Mode)</span></a>). El Speedbar también puede usarlo (ver <a class="reference internal" href="22_MarcosPantallasGraf.html#id10"><span class="std std-ref">22.9 Marcos con Speedbar (con barra de control o barra rápida)</span></a>).</p>
</section>
<section id="modo-que-funcion-which-function-mode">
<span id="id5"></span><h3>27.2.4 Modo Qué función (Which Function Mode)<a class="headerlink" href="#modo-que-funcion-which-function-mode" title="Link to this heading"></a></h3>
<span id="id6"></span><h3>27.2.4 Modo Qué función (Which Function Mode)<a class="headerlink" href="#modo-que-funcion-which-function-mode" title="Link to this heading"></a></h3>
<p>El modo Which Function es un modo menor global (véase <a class="reference internal" href="24_ModosMayores-Y-Menores.html#id5"><span class="std std-ref">24.2 Modos Menores</span></a>) que muestra el nombre de la función actual en la línea de modo, actualizándolo a medida que se desplaza por el búfer.</p>
<p>Para activar o desactivar el modo Which Function, use el comando <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">which-function-mode</span></code>. El modo Qué Función es un modo global menor. Por defecto, tiene efecto en todos los modos mayores que saben cómo soportarlo (es decir, todos los modos mayores que soportan Imenu). Puede restringirlo a una lista específica de modos principales cambiando el valor de la variable <code class="docutils literal notranslate"><span class="pre">which-func-modes</span></code> de <code class="docutils literal notranslate"><span class="pre">t</span></code> (que significa soportar todos los modos principales disponibles) a una lista de nombres de modos principales.</p>
</section>
</section>
<section id="indentacion-de-programas">
<span id="id6"></span><h2>27.3 Indentación de Programas<a class="headerlink" href="#indentacion-de-programas" title="Link to this heading"></a></h2>
<span id="id7"></span><h2>27.3 Indentación de Programas<a class="headerlink" href="#indentacion-de-programas" title="Link to this heading"></a></h2>
<p>La mejor manera de mantener un programa correctamente indentado es usar el Editor para reindentarlo a medida que lo cambia. Emacs tiene comandos para sangrar una sola línea, un número específico de líneas, o todas las líneas dentro de una sola agrupación parentética.</p>
<p>Ver <a class="reference internal" href="25_Indentacion.html#id1"><span class="std std-ref">25 Indentación</span></a>, para información general sobre la indentación. Esta sección describe las características de sangría específicas de los modos de lenguaje de programación.</p>
<p>Emacs también proporciona un Lisp pretty-printer en el paquete <code class="docutils literal notranslate"><span class="pre">pp</span></code>, que reformatea objetos Lisp con una sangría de aspecto agradable. Vea <strong>pp</strong> en el Manual de Referencia de Emacs Lisp.</p>
<section id="comandos-basicos-de-indentacion-de-programas">
<span id="id7"></span><h3>27.3.1 Comandos Básicos de Indentación de Programas<a class="headerlink" href="#comandos-basicos-de-indentacion-de-programas" title="Link to this heading"></a></h3>
<span id="id8"></span><h3>27.3.1 Comandos Básicos de Indentación de Programas<a class="headerlink" href="#comandos-basicos-de-indentacion-de-programas" title="Link to this heading"></a></h3>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p>Ajusta la indentación de la línea actual (<code class="docutils literal notranslate"><span class="pre">indent-for-tab-command</span></code>).</p>
@ -328,7 +328,7 @@ cadenas.</p>
</div>
</section>
<section id="comandos-para-la-indentacion-en-c">
<span id="id8"></span><h3>27.3.4 Comandos para la Indentación en C<a class="headerlink" href="#comandos-para-la-indentacion-en-c" title="Link to this heading"></a></h3>
<span id="id9"></span><h3>27.3.4 Comandos para la Indentación en C<a class="headerlink" href="#comandos-para-la-indentacion-en-c" title="Link to this heading"></a></h3>
<p>Estas son las funciones especiales para la sangría en modo C y modos relacionados:</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-q</span></code>)</p>
<blockquote>
@ -337,7 +337,7 @@ cadenas.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-q</span></code>)</p>
<blockquote>
<div><p>Reindenta cada línea de la expresión equilibrada (véase <a class="reference internal" href="#id10"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>), también conocida como «sexp», que sigue al punto. En modo CC,
<div><p>Reindenta cada línea de la expresión equilibrada (véase <a class="reference internal" href="#id11"><span class="std std-ref">27.4.1 Expresiones con Paréntesis Equilibrados</span></a>), también conocida como «sexp», que sigue al punto. En modo CC,
esto invoca <code class="docutils literal notranslate"><span class="pre">c-indent-exp</span></code>; en modo <code class="docutils literal notranslate"><span class="pre">c-ts</span></code> basado en tree-sitter esto invoca un <code class="docutils literal notranslate"><span class="pre">prog-indent-sexp</span></code> más general. Un argumento
prefijo inhibe los mensajes de advertencia sobre sintaxis no válida.</p>
</div></blockquote>
@ -381,13 +381,13 @@ se selecciona todo el búfer como región y luego se reindenta esa región.</p>
</section>
</section>
<section id="comandos-para-la-edicion-con-parentesis">
<span id="id9"></span><h2>27.4 Comandos para la Edición con Paréntesis<a class="headerlink" href="#comandos-para-la-edicion-con-parentesis" title="Link to this heading"></a></h2>
<span id="id10"></span><h2>27.4 Comandos para la Edición con Paréntesis<a class="headerlink" href="#comandos-para-la-edicion-con-parentesis" title="Link to this heading"></a></h2>
<p>Esta sección describe los comandos y características que aprovechan la estructura de paréntesis en un programa, o le ayudan a mantenerla equilibrada.</p>
<p>Cuando se habla de estas facilidades, el término «paréntesis» también incluye llaves, corchetes, o cualquier delimitador que se defina para coincidir en pares. El modo principal controla qué delimitadores son significativos, a través de la tabla de sintaxis (véase <strong>Tablas de Sintaxis</strong> en El Manual de Referencia de Emacs Lisp). En Lisp, sólo cuentan los paréntesis; en C, estos comandos se aplican también a llaves y corchetes.</p>
<p>Puede usar <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">check-parens</span></code> para encontrar cualquier paréntesis y comillas de cadena no balanceados en el búfer.</p>
<section id="expresiones-con-parentesis-equilibrados">
<span id="id10"></span><h3>27.4.1 Expresiones con Paréntesis Equilibrados<a class="headerlink" href="#expresiones-con-parentesis-equilibrados" title="Link to this heading"></a></h3>
<p>Cada modo de lenguaje de programación tiene su propia definición de una <em>expresión equilibrada</em>. Las expresiones balanceadas (o equilibradas) típicamente incluyen símbolos individuales, números y constantes de cadena, así como trozos de código encerrados en un par de delimitadores coincidentes. Los siguientes comandos tratan con expresiones balanceadas (en Emacs, tales expresiones se denominan internamente sexps <a class="footnote-reference brackets" href="#id12" id="id11" role="doc-noteref"><span class="fn-bracket">[</span>14<span class="fn-bracket">]</span></a>).</p>
<span id="id11"></span><h3>27.4.1 Expresiones con Paréntesis Equilibrados<a class="headerlink" href="#expresiones-con-parentesis-equilibrados" title="Link to this heading"></a></h3>
<p>Cada modo de lenguaje de programación tiene su propia definición de una <em>expresión equilibrada</em>. Las expresiones balanceadas (o equilibradas) típicamente incluyen símbolos individuales, números y constantes de cadena, así como trozos de código encerrados en un par de delimitadores coincidentes. Los siguientes comandos tratan con expresiones balanceadas (en Emacs, tales expresiones se denominan internamente sexps <a class="footnote-reference brackets" href="#id13" id="id12" role="doc-noteref"><span class="fn-bracket">[</span>14<span class="fn-bracket">]</span></a>).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-f</span></code>)</p>
<blockquote>
<div><p>Avanza sobre una expresión equilibrada (<code class="docutils literal notranslate"><span class="pre">forward-sexp</span></code>).</p>
@ -419,8 +419,8 @@ se selecciona todo el búfer como región y luego se reindenta esa región.</p>
<p>Para operar sobre expresiones equilibradas con un comando que actúe sobre la región, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-SPC</span></code>, <code class="docutils literal notranslate"><span class="pre">mark-sexp</span></code>). Esto establece la marca a la que se movería <code class="docutils literal notranslate"><span class="pre">C-M-f</span></code>. Mientras la marca está activa, cada llamada sucesiva a este comando extiende la región desplazando la marca una expresión. Los argumentos numéricos positivos o negativos desplazan la marca hacia delante o hacia atrás el número de expresiones especificado. El alias <code class="docutils literal notranslate"><span class="pre">C-M-&#64;</span></code> es equivalente a <code class="docutils literal notranslate"><span class="pre">C-M-SPC</span></code>. Consulte <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id5"><span class="std std-ref">12.2 Comandos para Marcar Objetos Textuales</span></a>, para obtener más información sobre éste y otros comandos afines.</p>
<p>En lenguajes que usan operadores infijos, como C, no es posible reconocer todas las expresiones balanceadas porque puede haber múltiples posibilidades en una posición dada. Por ejemplo, el modo C no trata <code class="docutils literal notranslate"><span class="pre">foo</span> <span class="pre">+</span> <span class="pre">bar</span></code> como una única expresión, aunque sea una expresión C; en su lugar, reconoce <code class="docutils literal notranslate"><span class="pre">foo</span></code> como una expresión y <code class="docutils literal notranslate"><span class="pre">bar</span></code> como otra, con el <code class="docutils literal notranslate"><span class="pre">+</span></code> como signo de puntuación entre ellas. Sin embargo, el modo C reconoce <code class="docutils literal notranslate"><span class="pre">(foo</span> <span class="pre">+</span> <span class="pre">bar)</span></code> como una única expresión, debido a los paréntesis.</p>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id12" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id11">14</a><span class="fn-bracket">]</span></span>
<aside class="footnote brackets" id="id13" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id12">14</a><span class="fn-bracket">]</span></span>
<p>La palabra «sexp» se usa para referirse a una expresión en Lisp.</p>
</aside>
</aside>
@ -505,7 +505,7 @@ decidir si se salta el delimitador de cierre.</p></li>
</section>
</section>
<section id="manipulacion-de-comentarios">
<span id="id13"></span><h2>27.5. Manipulación de Comentarios<a class="headerlink" href="#manipulacion-de-comentarios" title="Link to this heading"></a></h2>
<span id="id14"></span><h2>27.5. Manipulación de Comentarios<a class="headerlink" href="#manipulacion-de-comentarios" title="Link to this heading"></a></h2>
<p>Debido a que los comentarios son una parte tan importante de la programación, Emacs proporciona comandos especiales para editarlos e insertarlos. También puede revisar la ortografía de los comentarios con el modo Flyspell Prog (ver <a class="reference internal" href="17_CmdCorrecErrsTipogr.html#id6"><span class="std std-ref">17.4 Comprobar y Corregir la Ortografía</span></a>).</p>
<p>Algunos modos principales tienen reglas especiales para sangrar diferentes tipos de comentarios. Por ejemplo, en el código Lisp, los comentarios que empiezan con dos puntos y coma (<code class="docutils literal notranslate"><span class="pre">;;</span></code>) tienen sangría como si fueran líneas de código, mientras que los que empiezan con tres puntos y coma (<code class="docutils literal notranslate"><span class="pre">;;;</span></code>) se supone que están alineados con el margen izquierdo y se usan a menudo para seccionar. Emacs entiende estas convenciones; por ejemplo, si se escribe <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) en una línea de comentario, el comentario se sangrará a la posición adecuada.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">;;</span> <span class="n">Esta</span> <span class="n">función</span> <span class="n">es</span> <span class="n">sólo</span> <span class="n">un</span> <span class="n">ejemplo</span><span class="o">.</span>
@ -517,7 +517,7 @@ decidir si se salta el delimitador de cierre.</p></li>
</pre></div>
</div>
<section id="comandos-de-comentario">
<span id="id14"></span><h3>27.5.1 Comandos de Comentario<a class="headerlink" href="#comandos-de-comentario" title="Link to this heading"></a></h3>
<span id="id15"></span><h3>27.5.1 Comandos de Comentario<a class="headerlink" href="#comandos-de-comentario" title="Link to this heading"></a></h3>
<p>Los siguientes comandos actúan sobre los comentarios:</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">M-;</span></code>)</p>
<blockquote>
@ -541,7 +541,7 @@ decidir si se salta el delimitador de cierre.</p></li>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">M-j</span></code>)</div>
</div>
<blockquote>
<div><p>Como <code class="docutils literal notranslate"><span class="pre">RET</span></code> seguido de la inserción y alineación de un comentario (<code class="docutils literal notranslate"><span class="pre">default-indent-new-line</span></code>). Véase <a class="reference internal" href="#id15"><span class="std std-ref">27.5.2 Varias Líneas de Comentarios</span></a>.</p>
<div><p>Como <code class="docutils literal notranslate"><span class="pre">RET</span></code> seguido de la inserción y alineación de un comentario (<code class="docutils literal notranslate"><span class="pre">default-indent-new-line</span></code>). Véase <a class="reference internal" href="#id16"><span class="std std-ref">27.5.2 Varias Líneas de Comentarios</span></a>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">comment-region</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">comment-region</span></code>)</div>
@ -553,7 +553,7 @@ decidir si se salta el delimitador de cierre.</p></li>
<p>El comando para crear o alinear un comentario es <code class="docutils literal notranslate"><span class="pre">M-;</span></code> (<code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code>). La palabra «dwim» es un acrónimo de «Do What I Mean» (haga lo que quiero decir); indica que este comando puede usar para muchas tareas diferentes relacionadas con los comentarios, dependiendo de la situación en la que lo use.</p>
<p>Cuando una región está activa (véase <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id1"><span class="std std-ref">12 La marca y la región</span></a>), <code class="docutils literal notranslate"><span class="pre">M-;</span></code> o bien añade delimitadores de comentario a la región, o bien los elimina. Si cada línea de la región ya es un comentario, descomenta cada una de esas líneas eliminando sus delimitadores de comentario. En caso contrario, añade delimitadores de comentario para encerrar el texto de la región.</p>
<p>Si proporciona un argumento de prefijo a <code class="docutils literal notranslate"><span class="pre">M-;</span></code> cuando una región está activa, éste especifica el número de delimitadores de comentario que se añadirán o eliminarán. Un argumento positivo <em>n</em> añade <em>n</em> delimitadores, mientras que un argumento negativo <em>-n</em> elimina <em>n</em> delimitadores.</p>
<p>Si la región no está activa y no hay ningún comentario en la línea actual, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> añade un nuevo comentario a la línea actual. Si la línea está en blanco (es decir, vacía o contiene sólo caracteres de espacio en blanco), el comentario se sangrará a la misma posición a la que <code class="docutils literal notranslate"><span class="pre">TAB</span></code> sangraría (ver <a class="reference internal" href="#id7"><span class="std std-ref">27.3.1 Comandos Básicos de Indentación de Programas</span></a>). Si la línea no está en blanco, el comentario se coloca después del último carácter de la línea que no contenga espacios en blanco. Emacs intenta colocar el comentario entre las columnas especificadas por las variables <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> y <code class="docutils literal notranslate"><span class="pre">comment-fill-column</span></code> (ver <a class="reference internal" href="#id16"><span class="std std-ref">27.5.3 Opciones que Controlan los Comentarios</span></a>), si es posible. Si no, elegirá alguna otra posición adecuada, normalmente separada del texto que no es comentario por al menos un espacio. En cada caso, Emacs coloca el punto después del delimitador inicial del comentario, para que pueda empezar a escribir el texto del comentario inmediatamente.</p>
<p>Si la región no está activa y no hay ningún comentario en la línea actual, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> añade un nuevo comentario a la línea actual. Si la línea está en blanco (es decir, vacía o contiene sólo caracteres de espacio en blanco), el comentario se sangrará a la misma posición a la que <code class="docutils literal notranslate"><span class="pre">TAB</span></code> sangraría (ver <a class="reference internal" href="#id8"><span class="std std-ref">27.3.1 Comandos Básicos de Indentación de Programas</span></a>). Si la línea no está en blanco, el comentario se coloca después del último carácter de la línea que no contenga espacios en blanco. Emacs intenta colocar el comentario entre las columnas especificadas por las variables <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> y <code class="docutils literal notranslate"><span class="pre">comment-fill-column</span></code> (ver <a class="reference internal" href="#id17"><span class="std std-ref">27.5.3 Opciones que Controlan los Comentarios</span></a>), si es posible. Si no, elegirá alguna otra posición adecuada, normalmente separada del texto que no es comentario por al menos un espacio. En cada caso, Emacs coloca el punto después del delimitador inicial del comentario, para que pueda empezar a escribir el texto del comentario inmediatamente.</p>
<p>También puede usar <code class="docutils literal notranslate"><span class="pre">M-;</span></code> para alinear un comentario existente. Si una línea ya contiene la cadena de inicio de comentario, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> la realinea a la alineación convencional y mueve el punto después del delimitador de inicio de comentario. Como excepción, los comentarios que comienzan en la columna 0 no se desplazan. Incluso cuando un comentario existente está correctamente alineado, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> sigue siendo útil para desplazarse directamente al inicio del texto del comentario.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-;</span></code> (<code class="docutils literal notranslate"><span class="pre">comment-line)</span> <span class="pre">comenta</span></code> o descomenta líneas completas. Cuando una región está activa (véase <a class="reference internal" href="12_LaMarca-y-LaRegion.html#id1"><span class="std std-ref">12 La marca y la región</span></a>), <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-;</span></code> comenta o descomenta las líneas de la región. Si la región no está activa, este comando comenta o descomenta el punto de línea en el que se encuentra. Con un argumento prefijo positivo <em>n</em>, actúa sobre <em>n</em> líneas empezando por la actual; con un argumento negativo <em>-n</em>, afecta a <em>n</em> líneas precedentes. Después de invocar este comando con un argumento negativo, las sucesivas invocaciones con un argumento positivo operarán sobre las líneas precedentes como si el argumento estuviera negado.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">M-;</span></code> (<code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code> con un argumento prefijo) cuando la región no está activa mata cualquier comentario en la línea actual, junto con el espacio en blanco que lo precede. Dado que el comentario se guarda en el anillo de eliminación, puede volver a insertarlo en otra línea desplazándose hasta el final de esa línea, haciendo <code class="docutils literal notranslate"><span class="pre">C-y</span> <span class="pre">y</span></code>, a continuación, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> para realinear el comentario. Puede conseguir el mismo efecto que <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">M-;</span></code> escribiendo <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">comment-kill</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">comment-kill</span></code>) (<code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code> en realidad llama a <code class="docutils literal notranslate"><span class="pre">comment-kill</span></code> como subrutina cuando se le da un argumento prefijo). Si se invoca a <code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code> con un argumento numérico de prefijo, como en <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">n</span> <span class="pre">M-;</span></code>, cuando no hay ninguna región activa, se le dice a <code class="docutils literal notranslate"><span class="pre">comment-kill</span></code> que elimine los comentarios de <em>n</em> líneas.</p>
@ -561,7 +561,7 @@ decidir si se salta el delimitador de cierre.</p></li>
<p>Para modos similares a C, puede configurar el efecto exacto de <code class="docutils literal notranslate"><span class="pre">M-;</span></code> estableciendo las variables <code class="docutils literal notranslate"><span class="pre">c-indent-comment-alist</span></code> y <code class="docutils literal notranslate"><span class="pre">c-indent-comments-syntactically-p</span></code>. Por ejemplo, en una línea que termina en una llave de cierre, <code class="docutils literal notranslate"><span class="pre">M-;</span></code> pone el comentario un espacio después de la llave en lugar de en la <code class="docutils literal notranslate"><span class="pre">comment-colums</span></code>. Para más detalles, consulte <strong>Comandos de Comentario</strong> en el Manual del Modo CC.</p>
</section>
<section id="varias-lineas-de-comentarios">
<span id="id15"></span><h3>27.5.2 Varias Líneas de Comentarios<a class="headerlink" href="#varias-lineas-de-comentarios" title="Link to this heading"></a></h3>
<span id="id16"></span><h3>27.5.2 Varias Líneas de Comentarios<a class="headerlink" href="#varias-lineas-de-comentarios" title="Link to this heading"></a></h3>
<p>Si está escribiendo un comentario y desea continuarlo en otra línea, escriba: <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">M-j</span></code>) o (<code class="docutils literal notranslate"><span class="pre">C-M-j</span></code>, <code class="docutils literal notranslate"><span class="pre">default-indent-new-line</span></code>). Esto rompe la línea actual e inserta los delimitadores de comentario y la sangría necesarios para continuar el comentario.</p>
<p>Para lenguajes con delimitadores de comentario de cierre (por ejemplo, <code class="docutils literal notranslate"><span class="pre">*/</span></code> en C), el comportamiento exacto de <code class="docutils literal notranslate"><span class="pre">M-j</span></code> depende del valor de la variable <code class="docutils literal notranslate"><span class="pre">comment-multi-line</span></code>. Si el valor es <code class="docutils literal notranslate"><span class="pre">nulo</span></code>, el comando cierra el comentario en la línea anterior e inicia un nuevo comentario en la nueva línea. En caso contrario, abre una nueva línea dentro de los delimitadores de comentario actuales.</p>
<p>Cuando el modo Relleno automático (Auto Fill mode) está activado, pasar la columna de relleno mientras se escribe un comentario también continúa el comentario, del mismo modo que una invocación explícita de <code class="docutils literal notranslate"><span class="pre">M-j</span></code>.</p>
@ -569,18 +569,18 @@ decidir si se salta el delimitador de cierre.</p></li>
<p>Puede configurar el modo C para que cuando escriba una <code class="docutils literal notranslate"><span class="pre">/</span></code> al principio de una línea en un comentario de bloque multilínea, se cierre el comentario. Para ello, active la función de limpieza <code class="docutils literal notranslate"><span class="pre">comment-close-slash</span></code>. Vea <strong>Limpiezas</strong> en el Manual del Modo CC.</p>
</section>
<section id="opciones-que-controlan-los-comentarios">
<span id="id16"></span><h3>27.5.3 Opciones que Controlan los Comentarios<a class="headerlink" href="#opciones-que-controlan-los-comentarios" title="Link to this heading"></a></h3>
<p>Como se mencionó en <a class="reference internal" href="#id14"><span class="std std-ref">27.5.1 Comandos de Comentario</span></a>, cuando el comando <code class="docutils literal notranslate"><span class="pre">M-j</span></code> añade un comentario a una línea, intenta colocar el comentario entre las columnas especificadas por las variables locales del búfer <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> (columna-comentario) y <code class="docutils literal notranslate"><span class="pre">comment-fill-column</span></code> (o si es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, entonces el valor de <code class="docutils literal notranslate"><span class="pre">fill-column</span></code>, ver <a class="reference internal" href="26_ComandsLengsHuma.html#id11"><span class="std std-ref">26.6.2 Comandos de Relleno Explícito</span></a>). Puede establecer el valor local o el valor por defecto de estas variables locales del búfer de la forma habitual (consulte <a class="reference internal" href="50_Personlzc.html#id8"><span class="std std-ref">50.2.3 Variables Locales</span></a>). Alternativamente, puede teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">comment-set-column</span></code>) para establecer el valor de <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> en el búfer actual a la columna donde se encuentra actualmente el punto. <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">;</span></code> establece la columna de comentario para que coincida con el último comentario antes del punto en el búfer, y luego hace un <code class="docutils literal notranslate"><span class="pre">M-;</span></code> para alinear el comentario de la línea actual bajo el anterior.</p>
<span id="id17"></span><h3>27.5.3 Opciones que Controlan los Comentarios<a class="headerlink" href="#opciones-que-controlan-los-comentarios" title="Link to this heading"></a></h3>
<p>Como se mencionó en <a class="reference internal" href="#id15"><span class="std std-ref">27.5.1 Comandos de Comentario</span></a>, cuando el comando <code class="docutils literal notranslate"><span class="pre">M-j</span></code> añade un comentario a una línea, intenta colocar el comentario entre las columnas especificadas por las variables locales del búfer <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> (columna-comentario) y <code class="docutils literal notranslate"><span class="pre">comment-fill-column</span></code> (o si es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, entonces el valor de <code class="docutils literal notranslate"><span class="pre">fill-column</span></code>, ver <a class="reference internal" href="26_ComandsLengsHuma.html#id11"><span class="std std-ref">26.6.2 Comandos de Relleno Explícito</span></a>). Puede establecer el valor local o el valor por defecto de estas variables locales del búfer de la forma habitual (consulte <a class="reference internal" href="50_Personlzc.html#id8"><span class="std std-ref">50.2.3 Variables Locales</span></a>). Alternativamente, puede teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">comment-set-column</span></code>) para establecer el valor de <code class="docutils literal notranslate"><span class="pre">comment-column</span></code> en el búfer actual a la columna donde se encuentra actualmente el punto. <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">;</span></code> establece la columna de comentario para que coincida con el último comentario antes del punto en el búfer, y luego hace un <code class="docutils literal notranslate"><span class="pre">M-;</span></code> para alinear el comentario de la línea actual bajo el anterior.</p>
<p>Los comandos de comentario reconocen los comentarios basándose en la expresión regular que es el valor de la variable <code class="docutils literal notranslate"><span class="pre">comment-start-skip</span></code>. Asegúrese de que esta expresión regular no coincide con la cadena nula. Puede coincidir con más que el delimitador de inicio de comentario en el sentido más estricto de la palabra; por ejemplo, en modo C el valor de la variable podría ser <code class="docutils literal notranslate"><span class="pre">/\\*+[</span> <span class="pre">\t]*\|//+[</span> <span class="pre">\t]*</span></code>, que coincide con asteriscos y espacios extra después del propio <code class="docutils literal notranslate"><span class="pre">/\*</span></code>, y acepta también comentarios estilo C++ (<code class="docutils literal notranslate"><span class="pre">//</span></code>). (Observe que <code class="docutils literal notranslate"><span class="pre">\\</span></code> es necesario en la sintaxis Lisp para incluir un <code class="docutils literal notranslate"><span class="pre">\</span></code> en la cadena, que es necesario para negar a la primera estrella su significado especial en la sintaxis expreg. Véase <a class="reference internal" href="16_BusqReemp.html#id14"><span class="std std-ref">16.7 Barra Invertida en Expresiones Regulares</span></a>).</p>
<p>Cuando un comando comment crea un nuevo comentario, inserta el valor de <code class="docutils literal notranslate"><span class="pre">comment-start</span></code> como delimitador de apertura del comentario. También inserta el valor de <code class="docutils literal notranslate"><span class="pre">comment-end</span></code> después del punto, como delimitador de cierre del comentario. Por ejemplo, en modo Lisp, <code class="docutils literal notranslate"><span class="pre">comment-start</span></code> es <code class="docutils literal notranslate"><span class="pre">&quot;;&quot;</span></code> y <code class="docutils literal notranslate"><span class="pre">comment-end</span></code> es <code class="docutils literal notranslate"><span class="pre">&quot;&quot;</span></code> (la cadena vacía). En modo C, <code class="docutils literal notranslate"><span class="pre">comment-start</span></code> es <code class="docutils literal notranslate"><span class="pre">&quot;/*</span> <span class="pre">&quot;</span></code> y <code class="docutils literal notranslate"><span class="pre">comment-end</span></code> es <code class="docutils literal notranslate"><span class="pre">&quot;</span> <span class="pre">*/&quot;</span></code>.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">comment-padding</span></code> especifica una cadena que los comandos de comentario deben insertar entre el delimitador o delimitadores del comentario y el texto del comentario. El valor por defecto, <code class="docutils literal notranslate"><span class="pre">&quot;</span> <span class="pre">&quot;</span></code>, especifica un único espacio. Alternativamente, el valor puede ser un número, que especifica ese número de espacios, o <code class="docutils literal notranslate"><span class="pre">nil</span></code>, que significa ningún espacio.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">comment-multi-line</span></code> controla cómo <code class="docutils literal notranslate"><span class="pre">M-j</span></code> y el modo Auto Fill continúan los comentarios en múltiples líneas. Véase <a class="reference internal" href="#id15"><span class="std std-ref">27.5.2 Varias Líneas de Comentarios</span></a>.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">comment-multi-line</span></code> controla cómo <code class="docutils literal notranslate"><span class="pre">M-j</span></code> y el modo Auto Fill continúan los comentarios en múltiples líneas. Véase <a class="reference internal" href="#id16"><span class="std std-ref">27.5.2 Varias Líneas de Comentarios</span></a>.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">comment-indent-function</span></code> debe contener una función que será llamada para calcular la alineación de un comentario recién insertado o para alinear un comentario existente. Se establece de forma diferente en los distintos modos principales. La función se llama sin argumentos, pero con un punto al principio del comentario, o al final de una línea si se va a insertar un nuevo comentario. Debe devolver la columna en la que debe comenzar el comentario. Por ejemplo, la función por defecto basa su decisión en cuántos caracteres de comentario comienzan un comentario existente.</p>
<p>Emacs también intenta alinear los comentarios en líneas adyacentes. Para anular esto, la función puede devolver una cons de dos enteros (posiblemente iguales) para indicar un rango aceptable de sangría.</p>
</section>
</section>
<section id="busqueda-de-documentacion">
<span id="id17"></span><h2>27.6 Búsqueda de Documentación<a class="headerlink" href="#busqueda-de-documentacion" title="Link to this heading"></a></h2>
<span id="id18"></span><h2>27.6 Búsqueda de Documentación<a class="headerlink" href="#busqueda-de-documentacion" title="Link to this heading"></a></h2>
<p>Emacs proporciona varias características que puede usar para buscar la documentación de funciones, variables y comandos que planea usar en su programa.</p>
<section id="busqueda-de-documentacion-en-info">
<h3>27.6.1 Búsqueda de Documentación en Info<a class="headerlink" href="#busqueda-de-documentacion-en-info" title="Link to this heading"></a></h3>
@ -601,9 +601,9 @@ decidir si se salta el delimitador de cierre.</p></li>
<p>Para más información sobre cómo configurar y usar <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">woman</span></code>, vea el manual <strong>WoMan Info</strong>, que se distribuye con Emacs.</p>
</section>
<section id="busqueda-de-documentacion-en-lenguajes-de-programacion">
<span id="id18"></span><h3>27.6.3. Búsqueda de Documentación en Lenguajes de Programación<a class="headerlink" href="#busqueda-de-documentacion-en-lenguajes-de-programacion" title="Link to this heading"></a></h3>
<span id="id19"></span><h3>27.6.3. Búsqueda de Documentación en Lenguajes de Programación<a class="headerlink" href="#busqueda-de-documentacion-en-lenguajes-de-programacion" title="Link to this heading"></a></h3>
<p>Cuando edite código Emacs Lisp, puede usar los comandos <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> (<code class="docutils literal notranslate"><span class="pre">describe-function</span></code>) y <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">v</span></code> (<code class="docutils literal notranslate"><span class="pre">describe-variable</span></code>) para ver la documentación incorporada para las funciones y variables Lisp que quiera usar. Consulte <a class="reference internal" href="11_Ayuda.html#id3"><span class="std std-ref">11.3 Ayuda por Comando o Nombre de Variable</span></a>.</p>
<p>ElDoc <a class="footnote-reference brackets" href="#id20" id="id19" role="doc-noteref"><span class="fn-bracket">[</span>15<span class="fn-bracket">]</span></a> es un modo menor de búfer local que ayuda a buscar documentación de símbolos (funciones, métodos, clases, variables, etc.) en su programa. Cuando este modo está activado, el área de eco muestra información útil siempre que haya un símbolo documentado en el punto. Por ejemplo, en búferes bajo el modo Emacs Lisp, muestra la lista de argumentos de una función en el punto, y para una variable Lisp muestra la primera línea de la cadena de documentación de la variable.</p>
<p>ElDoc <a class="footnote-reference brackets" href="#id21" id="id20" role="doc-noteref"><span class="fn-bracket">[</span>15<span class="fn-bracket">]</span></a> es un modo menor de búfer local que ayuda a buscar documentación de símbolos (funciones, métodos, clases, variables, etc.) en su programa. Cuando este modo está activado, el área de eco muestra información útil siempre que haya un símbolo documentado en el punto. Por ejemplo, en búferes bajo el modo Emacs Lisp, muestra la lista de argumentos de una función en el punto, y para una variable Lisp muestra la primera línea de la cadena de documentación de la variable.</p>
<p>Para activar el modo ElDoc, escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">eldoc-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">eldoc-mode</span></code>)`. También existe un modo ElDoc global, que está activado por defecto, y activa el modo ElDoc en los búferes cuyo modo principal establece las variables que se describen a continuación. Use <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">global-eldoc-mode</span></code> para desactivarlo globalmente.</p>
<p>Varios modos principales configuran el modo ElDoc global para usar sus funciones de documentación. Algunos ejemplos son el modo Emacs Lisp, el modo Python y el modo Cfengine. Además, las características de Emacs que proporcionan soporte para varios modos principales configuran ElDoc para usar sus facilidades para recuperar la documentación. Algunos ejemplos son Eglot (ver <strong>Características de Eglot</strong> en Eglot: El cliente LSP de Emacs), que proporciona documentación basada en la información de los servidores de lenguajes; el modo Resumen inactivo de Semantic (ver <strong>Modo Resumen</strong> Inactivo en el Manual de Semantic); y Flymake, que usa ElDoc para mostrar diagnósticos en el punto (ver <strong>Encontrando Diagnósticos</strong> en el manual GNU Flymake).</p>
<p>El modo ElDoc funciona programando la visualización de la documentación disponible para el símbolo en el punto después de que Emacs haya estado inactivo durante un breve periodo de tiempo. Esto evita el molesto parpadeo de los mensajes de documentación en el área de eco o en la línea de modo cuando se escribe rápidamente y sin demora.</p>
@ -661,15 +661,15 @@ modo principal del búfer actual. Estas funciones actúan como una colección de
funciones de búsqueda de documentación con ElDoc añadiendo sus funciones al valor local del búfer de esta variable.</p>
</div></blockquote>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id20" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id19">15</a><span class="fn-bracket">]</span></span>
<aside class="footnote brackets" id="id21" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id20">15</a><span class="fn-bracket">]</span></span>
<p>El nombre «Eldoc» es un accidente histórico: este modo comenzó al soportar los buffers LISP de Emacs.</p>
</aside>
</aside>
</section>
</section>
<section id="modo-secundario-presentacion-hideshow">
<span id="id21"></span><h2>27.7 Modo Secundario Presentación (Hideshow)<a class="headerlink" href="#modo-secundario-presentacion-hideshow" title="Link to this heading"></a></h2>
<section id="modo-menor-para-ocultamiento-hideshow">
<span id="id22"></span><h2>27.7 Modo Menor para Ocultamiento (Hideshow)<a class="headerlink" href="#modo-menor-para-ocultamiento-hideshow" title="Link to this heading"></a></h2>
<p>El modo Hideshow (modo de Ocultamiento) es un modo menor local del búfer que le permite mostrar selectivamente porciones de un programa, que se denominan <em>bloques</em>. Escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">hs-minor-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">hs-minor-mode</span></code>) para activar este modo menor (ver <a class="reference internal" href="24_ModosMayores-Y-Menores.html#id5"><span class="std std-ref">24.2 Modos Menores</span></a>).</p>
<p>Cuando usa el modo Hideshow para ocultar un bloque, éste desaparece de la pantalla y es sustituido por una elipsis (tres puntos seguidos). Lo que constituye un bloque depende del modo principal. En el modo C y los modos relacionados, los bloques se delimitan mediante llaves, mientras que en el modo Lisp se delimitan mediante paréntesis. Los comentarios multilínea también cuentan como bloques.</p>
<p>El modo Hideshow proporciona los siguientes comandos:</p>
@ -724,35 +724,35 @@ defecto es <code class="docutils literal notranslate"><span class="pre">code</sp
</div></blockquote>
</section>
<section id="completado-de-nombres-de-simbolos">
<span id="id22"></span><h2>27.8 Completado de Nombres de Símbolos<a class="headerlink" href="#completado-de-nombres-de-simbolos" title="Link to this heading"></a></h2>
<span id="id23"></span><h2>27.8 Completado de Nombres de Símbolos<a class="headerlink" href="#completado-de-nombres-de-simbolos" title="Link to this heading"></a></h2>
<p>El completado se hace normalmente en el minibúfer (ver <a class="reference internal" href="09_ElMinibufer.html#id4"><span class="std std-ref">9.4 Completado</span></a>), pero también puede completar nombres de símbolos en búferes Emacs ordinarios.</p>
<p>En la mayoría de los modos de lenguaje de programación, <code class="docutils literal notranslate"><span class="pre">C-M-i</span></code> (o <code class="docutils literal notranslate"><span class="pre">M-TAB</span></code> <a class="footnote-reference brackets" href="#id24" id="id23" role="doc-noteref"><span class="fn-bracket">[</span>16<span class="fn-bracket">]</span></a>) invoca el comando <code class="docutils literal notranslate"><span class="pre">completion-at-point</span></code>, que genera la lista de posibles terminaciones para el símbolo en el punto. Este comando usa las facilidades de soporte disponibles para obtener las terminaciones candidatas:</p>
<p>En la mayoría de los modos de lenguaje de programación, <code class="docutils literal notranslate"><span class="pre">C-M-i</span></code> (o <code class="docutils literal notranslate"><span class="pre">M-TAB</span></code> <a class="footnote-reference brackets" href="#id25" id="id24" role="doc-noteref"><span class="fn-bracket">[</span>16<span class="fn-bracket">]</span></a>) invoca el comando <code class="docutils literal notranslate"><span class="pre">completion-at-point</span></code>, que genera la lista de posibles terminaciones para el símbolo en el punto. Este comando usa las facilidades de soporte disponibles para obtener las terminaciones candidatas:</p>
<p>Si Eglot está activado para el proyecto del búfer actual (véase <a class="reference internal" href="29_ManyProgrsGrands.html#id9"><span class="std std-ref">29.2 Trabajar con Proyectos</span></a>) y el modo principal del búfer actual, el comando intenta usar el servidor de idiomas correspondiente para producir la lista de candidatos a finalización. Véase <strong>Características de Eglot</strong> en Eglot: El cliente LSP de Emacs.</p>
<p>Si el modo Semántico está habilitado (ver <a class="reference internal" href="#id26"><span class="std std-ref">27.10 Semántica</span></a>), el comando intenta usar los datos del analizador semántico para completar.</p>
<p>Si el modo Semántico está habilitado (ver <a class="reference internal" href="#id27"><span class="std std-ref">27.10 Semántica</span></a>), el comando intenta usar los datos del analizador semántico para completar.</p>
<p>Si el modo Semántico (Semantic mode) no está habilitado o falla al completar, el comando intenta completar usando la tabla de etiquetas seleccionada (ver <a class="reference internal" href="29_ManyProgrsGrands.html#id18"><span class="std std-ref">29.4.2 Tablas de Etiquetas</span></a>); necesita visitar la tabla de etiquetas con <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">visit-tags-table</span></code> para que funcione.</p>
<p>En modo Emacs Lisp, el comando usa los nombres de función, variable o propiedad definidos en la sesión Emacs actual.</p>
<p>En todos los demás aspectos, el completado de símbolos en el búfer se comporta como el completado en el minibúfer. Por ejemplo, si Emacs no puede completar un único símbolo, muestra una lista de alternativas de completado en otra ventana. Entonces puede usar las teclas <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">M-DOWN</span></code>) y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">M-UP</span></code>) para navegar a través de los completados mostrados en el búfer de completados sin dejar el búfer original, y la tecla <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-RET</span></code>) para insertar el completado actualmente resaltado en el búfer. Véase <a class="reference internal" href="09_ElMinibufer.html#id4"><span class="std std-ref">9.4 Completado</span></a>.</p>
<p>En el modo Texto (Text mode) y modos relacionados, <code class="docutils literal notranslate"><span class="pre">M-TAB</span></code> completa las palabras basándose en el diccionario del corrector ortográfico. Véase <a class="reference internal" href="17_CmdCorrecErrsTipogr.html#id6"><span class="std std-ref">17.4 Comprobar y Corregir la Ortografía</span></a>.</p>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id24" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id23">16</a><span class="fn-bracket">]</span></span>
<aside class="footnote brackets" id="id25" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id24">16</a><span class="fn-bracket">]</span></span>
<p>En las pantallas gráficas, la tecla <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">M-TAB</span></code>) suele estar reservada por el gestor de ventanas para cambiar de ventana gráfica, por lo que deberá teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-i</span></code>) o <kbd class="kbd docutils literal notranslate">ESC</kbd><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span> <span class="pre">TAB</span></code>) en su lugar.</p>
</aside>
</aside>
</section>
<section id="palabras-en-mayusculas-y-minusculas">
<span id="id25"></span><h2>27.9 Palabras en Mayúsculas y Minúsculas<a class="headerlink" href="#palabras-en-mayusculas-y-minusculas" title="Link to this heading"></a></h2>
<span id="id26"></span><h2>27.9 Palabras en Mayúsculas y Minúsculas<a class="headerlink" href="#palabras-en-mayusculas-y-minusculas" title="Link to this heading"></a></h2>
<p>Algunos estilos de programación usan símbolos mixtos (o «CamelCase») como <code class="docutils literal notranslate"><span class="pre">unReadableSymbol</span></code>. (En el proyecto GNU, recomendamos usar
guiones bajos para separar palabras dentro de un identificador, en lugar de usar distinciones entre mayúsculas y minúsculas). Emacs tiene
varias características para hacer más fácil tratar con tales símbolos.</p>
<p>El modo Visor (Glasses mode) es un modo menor localizado en el búfer que facilita la lectura de tales símbolos, alterando la forma en que se muestran. Por defecto, muestra guiones bajos adicionales entre cada letra minúscula y la siguiente mayúscula. Esto no altera el texto del búfer, sólo cómo se muestra.</p>
<p>Para activar este modo, escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">glasses-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">glasses-mode</span></code>) (véase <a class="reference internal" href="24_ModosMayores-Y-Menores.html#id5"><span class="std std-ref">24.2 Modos Menores</span></a>). Cuando el modo Visor está activado, aparece el indicador de modo menor <code class="docutils literal notranslate"><span class="pre">o^o</span></code> en la línea de modo. Para obtener más información sobre el modo Glasses, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">P</kbd> <code class="docutils literal notranslate"><span class="pre">glasses</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">P</span> <span class="pre">glasses</span> <span class="pre">RET</span></code>).</p>
<p>El modo Subpalabra (Subword mode) es otro modo menor local del búfer. En modo subpalabra, los comandos de palabra de Emacs reconocen las letras mayúsculas en <code class="docutils literal notranslate"><span class="pre">StudlyCapsIdentifiers</span></code> como límites de palabra. Cuando este modo está activado, el indicador de modo menor <code class="docutils literal notranslate"><span class="pre">,</span></code> aparece en la línea de modo. Véase también el modo similar superpalabra (<code class="docutils literal notranslate"><span class="pre">superword-mode</span></code>) (véase <a class="reference internal" href="#id29"><span class="std std-ref">27.11 Otras Funciones Útiles para Editar Programas</span></a>).</p>
<p>El modo Subpalabra (Subword mode) es otro modo menor local del búfer. En modo subpalabra, los comandos de palabra de Emacs reconocen las letras mayúsculas en <code class="docutils literal notranslate"><span class="pre">StudlyCapsIdentifiers</span></code> como límites de palabra. Cuando este modo está activado, el indicador de modo menor <code class="docutils literal notranslate"><span class="pre">,</span></code> aparece en la línea de modo. Véase también el modo similar superpalabra (<code class="docutils literal notranslate"><span class="pre">superword-mode</span></code>) (véase <a class="reference internal" href="#id30"><span class="std std-ref">27.11 Otras Funciones Útiles para Editar Programas</span></a>).</p>
</section>
<section id="semantica">
<span id="id26"></span><h2>27.10 Semántica<a class="headerlink" href="#semantica" title="Link to this heading"></a></h2>
<span id="id27"></span><h2>27.10 Semántica<a class="headerlink" href="#semantica" title="Link to this heading"></a></h2>
<p>Semantic es un paquete que proporciona comandos de edición conscientes del lenguaje y basados en <em>analizadores de código fuente</em> (<code class="docutils literal notranslate"><span class="pre">source</span> <span class="pre">code</span> <span class="pre">parser</span></code>). Esta sección proporciona una breve descripción de Semantic; para más detalles, véase <strong>Semantic</strong> en la Guía de Semantic.</p>
<p>La mayoría de las funciones de Emacs que tienen en cuenta el lenguaje, como el modo de bloqueo de fuentes (véase <a class="reference internal" href="15_ControlDisplay.html#id3"><span class="std std-ref">15.3 Desplazamiento Automático</span></a>), se basan en reglas empíricas <a class="footnote-reference brackets" href="#id28" id="id27" role="doc-noteref"><span class="fn-bracket">[</span>17<span class="fn-bracket">]</span></a> que suelen dar buenos resultados pero que nunca son del todo exactas. En cambio, los analizadores sintácticos que usa Semantic comprenden con exactitud la sintaxis de los lenguajes de programación. Esto permite a Semantic proporcionar comandos de búsqueda, navegación y finalización potentes y precisos.</p>
<p>La mayoría de las funciones de Emacs que tienen en cuenta el lenguaje, como el modo de bloqueo de fuentes (véase <a class="reference internal" href="15_ControlDisplay.html#id3"><span class="std std-ref">15.3 Desplazamiento Automático</span></a>), se basan en reglas empíricas <a class="footnote-reference brackets" href="#id29" id="id28" role="doc-noteref"><span class="fn-bracket">[</span>17<span class="fn-bracket">]</span></a> que suelen dar buenos resultados pero que nunca son del todo exactas. En cambio, los analizadores sintácticos que usa Semantic comprenden con exactitud la sintaxis de los lenguajes de programación. Esto permite a Semantic proporcionar comandos de búsqueda, navegación y finalización potentes y precisos.</p>
<p>Para empezar a usar Semantic, escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">semantic-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">semantic-mode</span></code>) o haga clic en la opción de menú denominada <code class="docutils literal notranslate"><span class="pre">Source</span> <span class="pre">Code</span> <span class="pre">Parsers</span> <span class="pre">(Semantic)</span></code> en el menú <code class="docutils literal notranslate"><span class="pre">Tools</span></code> (Herramientas). Esto activa el modo Semántico, un modo global menor.</p>
<p>Cuando el modo semántico está activado, Emacs intenta analizar automáticamente cada archivo que visita. Actualmente, Semantic entiende C, C++, HTML, Java, Javascript, Make, Python, Scheme, SRecode y Texinfo. Dentro de cada búfer analizado, están disponibles los siguientes comandos:</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">,</kbd><kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">,</span> <span class="pre">j</span></code>)</p>
@ -777,19 +777,19 @@ aborta la terminación.</p>
</div></blockquote>
<p>Además de los comandos anteriores, el paquete Semantic proporciona otras formas de usar la información del analizador sintáctico. Por ejemplo, puede usarlo para mostrar una lista de terminaciones cuando Emacs está inactivo. Ver <strong>Semantic</strong> en la Guía de Semantic, para más detalles.</p>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id28" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id27">17</a><span class="fn-bracket">]</span></span>
<aside class="footnote brackets" id="id29" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id28">17</a><span class="fn-bracket">]</span></span>
<p>Expresiones regulares y tablas de sintaxis.</p>
</aside>
</aside>
</section>
<section id="otras-funciones-utiles-para-editar-programas">
<span id="id29"></span><h2>27.11 Otras Funciones Útiles para Editar Programas<a class="headerlink" href="#otras-funciones-utiles-para-editar-programas" title="Link to this heading"></a></h2>
<span id="id30"></span><h2>27.11 Otras Funciones Útiles para Editar Programas<a class="headerlink" href="#otras-funciones-utiles-para-editar-programas" title="Link to this heading"></a></h2>
<p>Algunos comandos de Emacs que no están diseñados específicamente para editar programas son útiles para ello.</p>
<p>Los comandos de Emacs que operan sobre palabras, frases y párrafos son útiles para editar código. La mayoría de los nombres de símbolos contienen palabras (ver <a class="reference internal" href="26_ComandsLengsHuma.html#id2"><span class="std std-ref">26.1 Palabras</span></a>), mientras que las sentencias se pueden encontrar en cadenas y comentarios (ver <a class="reference internal" href="26_ComandsLengsHuma.html#id3"><span class="std std-ref">26.2 Frases (u oraciones)</span></a>). En cuanto a los párrafos, están definidos en la mayoría de los modos del lenguaje de programación para comenzar y terminar en líneas en blanco (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id4"><span class="std std-ref">26.3 Párrafos</span></a>). Por lo tanto, usar juiciosamente las líneas en blanco para hacer el programa más claro también proporcionará trozos de texto útiles para que trabajen los comandos de párrafo. El modo Relleno Automático (Auto Fill mode), si está activado en un modo principal de lenguaje de programación, aplica sangría a las nuevas líneas que crea.</p>
<p>El modo Superpalabra es un modo menor localizado en el búfer que hace que los comandos de edición y movimiento traten los símbolos (por ejemplo, <code class="docutils literal notranslate"><span class="pre">esto_es_un_símbolo</span></code>) como palabras. Cuando el modo Superpalabra está activado, el indicador de modo menor <code class="docutils literal notranslate"><span class="pre">²</span></code> aparece en la línea de modo. Véase también el modo similar de subpalabra (<code class="docutils literal notranslate"><span class="pre">subword-mode</span></code>) (véase <a class="reference internal" href="#id25"><span class="std std-ref">27.9 Palabras en Mayúsculas y Minúsculas</span></a>).</p>
<p>El modo Superpalabra es un modo menor localizado en el búfer que hace que los comandos de edición y movimiento traten los símbolos (por ejemplo, <code class="docutils literal notranslate"><span class="pre">esto_es_un_símbolo</span></code>) como palabras. Cuando el modo Superpalabra está activado, el indicador de modo menor <code class="docutils literal notranslate"><span class="pre">²</span></code> aparece en la línea de modo. Véase también el modo similar de subpalabra (<code class="docutils literal notranslate"><span class="pre">subword-mode</span></code>) (véase <a class="reference internal" href="#id26"><span class="std std-ref">27.9 Palabras en Mayúsculas y Minúsculas</span></a>).</p>
<p>El modo Diseño Eléctrico (Electric Layout) (<cite>M-x electric-layout-mode`</cite>) es un modo menor global que inserta automáticamente nuevas líneas cuando se escriben ciertos caracteres; por ejemplo, <code class="docutils literal notranslate"><span class="pre">{</span></code>, <code class="docutils literal notranslate"><span class="pre">}</span></code> y <code class="docutils literal notranslate"><span class="pre">;</span></code> en el modo Javascript.</p>
<p>Aparte del modo Presentación (mode Hideshow) (ver <a class="reference internal" href="#id21"><span class="std std-ref">27.7 Modo Secundario Presentación (Hideshow)</span></a>), otra forma de mostrar selectivamente partes de un programa es usar la función de visualización selectiva (ver <a class="reference internal" href="15_ControlDisplay.html#id18"><span class="std std-ref">15.18 Visualización Selectiva</span></a>). Los modos de programación también suelen soportar el modo menor Esquema (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id16"><span class="std std-ref">26.9 Modo Esquema (mode Outilne)</span></a>), que puede usarse con el paquete Plegado (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id21"><span class="std std-ref">26.9.6 Edición de Plegado</span></a>).</p>
<p>Aparte del modo Presentación (mode Hideshow) (ver <a class="reference internal" href="#id22"><span class="std std-ref">27.7 Modo Menor para Ocultamiento (Hideshow)</span></a>), otra forma de mostrar selectivamente partes de un programa es usar la función de visualización selectiva (ver <a class="reference internal" href="15_ControlDisplay.html#id18"><span class="std std-ref">15.18 Visualización Selectiva</span></a>). Los modos de programación también suelen soportar el modo menor Esquema (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id16"><span class="std std-ref">26.9 Modo Esquema (mode Outilne)</span></a>), que puede usarse con el paquete Plegado (véase <a class="reference internal" href="26_ComandsLengsHuma.html#id21"><span class="std std-ref">26.9.6 Edición de Plegado</span></a>).</p>
<p>El modo Prettify Symbols es un modo menor localizado en el búfer que sustituye ciertas cadenas por versiones más atractivas para su visualización. Por ejemplo, en el modo Emacs Lisp, sustituye la cadena <code class="docutils literal notranslate"><span class="pre">lambda</span></code> por el carácter lambda griego <code class="docutils literal notranslate"><span class="pre">λ</span></code>. En un búfer TeX, sustituirá <code class="docutils literal notranslate"><span class="pre">\alpha</span></code><code class="docutils literal notranslate"><span class="pre">\omega</span></code> y otras macros matemáticas por sus caracteres Unicode. Puede usar esto también en modos que no sean de programación. Puede personalizar el modo añadiendo más entradas a <code class="docutils literal notranslate"><span class="pre">prettify-symbols-alist</span></code>. Una personalización más elaborada está disponible mediante la personalización de <code class="docutils literal notranslate"><span class="pre">prettify-symbols-compose-predicate</span></code> si su valor por defecto <code class="docutils literal notranslate"><span class="pre">prettify-symbols-default-compose-p</span></code> no es apropiado. También existe una versión global, <code class="docutils literal notranslate"><span class="pre">global-prettify-symbols-mode</span></code>, que activa el modo en todos los búferes que lo soportan.</p>
<p>El símbolo en el punto puede mostrarse en su forma original. Esto se controla mediante la variable <code class="docutils literal notranslate"><span class="pre">prettify-symbols-unprettify-at-point</span></code>: si no es nula, la forma original del símbolo en el punto se restaurará mientras el punto esté en él.</p>
</section>
@ -831,211 +831,257 @@ cuenta de repetición. Con un argumento negativo, se mueve hacia atrás.</p>
<blockquote>
<div><p>Mueve el punto al principio de la sentencia C más interna (<code class="docutils literal notranslate"><span class="pre">c-beginning-of-statement</span></code>). Si el punto ya está al principio de una
sentencia, se mueve al principio de la sentencia precedente. Con el argumento prefijo <em>n</em>, retrocede <em>n</em> - 1 sentencias.</p>
<p>En comentarios o en cadenas que abarcan más de una línea, este comando se mueve por sentencias en lugar de por sentencias.</p>
<p>En comentarios o en cadenas que abarcan más de una línea, este comando se mueve por oraciones en lugar de por sentencias.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Atl</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">M-e</span></code>)</p>
<blockquote>
<div><p>Mueve el punto al final del enunciado o frase C más interior; como M-a excepto que se mueve en la otra dirección
<div><p>Mueve el punto al final del enunciado o frase C más interior; como <code class="docutils literal notranslate"><span class="pre">M-a</span></code> excepto que se mueve en la otra dirección
(<code class="docutils literal notranslate"><span class="pre">c-end-of-statement</span></code>).</p>
</div></blockquote>
</section>
<section id="caracteres-c-electricos">
<h3>27.12.2 Caracteres C Eléctricos<a class="headerlink" href="#caracteres-c-electricos" title="Link to this heading"></a></h3>
<p>En modo C y modos relacionados, ciertos caracteres de impresión son eléctricos, además de insertarse a sí mismos, también reentintan la línea actual, y opcionalmente también insertan nuevas líneas. Los caracteres eléctricos son {, }, :, #, ;, ,, &lt;, &gt;, /, <a href="#id30"><span class="problematic" id="id31">*</span></a>, (, y ).</p>
<p>Puede que la sangría eléctrica le resulte incómoda si está editando código con sangría caótica. Si es nuevo en el modo CC, puede que le resulte desconcertante. Puede activar la acción eléctrica con el comando C-c C-l; cuando está activada, “/cl” aparece en la línea de modo después del nombre del modo (donde c, si está presente, es “*” o “/”, dependiendo de si el estilo de comentario es bloque o línea). Consulte Modos Menores en el Manual del Modo CC, para más información sobre los indicadores de línea de modo en el Modo CC.</p>
<dl class="simple">
<dt>C-c C-l</dt><dd><p>Alterna la acción eléctrica (c-toggle-electric-state). Con un argumento prefijo positivo, este comando activa la acción eléctrica, con uno negativo la desactiva.</p>
</dd>
</dl>
<p>Los caracteres eléctricos insertan nuevas líneas sólo cuando, además del estado eléctrico, está activada la función de auto-newline (indicada por “/cla” en la línea de modo después del nombre del modo). Puede activar o desactivar esta función con el comando C-c C-a:</p>
<dl class="simple">
<dt>C-c C-a</dt><dd><p>Activa la función de auto-newline (c-toggle-auto-newline). Con un argumento prefijo, este comando activa la función de auto-newline si el argumento es positivo, y la desactiva si es
negativo.</p>
</dd>
</dl>
<p>Normalmente el estilo Modo CC configura las circunstancias exactas en las que Emacs inserta auto-newlines. También puede configurar esto directamente. Vea Custom Auto-newlines en The CC Mode Manual.</p>
<p>En modo C y modos relacionados, ciertos caracteres de impresión son <em>eléctricos</em>, además de insertarse a sí mismos, también reindentan la línea actual, y opcionalmente también insertan nuevas líneas. Los caracteres eléctricos son <code class="docutils literal notranslate"><span class="pre">{</span></code>, <code class="docutils literal notranslate"><span class="pre">}</span></code>, <code class="docutils literal notranslate"><span class="pre">:</span></code>, <code class="docutils literal notranslate"><span class="pre">#</span></code>, <code class="docutils literal notranslate"><span class="pre">;</span></code>, <code class="docutils literal notranslate"><span class="pre">,</span></code>, <code class="docutils literal notranslate"><span class="pre">&lt;</span></code>, <code class="docutils literal notranslate"><span class="pre">&gt;</span></code>, <code class="docutils literal notranslate"><span class="pre">/</span></code>, <code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">(</span></code>, y <code class="docutils literal notranslate"><span class="pre">)</span></code>.</p>
<p>Puede que la sangría eléctrica le resulte incómoda si está editando código con sangría caótica. Si es nuevo en el modo CC, puede que le resulte desconcertante. Puede activar la acción eléctrica con el comando <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-l</span></code>; cuando está activada, <code class="docutils literal notranslate"><span class="pre">/cl</span></code> aparece en la línea de modo después del nombre del modo (donde <em>c</em>, si está presente, es <code class="docutils literal notranslate"><span class="pre">*</span></code> o <code class="docutils literal notranslate"><span class="pre">/</span></code>, dependiendo de si el estilo de comentario es bloque o línea). Consulte <strong>Modos Menores</strong> en el Manual del Modo CC, para más información sobre los indicadores de línea de modo en el Modo CC.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">l</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-l</span></code>)</p>
<blockquote>
<div><p>Alterna la acción eléctrica (<code class="docutils literal notranslate"><span class="pre">c-toggle-electric-state</span></code>). Con un argumento prefijo positivo, este comando activa la acción eléctrica,
con uno negativo la desactiva.</p>
</div></blockquote>
<p>Los caracteres eléctricos insertan nuevas líneas sólo cuando, además del estado eléctrico, está activada la función <code class="docutils literal notranslate"><span class="pre">auto-newline</span></code> (indicada por <code class="docutils literal notranslate"><span class="pre">/cla</span></code> en la línea de modo después del nombre del modo). Puede activar o desactivar esta función con el comando <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-a</span></code>:</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-a</span></code>)</p>
<blockquote>
<div><p>Activa la función de <code class="docutils literal notranslate"><span class="pre">auto-newline</span></code> (<code class="docutils literal notranslate"><span class="pre">c-toggle-auto-newline</span></code>). Con un argumento prefijo, este comando activa la función de
<code class="docutils literal notranslate"><span class="pre">auto-newline</span></code> si el argumento es positivo, y la desactiva si es negativo.</p>
</div></blockquote>
<p>Normalmente el estilo Modo CC configura las circunstancias exactas en las que Emacs inserta <code class="docutils literal notranslate"><span class="pre">auto-newlines</span></code>. También puede configurar esto directamente. Vea <strong>Nuevas Líneas Automáticas Personalizadas</strong> en el Manual CC).</p>
</section>
<section id="caracteristica-de-borrado-forzado-en-c">
<h3>27.12.3. Característica de Borrado Forzado en C<a class="headerlink" href="#caracteristica-de-borrado-forzado-en-c" title="Link to this heading"></a></h3>
<p>Si quiere borrar un bloque entero de espacio en blanco en un punto, puede usar el borrado forzado (hungry deletion). Esto borra todo el espacio en blanco contiguo antes o después del punto en una sola operación. Los espacios en blanco incluyen tabuladores y nuevas líneas, pero no comentarios ni comandos del preprocesador.</p>
<p>C-c C-DEL
C-c DEL</p>
<p>Si quiere borrar un bloque entero de espacio en blanco en un punto, puede usar el <em>borrado a la fueraza</em> (hungry deletion). Esto borra todo el espacio en blanco contiguo antes o después del punto en una sola operación. Los espacios en blanco incluyen tabuladores y nuevas líneas, pero no comentarios ni comandos del preprocesador.</p>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-DEL</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">DEL</span></code>)</div>
</div>
<blockquote>
<div><p>Elimina todo el bloque de espacios en blanco que precede al punto (c-hungry-delete-backwards).</p>
<div><p>Elimina todo el bloque de espacios en blanco que precede al punto (<code class="docutils literal notranslate"><span class="pre">c-hungry-delete-backwards</span></code>).</p>
</div></blockquote>
<p>C-c C-d
C-c C-Delete
C-c Delete</p>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-d</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Delete</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-Delete</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Delete</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">Delete</span></code>)</div>
</div>
<blockquote>
<div><p>Borra todo el bloque de espacios en blanco después del punto (c-hungry-delete-forward).</p>
<div><p>Borra todo el bloque de espacios en blanco después del punto (<code class="docutils literal notranslate"><span class="pre">c-hungry-delete-forward</span></code>).</p>
</div></blockquote>
<p>Como alternativa a los comandos anteriores, puede activar el modo de borrado con hambre. Cuando esta función está activada (indicada por “h” después de “/” en la línea de modo después del nombre del modo), un solo DEL borra todos los espacios en blanco precedentes, no sólo un espacio, y un solo C-d (pero no Delete normal) borra todos los espacios en blanco siguientes.</p>
<dl class="simple">
<dt>M-x c-toggle-hungry-state</dt><dd><p>Activa la función de borrado por hambre (c-toggle-hungry-state). Con un argumento prefijo, este comando activa la función de borrado por hambre si el argumento es positivo, y la
desactiva si es negativo.</p>
</dd>
</dl>
<p>La variable c-hungry-delete-key controla si la función hungry-delete está activada.</p>
<p>Como alternativa a los comandos anteriores, puede activar el modo de borrado forzoso. Cuando esta función está activada (indicada por <code class="docutils literal notranslate"><span class="pre">h</span></code> después de <code class="docutils literal notranslate"><span class="pre">/</span></code> en la línea de modo después del nombre del modo), un solo <code class="docutils literal notranslate"><span class="pre">DEL</span></code> borra todos los espacios en blanco precedentes, no sólo un espacio, y un solo <code class="docutils literal notranslate"><span class="pre">C-d</span></code> (pero no <code class="docutils literal notranslate"><span class="pre">Delete</span></code> normal) borra todos los espacios en blanco siguientes.</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">c-toggle-hungry-state</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">c-toggle-hungry-state</span></code>)</p>
<blockquote>
<div><p>Activa la función de borrado forzoso (<code class="docutils literal notranslate"><span class="pre">c-toggle-hungry-state</span></code>). Con un argumento prefijo, este comando activa dicha función si el
argumento es positivo, y la desactiva si es negativo.</p>
</div></blockquote>
<p>La variable <code class="docutils literal notranslate"><span class="pre">c-hungry-delete-key</span></code> controla si la función <code class="docutils literal notranslate"><span class="pre">hungry-delete</span></code> está activada.</p>
</section>
<section id="otros-comandos-para-el-modo-c">
<span id="id32"></span><h3>27.12.4 Otros comandos para el Modo C<a class="headerlink" href="#otros-comandos-para-el-modo-c" title="Link to this heading"></a></h3>
<dl>
<dt>M-x c-context-line-break</dt><dd><p>Este comando inserta un salto de línea y aplica a la nueva línea la sangría adecuada al contexto. En código normal, hace el trabajo de RET (newline, nueva línea), en una línea de
preprocesador C inserta adicionalmente un “' en el salto de línea, y dentro de los comentarios es como M-j (c-indent-new-comment-line).</p>
<p>c-context-line-break no está vinculado a una tecla por defecto, pero necesita una vinculación para ser útil. El siguiente código lo vinculará a RET. Usamos c-initialization-hook aquí
para asegurarnos de que el mapa de teclado está cargado antes de intentar cambiarlo.</p>
<span id="id31"></span><h3>27.12.4 Otros comandos para el Modo C<a class="headerlink" href="#otros-comandos-para-el-modo-c" title="Link to this heading"></a></h3>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">c-context-break</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">c-context-line-break</span></code>)</p>
<blockquote>
<div><blockquote>
<div><dl class="simple">
<dt>(defun my-bind-clb ()</dt><dd><dl class="simple">
<dt>(keymap-set c-mode-base-map «RET»</dt><dd><p>“c-context-line-break))</p>
</dd>
</dl>
</dd>
</dl>
<div><p>Este comando inserta un salto de línea y aplica a la nueva línea la sangría adecuada al contexto. En código normal, hace el trabajo de
<code class="docutils literal notranslate"><span class="pre">RET</span></code> (<code class="docutils literal notranslate"><span class="pre">newline</span></code>, nueva línea), en una línea de preprocesador C inserta adicionalmente un <code class="docutils literal notranslate"><span class="pre">\</span></code> en el salto de línea, y dentro de
los comentarios es como <code class="docutils literal notranslate"><span class="pre">M-j</span></code> (<code class="docutils literal notranslate"><span class="pre">c-indent-new-comment-line</span></code>).</p>
<p><code class="docutils literal notranslate"><span class="pre">c-context-line-break</span></code> no está vinculado a una tecla por defecto, pero necesita una vinculación para ser útil. El siguiente código
lo vinculará a <code class="docutils literal notranslate"><span class="pre">RET</span></code>. Usamos <code class="docutils literal notranslate"><span class="pre">c-initialization-hook</span></code> aquí para asegurarnos de que el mapa de teclado está cargado antes de
intentar cambiarlo.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">defun</span> <span class="n">my</span><span class="o">-</span><span class="n">bind</span><span class="o">-</span><span class="n">clb</span> <span class="p">()</span>
<span class="p">(</span><span class="n">keymap</span><span class="o">-</span><span class="nb">set</span> <span class="n">c</span><span class="o">-</span><span class="n">mode</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="nb">map</span> <span class="s2">&quot;RET&quot;</span>
<span class="s1">&#39;c-context-line-break))</span>
<span class="p">(</span><span class="n">add</span><span class="o">-</span><span class="n">hook</span> <span class="s1">&#39;c-initialization-hook &#39;</span><span class="n">my</span><span class="o">-</span><span class="n">bind</span><span class="o">-</span><span class="n">clb</span><span class="p">)</span>
</pre></div>
</div>
</div></blockquote>
<p>(add-hook “c-initialization-hook “my-bind-clb)</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-h</span></code>)</p>
<blockquote>
<div><p>Pone marca al final de la definición de una función, y pone punto al principio ( <code class="docutils literal notranslate"><span class="pre">c-mark-function</span></code>).</p>
</div></blockquote>
</dd>
<dt>C-M-h</dt><dd><p>Pone marca al final de la definición de una función, y pone punto al principio ( c-mark-function).</p>
</dd>
<dt>M-q</dt><dd><p>Rellena un párrafo, manejando comentarios en C y C++ (c-fill-paragraph). Si cualquier parte de la línea actual es un comentario o está dentro de un comentario, este comando rellena el
comentario o el párrafo del mismo en el que se encuentra ese punto, preservando la sangría del comentario y los delimitadores del comentario.</p>
</dd>
<dt>C-c C-e</dt><dd><p>Ejecuta el preprocesador C sobre el texto de la región, y muestra el resultado, que incluye la expansión de todas las llamadas a macros (c-macro-expand). El texto del búfer antes de
la región también se incluye en el preprocesamiento, por las macros definidas allí, pero la salida de esta parte no se muestra.</p>
<p>Cuando está depurando código C que usa macros, a veces es difícil averiguar con precisión cómo se expanden las macros. Con este comando, no tendrá que averiguarlo; podrá ver las
expansiones.</p>
</dd>
<dt>C-c C-</dt><dd><p>Inserta o alinea caracteres “' en los extremos de las líneas de la región (c-backslash-region). Esto es útil después de escribir o editar una definición de macro C.</p>
<p>Si una línea ya termina en “', este comando ajusta la cantidad de espacio en blanco antes de ella. Si no, inserta un nuevo “'. Sin embargo, la última línea de la región se trata de
forma especial; no se inserta ningún “' en esa línea, y cualquier “' que haya se borra.</p>
</dd>
<dt>M-x cpp-highlight-buffer</dt><dd><p>Resalta partes del texto según sus condicionales de preprocesador. Este comando muestra otro búfer llamado <em>CPP Edit</em>, que sirve como menú gráfico para seleccionar cómo mostrar
determinados tipos de condicionales y su contenido. Después de cambiar varios parámetros, haga clic en [A]pply these settings ([A]plique estos parámetros) (o vaya a ese búfer y
escriba a) para volver a resaltar el búfer del modo C en consecuencia.</p>
</dd>
<dt>C-c C-s</dt><dd><p>Muestra la información sintáctica de la línea fuente actual (c-show-syntactic-information). Esta información indica cómo se aplica la sangría a la línea.</p>
</dd>
</dl>
<p>M-x cwarn-mode
M-x global-cwarn-mode</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">M-q</span></code>)</p>
<blockquote>
<div><p>Rellena un párrafo, manejando comentarios en C y C++ (<code class="docutils literal notranslate"><span class="pre">c-fill-paragraph</span></code>). Si cualquier parte de la línea actual es un comentario o
está dentro de un comentario, este comando rellena el comentario o el párrafo del mismo en el que se encuentra ese punto, preservando
la sangría del comentario y los delimitadores del comentario.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-e</span></code>)</p>
<blockquote>
<div><p>Ejecuta el preprocesador C sobre el texto de la región, y muestra el resultado, que incluye la expansión de todas las llamadas a
macros (<code class="docutils literal notranslate"><span class="pre">c-macro-expand</span></code>). El texto del búfer antes de la región también se incluye en el preprocesamiento, por las macros definidas
allí, pero la salida de esta parte no se muestra.</p>
<p>Cuando está depurando código C que usa macros, a veces es difícil averiguar con precisión cómo se expanden las macros. Con este
comando, no tendrá que averiguarlo; podrá ver las expansiones.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">\</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-\</span></code>)</p>
<blockquote>
<div><p>Inserta o alinea caracteres <code class="docutils literal notranslate"><span class="pre">\</span></code> en los extremos de las líneas de la región (<code class="docutils literal notranslate"><span class="pre">c-backslash-region</span></code>). Esto es útil después de
escribir o editar una definición de macro C.</p>
<p>Si una línea ya termina en <code class="docutils literal notranslate"><span class="pre">\</span></code>, este comando ajusta la cantidad de espacio en blanco antes de ella. Si no, inserta un nuevo <code class="docutils literal notranslate"><span class="pre">\</span></code>.
Sin embargo, la última línea de la región se trata de forma especial; no se inserta ningún <code class="docutils literal notranslate"><span class="pre">\</span></code> en esa línea, y cualquier <code class="docutils literal notranslate"><span class="pre">\</span></code> que
haya se borra.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">cpp-highlight-buffer</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">cpp-highlight-buffer</span></code>)</p>
<blockquote>
<div><p>Resalta partes del texto según sus condicionales de preprocesador. Este comando muestra otro búfer llamado <code class="docutils literal notranslate"><span class="pre">*CPP</span> <span class="pre">Edit*</span></code>, que sirve
como menú gráfico para seleccionar cómo mostrar determinados tipos de condicionales y su contenido. Después de cambiar varios
parámetros, haga clic en <code class="docutils literal notranslate"><span class="pre">[A]pply</span> <span class="pre">these</span> <span class="pre">settings</span></code> ([A]plique estos parámetros) (o vaya a ese búfer y escriba <code class="docutils literal notranslate"><span class="pre">a)</span></code> para volver a
resaltar el búfer del modo C en consecuencia.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-s</span></code>)</p>
<blockquote>
<div><p>Muestra la información sintáctica de la línea fuente actual (<code class="docutils literal notranslate"><span class="pre">c-show-syntactic-information</span></code>). Esta información indica cómo se aplica
la sangría a la línea.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">cwarn-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">cwarn-mode</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">global-cwarn-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">global-cwarn-mode</span></code>)</div>
</div>
<blockquote>
<div><p>El modo menor de CWarn resalta ciertas construcciones sospechosas de C y C++:</p>
<blockquote>
<div><ul class="simple">
<li><p>Asignaciones dentro de expresiones.</p></li>
<li><p>Punto y coma inmediatamente después de “if”, “for”, y “while” (excepto después de una sentencia “do … while”);</p></li>
<li><p>Punto y coma inmediatamente después de <code class="docutils literal notranslate"><span class="pre">if</span></code>, <code class="docutils literal notranslate"><span class="pre">for</span></code>, y <code class="docutils literal notranslate"><span class="pre">while</span></code> (excepto después de una sentencia <code class="docutils literal notranslate"><span class="pre">do</span> <span class="pre">...</span> <span class="pre">while</span></code>);</p></li>
<li><p>Funciones C++ con parámetros de referencia.</p></li>
</ul>
</div></blockquote>
<p>Puede activar el modo para un búfer con el comando M-x cwarn-mode, o para todos los búferes adecuados con el comando M-x global-cwarn-mode o personalizando la variable
global-cwarn-mode. También debe habilitar el modo Font Lock para que funcione.</p>
<p>Puede activar el modo para un búfer con el comando <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">cwarn-mode</span></code>, o para todos los búferes adecuados con el comando <code class="docutils literal notranslate"><span class="pre">M-x</span>
<span class="pre">global-cwarn-mode</span></code> o personalizando la variable <code class="docutils literal notranslate"><span class="pre">global-cwarn-mode</span></code>. También debe habilitar el modo Font Lock para que funcione.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">hide-ifdefmode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">hide-ifdef-mode</span></code>)</p>
<blockquote>
<div><p>El modo menor Hide-ifdef oculta el código seleccionado dentro de los bloques de preprocesador <code class="docutils literal notranslate"><span class="pre">#if</span></code> y <code class="docutils literal notranslate"><span class="pre">#ifdef</span></code>. Si cambia la
variable <code class="docutils literal notranslate"><span class="pre">hide-ifdef-shadow</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>, Hide-ifdef minor mode sombrea los bloques de preprocesador mostrándolos con una cara menos
prominente, en lugar de ocultarlos por completo. Consulte la cadena de documentación de <code class="docutils literal notranslate"><span class="pre">hide-ifdef-mode</span></code> para más información.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">ff-findrelated-file</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">ff-find-related-file</span></code>)</p>
<blockquote>
<div><p>Busca un archivo relacionado de forma especial con el archivo visitado por el búfer actual. Normalmente será el archivo de cabecera
correspondiente a un archivo fuente C/C++, o viceversa. La variable <code class="docutils literal notranslate"><span class="pre">ff-related-file-alist</span></code> especifica cómo calcular los nombres de
archivos relacionados.</p>
</div></blockquote>
<dl class="simple">
<dt>M-x hide-ifdef-mode</dt><dd><p>El modo menor Hide-ifdef oculta el código seleccionado dentro de los bloques de preprocesador “#if” y “#ifdef”. Si cambia la variable hide-ifdef-shadow a t, Hide-ifdef minor mode
sombrea los bloques de preprocesador mostrándolos con una cara menos prominente, en lugar de ocultarlos por completo. Consulte la cadena de documentación de hide-ifdef-mode para más
información.</p>
</dd>
<dt>M-x ff-find-related-file</dt><dd><p>Busca un archivo relacionado de forma especial con el archivo visitado por el búfer actual. Normalmente será el archivo de cabecera correspondiente a un archivo fuente C/C++, o
viceversa. La variable ff-related-file-alist especifica cómo calcular los nombres de archivos relacionados.</p>
</dd>
</dl>
</section>
</section>
<section id="modo-asm">
<h2>27.13 Modo Asm<a class="headerlink" href="#modo-asm" title="Link to this heading"></a></h2>
<p>El modo Asm es un modo principal para editar archivos de código ensamblador. Define estos comandos:</p>
<dl class="simple">
<dt>TAB</dt><dd><p>tab-to-tab-stop.</p>
</dd>
<dt>C-j</dt><dd><p>Inserta una nueva línea y luego aplica indentación usando tabulador a tabulador.</p>
</dd>
</dl>
<dl class="simple">
<dt>:</dt><dd><p>Introduzca dos puntos y, a continuación, elimine la sangría de antes de los dos puntos de la etiqueta anterior. A continuación, haga tabulador a tabulador.</p>
</dd>
</dl>
<dl class="simple">
<dt>;</dt><dd><p>Inserta o alinea un comentario.</p>
</dd>
</dl>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">tab-to-tab-stop</span></code>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-j</span></code>)</p>
<blockquote>
<div><p>Inserta una nueva línea y luego aplica indentación usando <code class="docutils literal notranslate"><span class="pre">tab-to-tab-stop</span></code>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">:</kbd> (<code class="docutils literal notranslate"><span class="pre">:</span></code>)</p>
<blockquote>
<div><p>Introduce dos puntos y, a continuación, elimina la sangría de antes de los dos puntos de la etiqueta anterior. A continuación, hace
<code class="docutils literal notranslate"><span class="pre">tab-to-tab-stop</span></code>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">;</span></code>)</p>
<blockquote>
<div><p>Inserta o alinea un comentario.</p>
</div></blockquote>
<p>La variable asm-comment-char especifica qué carácter inicia los comentarios en la sintaxis de ensamblador.</p>
</section>
<section id="modo-fortran">
<h2>27.14 Modo Fortran<a class="headerlink" href="#modo-fortran" title="Link to this heading"></a></h2>
<p>El modo Fortran está pensado para editar código fuente de forma fija (y también de formato tabulado) (normalmente Fortran 77). Para editar código fuente de forma libre más moderno (Fortran 90, 95, 2003, 2008), use el modo F90 (f90-mode). Emacs normalmente usa el modo Fortran para archivos con extensión “.f”, “.F” o “.for”, y el modo F90 para las extensiones “.f90”, “.f95”, “.f03” y “.f08”. Personalice auto-mode-alist para añadir más extensiones. GNU Fortran soporta tanto el modo libre como el fijo. Este manual documenta principalmente el modo Fortran, pero las características correspondientes del modo F90 se mencionan cuando son relevantes.</p>
<p>El modo Fortran proporciona comandos especiales de movimiento para sentencias y subprogramas Fortran, y comandos de sangrado que entienden las convenciones Fortran de anidamiento, números de línea y sentencias de continuación. El modo Fortran es compatible con el modo Auto Fill, que divide las líneas largas en líneas de continuación Fortran adecuadas. El modo Fortran también admite el modo Hideshow minor (véase Modo Hideshow minor) e Imenu (véase Imenu).</p>
<span id="id32"></span><h2>27.14 Modo Fortran<a class="headerlink" href="#modo-fortran" title="Link to this heading"></a></h2>
<p>El modo Fortran está pensado para editar código fuente de forma fija (y también de formato tabulado) (normalmente Fortran 77). Para editar código fuente de forma libre más moderno (Fortran 90, 95, 2003, 2008), use el modo F90 (<code class="docutils literal notranslate"><span class="pre">f90-mode</span></code>). Emacs normalmente usa el modo Fortran para archivos con extensión <code class="docutils literal notranslate"><span class="pre">.f</span></code>, <code class="docutils literal notranslate"><span class="pre">.F</span></code> o <code class="docutils literal notranslate"><span class="pre">.for</span></code>, y el modo F90 para las extensiones <code class="docutils literal notranslate"><span class="pre">.f90</span></code>, <code class="docutils literal notranslate"><span class="pre">.f95</span></code>, <code class="docutils literal notranslate"><span class="pre">.f03</span></code> y <code class="docutils literal notranslate"><span class="pre">.f08</span></code>. Personalice <code class="docutils literal notranslate"><span class="pre">auto-mode-alist</span></code> para añadir más extensiones. GNU Fortran soporta tanto el modo libre como el fijo. Este manual documenta principalmente el modo Fortran, pero las características correspondientes del modo F90 se mencionan cuando son relevantes.</p>
<p>El modo Fortran proporciona comandos especiales de movimiento para sentencias y subprogramas Fortran, y comandos de sangrado que entienden las convenciones Fortran de anidamiento, números de línea y sentencias de continuación. El modo Fortran es compatible con el modo Auto Relleno (Auto Fill mode), que divide las líneas largas en líneas de continuación Fortran adecuadas. El modo Fortran también admite el modo Hideshow minor (véase <a class="reference internal" href="#id22"><span class="std std-ref">27.7 Modo Menor para Ocultamiento (Hideshow)</span></a>) e Imenu (véase <a class="reference internal" href="#id5"><span class="std std-ref">27.2.3 Imenu</span></a>).</p>
<p>Se proporcionan comandos especiales para los comentarios porque los comentarios de Fortran no son como los de otros lenguajes. Las abreviaturas incorporadas ahorran teclear cuando se insertan palabras clave de Fortran.</p>
<p>Use M-x fortran-mode para cambiar a este modo principal. Este comando ejecuta el hook fortran-mode-hook. Consulte Ganchos.</p>
<p>Use <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">fortran-mode</span></code> para cambiar a este modo principal. Este comando ejecuta el gancho <code class="docutils literal notranslate"><span class="pre">fortran-mode-hook</span></code>. Consulte <a class="reference internal" href="50_Personlzc.html#id7"><span class="std std-ref">50.2.2 Ganchos (Hooks)</span></a>.</p>
<section id="comandos-de-movimie">
<h3>27.14.1 Comandos de Movimie<a class="headerlink" href="#comandos-de-movimie" title="Link to this heading"></a></h3>
<p>Además de los comandos normales para moverse por defuns y operar sobre ellos (subprogramas-funciones y subrutinas de Fortran, así como módulos para el modo F90, usando los comandos fortran-end-of-subprogram y fortran-beginning-of-subprogram), el modo Fortran proporciona comandos especiales para moverse por sentencias y otras unidades de programa.</p>
<dl class="simple">
<dt>C-c C-n</dt><dd><p>Se mueve al principio de la siguiente sentencia (fortran-next-statement/f90-next-statement).</p>
</dd>
<dt>C-c C-p</dt><dd><p>Se desplaza al principio de la sentencia anterior (fortran-previous-statement/f90-previous-statement). Si no hay sentencia anterior (es decir, si se llama desde la primera sentencia
del búfer), se desplaza al principio del búfer.</p>
</dd>
<dt>C-c C-e</dt><dd><p>Avanza el punto hasta el inicio del siguiente bloque de código, o hasta el final del actual, lo que ocurra primero (f90-next-block). Un bloque de código es una subrutina, una
sentencia if-endif, etc. Este comando sólo existe en modo F90, no en modo Fortran. Con un argumento numérico, avanza el mismo número de bloques.</p>
</dd>
<dt>C-c C-a</dt><dd><p>Mueve el punto hacia atrás hasta el bloque anterior (f90-previous-block). Es como f90-next-block, pero se mueve hacia atrás.</p>
</dd>
<dt>C-M-n</dt><dd><p>Se desplaza al final del bloque de código actual (fortran-end-of-block/f90-end-of-block). Con un argumento numérico, avanza ese número de bloques. La marca se fija antes de mover el
punto. La versión en modo F90 de este comando comprueba la coherencia de los tipos de bloque y las etiquetas (si están presentes), pero no comprueba el bloque más externo ya que puede
estar incompleto.</p>
</dd>
<dt>C-M-p</dt><dd><p>Se mueve al principio del bloque de código actual (fortran-beginning-of-block/f90-beginning-of-block). Es como fortran-end-of-block, pero se mueve hacia atrás.</p>
</dd>
</dl>
<p>Las órdenes fortran-beginning-of-subprogram y fortran-end-of-subprogram se desplazan al inicio o al final del subprograma actual, respectivamente. Las órdenes fortran-mark-do y fortran-mark-if marcan el final del bloque actual do o if, y desplazan el punto al principio.</p>
<p>Además de los comandos normales para moverse por defuns y operar sobre ellos (subprogramas-funciones y subrutinas de Fortran, así como módulos para el modo F90, usando los comandos <code class="docutils literal notranslate"><span class="pre">fortran-end-of-subprogram</span></code> y <code class="docutils literal notranslate"><span class="pre">fortran-beginning-of-subprogram</span></code>), el modo Fortran proporciona comandos especiales para moverse por sentencias y otras unidades de programa.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-n</span></code>)</p>
<blockquote>
<div><p>Se mueve al principio de la siguiente sentencia (<code class="docutils literal notranslate"><span class="pre">fortran-next-statement</span></code>/<code class="docutils literal notranslate"><span class="pre">f90-next-statement</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-p</span></code>)</p>
<blockquote>
<div><p>Se desplaza al principio de la sentencia anterior (<code class="docutils literal notranslate"><span class="pre">fortran-previous-statement</span></code>/<code class="docutils literal notranslate"><span class="pre">f90-previous-statement</span></code>). Si no hay sentencia
anterior (es decir, si se llama desde la primera sentencia del búfer), se desplaza al principio del búfer.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-e</span></code>)</p>
<blockquote>
<div><p>Avanza el punto hasta el inicio del siguiente bloque de código, o hasta el final del actual, lo que ocurra primero
(<code class="docutils literal notranslate"><span class="pre">f90-next-block</span></code>). Un bloque de código es una subrutina, una sentencia <code class="docutils literal notranslate"><span class="pre">if-endif</span></code>, etc. Este comando sólo existe en modo F90, no
en modo Fortran. Con un argumento numérico, avanza el mismo número de bloques.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-a</span></code>)</p>
<blockquote>
<div><p>Mueve el punto hacia atrás hasta el bloque anterior (<code class="docutils literal notranslate"><span class="pre">f90-previous-block</span></code>). Es como <code class="docutils literal notranslate"><span class="pre">f90-next-block</span></code>, pero se mueve hacia atrás.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-n</span></code>)</p>
<blockquote>
<div><p>Se desplaza al final del bloque de código actual (<code class="docutils literal notranslate"><span class="pre">fortran-end-of-block</span></code>/<code class="docutils literal notranslate"><span class="pre">f90-end-of-block</span></code>). Con un argumento numérico, avanza
ese número de bloques. La marca se fija antes de mover el punto. La versión en modo F90 de este comando comprueba la coherencia de
los tipos de bloque y las etiquetas (si están presentes), pero no comprueba el bloque más externo ya que puede estar incompleto.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-p</span></code>)</p>
<blockquote>
<div><p>Se mueve al principio del bloque de código actual (<code class="docutils literal notranslate"><span class="pre">fortran-beginning-of-block</span></code>/<code class="docutils literal notranslate"><span class="pre">f90-beginning-of-block</span></code>). Es como
<code class="docutils literal notranslate"><span class="pre">fortran-end-of-block</span></code>, pero se mueve hacia atrás.</p>
</div></blockquote>
<p>Las órdenes <code class="docutils literal notranslate"><span class="pre">fortran-beginning-of-subprogram</span></code> y <code class="docutils literal notranslate"><span class="pre">fortran-end-of-subprogram</span></code> se desplazan al inicio o al final del subprograma actual, respectivamente. Las órdenes <code class="docutils literal notranslate"><span class="pre">fortran-mark-do</span></code> y <code class="docutils literal notranslate"><span class="pre">fortran-mark-if</span> <span class="pre">marcan</span></code> el final del bloque actual <code class="docutils literal notranslate"><span class="pre">do</span></code> o <code class="docutils literal notranslate"><span class="pre">if</span></code>, y desplazan el punto al principio.</p>
</section>
<section id="indentacion-en-fortran">
<h3>27.14.2. Indentación en Fortran<a class="headerlink" href="#indentacion-en-fortran" title="Link to this heading"></a></h3>
<span id="id33"></span><h3>27.14.2. Indentación en Fortran<a class="headerlink" href="#indentacion-en-fortran" title="Link to this heading"></a></h3>
<p>Se necesitan comandos y características especiales para sangrar código Fortran de forma fija (o tabulador) para asegurarse de que varias entidades sintácticas (números de línea, indicadores de línea de comentario y banderas de línea de continuación) aparecen en las columnas requeridas.</p>
<section id="comandos-fortran-de-indentado-y-relleno">
<h4>27.14.2.1. Comandos Fortran de Indentado y Relleno<a class="headerlink" href="#comandos-fortran-de-indentado-y-relleno" title="Link to this heading"></a></h4>
<dl class="simple">
<dt>C-M-j</dt><dd><p>Rompe la línea actual en un punto y establece una línea de continuación (fortran-split-line).</p>
</dd>
<dt>M-^</dt><dd><p>Une esta línea a la anterior (fortran-join-line).</p>
</dd>
<dt>C-M-q</dt><dd><p>Indenta todas las líneas del subprograma en el que se encuentra ese punto (fortran-indent-subprogram).</p>
</dd>
<dt>M-q</dt><dd><p>Rellena un bloque de comentarios o una sentencia (usando fortran-fill-paragraph o fortran-fill-statement).</p>
</dd>
</dl>
<p>La tecla C-M-q ejecuta fortran-indent-subprogram, una orden para volver a sangrar todas las líneas del subprograma Fortran (función o subrutina) que contiene el punto.</p>
<p>La tecla C-M-j ejecuta fortran-split-line, que divide una línea de la forma adecuada para Fortran. En una línea sin comentario, la segunda mitad se convierte en una línea de continuación y se sangra en consecuencia. En una línea de comentario, ambas mitades se convierten en líneas de comentario separadas.</p>
<p>M-^ o C-c C-d ejecutan el comando fortran-join-line, que une una línea de continuación con la línea anterior, más o menos como la inversa de fortran-split-line. El punto debe estar en una línea de continuación cuando se invoque este comando.</p>
<p>M-q en modo Fortran rellena el bloque de comentarios o la sentencia en la que se encuentra el punto. Esto elimina cualquier continuación de sentencia sobrante.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-j</span></code>)</p>
<blockquote>
<div><p>Rompe la línea actual en un punto y establece una línea de continuación (<code class="docutils literal notranslate"><span class="pre">fortran-split-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">^</kbd> (<code class="docutils literal notranslate"><span class="pre">M-^</span></code>)</p>
<blockquote>
<div><p>Une esta línea a la anterior (<code class="docutils literal notranslate"><span class="pre">fortran-join-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-q</span></code>)</p>
<blockquote>
<div><p>Indenta todas las líneas del subprograma en el que se encuentra ese punto (<code class="docutils literal notranslate"><span class="pre">fortran-indent-subprogram</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">M-q</span></code>)</p>
<blockquote>
<div><p>Rellena un bloque de comentarios o una sentencia (usando <code class="docutils literal notranslate"><span class="pre">fortran-fill-paragraph</span></code> o <code class="docutils literal notranslate"><span class="pre">fortran-fill-statement</span></code>).</p>
</div></blockquote>
<p>La combinación de teclas <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-q</span></code>) ejecuta <code class="docutils literal notranslate"><span class="pre">fortran-indent-subprogram</span></code>, una orden para volver a sangrar todas las líneas del subprograma Fortran (función o subrutina) que contiene el punto.</p>
<p>La combinación de teclas <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-j</span></code>) ejecuta <code class="docutils literal notranslate"><span class="pre">fortran-split-line</span></code>, que divide una línea de la forma adecuada para Fortran. En una línea sin comentario, la segunda mitad se convierte en una línea de continuación y se sangra en consecuencia. En una línea de comentario, ambas mitades se convierten en líneas de comentario separadas.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-^</span></code> o <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-d</span></code> ejecutan el comando <code class="docutils literal notranslate"><span class="pre">fortran-join-line</span></code>, que une una línea de continuación con la línea anterior, más o menos como la inversa de <code class="docutils literal notranslate"><span class="pre">fortran-split-line</span></code>. El punto debe estar en una línea de continuación cuando se invoque este comando.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-q</span></code> en modo Fortran rellena el bloque de comentarios o la sentencia en la que se encuentra el punto. Esto elimina cualquier continuación de sentencia sobrante.</p>
</section>
<section id="lineas-de-continuacion">
<h4>27.14.2.2. Líneas de Continuación<a class="headerlink" href="#lineas-de-continuacion" title="Link to this heading"></a></h4>
<p>La mayoría de los compiladores de Fortran 77 permiten dos formas de escribir líneas de continuación. Si el primer carácter no espaciador de una línea está en la columna 5, entonces esa línea es una continuación de la línea anterior. A esto lo llamamos forma fija. (En GNU Emacs siempre contamos las columnas a partir de 0; pero tenga en cuenta que el estándar Fortran cuenta a partir de 1. Puede personalizar la variable column-number-indicator-zero-based para hacer que la visualización de la columna sea similar a Fortran; vea Características Opcionales del Modo Línea). La variable fortran-continuation-string especifica qué carácter poner en la columna 5. Una línea que comienza con un carácter de tabulación seguido de cualquier dígito excepto “0” es también una línea de continuación. Llamamos a este estilo de continuación formato tabulador. (Fortran 90 introdujo las líneas de continuación de forma libre).</p>
<p>El modo Fortran puede usar cualquier estilo de línea de continuación. Cuando se entra en el modo Fortran, éste intenta deducir automáticamente el estilo de continuación apropiado a partir del contenido del búfer. Para ello, explora hasta 100 líneas desde el inicio del búfer. La primera línea que comienza con un tabulador o seis espacios determina la elección. Si el escaneo falla (por ejemplo, si el búfer es nuevo y, por tanto, está vacío), se usa el valor de fortran-tab-mode-default (nil para la forma fija y no nil para el formato tab). “/t” (fortran-tab-mode-string) en la línea mode indica que se ha seleccionado el formato tab. El modo Fortran establece el valor de indent-tabs-mode en consecuencia.</p>
<p>Si el texto de una línea comienza con el marcador de continuación de Fortran “$”, o si comienza con cualquier carácter que no sea un espacio en blanco en la columna 5, el modo Fortran lo trata como una línea de continuación. Cuando indenta una línea de continuación con TAB, convierte la línea al estilo de continuación actual. Al dividir una sentencia Fortran con C-M-j, el marcador de continuación en la nueva línea se crea según el estilo de continuación.</p>
<span id="id34"></span><h4>27.14.2.2. Líneas de Continuación<a class="headerlink" href="#lineas-de-continuacion" title="Link to this heading"></a></h4>
<p>La mayoría de los compiladores de Fortran 77 permiten dos formas de escribir líneas de continuación. Si el primer carácter no espaciador de una línea está en la columna 5, entonces esa línea es una continuación de la línea anterior. A esto lo llamamos <em>forma fija</em>. (En GNU Emacs siempre contamos las columnas a partir de 0; pero tenga en cuenta que el estándar Fortran cuenta a partir de 1. Puede personalizar la variable <code class="docutils literal notranslate"><span class="pre">column-number-indicator-zero-based</span></code> para hacer que la visualización de la columna sea similar a Fortran; vea <a class="reference internal" href="15_ControlDisplay.html#id19"><span class="std std-ref">15.19 Características Opcionales de la Línea de Modo</span></a>). La variable <code class="docutils literal notranslate"><span class="pre">fortran-continuation-string</span></code> especifica qué carácter poner en la columna 5. Una línea que comienza con un carácter de tabulación seguido de cualquier dígito excepto <code class="docutils literal notranslate"><span class="pre">0</span></code> es también una línea de continuación. Llamamos a este estilo de continuación <em>formato tabulador</em>. (Fortran 90 introdujo las líneas de continuación de forma libre).</p>
<p>El modo Fortran puede usar cualquier estilo de línea de continuación. Cuando se entra en el modo Fortran, éste intenta deducir automáticamente el estilo de continuación apropiado a partir del contenido del búfer. Para ello, explora hasta 100 líneas desde el inicio del búfer. La primera línea que comienza con un tabulador o seis espacios determina la elección. Si el escaneo falla (por ejemplo, si el búfer es nuevo y, por tanto, está vacío), se usa el valor de <code class="docutils literal notranslate"><span class="pre">fortran-tab-mode-default</span></code> (<code class="docutils literal notranslate"><span class="pre">nil</span></code> para la forma fija y no <code class="docutils literal notranslate"><span class="pre">nil</span></code> para el formato tab). <code class="docutils literal notranslate"><span class="pre">/t</span></code> (<code class="docutils literal notranslate"><span class="pre">fortran-tab-mode-string</span></code>) en la línea mode indica que se ha seleccionado el formato tab. El modo Fortran establece el valor de indent-tabs-mode en consecuencia.</p>
<p>Si el texto de una línea comienza con el marcador de continuación de Fortran <code class="docutils literal notranslate"><span class="pre">$</span></code>, o si comienza con cualquier carácter que no sea un espacio en blanco en la columna 5, el modo Fortran lo trata como una línea de continuación. Cuando indenta una línea de continuación con <code class="docutils literal notranslate"><span class="pre">TAB</span></code>, convierte la línea al estilo de continuación actual. Al dividir una sentencia Fortran con <code class="docutils literal notranslate"><span class="pre">C-M-j</span></code>, el marcador de continuación en la nueva línea se crea según el estilo de continuación.</p>
<p>La configuración del estilo de continuación afecta a otros aspectos de la edición en modo Fortran. En el modo de formato fijo, el número mínimo de columna para el cuerpo de una sentencia es 6. Las líneas dentro de bloques de Fortran que están sangradas a números de columna mayores deben usar sólo el carácter de espacio como espacio en blanco. En el modo de formato tabulado, el número mínimo de columna para el cuerpo de la sentencia es 8, y el espacio en blanco antes de la columna 8 debe consistir en un carácter de tabulación.</p>
</section>
<section id="numeros-de-linea">
<h4>27.14.2.3. Números de Línea<a class="headerlink" href="#numeros-de-linea" title="Link to this heading"></a></h4>
<p>Si un número es el primer no-espacio en blanco de la línea, la indentación de Fortran asume que es un número de línea y lo mueve a las columnas 0 a 4. (Las columnas siempre cuentan desde 0 en Emacs, pero establecer column-number-indicator-zero-based a nil puede cambiar esto, vea Características de Línea en Modo Opcional).</p>
<p>Los números de línea de cuatro dígitos o menos tienen normalmente una sangría de un espacio. La variable fortran-line-number-indent controla esto; especifica la sangría máxima que puede tener un número de línea. El valor por defecto de la variable es 1. El modo Fortran intenta evitar que los dígitos del número de línea pasen de la columna 4, reduciendo la sangría por debajo del máximo especificado si es necesario. Si fortran-line-number-indent tiene el valor 5, los números de línea se justifican a la derecha para terminar en la columna 4.</p>
<p>La simple inserción de un número de línea es suficiente para sangrarlo de acuerdo con estas reglas. A medida que se inserta cada dígito, se vuelve a calcular la sangría. Para desactivar esta función, establezca la variable fortran-electric-número-de-línea en nil.</p>
<p>Si un número es el primer no-espacio en blanco de la línea, la indentación de Fortran asume que es un número de línea y lo mueve a las columnas 0 a 4. (Las columnas siempre cuentan desde 0 en Emacs, pero establecer <code class="docutils literal notranslate"><span class="pre">column-number-indicator-zero-based</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code> puede cambiar esto, vea <a class="reference internal" href="15_ControlDisplay.html#id19"><span class="std std-ref">15.19 Características Opcionales de la Línea de Modo</span></a>).</p>
<p>Los números de línea de cuatro dígitos o menos tienen normalmente una sangría de un espacio. La variable <code class="docutils literal notranslate"><span class="pre">fortran-line-number-indent</span></code> controla esto; especifica la sangría máxima que puede tener un número de línea. El valor por defecto de la variable es 1. El modo Fortran intenta evitar que los dígitos del número de línea pasen de la columna 4, reduciendo la sangría por debajo del máximo especificado si es necesario. Si <code class="docutils literal notranslate"><span class="pre">fortran-line-number-indent</span></code> tiene el valor 5, los números de línea se justifican a la derecha para terminar en la columna 4.</p>
<p>La simple inserción de un número de línea es suficiente para sangrarlo de acuerdo con estas reglas. A medida que se inserta cada dígito, se vuelve a calcular la sangría. Para desactivar esta función, establezca la variable <code class="docutils literal notranslate"><span class="pre">fortran-electric-number-line</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
</section>
<section id="convenciones-sintacticas">
<h4>27.14.2.4 Convenciones Sintácticas<a class="headerlink" href="#convenciones-sintacticas" title="Link to this heading"></a></h4>
<p>El modo Fortran asume que Usted sigue ciertas convenciones que simplifican la tarea de entender un programa Fortran lo suficientemente bien como para sangrarlo adecuadamente:</p>
<blockquote>
<div><ul class="simple">
<li><p>Dos bucles “do” anidados nunca comparten una sentencia “continue”. Las palabras clave de Fortran como “if”, “else”, “then”, “do” y otras se escriben sin espacios en blanco ni saltos</p></li>
<div><ul>
<li><p>Dos bucles <code class="docutils literal notranslate"><span class="pre">do</span></code> anidados nunca comparten una sentencia <code class="docutils literal notranslate"><span class="pre">continue</span></code>. Las palabras clave de Fortran como <code class="docutils literal notranslate"><span class="pre">if</span></code>, <code class="docutils literal notranslate"><span class="pre">else</span></code>,
<code class="docutils literal notranslate"><span class="pre">then</span></code>, <code class="docutils literal notranslate"><span class="pre">do</span></code> y otras se escriben sin espacios en blanco ni saltos de línea.</p></li>
<li><p>Los compiladores de Fortran suelen ignorar los espacios en blanco fuera de las constantes de cadena, pero el modo Fortran no
reconoce estas palabras clave si no son contiguas.</p>
<p>Construcciones como <code class="docutils literal notranslate"><span class="pre">else</span></code> <code class="docutils literal notranslate"><span class="pre">if</span></code> o <code class="docutils literal notranslate"><span class="pre">end</span> <span class="pre">do</span></code> son aceptables, pero la segunda palabra debe estar en la misma línea que la primera
y no en una línea de continuación.</p>
</li>
</ul>
<p>de línea.</p>
<ul class="simple">
<li><p>Los compiladores de Fortran suelen ignorar los espacios en blanco fuera de las constantes de cadena, pero el modo Fortran no reconoce estas palabras clave si no son contiguas.</p></li>
</ul>
<p>Construcciones como “else if” o “end do” son aceptables, pero la segunda palabra debe estar en la misma línea que la primera y no en una línea de continuación.</p>
</div></blockquote>
<p>Si no sigue estas convenciones, los comandos de sangrado pueden sangrar algunas líneas de forma poco estética. Sin embargo, un programa Fortran correcto conserva su significado cuando se le aplica la sangría aunque no se sigan las convenciones.</p>
</section>
@ -1043,25 +1089,28 @@ estar incompleto.</p>
<h4>27.14.2.5. Variables para el Indentado en Fortran<a class="headerlink" href="#variables-para-el-indentado-en-fortran" title="Link to this heading"></a></h4>
<p>Varias variables adicionales controlan cómo funciona la sangría en Fortran:</p>
<dl class="simple">
<dt>fortran-do-indent</dt><dd><p>Indentación extra dentro de cada nivel de la sentencia “do” (por defecto 3).</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-do-indent</span></code></dt><dd><p>Indentación extra dentro de cada nivel de la sentencia <code class="docutils literal notranslate"><span class="pre">do</span></code> (por defecto 3).</p>
</dd>
<dt>fortran-if-indent</dt><dd><p>Indentación extra dentro de cada nivel de sentencias “if”, “select case”, o “where” (por defecto 3).</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-if-indent</span></code></dt><dd><p>Indentación extra dentro de cada nivel de sentencias <code class="docutils literal notranslate"><span class="pre">if</span></code>, <code class="docutils literal notranslate"><span class="pre">select</span> <span class="pre">case</span></code>, o <code class="docutils literal notranslate"><span class="pre">where</span></code> (por defecto 3).</p>
</dd>
<dt>fortran-structure-indent</dt><dd><p>Indentación extra dentro de cada nivel de sentencias “structure”, “union”, “map”, o “interface” (por defecto 3).</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-structure-indent</span></code></dt><dd><p>Indentación extra dentro de cada nivel de sentencias <code class="docutils literal notranslate"><span class="pre">structure</span></code>, <code class="docutils literal notranslate"><span class="pre">union</span></code>, <code class="docutils literal notranslate"><span class="pre">map</span></code>, o <code class="docutils literal notranslate"><span class="pre">interface</span></code> (por defecto 3).</p>
</dd>
<dt>fortran-continuation-indent</dt><dd><p>Sangría adicional para los cuerpos de las líneas de continuación (por defecto 5).</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-continuation-indent</span></code></dt><dd><p>Sangría adicional para los cuerpos de las líneas de continuación (por defecto 5).</p>
</dd>
<dt>fortran-check-all-num-for-matching-do</dt><dd><p>En Fortran 77, una sentencia “do” numerada es terminada por cualquier sentencia con un número de línea coincidente. Es común (pero no obligatorio) usar una sentencia “continue” para
este propósito. Si esta variable tiene un valor no nulo, la indentación de cualquier sentencia numerada debe comprobar si hay una “do” que termine ahí. Si siempre termina las
sentencias “do” con una línea “continue” (o si usa el más moderno “enddo”), entonces puede acelerar la indentación estableciendo esta variable a nil (por defecto).</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-check-all-num-for-matching-do</span></code></dt><dd><p>En Fortran 77, una sentencia <code class="docutils literal notranslate"><span class="pre">do</span></code> numerada es terminada por cualquier sentencia con un número de línea coincidente. Es común (pero
no obligatorio) usar una sentencia <code class="docutils literal notranslate"><span class="pre">continue</span></code> para este propósito. Si esta variable tiene un valor no nulo, la indentación de
cualquier sentencia numerada debe comprobar si hay una <code class="docutils literal notranslate"><span class="pre">do</span></code> que termine ahí. Si siempre termina las sentencias <code class="docutils literal notranslate"><span class="pre">do</span></code> con una línea
<code class="docutils literal notranslate"><span class="pre">continue</span></code> (o si usa el más moderno <code class="docutils literal notranslate"><span class="pre">enddo</span></code>), entonces puede acelerar la indentación estableciendo esta variable a <code class="docutils literal notranslate"><span class="pre">nil</span></code> (por
defecto).</p>
</dd>
<dt>fortran-blink-matching-if</dt><dd><p>Si es t, al indentar una sentencia “endif” (o “enddo”) el cursor se mueve momentáneamente a la sentencia “if” (o “do”) correspondiente para mostrar dónde está. Por defecto es nil.</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-blink-matching-if</span></code></dt><dd><p>Si es <code class="docutils literal notranslate"><span class="pre">t</span></code>, al indentar una sentencia <code class="docutils literal notranslate"><span class="pre">endif</span></code> (o <code class="docutils literal notranslate"><span class="pre">enddo</span></code>) el cursor se mueve momentáneamente a la sentencia <code class="docutils literal notranslate"><span class="pre">if</span></code> (o <code class="docutils literal notranslate"><span class="pre">do</span></code>)
correspondiente para mostrar dónde está. Por defecto es <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
</dd>
<dt>fortran-minimum-statement-indent-fixed</dt><dd><p>Indentación mínima para sentencias Fortran cuando se usa el estilo de línea de continuación de forma fija. Los cuerpos de las sentencias nunca tienen una sangría menor. El valor por
defecto es 6.</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-minimum-statement-indent-fixed</span></code></dt><dd><p>Indentación mínima para sentencias Fortran cuando se usa el estilo de línea de continuación de forma fija. Los cuerpos de las
sentencias nunca tienen una sangría menor. El valor por defecto es 6.</p>
</dd>
<dt>fortran-minimum-statement-indent-tab</dt><dd><p>Indentación mínima de las sentencias Fortran para el estilo de línea de continuación del formato tabulador. Los cuerpos de las sentencias nunca tienen una sangría menor. El valor
predeterminado es 8.</p>
<dt><code class="docutils literal notranslate"><span class="pre">fortran-minimum-statement-indent-tab</span></code></dt><dd><p>Indentación mínima de las sentencias Fortran para el estilo de línea de continuación del formato tabulador. Los cuerpos de las
sentencias nunca tienen una sangría menor. El valor predeterminado es 8.</p>
</dd>
</dl>
<p>La siguiente sección describe las variables que controlan la sangría de los comentarios.</p>
@ -1070,65 +1119,79 @@ predeterminado es 8.</p>
<section id="comentarios-en-fortran">
<h3>27.14.3. Comentarios en Fortran<a class="headerlink" href="#comentarios-en-fortran" title="Link to this heading"></a></h3>
<p>Las órdenes de comentario habituales de Emacs asumen que un comentario puede seguir a una línea de código. En Fortran 77, la sintaxis de comentario estándar requiere que una línea entera sea sólo un comentario. Por lo tanto, el modo Fortran sustituye las órdenes de comentario estándar de Emacs y define algunas variables nuevas.</p>
<p>El modo Fortran también puede manejar la sintaxis de comentarios de Fortran 90, en la que los comentarios empiezan por “!” y pueden seguir a otro texto. Dado que sólo algunos compiladores de Fortran 77 aceptan esta sintaxis, el modo Fortran no insertará tales comentarios a menos que usted haya dicho de antemano que lo haga. Para ello, ajuste la variable fortran-comment-line-start a “»!»”. Si usa un valor inusual, puede que necesite cambiar fortran-comment-line-start-skip.</p>
<dl class="simple">
<dt>M-;</dt><dd><p>Permite alinear un comentario o insertar uno nuevo (comment-dwim).</p>
</dd>
<dt>C-x ;</dt><dd><p>Sólo se aplica a los comentarios “!” no estándar (comment-set-column).</p>
</dd>
<dt>C-c ;</dt><dd><p>Convierte todas las líneas de la región en comentarios, o (con argumento) las convierte de nuevo en código real (fortran-comment-region).</p>
</dd>
</dl>
<p>M-; en modo Fortran ejecuta el comment-dwim estándar. Este reconoce cualquier tipo de comentario existente y alinea su texto adecuadamente; si no hay comentario existente, se inserta y alinea un comentario. Insertar y alinear comentarios no es lo mismo en modo Fortran que en otros modos.</p>
<p>Cuando hay que insertar un nuevo comentario, si la línea actual está en blanco, se inserta un comentario de línea completa. En una línea que no esté en blanco, se inserta un comentario “!” no estándar si ha dicho que quiere usarlos. En caso contrario, se inserta un comentario de línea completa en una nueva línea antes de la línea actual.</p>
<p>Los comentarios “!” no estándar se alinean como los comentarios en otros idiomas, pero los comentarios de línea completa son diferentes. En un comentario de línea completa estándar, el delimitador del comentario debe aparecer siempre en la columna cero. Lo que puede alinearse es el texto dentro del comentario. Puede elegir entre tres estilos de alineación ajustando la variable fortran-comment-indent-style a uno de estos valores:</p>
<p>El modo Fortran también puede manejar la sintaxis de comentarios de Fortran 90, en la que los comentarios empiezan por <code class="docutils literal notranslate"><span class="pre">!</span></code> y pueden seguir a otro texto. Dado que sólo algunos compiladores de Fortran 77 aceptan esta sintaxis, el modo Fortran no insertará tales comentarios a menos que Usted haya dicho de antemano que lo haga. Para ello, ajuste la variable <code class="docutils literal notranslate"><span class="pre">fortran-comment-line-start</span></code> a <code class="docutils literal notranslate"><span class="pre">&quot;!&quot;</span></code>. Si usa un valor inusual, puede que necesite cambiar <code class="docutils literal notranslate"><span class="pre">fortran-comment-line-start-skip</span></code>.</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-;</span></code>)</p>
<blockquote>
<div><p>Permite alinear un comentario o insertar uno nuevo (<code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">;</span></code>)</p>
<blockquote>
<div><p>Sólo se aplica a los comentarios <code class="docutils literal notranslate"><span class="pre">!</span></code> no estándar (<code class="docutils literal notranslate"><span class="pre">comment-set-column</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">;</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">;</span></code>)</p>
<blockquote>
<div><p>Convierte todas las líneas de la región en comentarios, o (con argumento) las convierte de nuevo en código real
(<code class="docutils literal notranslate"><span class="pre">fortran-comment-region</span></code>).</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">M-;</span></code> en modo Fortran ejecuta el comando <code class="docutils literal notranslate"><span class="pre">comment-dwim</span></code> estándar. Este reconoce cualquier tipo de comentario existente y alinea su texto adecuadamente; si no hay comentario existente, se inserta y alinea un comentario. Insertar y alinear comentarios no es lo mismo en modo Fortran que en otros modos.</p>
<p>Cuando hay que insertar un nuevo comentario, si la línea actual está en blanco, se inserta un comentario de línea completa. En una línea que no esté en blanco, se inserta un comentario <code class="docutils literal notranslate"><span class="pre">!</span></code> no estándar si ha dicho que quiere usarlos. En caso contrario, se inserta un comentario de línea completa en una nueva línea antes de la línea actual.</p>
<p>Los comentarios <code class="docutils literal notranslate"><span class="pre">!</span></code> no estándar se alinean como los comentarios en otros idiomas, pero los comentarios de línea completa son diferentes. En un comentario de línea completa estándar, el delimitador del comentario debe aparecer siempre en la columna cero. Lo que puede alinearse es el texto dentro del comentario. Puede elegir entre tres estilos de alineación ajustando la variable <code class="docutils literal notranslate"><span class="pre">fortran-comment-indent-style</span></code> a uno de estos valores:</p>
<dl>
<dt>fixed</dt><dd><p>Alinea el texto en una columna fija, que es la suma de fortran-comment-line-extra-indent y la sangría mínima de la sentencia. Este es el valor por defecto.</p>
<p>La sangría mínima es fortran-minimum-statement-indent-tab para el estilo de línea de continuación con formato tabulador y fortran-minimum-statement-indent-fixed para el estilo de
formulario fijo.</p>
<dt><code class="docutils literal notranslate"><span class="pre">fixed</span></code></dt><dd><p>Alinea el texto en una columna fija, que es la suma de <code class="docutils literal notranslate"><span class="pre">fortran-comment-line-extra-indent</span></code> y la sangría mínima de la sentencia. Este
es el valor por defecto.</p>
<p>La sangría mínima es <code class="docutils literal notranslate"><span class="pre">fortran-minimum-statement-indent-tab</span></code> para el estilo de línea de continuación con formato tabulador y
<code class="docutils literal notranslate"><span class="pre">fortran-minimum-statement-indent-fixed</span></code> para el estilo de formulario fijo.</p>
</dd>
<dt>relative</dt><dd><p>Alinea el texto como si fuera una línea de código, pero con una columna adicional de sangría fortran-comment-line-extra-indent.</p>
<dt><code class="docutils literal notranslate"><span class="pre">relative</span></code></dt><dd><p>Alinea el texto como si fuera una línea de código, pero con una columna adicional de sangría <code class="docutils literal notranslate"><span class="pre">fortran-comment-line-extra-indent</span></code>.</p>
</dd>
<dt>nil</dt><dd><p>No mueve automáticamente el texto en los comentarios de línea completa.</p>
<dt><code class="docutils literal notranslate"><span class="pre">nil</span></code></dt><dd><p>No mueve automáticamente el texto en los comentarios de línea completa.</p>
</dd>
</dl>
<p>Además, puede especificar el carácter que se usará para sangrar dentro de los comentarios de línea completa estableciendo la variable fortran-comment-indent-char en la cadena de un solo carácter que desee usar.</p>
<p>Las líneas de directivas del compilador, o líneas del preprocesador, tienen prácticamente la misma apariencia que las líneas de comentario. Es importante, sin embargo, que dichas líneas nunca tengan sangría, sea cual sea el valor de fortran-comment-indent-style. La variable fortran-directive-re es una expresión regular que especifica qué líneas son directivas. Las líneas que coincidan nunca se sangrarán y recibirán un bloqueo de fuente distintivo.</p>
<p>El comando de comentario normal de Emacs C-x ; ( comment-set-column) no ha sido redefinido. Si usa comentarios “!”, este comando puede usarse con ellos. De lo contrario, es inútil en modo Fortran.</p>
<p>El comando C-c ; (fortran-comment-region) convierte todas las líneas de la región en comentarios insertando la cadena “c$$$” al principio de cada una. Con un argumento numérico, convierte la región de nuevo en código dinámico borrando “c$$$” del principio de cada línea. La cadena usada para estos comentarios puede controlarse estableciendo la variable fortran-comment-region. Observe que aquí tenemos un ejemplo de un comando y una variable con el mismo nombre; estos dos usos del nombre nunca entran en conflicto porque en Lisp y en Emacs siempre queda claro por el contexto a cuál de los dos se refiere.</p>
<p>Además, puede especificar el carácter que se usará para sangrar dentro de los comentarios de línea completa estableciendo la variable <code class="docutils literal notranslate"><span class="pre">fortran-comment-indent-char</span></code> en la cadena de un solo carácter que desee usar.</p>
<p>Las líneas de directivas del compilador, o líneas del preprocesador, tienen prácticamente la misma apariencia que las líneas de comentario. Es importante, sin embargo, que dichas líneas nunca tengan sangría, sea cual sea el valor de <code class="docutils literal notranslate"><span class="pre">fortran-comment-indent-style</span></code>. La variable <code class="docutils literal notranslate"><span class="pre">fortran-directive-re</span></code> es una expresión regular que especifica qué líneas son directivas. Las líneas que coincidan nunca se sangrarán y recibirán un bloqueo de fuente distintivo.</p>
<p>El comando de comentario normal de Emacs <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">;</span></code> (<code class="docutils literal notranslate"><span class="pre">comment-set-column</span></code>) no ha sido redefinido. Si usa comentarios <code class="docutils literal notranslate"><span class="pre">!</span></code>, este comando puede usarse con ellos. De lo contrario, es inútil en modo Fortran.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">;</span></code> (<code class="docutils literal notranslate"><span class="pre">fortran-comment-region</span></code>) convierte todas las líneas de la región en comentarios insertando la cadena <code class="docutils literal notranslate"><span class="pre">c$$$</span></code> al principio de cada una. Con un argumento numérico, convierte la región de nuevo en código dinámico borrando <code class="docutils literal notranslate"><span class="pre">c$$$</span></code> del principio de cada línea. La cadena usada para estos comentarios puede controlarse estableciendo la variable <code class="docutils literal notranslate"><span class="pre">fortran-comment-region</span></code>. Observe que aquí tenemos un ejemplo de un comando y una variable con el mismo nombre; estos dos usos del nombre nunca entran en conflicto porque en Lisp y en Emacs siempre queda claro por el contexto a cuál de los dos se refiere.</p>
</section>
<section id="relleno-automatico-en-modo-fortran">
<h3>27.14.4. Relleno Automático en Modo Fortran<a class="headerlink" href="#relleno-automatico-en-modo-fortran" title="Link to this heading"></a></h3>
<p>El modo Fortran tiene soporte especializado para el modo Auto Fill, que es un modo menor que divide automáticamente las sentencias a medida que las inserta cuando se vuelven demasiado anchas. Dividir una sentencia implica hacer líneas de continuación usando fortran-continuation-string (vea Líneas de continuación). Esta división se produce cuando escribe SPC, RET o TAB, y también en los comandos de indentación de Fortran. Active Auto Fill en modo Fortran de la forma habitual. Véase Modo Auto Fill.</p>
<p>Auto Fill rompe las líneas en los espacios o delimitadores cuando las líneas superan la anchura deseada (el valor de fill-column). Los delimitadores (además de los espacios en blanco) con los que Auto Fill puede romper son “+”, “-”, “/”, “*”, “=”, “&lt;”, “&gt;”, y “,”. El salto de línea se produce después del delimitador si la variable fortran-break-before-delimiters es nula. En caso contrario (y por defecto), el salto va antes del delimitador.</p>
<p>Para activar el relleno automático en todos los búferes de Fortran, añada auto-fill-mode a fortran-mode-hook. Véase Ganchos.</p>
<p>El modo Fortran tiene soporte especializado para el modo Auto Fill, que es un modo menor que divide automáticamente las sentencias a medida que las inserta cuando se vuelven demasiado anchas. Dividir una sentencia implica hacer líneas de continuación usando <code class="docutils literal notranslate"><span class="pre">fortran-continuation-string</span></code> (vea <a class="reference internal" href="#id34"><span class="std std-ref">27.14.2.2. Líneas de Continuación</span></a>). Esta división se produce cuando escribe <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>), <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) o <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>), y también en los comandos de indentación de Fortran. Active Auto Fill en modo Fortran de la forma habitual. Véase <a class="reference internal" href="26_ComandsLengsHuma.html#id10"><span class="std std-ref">26.6.1 Modo de Relleno Automático (Auto Fill)</span></a>).</p>
<p>Relleno Automático (Auto Fill) rompe las líneas en los espacios o delimitadores cuando las líneas superan la anchura deseada (el valor de <code class="docutils literal notranslate"><span class="pre">fill-column</span></code>). Los delimitadores (además de los espacios en blanco) con los que Auto Fill puede romper son <code class="docutils literal notranslate"><span class="pre">+</span></code>, <code class="docutils literal notranslate"><span class="pre">-</span></code>, <code class="docutils literal notranslate"><span class="pre">/</span></code>, <code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">=</span></code>, <code class="docutils literal notranslate"><span class="pre">&lt;</span></code>, <code class="docutils literal notranslate"><span class="pre">&gt;</span></code> y <code class="docutils literal notranslate"><span class="pre">,</span></code>. El salto de línea se produce después del delimitador si la variable <code class="docutils literal notranslate"><span class="pre">fortran-break-before-delimiters</span></code> es nula. En caso contrario (y por defecto), el salto va antes del delimitador.</p>
<p>Para activar el relleno automático en todos los búferes de Fortran, añada <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> a <code class="docutils literal notranslate"><span class="pre">fortran-mode-hook</span></code>. Véase <a class="reference internal" href="50_Personlzc.html#id7"><span class="std std-ref">50.2.2 Ganchos (Hooks)</span></a>.</p>
</section>
<section id="comprobacion-de-columnas-en-fortran">
<h3>27.14.5. Comprobación de Columnas en Fortran<a class="headerlink" href="#comprobacion-de-columnas-en-fortran" title="Link to this heading"></a></h3>
<p>En Fortran 77 estándar, cualquier cosa más allá de la columna 72 se ignora. La mayoría de los compiladores proporcionan una opción para cambiar esto (por ejemplo, “-ffixed-line-length-N” en gfortran). Personalice la variable fortran-line-length para cambiar la longitud de línea en modo Fortran. Cualquier cosa más allá de este punto se bloquea como un comentario. (A menos que esté dentro de una cadena: las cadenas que se extiendan más allá de fortran-line-length confundirán el font-lock).</p>
<dl class="simple">
<dt>C-c C-r</dt><dd><p>Muestra una regla de columnas momentáneamente sobre la línea actual (fortran-column-ruler).</p>
</dd>
<dt>C-c C-w</dt><dd><p>Divide la ventana actual horizontalmente de forma temporal para que tenga columnas de longitud de línea fortran (fortran-window-create-momentarily). Esto puede ayudarle a evitar hacer
líneas más largas que el límite impuesto por su compilador de Fortran.</p>
</dd>
<dt>C-u C-c C-w</dt><dd><p>Divide la ventana actual horizontalmente para que tenga columnas de longitud de línea de fortran de ancho (fortran-window-create). A continuación, puede seguir editando.</p>
</dd>
<dt>M-x fortran-strip-sequence-nos</dt><dd><p>Borra todo el texto de la columna fortran-longitud de línea y posteriores.</p>
</dd>
</dl>
<p>El comando C-c C-r (fortran-column-ruler) muestra una regla de columnas momentáneamente sobre la línea actual. La regla de comentarios son dos líneas de texto que muestran la ubicación de las columnas con un significado especial en los programas Fortran. Los corchetes muestran los límites de las columnas para los números de línea, y las llaves muestran los límites de las columnas para el cuerpo de la sentencia. Los números de columna aparecen sobre ellos.</p>
<p>Tenga en cuenta que los números de columna cuentan desde cero, como siempre en GNU Emacs (pero personalizando column-number-indicator-zero-based puede cambiar la visualización de las columnas para que coincida con la de Fortran; vea Características de línea de modo opcional). Como resultado, los números pueden ser uno menos que aquellos con los que está familiarizado; pero las posiciones que indican en la línea son estándar para Fortran.</p>
<p>El texto usado para mostrar la regla de columna depende del valor de la variable indent-tabs-mode. Si indent-tabs-mode es nil, entonces se usa el valor de la variable fortran-column-ruler-fixed como regla de columna. En caso contrario, se muestra el valor de la variable fortran-column-ruler-tab. Cambiando estas variables, puede cambiar la visualización de la regla de columna.</p>
<p>C-c C-w (fortran-window-create-momentarily) divide temporalmente la ventana actual horizontalmente, haciendo una ventana de columnas de longitud de línea fortran, para que pueda ver las líneas demasiado largas. Escriba un espacio para restaurar el ancho normal.</p>
<p>También puede dividir la ventana horizontalmente y continuar editando con la división en su lugar. Para usar esto, use C-u C-c C-w (M-x fortran-window-create). Editando en esta ventana puede ver inmediatamente cuando hace una línea demasiado ancha para ser Fortran correcto.</p>
<p>El comando M-x fortran-strip-sequence-nos borra todo el texto de la columna fortran-line-length y posteriores, en todas las líneas del búfer actual. Esta es la forma más fácil de deshacerse de números de secuencia antiguos.</p>
<p>En Fortran 77 estándar, cualquier cosa más allá de la columna 72 se ignora. La mayoría de los compiladores proporcionan una opción para cambiar esto (por ejemplo, <code class="docutils literal notranslate"><span class="pre">-ffixed-line-length-N</span></code> en gfortran). Personalice la variable fortran-line-length para cambiar la longitud de línea en modo Fortran. Cualquier cosa más allá de este punto se bloquea como un comentario. (A menos que esté dentro de una cadena: las cadenas que se extiendan más allá de <code class="docutils literal notranslate"><span class="pre">fortran-line-length</span></code> confundirán el bloqueo de fuentes (font-lock)).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">r</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-r</span></code>)</p>
<blockquote>
<div><p>Muestra una regla de columnas momentáneamente sobre la línea actual (<code class="docutils literal notranslate"><span class="pre">fortran-column-ruler</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-w</span></code>)</p>
<blockquote>
<div><p>Divide la ventana actual horizontalmente de forma temporal para que tenga columnas de longitud de línea fortran
(<code class="docutils literal notranslate"><span class="pre">fortran-window-create-momentarily</span></code>). Esto puede ayudarle a evitar hacer líneas más largas que el límite impuesto por su compilador de
Fortran.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-c</span> <span class="pre">C-w</span></code>)</p>
<blockquote>
<div><p>Divide la ventana actual horizontalmente para que tenga columnas de longitud de línea de fortran de ancho (<code class="docutils literal notranslate"><span class="pre">fortran-window-create</span></code>). A
continuación, puede seguir editando.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">fortran-strip-sequence-nos</span></code>)</p>
<blockquote>
<div><p>Borra todo el texto de la columna <code class="docutils literal notranslate"><span class="pre">fortran-longitud</span></code> de línea y posteriores.</p>
</div></blockquote>
<p>El comando <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-r</span></code> (<code class="docutils literal notranslate"><span class="pre">fortran-column-ruler</span></code>) muestra una regla de columnas momentáneamente sobre la línea actual. La regla de comentarios son dos líneas de texto que muestran la ubicación de las columnas con un significado especial en los programas Fortran. Los corchetes muestran los límites de las columnas para los números de línea, y las llaves muestran los límites de las columnas para el cuerpo de la sentencia. Los números de columna aparecen sobre ellos.</p>
<p>Tenga en cuenta que los números de columna cuentan desde cero, como siempre en GNU Emacs (pero personalizando <code class="docutils literal notranslate"><span class="pre">column-number-indicator-zero-based</span></code> puede cambiar la visualización de las columnas para que coincida con la de Fortran; vea <a class="reference internal" href="15_ControlDisplay.html#id19"><span class="std std-ref">15.19 Características Opcionales de la Línea de Modo</span></a>). Como resultado, los números pueden ser uno menos que aquellos con los que está familiarizado; pero las posiciones que indican en la línea son estándar para Fortran.</p>
<p>El texto usado para mostrar la regla de columna depende del valor de la variable <code class="docutils literal notranslate"><span class="pre">indent-tabs-mode</span></code>. Si <code class="docutils literal notranslate"><span class="pre">indent-tabs-mode</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, entonces se usa el valor de la variable <code class="docutils literal notranslate"><span class="pre">fortran-column-ruler-fixed</span></code> como regla de columna. En caso contrario, se muestra el valor de la variable <code class="docutils literal notranslate"><span class="pre">fortran-column-ruler-tab</span></code>. Cambiando estas variables, puede cambiar la visualización de la regla de columna.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">fortran-window-create-momentarily</span></code>) divide temporalmente la ventana actual horizontalmente, haciendo una ventana de columnas de longitud de línea fortran, para que pueda ver las líneas demasiado largas. Escriba un espacio para restaurar el ancho normal.</p>
<p>También puede dividir la ventana horizontalmente y continuar editando con la división en su lugar. Para usar esto, use <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-c</span> <span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">fortran-window-create</span></code>). Editando en esta ventana puede ver inmediatamente cuando hace una línea demasiado ancha para ser Fortran correcto.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">fortran-strip-sequence-nos</span></code> borra todo el texto de la columna <code class="docutils literal notranslate"><span class="pre">fortran-line-length</span></code> y posteriores, en todas las líneas del búfer actual. Esta es la forma más fácil de deshacerse de números de secuencia antiguos.</p>
</section>
<section id="abreviaturas-de-palabras-clave-en-fortran">
<h3>27.14.6. Abreviaturas de Palabras Clave en Fortran<a class="headerlink" href="#abreviaturas-de-palabras-clave-en-fortran" title="Link to this heading"></a></h3>
<p>El modo Fortran proporciona muchas abreviaturas incorporadas para palabras clave y declaraciones comunes. Son el mismo tipo de abreviaturas que puede definir Usted mismo. Para usarlas, debe activar el modo Abbrev. Véase Abreviaturas.</p>
<p>Las abreviaturas incorporadas son inusuales en un sentido: todas empiezan por punto y coma. Por ejemplo, una abreviatura incorporada en Fortran es “;c” para “continuar”. Si inserta “;c” y luego inserta un carácter de puntuación como un espacio o una nueva línea, la “;c” se expande automáticamente a “continue”, siempre que el modo Abbrev esté activado.</p>
<p>Escriba “;?” o “;C-h” para ver una lista de todas las abreviaturas de Fortran y lo que significan.</p>
<p>El modo Fortran proporciona muchas abreviaturas incorporadas para palabras clave y declaraciones comunes. Son el mismo tipo de abreviaturas que puede definir Usted mismo. Para usarlas, debe activar el modo Abbrev. Véase <a class="reference internal" href="30_Abreviaturas.html#id1"><span class="std std-ref">30 Abreviaturas</span></a>.</p>
<p>Las abreviaturas incorporadas son inusuales en un sentido: todas empiezan por punto y coma. Por ejemplo, una abreviatura incorporada en Fortran es <code class="docutils literal notranslate"><span class="pre">;c</span></code> para <code class="docutils literal notranslate"><span class="pre">continue</span></code> (continuar). Si inserta <code class="docutils literal notranslate"><span class="pre">;c</span></code> y luego inserta un carácter de puntuación como un espacio o una nueva línea, la <code class="docutils literal notranslate"><span class="pre">;c</span></code> se expande automáticamente a <code class="docutils literal notranslate"><span class="pre">continue</span></code>, siempre que el modo Abbrev esté activado.</p>
<p>Escriba <kbd class="kbd docutils literal notranslate">;</kbd><kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">;?</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd><kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">;C-h</span></code>) para ver una lista de todas las abreviaturas de Fortran y lo que significan.</p>
</section>
</section>
</section>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -37,7 +37,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -35,7 +35,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -37,7 +37,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
@ -582,7 +582,7 @@ de la libertad del software.»</p>
<li class="toctree-l3"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#busqueda-de-documentacion-en-lenguajes-de-programacion">27.6.3. Búsqueda de Documentación en Lenguajes de Programación</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#modo-secundario-presentacion-hideshow">27.7 Modo Secundario Presentación (Hideshow)</a></li>
<li class="toctree-l2"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#modo-menor-para-ocultamiento-hideshow">27.7 Modo Menor para Ocultamiento (Hideshow)</a></li>
<li class="toctree-l2"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#completado-de-nombres-de-simbolos">27.8 Completado de Nombres de Símbolos</a></li>
<li class="toctree-l2"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#palabras-en-mayusculas-y-minusculas">27.9 Palabras en Mayúsculas y Minúsculas</a></li>
<li class="toctree-l2"><a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#semantica">27.10 Semántica</a></li>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
@ -140,7 +140,7 @@
<p>Llamamos <em>avanzado</em> a Emacs porque puede hacer mucho más que una simple inserción y borrado de texto. Puede controlar subprocesos, sangrar programas automáticamente, mostrar múltiples archivos a la vez, editar archivos remotos como si fueran archivos locales, y mucho más. Los comandos de edición de Emacs funcionan en términos de caracteres, palabras, líneas, frases, párrafos y páginas, así como de expresiones y comentarios en varios lenguajes de programación.</p>
<p><em>Autodocumentado</em> significa que en cualquier momento puede utilizar comandos especiales, conocidos como <em>comandos de ayuda</em>, para averiguar cuáles son sus opciones, o para averiguar qué hace
cualquier comando, o para encontrar todos los comandos que pertenecen a un tema determinado. Véase <a class="reference internal" href="CapConSecciones/11_Ayuda.html#id1"><span class="std std-ref">11 Ayuda</span></a>.</p>
<p><em>Personalizable</em> significa que puede alterar fácilmente el comportamiento de los comandos de Emacs de maneras sencillas. Por ejemplo, si usa un lenguaje de programación en el que los comentarios empiezan con <code class="docutils literal notranslate"><span class="pre">&lt;**</span></code> y terminan con <code class="docutils literal notranslate"><span class="pre">**&gt;</span></code>, puede decirle a los comandos de manipulación de comentarios de Emacs que usen esas cadenas (vea <a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#id13"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>). Por poner otro ejemplo, puede reenlazar los comandos básicos de movimiento del cursor (arriba, abajo, izquierda y derecha) a cualquier tecla del teclado que te resulte cómoda. Véase <a class="reference internal" href="CapConSecciones/50_Personlzc.html#id1"><span class="std std-ref">50 Personalización</span></a>.</p>
<p><em>Personalizable</em> significa que puede alterar fácilmente el comportamiento de los comandos de Emacs de maneras sencillas. Por ejemplo, si usa un lenguaje de programación en el que los comentarios empiezan con <code class="docutils literal notranslate"><span class="pre">&lt;**</span></code> y terminan con <code class="docutils literal notranslate"><span class="pre">**&gt;</span></code>, puede decirle a los comandos de manipulación de comentarios de Emacs que usen esas cadenas (vea <a class="reference internal" href="CapConSecciones/27_EdDePrograms.html#id14"><span class="std std-ref">27.5. Manipulación de Comentarios</span></a>). Por poner otro ejemplo, puede reenlazar los comandos básicos de movimiento del cursor (arriba, abajo, izquierda y derecha) a cualquier tecla del teclado que te resulte cómoda. Véase <a class="reference internal" href="CapConSecciones/50_Personlzc.html#id1"><span class="std std-ref">50 Personalización</span></a>.</p>
<p><em>Extensible</em> significa que puede ir más allá de la simple personalización y crear comandos completamente nuevos. Los nuevos comandos son simplemente programas escritos en lenguaje Lisp, que son ejecutados por el propio intérprete Lisp de Emacs. Los comandos existentes pueden incluso redefinirse en mitad de una sesión de edición, sin tener que reiniciar Emacs. La mayoría de los comandos de edición en Emacs están escritos en Lisp; las pocas excepciones podrían haber sido escritas en Lisp pero usan C en su lugar por eficiencia. Escribir una extensión es programar, pero los no programadores pueden usarla después. <strong>Ver Prefacio</strong> en Una Introducción a la Programación en Emacs Lisp, si quiere aprender programación en Emacs Lisp.</p>
</section>

Binary file not shown.

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 1.75
Traducción Revisón: 1.76
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">

File diff suppressed because one or more lines are too long