emacskurs/index.org
Mathias Ciarlo Thorstensen b8573dc5cc Bla
2015-03-17 15:30:42 +01:00

11 KiB

Emacskurs

Introduksjon

Dette kurset arrangeres av Fagutvalget ved Institutt for informatikk, og holdes på Institutt for Informatikk i Simula, Tirsdag 17. Mars kl. 16:15.

Denne siden er et supplement til kurset, der deler av stoffet dekkes, samt linker til annet kursmaterialet og andre nyttige lenker.

Kursmateriale

Kildekoden for alt materiale ligger på GitHub. Her finner du:

Nettsiden er generert med et egenkomponert Org-scheme, og foilene er generert med org-ioslide.

Komme igang med Emacs

Her står det litt om hvordan du installerer og konfigurerer Emacs.

Emacs på Ifi

På Ifi er Emacs allerede installert. Du kan se hvilken versjon du har tilgjengelig ved å skrive følgende i terminalen:

  [larstvei@vetur ~]$ emacs --version
  GNU Emacs 23.1.1
  Copyright (C) 2009 Free Software Foundation, Inc.
  GNU Emacs comes with ABSOLUTELY NO WARRANTY.  You may redistribute copies of
  Emacs under the terms of the GNU General Public License.  For more
  information about these matters, see the file named COPYING.

I filområdet /snacks/bin/ ligger det ekstra programvare, og der er en nyere versjon av Emacs tilgjengelig. Se Termvaktsidene for mer informasjon om Snacks.

  [larstvei@vetur ~]$ /snacks/bin/emacs-newest --version
  GNU Emacs 24.4.1
  Copyright (C) 2014 Free Software Foundation, Inc.
  GNU Emacs comes with ABSOLUTELY NO WARRANTY.
  You may redistribute copies of Emacs
  under the terms of the GNU General Public License.
  For more information about these matters, see the file named COPYING.

For å slippe å skrive /snacks/bin/emacs-newest hver gang kan vi lage et alias. Denne kommandoen legger til en linje i din ~/.bashrc-fil:

  echo alias emacs='/snacks/bin/emacs-newest' >> ~/.bashrc

Kommandoen alias emacs='/snacks/bin/emacs-newest' vil kjøres hver gang du åpner en ny terminal. For at endringen skal ta effekt med en gang kan du bruke source:

  [larstvei@vetur ~]$ source ~/.bashrc
  [larstvei@vetur ~]$ emacs --version
  GNU Emacs 24.4.1
  Copyright (C) 2014 Free Software Foundation, Inc.
  GNU Emacs comes with ABSOLUTELY NO WARRANTY.
  You may redistribute copies of Emacs
  under the terms of the GNU General Public License.
  For more information about these matters, see the file named COPYING.

Fra Emacs 24 og oppover kommer Emacs med en innebygget pakke-behandler som gjør det svært enkelt å finne nyttige utvidelser for Emacs. Denne brukes i konfigurasjonsfilen, så man må med andre ord ha Emacs 24 for at den skal fungere.

Emacs på egen maskin

Emacs er tilgjengelig på Linux, OS X og Windows.

Linux

De aller fleste pakkesystemer for Linux har Emacs 24 tilgjengelig. Her dekkes hvordan Emacs kan installeres for Ubuntu og Fedora, som bruker hhv. apt-get og yum.

For Ubuntu (og Debian) kan du bruke kommandoen:

  sudo apt-get install emacs24

For Fedora skriver du kun:

  sudo apt-get install emacs

OS X

Dersom du ikke allerede bruker Homebrew kan du laste ned Emacs hos Emacs For OS X. Det er kun å flytte Emacs fra .dmg-fila til Applikasjoner.

For Homebrew kan du kjøre kommandoen:

  brew install --cocoa emacs

For at den skal bli søkbar i Spotlight må du kopiere Emacs til Applikasjoner. Kommandoen open åpner filer og mapper, så ved å kjøre:

  open /usr/local/Cellar/emacs/24.4/

kan du bare flytte Emacs til Applikasjoener.

Dersom man bruker Alfred holder det å legge til /usr/local/ under Features->Search Scope.

Windows

Du kan laste ned Emacs her. Du finner filene helt på bunnen av siden, du kan laste ned emacs-24.3-bin-i386.zip, eller prøve en nyere hvis det er tilgjengelig.

Extract mappen på et passende stad. Emacs er stand alone og trenger altså ikke å installeres. Emacs kjøres ved å dobbeltklikke på filen runemacs.exe som ligger i mappen "bin".

Emacs fungerer på akkurat samme måte, men alt fungerer bedre i Linux eller på Mac.

Konfigurere Emacs

