m
m (aucTeX)
 
(18 intermediate revisions by 2 users not shown)
Line 12: Line 12:
 
== Useful ==
 
== Useful ==
  
* Register: (see [http://www.emacswiki.org/emacs/Registers])
+
To remove trailing␣␣␣␣␣␣spaces, use M-SPACE. This is however preempted by [[kde]] for "Run command", for which I prefer the global alternative Alt+F2, so just remove this assignment in ksettings.
  
: C-x r s R Copy the region into register R
+
To replace a character, say ";", with a line-break, use [https://stackoverflow.com/questions/613022/how-can-i-replace-a-character-with-a-newline-in-emacs]:
: C-x r r R Copy the region-rectangle into register R
+
: C-x r SPC R Save the position of point (and the name of the current buffer) into register R
+
: C-x r f R Copy the frame configuration into register R
+
: C-x r w R Copy the window configuration into register R
+
  
<i>R</i> is the register name that you choose, consisting of a single character. Register names are case-sensitive.  
+
<pre>
 +
M-x replace-string RET ; RET C-q C-j
 +
</pre>
 +
 
 +
with C-q for "quoted-insert" and C-j for "newline".
 +
 
 +
=== Registers ===
 +
 
 +
See [http://www.emacswiki.org/emacs/Registers]
 +
 
 +
<poem>
 +
* text register
 +
C-x r s a | store region as “a”
 +
C-x r i a | insert region stored in “a”
 +
C-x r r a | store rectangle as “a”
 +
 
 +
* point register
 +
C-x r SPC a | store current point as “a”
 +
C-x r j a | move to point in “a”
 +
 
 +
* window register
 +
C-x r w a | store configuration of windows in frame
 +
C-x r j a | restore window configurations
 +
 
 +
* frame register
 +
C-x r f a | store window configuration for all frames
 +
C-x r j a | restore all window configurations
 +
 
 +
* number register
 +
C-x r N        | insert a column of successive numbers - Prefix with C-u to set starting value.
 +
C-u 1 C-x r n a | store 1 in “a”
 +
C-u 1 C-x r + a | add 1 to number in “a”
 +
C-x r i a | insert number in “a”
 +
 
 +
* position register
 +
C-x r m RET | save default
 +
C-x r m <NAME> RET | save as NAME
 +
C-x r b RET move to | default
 +
C-x r b <NAME> RET | move to NAME
 +
C-x r l list
 +
</poem>
 +
 
 +
== Keyboard macros ==
 +
 
 +
This is like registers but on steroids: there you record entire sequences.
 +
 
 +
See [https://www.emacswiki.org/emacs/KeyboardMacros the documentation] or follow these steps:
 +
 +
* Hit <wz tip="That is Control-x and then the opening parenthesis."><tt>C-x (</tt></wz> to start recording a keyboard macro.
 +
* Do what the command is supposed to do (i.e. execute commands, hit keys, ...)
 +
* Hit <wz tip="That is Control-x and then the closing parenthesis."><tt>C-x )</tt></wz> to stop recording the keyboard macro.
 +
* Execute <tt>M-x name-last-kbd-macro</tt> to name the last-defined keyboard macro (i.e. the one you just defined).
 +
* Execute <tt>M-x insert-kbd-macro</tt> to insert the code of the last defined macro at point, copy it into your init file.
 +
* Put <tt>(global-set-key (kbd "M-n") 'my-macro)</tt> into your init file (assuming you named the macro my-macro) and to have <tt>M-n</tt> bind to it.
 +
 
 +
This is for instance how to bind subequations and align with automatic labelling (after my [[uniqname]] convention) for aucTeX:
 +
 
 +
<pre>
 +
(fset 'mysubeqs
 +
  [?\C-c ?\C-e ?s ?u ?b ?e ?q ?u ?a ?t ?i ?o ?n ?s return ?\\ ?l ?a ?b ?e ?l ?\{ ?e ?q ?: ?\C-u ?\M-! ?u ?n ?i ?q ?n ?a ?m ?e return ?\C-e ?\} return ?\C-c ?\C-e ?a ?l ?i ?g ?n return return])
 +
(global-set-key (kbd "C-c s") 'mysubeqs)
 +
</pre>
 +
 
 +
== Lisp ==
 +
 
 +
To define a new Lisp command <tt>M-x eval-region RET</tt> on the code itself of <tt>M-x Eval-buffer</tt> to evaluate the whole page.
 +
 
 +
=== Links ===
 +
 
 +
* [https://www.gnu.org/software/emacs/manual/html_node/eintr/ An Introduction to Programming in Emacs Lisp]
 +
 
 +
== Local file variables ==
 +
 
 +
A file can specify local variables. "Visiting" the file checks for local variable and makes them local to the buffer. We use this mainly for aucTeX, to read:
 +
 
 +
<pre>
 +
%%% Local Variables:
 +
%%% mode: latex
 +
%%% TeX-master: t
 +
%%% TeX-command-extra-options: "-shell-escape"
 +
%%% End:
 +
</pre>
 +
 
 +
the <tt>-shell-escape</tt> command is useful when compiling, e.g., with minted (and is usually not needed).
 +
 
 +
== aucTeX ==
 +
 
 +
If for some reason, pdf stops compiling (and reverts to dvi) or there is a complain of <tt>no-matching-viewer</tt>, then:
 +
 
 +
<pre>
 +
M-x TeX-PDF-mode
 +
</pre>
 +
 
 +
should revert to enabling it.
  
 
== .emacs ==
 
== .emacs ==
  
My dot-emacs configuration file: [[:file:.emacs.zip|.emacs.zip]].
+
My dot-emacs configuration file: [[:file:.emacs.gz|.emacs.gz]]. It can be kept compressed as ".emacs.gz" in the home directory <tt>/home/laussy/</tt> and opened directly with emacs and saved as such.
 +
 
 +
Versions:
 +
 
 +
# 1°0: {{thisday|1|April|2022}} started versioning (not a joke) to keep track + ''operatorname'' (C-M-o) to add <tt>\operatorname{}</tt>.
 +
# 1°1: {{thisday|20|May|2022}} ''eqtomultline'' to replace a [[LaTeX]] equation environment to a multline one.
 +
 
 +
== Abbrevs ==
 +
 
 +
My [[:File:Emacs-abbrevs.zip|Emacs-abbrevs]] file.
  
 
== Links ==
 
== Links ==
Line 30: Line 128:
 
* [http://www.gnu.org/software/emacs/emacs.html Homepage].
 
* [http://www.gnu.org/software/emacs/emacs.html Homepage].
 
* [http://www.ee.ryerson.ca/~elf/emacs/ All things Emacs] by Luis Fernandes.
 
* [http://www.ee.ryerson.ca/~elf/emacs/ All things Emacs] by Luis Fernandes.
 +
* http://emacsredux.com

Latest revision as of 09:14, 25 September 2023

Emacs logo.png

Contents

Emacs

Emacs is the most powerful text editor.

It is so powerful that you cannot limit it to this task alone; removing "text" in the above statement gives a better idea of what Emacs is.

It is one of the big marvels of computer codes, along with Unix, $\mathrm{\TeX}$ and others. Stallman wrote the popular GNU version in 1984 and it is still actively maintained as of today and will hopefully remain so forever. This is the real jewel.

The XEmacs branch, from the flamboyant Jamie Zawinski, was one of the earliest forking process in the computer software industry. It's without any doubt the version to use in the DNA lounge.

Useful

To remove trailing␣␣␣␣␣␣spaces, use M-SPACE. This is however preempted by kde for "Run command", for which I prefer the global alternative Alt+F2, so just remove this assignment in ksettings.

To replace a character, say ";", with a line-break, use [1]:

M-x replace-string RET ; RET C-q C-j

with C-q for "quoted-insert" and C-j for "newline".

Registers

See [2]

  • text register

C-x r s a | store region as “a”
C-x r i a | insert region stored in “a”
C-x r r a | store rectangle as “a”

  • point register

C-x r SPC a | store current point as “a”
C-x r j a | move to point in “a”

  • window register

C-x r w a | store configuration of windows in frame
C-x r j a | restore window configurations

  • frame register

C-x r f a | store window configuration for all frames
C-x r j a | restore all window configurations

  • number register

C-x r N | insert a column of successive numbers - Prefix with C-u to set starting value.
C-u 1 C-x r n a | store 1 in “a”
C-u 1 C-x r + a | add 1 to number in “a”
C-x r i a | insert number in “a”

  • position register

C-x r m RET | save default
C-x r m <NAME> RET | save as NAME
C-x r b RET move to | default
C-x r b <NAME> RET | move to NAME
C-x r l list

Keyboard macros

This is like registers but on steroids: there you record entire sequences.

See the documentation or follow these steps:

  • Hit C-x ( to start recording a keyboard macro.
  • Do what the command is supposed to do (i.e. execute commands, hit keys, ...)
  • Hit C-x ) to stop recording the keyboard macro.
  • Execute M-x name-last-kbd-macro to name the last-defined keyboard macro (i.e. the one you just defined).
  • Execute M-x insert-kbd-macro to insert the code of the last defined macro at point, copy it into your init file.
  • Put (global-set-key (kbd "M-n") 'my-macro) into your init file (assuming you named the macro my-macro) and to have M-n bind to it.

This is for instance how to bind subequations and align with automatic labelling (after my uniqname convention) for aucTeX:

(fset 'mysubeqs
   [?\C-c ?\C-e ?s ?u ?b ?e ?q ?u ?a ?t ?i ?o ?n ?s return ?\\ ?l ?a ?b ?e ?l ?\{ ?e ?q ?: ?\C-u ?\M-! ?u ?n ?i ?q ?n ?a ?m ?e return ?\C-e ?\} return ?\C-c ?\C-e ?a ?l ?i ?g ?n return return])
(global-set-key (kbd "C-c s") 'mysubeqs)

Lisp

To define a new Lisp command M-x eval-region RET on the code itself of M-x Eval-buffer to evaluate the whole page.

Links

Local file variables

A file can specify local variables. "Visiting" the file checks for local variable and makes them local to the buffer. We use this mainly for aucTeX, to read:

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-command-extra-options: "-shell-escape"
%%% End:

the -shell-escape command is useful when compiling, e.g., with minted (and is usually not needed).

aucTeX

If for some reason, pdf stops compiling (and reverts to dvi) or there is a complain of no-matching-viewer, then:

M-x TeX-PDF-mode

should revert to enabling it.

.emacs

My dot-emacs configuration file: .emacs.gz. It can be kept compressed as ".emacs.gz" in the home directory /home/laussy/ and opened directly with emacs and saved as such.

Versions:

  1. 1°0: 1 April (2022) started versioning (not a joke) to keep track + operatorname (C-M-o) to add \operatorname{}.
  2. 1°1: 20 May (2022) eqtomultline to replace a LaTeX equation environment to a multline one.

Abbrevs

My Emacs-abbrevs file.

Links