magit; gendoc: emacs y nnn

This commit is contained in:
Tano Papúa 2023-05-25 10:46:23 -03:00
parent f0fb82d720
commit 12f3487454
2 changed files with 208 additions and 2 deletions

View file

@ -12,7 +12,7 @@
<div class="frame content">
<input type="radio" name="page" id="_" checked><input type="radio" name="page" id="_la_organizacion_de_la_pantalla"><input type="radio" name="page" id="_tipo_de_entradas_de_los_usuarios"><input type="radio" name="page" id="_teclas_comandos"><input type="radio" name="page" id="_entrar_y_salir_de_emacs"><input type="radio" name="page" id="_comandos_basicos_de_edicion"><input type="radio" name="page" id="_el_minibufer"><input type="radio" name="page" id="_ejecutar_comandos_por_nombres"><input type="radio" name="page" id="_ayuda_help"><input type="radio" name="page" id="_la_marca_y_la_region"><input type="radio" name="page" id="_matar_y_mover_texto"><input type="radio" name="page" id="_registros"><input type="radio" name="page" id="_control_de_la_pantalla"><input type="radio" name="page" id="_busqueda_y_reemplazo"><input type="radio" name="page" id="_macros_de_teclado"><input type="radio" name="page" id="_manejo_de_archivos"><input type="radio" name="page" id="_usando_multiples_buffers"><input type="radio" name="page" id="_ventanas_multiples"><input type="radio" name="page" id="_marcos_y_pantallas_graficas"><input type="radio" name="page" id="_soporte_de_juegos_de_caracteres_internacionales"><input type="radio" name="page" id="_modos_mayores_y_menores"><input type="radio" name="page" id="_sangria"><input type="radio" name="page" id="_comandos_para_lenguajes_humanos"><input type="radio" name="page" id="_edicion_de_programas"><input type="radio" name="page" id="_compilacion_y_prueba_de_programas"><input type="radio" name="page" id="_mantener_programas_grandes"><input type="radio" name="page" id="_abreviaturas"><input type="radio" name="page" id="_dired_el_editor_de_directorios"><input type="radio" name="page" id="_el_calendario_y_la_agenda"><input type="radio" name="page" id="_envio_de_correo"><input type="radio" name="page" id="_leer_el_correo_con_rmail"><input type="radio" name="page" id="_correo_electronico_y_noticias_de_usenet_con_gnus"><input type="radio" name="page" id="_seguridad_en_el_host"><input type="radio" name="page" id="_seguridad_de_la_red"><input type="radio" name="page" id="_visualizacion_de_documentos"><input type="radio" name="page" id="_ejecutar_comandos_de_la_shell_desde_tt_emacs_tt"><input type="radio" name="page" id="_uso_de_emacs_como_servidor"><input type="radio" name="page" id="_impresion_de_copias_en_papel"><input type="radio" name="page" id="_ordenar_el_texto"><input type="radio" name="page" id="_edicion_de_imagenes"><input type="radio" name="page" id="_edicion_de_archivos_binarios"><input type="radio" name="page" id="_guardar_sesiones_de_emacs"><input type="radio" name="page" id="_niveles_de_edicion_recursiva"><input type="radio" name="page" id="_funciones_de_hipervinculo_y_navegacion_web"><input type="radio" name="page" id="_juegos_y_otras_diversiones"><input type="radio" name="page" id="_paquetes_emacs_lisp"><input type="radio" name="page" id="_personalizacion">
<nav class="side nav"><div>
<div class="title"><a href="./00_Emacs.html">GNU Emacs 28.2</a><div class="version">Revisión: 1.74</div><input id="_q" class="search" type="text" required="required" onkeyup="s(this.value);"></div> <div id="_s" class="nav"></div>
<div class="title"><a href="./00_Emacs.html">GNU Emacs 28.2</a><div class="version">Revisión: 1.75</div><input id="_q" class="search" type="text" required="required" onkeyup="s(this.value);"></div> <div id="_s" class="nav"></div>
<div id="_t" class="nav">
<p>Conceptos Generales Importantes</p>
<ul>
@ -691,6 +691,8 @@
<li class="h3"><a href="#temas_personalizados">Temas personalizados</a></li>
<li class="h3"><a href="#creacion_de_temas_personalizados">Creación de temas personalizados</a></li>
<li class="h2"><a href="#variables">Variables</a></li>
<li class="h3"><a href="#examinar_y_ajustar_las_variables">Examinar y ajustar las variables</a></li>
<li class="h3"><a href="#ganchos">Ganchos</a></li>
</ul></li>
</ul>
</div>
@ -29334,6 +29336,161 @@ sea el símbolo nulo induce el segundo efecto, independientemente de su tipo (po
especificar un valor no nulo). Si establece una variable utilizando el búfer de personalización, no debe preocuparse por darle un tipo no válido: el búfer de personalización
normalmente sólo permite introducir valores significativos. En caso de duda, utilice <kbd>Ctrl</kbd>-<kbd>h</kbd> <kbd>v</kbd> (<samp>C-h v</samp>, <samp>describe-variable</samp>) para
comprobar la cadena de documentación de la variable para ver qué tipo de valor espera (véase Examinar y establecer variables).
</p>
<h3 id="examinar_y_ajustar_las_variables">Examinar y ajustar las variables<a href="#examinar_y_ajustar_las_variables"></a></h3>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>h</kbd> <kbd>v</kbd> <i><samp>var</samp></i> <kbd>RETURN</kbd> (<samp>C-h v</samp> <i><samp>var</samp></i> <samp>RET</samp>)</dt>
<dd>
Muestra el valor y la documentación de la variable var (<samp>describe-variable</samp>).
</dd>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>set-variable</samp> <kbd>RETURN</kbd> <i><samp>var</samp></i> <kbd>RETURN</kbd> <i><samp>valor</samp></i> <kbd>RETURN</kbd><br>(<samp>M-x set-variable RET</samp>
<i><samp>var</samp></i> <samp>RET</samp> <i><samp>valor</samp></i> <samp>RET</samp>)</dt>
<dd>
Cambia el valor de la variable <i>var</i> a <i>valor</i>.
</dd>
</dl>
<p>
Para examinar el valor de una variable, utilice <kbd>Ctrl</kbd>-<kbd>h</kbd> <kbd>v</kbd> (<samp>C-h v</samp>, <samp>describe-variable</samp>). Esto lee un nombre de variable utilizando el
minibuffer, con finalización, y muestra tanto el valor como la documentación de la variable. Por ejemplo:
</p>
<div class="pre"><pre>
C-h v fill-column RET
</pre></div>
<p>
muestra algo así:
</p>
<div class="pre"><pre>
fill-column is a variable defined in C source code.
Its value is 70
Automatically becomes buffer-local when set.
This variable is safe as a file local variable if its value
satisfies the predicate integerp.
Probably introduced at or before Emacs version 18.
Documentation:
Column beyond which automatic line-wrapping should happen.
Interactively, you can set the buffer local value using C-x f.
You can customize this variable.
</pre></div>
<div class="pre"><pre>
fill-column es una variable definida en 'C source code'.
Su valor es 70
Se convierte automáticamente en local del buffer cuando se establece.
Esta variable es segura como variable local de archivo si su valor
satisface el predicado 'integerp'.
Probablemente se introdujo en la versión 18 de Emacs o antes.
Documentación:
Columna más allá de la cual debe producirse el ajuste de línea automático.
Interactivamente, puedes establecer el valor local del buffer usando C-x f.
Puede personalizar esta variable.
</pre></div>
<p>
La línea que dice <samp>You can customize the variable</samp> (Puede personalizar esta variable) indica que esta variable es una opción del Usuario. <kbd>Ctrl</kbd>-<kbd>h</kbd>
<kbd>v</kbd> (<samp>C-h v</samp>) no se limita a las opciones de Usuario; también permite variables no personalizables.
</p>
<p>
La forma más conveniente de establecer una variable específica personalizable es con <kbd>Alt</kbd>-<kbd>x</kbd> <b><samp>set-variable</samp></b> (<samp>M-x set-variable</samp>). Esto lee el
nombre de la variable con el minibuffer (con finalización), y luego lee una expresión <samp>Lisp</samp> para el nuevo valor usando el minibuffer una segunda vez (puede insertar el valor
antiguo en el minibuffer para editarlo mediante <kbd>Alt</kbd>-<kbd>n</kbd> (<samp>M-n</samp>)). Por ejemplo:
</p>
<div class="pre"><pre>
M-x set-variable RET fill-column RET 75 RET
</pre></div>
<p>
fija el valor de <samp>fill-column</samp> en 75.
</p>
<p>
<kbd>Alt</kbd>-<kbd>x</kbd> <b><samp>set-variable</samp></b> (<samp>M-x set-variable</samp>) está limitado a las variables personalizables, pero puede establecer cualquier variable con una
expresión <samp>Lisp</samp> como esta:
</p>
<div class="pre"><pre>
(setq fill-column 75)
</pre></div>
<p>
Para ejecutar tal expresión, escriba <kbd>Alt</kbd>-<kbd>:</kbd> <b><samp>eval-expression</samp></b> (<samp>M-:</samp>, <samp>eval-expression</samp>) e introduzca la expresión en el minibuffer
(véase Evaluación de expresiones Emacs Lisp). Alternativamente, vaya al buffer <samp>*scratch*</samp>, escriba la expresión, y luego escriba <kbd>Ctrl</kbd>-<kbd>j</kbd> (<samp>C-j</samp>) (vea Bufferes de Interacción Lisp).
</p>
<p>
La configuración de variables, al igual que todos los medios de personalización de <samp>Emacs</samp>, salvo que se indique lo contrario, sólo afecta a la sesión actual del Editor. La
única manera de alterar la variable en futuras sesiones es poner algo en su fichero de inicialización (ver El fichero de inicialización de <samp>Emacs</samp>).
</p>
<h3 id="ganchos">Ganchos<a href="#ganchos"></a></h3>
<p>
Los <i>ganchos</i> son un mecanismo importante para personalizar <samp>Emacs</samp>. Un gancho es una variable <samp>Lisp</samp> que contiene una lista de funciones, que serán llamadas en
alguna ocasión bien definida. (A esto se lo llama <i>correr (ejecutar) el gancho</i>). Las funciones individuales de la lista se denominan <i>funciones gancho</i> del gancho. Por
ejemplo, el gancho <samp>kill-emacs-hook</samp> se ejecuta justo antes de salir de <samp>Emacs</samp> (ver Salir de Emacs).
</p>
<p>
La mayoría de los hooks (ganchos) son <i>hooks normales</i>. Esto significa que cuando <samp>Emacs</samp> ejecuta el gancho, llama a cada función del gancho por turnos, sin argumentos.
Hemos hecho un esfuerzo para mantener la mayoría de los hooks normales, para que pueda usarlos de manera uniforme. Cada variable cuyo nombre termina en <samp>-hook</samp> es un hook
normal.
</p>
<p>
Algunos ganchos son anormales. Sus nombres terminan en <samp>-functions</samp>, en lugar de <samp>-hook</samp> (algunos códigos antiguos también pueden usar el sufijo obsoleto
<samp>-hooks</samp>). Lo que hace que estos ganchos sean anormales es la forma en que se llaman sus funciones, quizás se les dan argumentos, o quizás los valores que devuelven se
utilizan de alguna manera. Por ejemplo, <samp>find-file-not-found-functions</samp> es anormal porque tan pronto como una función hook devuelve un valor no nulo, el resto no es llamado
(ver Visitando Archivos). La documentación de cada variable hook anormal explica cómo se utilizan sus funciones.
</p>
<p>
Puede establecer una variable gancho con <samp>setq</samp> como cualquier otra variable <samp>Lisp</samp>, pero la forma recomendada de añadir una función a un gancho (ya sea normal o
anormal) es utilizar <samp>add-hook</samp>, como se muestra en los siguientes ejemplos. Vea Hooks en The Emacs Lisp Reference Manual, para más detalles.
</p>
<p>
La mayoría de los modos principales ejecutan uno o más ganchos de modo como el último paso de la inicialización. Los ganchos de modo son una forma conveniente de personalizar el
comportamiento de los modos individuales; siempre son normales. Por ejemplo, así es como se configura un gancho para activar el modo de Relleno Automático en el modo Texto y otros
modos basados en el modo Texto:
</p>
<div class="pre"><pre>
(add-hook 'text-mode-hook 'auto-fill-mode)
</pre></div>
<p>
Esto funciona llamando a <samp>auto-fill-mode</samp>, que activa el modo menor cuando no se suministra ningún argumento (véase Modos menores). A continuación, suponga que no desea
activar el modo de relleno automático en el modo LaTeX, que es uno de los modos basados en el modo Texto. Puede hacerlo con la siguiente línea adicional:
</p>
<div class="pre"><pre>
(add-hook 'latex-mode-hook (lambda () (auto-fill-mode -1)))
</pre></div>
<p>
Aquí hemos usado la macro especial <samp>lambda</samp> para construir una función anónima (ver Expresiones Lambda en el Manual de Referencia de Emacs Lisp), que llama a
<samp>auto-fill-mode</samp> con un argumento de <samp>-1</samp> para deshabilitar el modo menor. Como el modo LaTeX ejecuta <samp>latex-mode-hook</samp> después de ejecutar
<samp>text-mode-hook</samp>, el resultado deja el modo de autorelleno desactivado.
</p>
<p>
He aquí un ejemplo más complejo, que muestra cómo utilizar un gancho para personalizar la sangría del código C:
</p>
<div class="pre"><pre>
(setq my-c-style
'((c-comment-only-line-offset . 4)
(c-cleanup-list . (scope-operator
empty-defun-braces
defun-close-semi))))
(add-hook 'c-mode-common-hook
(lambda () (c-add-style &quot;my-style&quot; my-c-style t)))
</pre></div>
<p>
Los ganchos de modo principal también se aplican a otros modos principales derivados del modo original (véase Modos derivados en el Manual de referencia de Emacs Lisp). Por ejemplo,
el modo HTML se deriva del modo Texto (véase Modos SGML y HTML); cuando se activa el modo HTML, se ejecuta <samp>text-mode-hook</samp> antes de ejecutar <samp>html-mode-hook</samp>. Esto
proporciona una forma conveniente de utilizar un único gancho para afectar a varios modos relacionados. En particular, si quiere aplicar una función hook a cualquier modo de lenguaje
de programación, añádala a <samp>prog-mode-hook</samp>; el modo Prog es un modo mayor que no hace otra cosa que permitir que otros modos mayores hereden de él, exactamente para este
propósito.
</p>
<p>
Es mejor diseñar sus funciones hook de manera que el orden en que se ejecuten no importe. Cualquier dependencia del orden es buscarse problemas. Sin embargo, el orden es predecible:
las funciones hook se ejecutan en el orden en que aparecen en el hook.
</p>
<p>
Si juega a añadir varias versiones diferentes de una función hook llamando a <samp>add-hook</samp> una y otra vez, recuerde que todas las versiones que haya añadido permanecerán juntas
en la variable hook. Puede borrar las funciones individuales llamando a <samp>remove-hook</samp>, o hacer <samp>(setq</samp> <i><samp>hook-variable</samp></i> <samp>nil)</samp> para eliminar todo.
</p>
<p>
Si la variable hook es buffer-local, se utilizará esta variable en lugar de la variable global. Sin embargo, si la variable buffer-local contiene el elemento <samp>t</samp>, la variable
hook global se ejecutará también.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_paquetes_emacs_lisp" title="Paquetes Emacs Lisp">Anterior</label></div>
<footer><hr><p>© Copyright Tano 2.023<br><small>Generated by <a href="https://gitlab.com/bztsrc/gendoc">gendoc</a> v1.0.0</small></p></footer>
</div>