Her gang Emacs starter ser den etter en konfigurasjonsfil, den velger den første den finner av disse tre filene:

  • ~/.emacs
  • ~/.emacs.el
  • ~/.emacs.d/init.el

Den siste ligger altså i en mappe som heter ~/.emacs.d/, det kan være fordelaktig dersom du ønsker å spre konfigurasjonen din over flere .el-filer, eller dersom du ønsker å ha færre filer liggende i hjemmeområdet.

Konfigurasjonsfilen blir tolket som et vanlig Emacs Lisp program, så alt innholdet må være Emacs Lisp kode.

For å begynne kan du åpne Emacs og skrive C-x C-f RET ~/.emacs, og skrive inn litt Emacs Lisp, f. eks:

  (blink-cursor-mode 0)

Dersom du lagrer (med C-x C-s) og åpner Emacs på nytt vil du se at markøren ikke blinker lenger. Siden Emacs kan endres under kjøring kan du kun evaluere uttrykket, dette kan du gjøre ved å skrive M-x eval-buffer, som evaluerer hele bufferet. Du kan også evaluere et enkelt uttrykk ved å plassere markøren ved slutten av uttrykket og trykke C-x C-e. Merk at endringer du gjør som ikke largres noe sted vil mistes når du lukker Emacs.

Hvordan man konfigurerer gås nøyere gjennom under kurset, og vi tar utgangspunkt i en enkel konfigurasjonsfil.

Litt om bruk av verktøy

Som informatikkstudenter jobber vi mye med å løse problemer. Når vi jobber med programmering blir vi ofte møtt med mange små hindringer som distraherer oss fra problemet vi prøver å løse. Ved å velge gode verktøy kan du unngå mange av disse hindringene og heller fokuser på å jobbe med selve problemet.

Verktøyene vi bruker er gjerne programmer som SSH, Git, GCC, JDK, Eclipse, LaTeX eller Firefox og selvfølgelig et hav andre. De programmene vi velger utgjør arbeidsflyten vår.

Noe av det vi gjør mest som programmerere er å jobbe med tekst. Det finnes mange programmer som gjør denne jobben utmerket, f. eks. Vim, Sublime eller Atom. Vi skal lære om teksteditoren Emacs. Det aller beste med Emacs er at det kan endres mens det kjører. Dette er en utrolig kraftig egenskap.

Om du ser for deg at du kommer til å programmere i mange år fremover er min anbefaling at du lærer deg en håndfull programmer godt, og at en av disse programmene bør være en teksteditor. Dersom du ønsker et fleksibelt verktøy som dekker de fleste aspektene av programmering bør du se hva Emacs har å tilby.

Emacs

Emacs er et program som gir brukeren et interface for å redigere tekst. I bunn er det en språktolker som kan tolke Emacs Lisp kode, som er et fullverdig programmeringsspråk, med et stort bibliotek av funksjoner som lar deg operere på tekst. Hver gang Emacs mottar et tastetrykk fyres det av en funksjon. Disse funksjonene er som regel skrevet i Emacs Lisp (resten er skrevet i C), og du kan åpne kildekoden og utforske hva den gjør.

Siden Emacs Lisp er et tolket språk kan vi evaluere kode mens Emacs kjører, og se effekten umiddelbart. Vi kan definere nye funksjoner, eller redefinere eksisterende, og endre Emacs til å gjøre oppgavene vi ønsker. Det unike med Emacs er at de endringene du gjør er en like «sann» del av Emacs som alt av innebygd funksjonalitet, som gjør den langt mer utvidbar enn de fleste andre programmer.

Som en effekt kan man bruke Emacs til utrolig mye forskjellig. Det finnes støtte for de aller fleste programmeringsspråk, samt markup-språk som HTML, LaTeX, Markdown og Org. Emacs kan også kommunisere med eksterne prosesser, som lar deg f. eks. kjøre en terminal i Emacs, sende kode fra et Emacs-buffer til en ekstern språktolker (f. eks. Python), som så evalueres, kompilere LaTeX-dokumenter fra Emacs eller tilby et interface til Git.

Dersom man velger å bruke Emacs kan man også velge vekk veldig mange andre programmer. Fordelen med dette er at det blir en slakere læringskurve når du skal benytte deg av et nytt programmeringsspråk

    1. siden du allerede er kjent med verktøyet. Ulempen er at

læringskurven til Emacs kan være noe bratt.

/larstvei/emacskurs/media/commit/990ccf686b0d0618ac5a504015af5c29e81227e4/editor-learning-curve.png

Lisens

<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons-lisens" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />

Dette verk er lisensieret under en Creative Commons Navngivelse-DelPåSammeVilkår 4.0 Internasjonal lisens.