Compare commits
No commits in common. "369c4237083368ab2d9aed0feef80764b7f11e17" and "8a5ceebe23e2ecfe3f8173e59c690c0ad0768d41" have entirely different histories.
369c423708
...
8a5ceebe23
125
emacs-init.el
Normal file
125
emacs-init.el
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
;; Requiring features is like loading libraries.
|
||||||
|
;; We need these two in the config:
|
||||||
|
(require 'cl)
|
||||||
|
(require 'package)
|
||||||
|
|
||||||
|
;; add mirrors for list-packages
|
||||||
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "http://melpa.milkbox.net/packages/"))
|
||||||
|
|
||||||
|
;; needed to use things downloaded with the package manager
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
|
;; Find packages by using M-x list-packages
|
||||||
|
;; Adding pakcages to the list below ensures that they're installed.
|
||||||
|
(let* ((packages '(auto-complete
|
||||||
|
ido-vertical-mode
|
||||||
|
monokai-theme
|
||||||
|
leuven-theme
|
||||||
|
multiple-cursors
|
||||||
|
undo-tree
|
||||||
|
;; if you want more packages, add them here
|
||||||
|
))
|
||||||
|
(packages (remove-if 'package-installed-p packages)))
|
||||||
|
(when packages
|
||||||
|
(package-refresh-contents)
|
||||||
|
(mapc 'package-install packages)))
|
||||||
|
|
||||||
|
(dolist (mode '(show-paren-mode ; show matching parenthesis
|
||||||
|
column-number-mode ; show column number in mode-line
|
||||||
|
delete-selection-mode ; overwrite marked text
|
||||||
|
ido-mode ; changes selection in minibuffer
|
||||||
|
ido-everywhere ; use ido everywhere
|
||||||
|
ido-vertical-mode ; show vertically
|
||||||
|
global-undo-tree-mode ; use undo-tree-mode globally
|
||||||
|
;; Enable more modes by adding them here
|
||||||
|
))
|
||||||
|
(when (fboundp mode)
|
||||||
|
(funcall mode 1)))
|
||||||
|
|
||||||
|
(dolist (mode '(blink-cursor-mode ; stop blinking cursor
|
||||||
|
menu-bar-mode ; no menubar
|
||||||
|
tool-bar-mode ; no toolbar either
|
||||||
|
scroll-bar-mode ; scrollbar? no
|
||||||
|
;; Disable more modes by adding them here.
|
||||||
|
))
|
||||||
|
(when (fboundp mode)
|
||||||
|
(funcall mode 0)))
|
||||||
|
|
||||||
|
;; No splash screen
|
||||||
|
(setq inhibit-splash-screen t)
|
||||||
|
|
||||||
|
;; Answer with y/n
|
||||||
|
(fset 'yes-or-no-p 'y-or-n-p)
|
||||||
|
|
||||||
|
;; Choose a color-theme
|
||||||
|
|
||||||
|
;; Suggested dark theme:
|
||||||
|
;; (load-theme 'monokai t)
|
||||||
|
|
||||||
|
;; Suggested light theme:
|
||||||
|
(load-theme 'leuven t)
|
||||||
|
|
||||||
|
;; get the default config for auto-complete (downloaded with
|
||||||
|
;; package-manager)
|
||||||
|
(require 'auto-complete-config)
|
||||||
|
|
||||||
|
;; load the default config of auto-complete
|
||||||
|
(ac-config-default)
|
||||||
|
|
||||||
|
;; kills the active buffer, not asking what buffer to kill.
|
||||||
|
(global-set-key (kbd "C-x k") 'kill-this-buffer)
|
||||||
|
|
||||||
|
;; adds all autosave-files (i.e #test.txt#, test.txt~) in one
|
||||||
|
;; directory, avoid clutter in filesystem.
|
||||||
|
(defvar emacs-autosave-directory
|
||||||
|
(concat user-emacs-directory "autosaves/")
|
||||||
|
"This variable dictates where to put auto saves. It is set to a directory
|
||||||
|
called autosaves located wherever your .emacs.d/ is located.")
|
||||||
|
|
||||||
|
;; Sets all files to be backed up and auto saved in a single directory.
|
||||||
|
(setq backup-directory-alist `((".*" . ,emacs-autosave-directory))
|
||||||
|
auto-save-file-name-transforms `((".*" ,emacs-autosave-directory t)))
|
||||||
|
|
||||||
|
;; now we have to tell emacs where to load these functions. Showing
|
||||||
|
;; and hiding codeblocks could be useful for all c-like programming
|
||||||
|
;; (java is c-like) languages, so we add it to the c-mode-common-hook.
|
||||||
|
(add-hook 'c-mode-common-hook 'hideshow-on)
|
||||||
|
|
||||||
|
;; adding shortcuts to java-mode, writing the shortcut folowed by a
|
||||||
|
;; non-word character will cause an expansion.
|
||||||
|
(defun java-shortcuts ()
|
||||||
|
(define-abbrev-table 'java-mode-abbrev-table
|
||||||
|
'(("psv" "public static void main(String[] args) {" nil 0)
|
||||||
|
("sop" "System.out.printf" nil 0)
|
||||||
|
("sopl" "System.out.println" nil 0)))
|
||||||
|
(abbrev-mode t))
|
||||||
|
|
||||||
|
;; the shortcuts are only useful in java-mode so we'll load them to
|
||||||
|
;; java-mode-hook.
|
||||||
|
(add-hook 'java-mode-hook 'java-shortcuts)
|
||||||
|
|
||||||
|
;; defining a function that guesses a compile command and bindes the
|
||||||
|
;; compile-function to C-c C-c
|
||||||
|
(defun java-setup ()
|
||||||
|
(set (make-variable-buffer-local 'compile-command)
|
||||||
|
(concat "javac " (buffer-name)))
|
||||||
|
(local-set-key (kbd "C-c C-c") 'compile))
|
||||||
|
|
||||||
|
;; this is a java-spesific function, so we only load it when entering
|
||||||
|
;; java-mode
|
||||||
|
(add-hook 'java-mode-hook 'java-setup)
|
||||||
|
|
||||||
|
;; defining a function that sets the right indentation to the marked
|
||||||
|
;; text, or the entire buffer if no text is selected.
|
||||||
|
(defun tidy ()
|
||||||
|
"Ident, untabify and unwhitespacify current buffer, or region if active."
|
||||||
|
(interactive)
|
||||||
|
(let ((beg (if (region-active-p) (region-beginning) (point-min)))
|
||||||
|
(end (if (region-active-p) (region-end) (point-max))))
|
||||||
|
(whitespace-cleanup)
|
||||||
|
(indent-region beg end nil)
|
||||||
|
(untabify (if (region-active-p) (region-beginning) (point-min))
|
||||||
|
(if (region-active-p) (region-end) (point-max)))))
|
||||||
|
;; bindes the tidy-function to C-TAB
|
||||||
|
(global-set-key (kbd "<C-tab>") 'tidy)
|
@ -56,16 +56,16 @@ de mer innsikt i hvordan ting henger sammen, og det blir lettere å finne ting.
|
|||||||
|
|
||||||
<<docs>>
|
<<docs>>
|
||||||
|
|
||||||
|
|
||||||
;;; Annen programmering
|
|
||||||
|
|
||||||
<<prog-mode>>
|
|
||||||
|
|
||||||
|
|
||||||
;;; LISP
|
;;; LISP
|
||||||
|
|
||||||
<<lisp>>
|
<<lisp>>
|
||||||
|
|
||||||
|
|
||||||
|
;;; Annen programmering
|
||||||
|
|
||||||
|
<<prog-mode>>
|
||||||
|
|
||||||
;;; init-forslag.el ends here
|
;;; init-forslag.el ends here
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ verdier mellom sessions. Vi
|
|||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||||
(load custom-file t t)
|
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -309,26 +309,6 @@ Jeg tenker at det er en god idé å binde disse til taster:
|
|||||||
|
|
||||||
~helpful-at-point~ har jeg selv stor glede av ...
|
~helpful-at-point~ har jeg selv stor glede av ...
|
||||||
|
|
||||||
* Generelt for prog-mode
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:emacs-lisp: :noweb-ref prog-mode
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Bør få med:
|
|
||||||
+ ~corfu~
|
|
||||||
* ~kind-icon~ (virker det på non-u*ix?)
|
|
||||||
+ ~eglot~
|
|
||||||
|
|
||||||
Det er sikkert noen som vil ha linjenummer i margen. Folk som kommer fra =vim=,
|
|
||||||
har jeg inntrykk av at pleier å ville ha relative tall på talllinjen.
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq display-line-numbers-type t)
|
|
||||||
;; (setq display-line-numbers-type 'relative)
|
|
||||||
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* LISP
|
* LISP
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:emacs-lisp: :noweb-ref lisp
|
:header-args:emacs-lisp: :noweb-ref lisp
|
||||||
@ -349,3 +329,22 @@ sette inn balanserte par.
|
|||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Generelt for prog-mode
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:emacs-lisp: :noweb-ref prog-mode
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Bør få med:
|
||||||
|
+ ~corfu~
|
||||||
|
* ~kind-icon~ (virker det på non-u*ix?)
|
||||||
|
+ ~eglot~
|
||||||
|
|
||||||
|
Det er sikkert noen som vil ha linjenummer i margen. Folk som kommer fra =vim=,
|
||||||
|
har jeg inntrykk av at pleier å ville ha relative tall på talllinjen.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq display-line-numbers-type t)
|
||||||
|
;; (setq display-line-numbers-type 'relative)
|
||||||
|
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
51
slides.org
51
slides.org
@ -95,7 +95,7 @@
|
|||||||
- =ESC ESC ESC=
|
- =ESC ESC ESC=
|
||||||
(bruk hvis =C-g= ikke hjalp)
|
(bruk hvis =C-g= ikke hjalp)
|
||||||
|
|
||||||
- =<prefix> C-g=
|
- =C-<prefix> C-g=
|
||||||
er udefinert
|
er udefinert
|
||||||
(Dvs. =C-g= kan brukes til å avbryte prefiks)
|
(Dvs. =C-g= kan brukes til å avbryte prefiks)
|
||||||
|
|
||||||
@ -107,9 +107,6 @@
|
|||||||
- =M-f=, =M-b=
|
- =M-f=, =M-b=
|
||||||
flytt markøren ett ord frem/tilbake
|
flytt markøren ett ord frem/tilbake
|
||||||
|
|
||||||
- =C-M-f=, =C-M-b=
|
|
||||||
flytt markøren ett uttrykk frem/tilbake
|
|
||||||
|
|
||||||
- =C-a=, =C-e=
|
- =C-a=, =C-e=
|
||||||
flytt markøren til begynnelsen/slutten av linja
|
flytt markøren til begynnelsen/slutten av linja
|
||||||
|
|
||||||
@ -218,14 +215,16 @@
|
|||||||
|
|
||||||
* Kommandoer
|
* Kommandoer
|
||||||
|
|
||||||
- =M-x <function> RET=
|
- =M-x function RET=
|
||||||
lar deg kalle en vilkårlig kommando med navn
|
lar deg kalle en vilkårlig kommando med navn
|
||||||
|
|
||||||
- =M-x replace-string RET <from> RET <to> RET=
|
- =M-x replace-string RET erstatt RET med RET=
|
||||||
tilsvarer «search and replace»
|
tilsvarer «search and replace»
|
||||||
|
|
||||||
- =M-x query-replace RET <from> RET <to> RET= ... =y/n=
|
- =M-x query-replace RET erstatt RET med RET= ... =y/n=
|
||||||
samme som =replace-string=, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!)
|
samme som replace-string, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!)
|
||||||
|
|
||||||
|
- Bruk =TAB= for autocomplete!
|
||||||
|
|
||||||
* Søking
|
* Søking
|
||||||
|
|
||||||
@ -257,24 +256,21 @@
|
|||||||
* Programmering
|
* Programmering
|
||||||
|
|
||||||
- =TAB=
|
- =TAB=
|
||||||
indenterer riktig
|
indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
|
||||||
|
|
||||||
- =M-;=
|
- =M-;=
|
||||||
kommenterer ut et markert område
|
kommenterer ut et markert område
|
||||||
|
|
||||||
- =C-x C-;=
|
- =M-x compile RET compile-command RET=
|
||||||
kommenterer ut linjen
|
|
||||||
|
|
||||||
- =M-x compile RET <compile-command> RET=
|
|
||||||
lar deg kompilere i Emacs
|
lar deg kompilere i Emacs
|
||||||
(gir trykkbare linker til der feil oppstod)
|
(gir trykkbare linker til der feil oppstod)
|
||||||
|
|
||||||
- =M-g M-g <nr> RET=
|
- =M-g g <nr> RET=
|
||||||
flytter markøren til linjenummer =<nr>=
|
flytter markøren til linjenummer =<nr>=
|
||||||
|
|
||||||
* Makroer
|
* Makroer
|
||||||
|
|
||||||
- Makroer er en måte å «ta opp» en rekke kommandoer på
|
- Makroer er en måte å "ta opp" en rekke kommandoer på
|
||||||
|
|
||||||
- =C-x (=
|
- =C-x (=
|
||||||
definer en makro
|
definer en makro
|
||||||
@ -285,7 +281,7 @@
|
|||||||
- =C-x )=, =<f4>=
|
- =C-x )=, =<f4>=
|
||||||
ferdigstill makroen
|
ferdigstill makroen
|
||||||
|
|
||||||
- =C-x e=, =<f4>=
|
- =C-x e=
|
||||||
utfør makroen
|
utfør makroen
|
||||||
|
|
||||||
- =e=
|
- =e=
|
||||||
@ -293,7 +289,7 @@
|
|||||||
|
|
||||||
* Pakker
|
* Pakker
|
||||||
|
|
||||||
- Emacs 29 kommer med innebygd pakkebehandler
|
- Emacs 24 kommer med innebygd pakkebehandler
|
||||||
|
|
||||||
- det finnes tusenvis av pakker
|
- det finnes tusenvis av pakker
|
||||||
|
|
||||||
@ -308,15 +304,30 @@
|
|||||||
|
|
||||||
- =x= utfør installering/oppgradering/sletting
|
- =x= utfør installering/oppgradering/sletting
|
||||||
|
|
||||||
- Alt dette bør heller gjøres i konfigurasjonsfilen
|
|
||||||
|
|
||||||
* Anbefalinger
|
* Anbefalinger
|
||||||
|
|
||||||
|
- [[https://github.com/auto-complete/auto-complete][Auto-Complete]]
|
||||||
|
viser mulige fullføringer
|
||||||
|
|
||||||
|
- [[https://github.com/emacsmirror/undo-tree][Undo-Tree]]
|
||||||
|
et mer standard undo-system, med trestruktur
|
||||||
|
|
||||||
- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
|
- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
|
||||||
lar deg kontrollere flere markører samtidig!
|
lar deg kontrollere flere markører samtidig!
|
||||||
|
|
||||||
|
- [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]]
|
||||||
|
et fargetema (hentet fra Sublime)
|
||||||
|
|
||||||
* Nyttige lenker
|
* Nyttige lenker
|
||||||
|
|
||||||
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs-manualen]]
|
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]]
|
||||||
|
- [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]]
|
||||||
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
|
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
|
||||||
|
- [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]]
|
||||||
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
|
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
|
||||||
|
|
||||||
|
* Spørsmål?
|
||||||
|
|
||||||
|
- Noen spørsmål nå?
|
||||||
|
- Kom ned i pausen hvis dere har spørsmål eller ønske for neste time!
|
||||||
|
- Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!
|
||||||
|
Loading…
Reference in New Issue
Block a user