View file

@ -12,7 +12,7 @@
<div class="frame content">
<input type="radio" name="page" id="_" checked><input type="radio" name="page" id="_dependencias"><input type="radio" name="page" id="_instalacion"><input type="radio" name="page" id="_configuracion"><input type="radio" name="page" id="_opciones_del_programa"><input type="radio" name="page" id="_teclado_raton"><input type="radio" name="page" id="_simbolos"><input type="radio" name="page" id="_tamano_de_archivo"><input type="radio" name="page" id="_ayuda"><input type="radio" name="page" id="_contextos"><input type="radio" name="page" id="_sesiones"><input type="radio" name="page" id="_filtros"><input type="radio" name="page" id="_teclear_para_navegar"><input type="radio" name="page" id="_seleccion"><input type="radio" name="page" id="_buscar_y_listar"><input type="radio" name="page" id="_prompt"><input type="radio" name="page" id="_diseno"><input type="radio" name="page" id="_casos_practicos_de_uso"><input type="radio" name="page" id="_anadir_marcadores"><input type="radio" name="page" id="_configurar_cd_al_salir"><input type="radio" name="page" id="_unidades_conectadas_en_caliente"><input type="radio" name="page" id="_imagen_video_pdf">
<nav class="side nav"><div>
<div class="title"><a href="./13_nnn.html">nnn</a><div class="version">Revisión: 0.13</div><input id="_q" class="search" type="text" required="required" onkeyup="s(this.value);"></div> <div id="_s" class="nav"></div>
<div class="title"><a href="./13_nnn.html">nnn</a><div class="version">Revisión: 0.14</div><input id="_q" class="search" type="text" required="required" onkeyup="s(this.value);"></div> <div id="_s" class="nav"></div>
<div id="_t" class="nav">
<p>Uso</p>
<ul>
@ -89,6 +89,9 @@
<li rel="unidades_conectadas_en_caliente"><label class="toc" for="_unidades_conectadas_en_caliente">Unidades conectadas en caliente</label><div class="current">Unidades conectadas en caliente</div><ul>
</ul></li>
<li rel="imagen_video_pdf"><label class="toc" for="_imagen_video_pdf">Imagen, video, pdf</label><div class="current">Imagen, video, pdf</div><ul>
<li class="h2"><a href="#examinar_renombrar_imagenes">Examinar, renombrar imágenes</a></li>
<li class="h2"><a href="#leer_pdf_como_texto">Leer pdf como texto</a></li>
</ul></li>
</ul>
</div>
</div></nav>
@ -1438,6 +1441,52 @@ Para auto-montar unidades de almacenamiento externo use reglas udev o envoltorio
Además de <a href="https://github.com/jarun/nnn/wiki/Live-previews" target="new">Live Previews</a>, hay un plugin independiente <samp>imgview</samp> para explorar imágenes/ miniaturas de archivos de imagen,
vídeo o audio en el terminal. Entre otras utilidades de visualización, soporta <samp>sxiv</samp> (abre su propia ventana) que es particularmente útil para navegar por las imágenes en un
directorio, establecer el fondo de pantalla o copiar la ruta de la imagen al portapapeles (<a href="https://wiki.archlinux.org/index.php/Sxiv#Assigning_keyboard_shortcuts" target="new">instrucciones</a>).
</p>
<h2 id="examinar_renombrar_imagenes">Examinar, renombrar imágenes<a href="#examinar_renombrar_imagenes"></a></h2>
<p>
Mientras que el usuario puede previsualizar la imagen sobre la que pasa el ratón en vista previa (<samp>preview-tabbed</samp>) y cambiarle el nombre, el siguiente procedimiento es un
enfoque alternativo. Requiere el plugin <samp>imgview</samp> (con <samp>sxiv</samp>) y <samp>dmenu</samp> (<samp>zenity</samp> puede reemplazar a <samp>dmenu</samp>).
</p>
<p>
Guarde <samp>sxiv</samp> key-handler <samp>~/.config/sxiv/exec/key-handler</samp> con el siguiente contenido:
</p>
<div class="pre"><pre class="lineno">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br>22<br>23<br>24<br>25<br></pre><code><span class="hl_c">#!/usr/bin/env sh</span>
<span class="hl_c"># ^X-^R: pide el nombre de la nueva imagen (necesita `dmenu`) y `mv`</span>
<span class="hl_c"># ^X-^C: copiar la ruta de la imagen al portapapeles X (necesita `xclip`).</span>
<span class="hl_c"># Ejemplo de prompt de zenity:</span>
<span class="hl_c"># name=&quot;$(zenity --entry --display=:0.0 --text &quot;rename $file to&quot;)&quot; 2&gt; /dev/null</span>
<span class="hl_k">while</span> <span class="hl_v">read</span> <span class="hl_o">-</span><span class="hl_v">r</span> <span class="hl_v">file</span>
<span class="hl_k">do</span>
<span class="hl_k">case</span> <span class="hl_s">&quot;$1&quot;</span> <span class="hl_k">in</span>
<span class="hl_s">&quot;C-r&quot;</span>)
<span class="hl_v">name</span><span class="hl_o">=</span><span class="hl_s">&quot;$(dmenu -p &quot;</span><span class="hl_v">rename</span> <span class="hl_v">$file</span> <span class="hl_v">to</span>: <span class="hl_s">&quot;)&quot;</span> <span class="hl_n">2</span><span class="hl_o">&gt;</span> <span class="hl_o">/</span><span class="hl_v">dev</span><span class="hl_o">/</span><span class="hl_t">null</span>
<span class="hl_k">if</span> [ <span class="hl_o">-</span><span class="hl_v">n</span> <span class="hl_s">&quot;$name&quot;</span> ]; <span class="hl_k">then</span>
<span class="hl_v">mv</span> <span class="hl_s">&quot;$file&quot;</span> <span class="hl_s">&quot;$name&quot;</span>
<span class="hl_v">fi</span>
;;
<span class="hl_s">&quot;C-c&quot;</span>)
<span class="hl_v">printf</span> <span class="hl_s">&quot;%s&quot;</span> <span class="hl_s">&quot;$file&quot;</span> <span class="hl_o">|</span> <span class="hl_v">xclip</span> <span class="hl_o">-</span><span class="hl_v">selection</span> <span class="hl_v">clipboard</span> ;;
<span class="hl_o">*</span>)
<span class="hl_v">printf</span> <span class="hl_s">&quot;Sorry, I don't understand&quot;</span>
<span class="hl_v">exit</span> <span class="hl_n">1</span>
;;
<span class="hl_v">esac</span>
<span class="hl_v">done</span></code></div>
<p>
Ahora pasa el ratón sobre una imagen o directorio y ábrelo con el plugin <samp>imgsxiv</samp>. Navega por las imágenes y pulse <samp>^X</samp> seguido de <samp>^R</samp> para renombrar una imagen.
</p>
<p>
Para las operaciones de archivo visite <a href="https://github.com/muennich/sxiv/issues/228#issuecomment-260261751" target="new"><samp>sxiv tema # 228</samp></a>.
</p>
<h2 id="leer_pdf_como_texto">Leer pdf como texto<a href="#leer_pdf_como_texto"></a></h2>
<p>
El plugin <samp>pdfview</samp> puede convertir y renderizar archivos PDF como texto en el terminal.
</p>
<p>
Tiene 2 métodos para convertir PDF a texto. Por favor, vaya a través de la secuencia de comandos para los detalles.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_unidades_conectadas_en_caliente" title="Unidades conectadas en caliente">Anterior</label></div>
<footer><hr><p>© Copyright Tano 2.023<br><small>Generated by <a href="https://gitlab.com/bztsrc/gendoc">gendoc</a> v1.0.0</small></p></footer>
</div>