2014-11-18 15 views
8

Im Organisationsmodus wird eine Zeile, die mit einem Doppelpunkt beginnt, als Quelltext formatiert. (http://orgmode.org/manual/Literal-examples.html)Emacs Org-Modus & Literate Haskell

Im literarischen Haskell beginnen Quellcodezeilen mit einem größeren als Vorzeichen.

Ich möchte schreiben Haskell mit org-Modus Markdown, meine aktuelle bevorzugte Format.

Wie nehme ich an, dass ich nicht die Compiler Haskell ändern kann, meine Frage ist:

Kann ich irgendwie die größer macht als einen Code-Zeile Marker in org-Modus unterschreiben? (Ich habe versucht, es selbst zu finden, aber als org.el ist eine 865k-Datei, 22k loc, bin ich immer noch verloren.)

Antwort

0

Also, offensichtlich ist dies nicht die beabsichtigte Möglichkeit, org zu verwenden.

Das Hauptproblem dabei ist, dass sowohl der Org-Modus als auch der Haskell-Modus Hauptmodi sind. Also kann ich sie nicht parallel benutzen.

Dennoch ist dies, wie es funktioniert, es ist ein Hack, und ich bin nicht über die Nebenwirkungen sicher ..:

Wenn Sie eine Datei in Emacs sehen, die (? A) Code-Trigger zu sein scheint in org-activate-code (org.el), aber dies wird nicht für den Export verwendet. Für den HTML-Export musste ich auch org-html.el anfassen.

I geändert:

In org.el Linie 5378, funktionieren org-activate-Code von

"^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)" 

zu

"^[ \t]*\\([:>]\\(?: .*\\|$\\)\n?\\)" 

Und in org-html.el Linie 1508 und 1516, Funktion org-export-as-html von

(string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line) 

zu

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line) 

und (Linie 1516)

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)" 

es Blick Ich gehe davon aus, dass dies zu verwenden, eine für jeden Exportkanal beabsichtigt angepasst werden muss.

4

Keine genaue Antwort auf Ihre Frage, sondern ein Beispiel dafür, wie ich lesen schreiben Haskell mit org: https://github.com/haroldcarr/make-mp3-copies

Die README.org ist die gebildete Haskell, die MakeMP3Copies.hs ist die resultierende Haskell-Datei, die aus der .org-Datei "verschlungen" wird.

ich HTML exportieren und auf meinem Blog veröffentlichen: http://haroldcarr.com/posts/2013-09-11-flac-to-mp3-via-haskell-shelly-and-ffmpeg.html

Die README.org auch auf GitHub autorenders (obwohl es einige Sachen in der das automatische rendern ist, die nur für HTML gemeint ist, dass ich nicht die Zeit genommen haben, um Fix).

+0

Dies scheint der beabsichtigte Weg zu sein, nicht diese Art von Hack ich gefragt habe :-) – Falko

3

Ich hatte im Wesentlichen die gleiche Motivation, org-mode Markup für meine Haskell (Bird style) Alphabetisierungsprogramme zu verwenden.Ich endete mit multi-mode, die mehrere Emacs Hauptmodi für verschiedene Regionen in demselben Puffer verwendet werden können (es gibt , aber Multi-Mode, die meinen Anforderungen entsprechen). Ich kochte haskell-org, die ermöglicht, Org-Modus und Haskell-Modus in einem einzigen Puffer über Multi-Modus verwendet werden.

Weitere Details in diesem blog entry. Das Setup funktioniert gut genug, dass ich es für meine Haskell-Codierung verwende.

2

Ich bin ein bisschen spät, aber ich habe vor kurzem angefangen, an den 99 Haskell-Problemen zu arbeiten und entschied mich, meine Arbeit in einer Organisationsmodus-Datei zu sammeln.

Die orgmode Art der literate Programmierung (wie ich es verstehe), ist Quellcode Blöcke in BEGIN/END Blöcke einzukapseln. So kann beispielsweise

#+BEGIN_SRC hs :tangle yes 
myReverse :: [a] -> [a] 
myReverse l = myReverse' l [] 
myReverse' [] accu = accu 
myReverse' (x:xs) accu = myReverse' xs (x:accu) 
#+END_SRC 

Eine solche strukturierte Dokument Org-Mode dann

sein
  • exportiert Exportieren der Transformation eines Org-Mode-Datei zu einer von mehreren anderen Dateiformaten mittels eines Backend ist. Einige dieser Formate sind PDF, LateX oder HTML.

  • verheddert Dies geht in Richtung Alphabetisierung Programmierung und Weben. Codeblöcke können in reine Quelldateien exportiert werden. Dies ist, was ich in meiner 99 Problemdatei mache.

  • ausgeführt Quellcodebausteine ​​können ausgeführt werden, und das Ergebnis dieser Ausführung kann direkt in der orgmode-Datei abgelegt werden. Ich habe das noch nicht für Haskell ausprobiert.

Sie können einen Blick auf meinen Versuchen Github haben: https://github.com/dischoen/H99 Da ich Gewirr die Org-Mode-Datei in zwei Dateien Haskell, ein Modul und eine Testumgebung, die in ghc oder GHCI kann dann getestet werden.

+0

Das ist der beabsichtigte Einsatz, richtig :-) – Falko

Verwandte Themen