;ELC
;;; Compiled by haakon@haakon-laptop on Thu Aug 22 10:20:07 2013
;;; from file /home/haakon/.emacs.d/elpa/haskell-mode-13.7/haskell-interactive-mode.el
;;; in Emacs version 24.2.1
;;; with all optimizations.

;;; This file contains utf-8 non-ASCII characters,
;;; and so cannot be loaded into Emacs 22 or earlier.
(and (boundp 'emacs-version)
     (< (aref emacs-version (1- (length emacs-version))) ?A)
     (string-lessp emacs-version "23")
     (error "`%s' was compiled for Emacs 23 or later" load-file-name))

;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\207" [require haskell-process haskell-session haskell-show cl] 2)
#@100 Print eval results that can be parsed as Show instances prettily. Requires sexp-show (on Hackage).
(custom-declare-variable 'haskell-interactive-mode-eval-pretty 'nil '(#$ . 677) :type 'boolean :group 'haskell-interactive)
#@20 The prompt to use.
(defvar haskell-interactive-prompt "Î»> " (#$ . 906))
#@180 Generate a regex for searching for any occurence of the prompt
at the beginning of the line. This should prevent any
interference with prompts that look like haskell expressions.
(defalias 'haskell-interactive-prompt-regex #[nil "\301\302!P\207" [haskell-interactive-prompt "^" regexp-quote] 3 (#$ . 986)])
#@56 Use the given mode's font-locking to render some text.
(custom-declare-variable 'haskell-interactive-mode-eval-mode 'nil '(#$ . 1300) :type '(choice function (const :tag "None" nil)) :group 'haskell-interactive)
#@58 Hide collapsible multi-line compile messages by default.
(custom-declare-variable 'haskell-interactive-mode-hide-multi-line-errors 't '(#$ . 1518) :type 'boolean :group 'haskell-interactive)
#@69 Whether to delete compile messages superseded by recompile/reloads.
(custom-declare-variable 'haskell-interactive-mode-delete-superseded-errors 't '(#$ . 1715) :type 'boolean :group 'haskell-interactive)
#@31 Interactive Haskell mode map.
(defvar haskell-interactive-mode-map (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\312#\210\302\314\315#\210\302\316\317#\210\302\320\321#\210\302\322\323#\210\302\324\325#\210\302\326\323#\210\302\327\325#\210\302\330\331#\210)\207" [map make-sparse-keymap define-key "
" haskell-interactive-mode-return " " haskell-interactive-mode-space "\n" haskell-interactive-mode-newline-indent "" haskell-interactive-mode-beginning [home] "" haskell-interactive-mode-clear "" haskell-process-interrupt "" next-error-follow-minor-mode [134217840] haskell-interactive-mode-history-previous [134217838] haskell-interactive-mode-history-next [C-up] [C-down] "	" haskell-interactive-mode-tab] 4) (#$ . 1925))
(byte-code "\300\301N\204\302\300\301\303\304!#\210\305\306!\204\302\306\307\310#\210\300\207" [haskell-interactive-mode-hook variable-documentation put purecopy "Hook run when entering Interactive-Haskell mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp haskell-interactive-mode-map definition-name haskell-interactive-mode] 5)
(defvar haskell-interactive-mode-map (make-sparse-keymap))
(byte-code "\300\301N\204\302\300\301\303\304!#\210\305\306!\204\302\306\307\310#\210\300\207" [haskell-interactive-mode-map variable-documentation put purecopy "Keymap for `haskell-interactive-mode'." boundp haskell-interactive-mode-syntax-table definition-name haskell-interactive-mode] 5)
(defvar haskell-interactive-mode-syntax-table (make-syntax-table))
(byte-code "\300\301N\204\302\300\301\303\304!#\210\302\305\306\307#\207" [haskell-interactive-mode-syntax-table variable-documentation put purecopy "Syntax table for `haskell-interactive-mode'." haskell-interactive-mode-abbrev-table definition-name haskell-interactive-mode] 5)
(defvar haskell-interactive-mode-abbrev-table (progn (define-abbrev-table 'haskell-interactive-mode-abbrev-table nil) haskell-interactive-mode-abbrev-table))
(byte-code "\300\301N\204\302\300\301\303\304!#\210\302\305\306\307#\210\302\305\310\311#\207" [haskell-interactive-mode-abbrev-table variable-documentation put purecopy "Abbrev table for `haskell-interactive-mode'." haskell-interactive-mode derived-mode-parent nil custom-mode-group haskell-interactive] 5)
#@255 Interactive mode for Haskell.

See Info node `(haskell-mode)haskell-interactive-mode' for more
information.

Key bindings:
\{haskell-interactive-mode-map}

This mode runs the hook `haskell-interactive-mode-hook', as the final step
during initialization.
(defalias 'haskell-interactive-mode #[nil "\306\300!\210\307\310 \210\311\312\313!\210\314\f!\210
\306\311!\210\307	\306\315!\210\316
\306\317!\210\320\321\322 \210)\323\324!\207" [delay-mode-hooks major-mode mode-name haskell-interactive-mode-map haskell-interactive-mode-syntax-table haskell-interactive-mode-abbrev-table make-local-variable t kill-all-local-variables haskell-interactive-mode "Interactive-Haskell" use-local-map set-syntax-table haskell-interactive-mode-history nil haskell-interactive-mode-history-index 0 haskell-interactive-next-error-function haskell-interactive-mode-prompt run-mode-hooks haskell-interactive-mode-hook local-abbrev-table next-error-function] 2 (#$ . 4323) nil])
(byte-code "\300\301\302\303\304\305%\210\300\306\307\310\304\305%\210\300\311\312\313\304\305%\210\300\314\315\316\304\305%\207" [custom-declare-face haskell-interactive-face-prompt ((t :inherit 'font-lock-function-name-face)) "Face for the prompt." :group haskell-interactive haskell-interactive-face-compile-error ((t :inherit 'compilation-error)) "Face for compile errors." haskell-interactive-face-compile-warning ((t :inherit 'compilation-warning)) "Face for compiler warnings." haskell-interactive-face-result ((t :inherit 'font-lock-string-face)) "Face for the result."] 6)
#@26 Make newline and indent.
(defalias 'haskell-interactive-mode-newline-indent #[nil "\301\302G\303\"\261\207" [haskell-interactive-prompt "\n" make-string 32] 4 (#$ . 5881) nil])
#@49 Bring up the interactive mode for this session.
(defalias 'haskell-interactive-bring #[nil "\302 \303!\304\305\306 \"\205\306 G\307U?\205\"\310 \210\311	!\210\312\313!*\207" [session buffer haskell-session haskell-session-interactive-buffer find-if #[(window) "\302!	\232\207" [window buffer window-buffer] 2] window-list 2 delete-other-windows display-buffer other-window 1] 3 (#$ . 6066) nil])
#@50 Switch to the interactive mode for this session.
(defalias 'haskell-interactive-switch #[nil "\301\302 !\211\303 =?\205\304!)\207" [buffer haskell-session-interactive-buffer haskell-session window-buffer switch-to-buffer-other-window] 3 (#$ . 6475) nil])
#@24 Handle the return key.
(defalias 'haskell-interactive-mode-return #[nil "\300 \203\301 \207\302 \207" [haskell-interactive-at-compile-message next-error-internal haskell-interactive-handle-line] 1 (#$ . 6740) nil])
#@23 Handle the space key.
(defalias 'haskell-interactive-mode-space #[(n) "\301 \203	\302\303!\207\304!\207" [n haskell-interactive-at-compile-message next-error-no-select 0 self-insert-command] 2 (#$ . 6963) "p"])
#@21 Am I at the prompt?
(defalias 'haskell-interactive-at-prompt #[nil "`\212db\210\301\302 !\210`V*\207" [current-point search-backward-regexp haskell-interactive-prompt-regex] 2 (#$ . 7182)])
(defalias 'haskell-interactive-handle-line #[nil "\303 \2053\304 \305 \306 \307\310\311\n#\311\230?\2052\312\n!\210db\210\313\314\315	\n\316F\317\320\321\322\323\324&\"+\207" [process session expr haskell-interactive-at-prompt haskell-interactive-mode-input haskell-session haskell-process replace-regexp-in-string " " "" haskell-interactive-mode-history-add haskell-process-queue-command make-haskell-command :state 0 :go #[(state) "\302\211A@)\211AA)@\"\207" [state x haskell-process-send-string] 4] :live #[(state buffer) "\306\307\211AA)@\"\205\306\211AA)@\310\"?\205I\211AA)A@\311\312\f\n\313O#\n\314U\2036\312c\210\315@
\"\210\211AA)\fGC\241\210*\313\207" [state x cursor haskell-process-prompt-regex buffer next string-prefix-p ":q" ":quit" replace-regexp-in-string "\n" nil 0 haskell-interactive-mode-eval-result] 7] :complete #[(state response) "\203
\304	@\n\"\210\202\203\305	@\n\"\210\306	@!\207" [haskell-interactive-mode-eval-mode state response haskell-interactive-mode-eval-pretty haskell-interactive-mode-eval-as-mode haskell-interactive-mode-eval-pretty-result haskell-interactive-mode-prompt] 3]] 11])
#@25 Jump to the error line.
(defalias 'haskell-interactive-jump-to-error-line #[nil "\306\307 \310 \"\311\312\"\205t\313\314\"\313\315\"\313\316\"\317 \320\f!\321\f!\322	
\"\322	\"\323!\203B\202K\323!\205K\211\205r\324\314!\210\325	!\210\326 \210eb\210\327\n!Sy\210\330`\327!\331#b\210\332!\210\333.	)\207" [orig-line file line col session cabal-path buffer-substring-no-properties line-beginning-position line-end-position string-match "^\\([^:]+\\):\\([0-9]+\\):\\([0-9]+\\)\\(-[0-9]+\\)?:" match-string 1 2 3 haskell-session haskell-session-cabal-dir haskell-session-current-dir expand-file-name file-exists-p other-window find-file haskell-interactive-bring string-to-number + -1 haskell-mode-message-line t src-path cabal-relative-file src-relative-file] 5 (#$ . 8536)])
#@30 Go to the start of the line.
(defalias 'haskell-interactive-mode-beginning #[nil "\300\301 \302 \303\304$\203\305\301 \306 \303\304$\207\307\310!\207" [search-backward-regexp haskell-interactive-prompt-regex line-beginning-position t 1 search-forward-regexp line-end-position move-beginning-of-line nil] 5 (#$ . 9348) nil])
#@35 Newline and indent at the prompt.
(defalias 'haskell-interactive-mode-clear #[nil "\302 r\303!q\210\304\305ed\306#\210)ed|\210\307\310\311ed\"\"\210\312!\210\313\314\306#\210\313\315\306#*\207" [session inhibit-read-only haskell-session haskell-session-interactive-buffer t set-text-properties nil mapc delete-overlay overlays-in haskell-interactive-mode-prompt haskell-session-set next-error-region next-error-locus] 5 (#$ . 9680) nil])
#@33 Get the interactive mode input.
(defalias 'haskell-interactive-mode-input #[nil "\301\212d\302\\b\210\303\304 !)\305 \"G\306O\207" [haskell-interactive-prompt buffer-substring-no-properties 0 search-backward-regexp haskell-interactive-prompt-regex line-end-position nil] 3 (#$ . 10130)])
#@156 Show a prompt at the end of the REPL buffer.
If SESSION is non-nil, use the REPL buffer associated with
SESSION, otherwise operate on the current buffer.

(defalias 'haskell-interactive-mode-prompt #[(&optional session) "r\203\302!\202\fpq\210db\210\303	\304\305\306\307\310\307\311\307&	c)\207" [session haskell-interactive-prompt haskell-session-interactive-buffer propertize face haskell-interactive-face-prompt read-only t rear-nonsticky prompt] 10 (#$ . 10426)])
#@45 Insert the result of an eval as plain text.
(defalias 'haskell-interactive-mode-eval-result #[(session text) "r\302!q\210db\210\303	\304\305\306\307\310\307\311\307\312\307&c)\207" [session text haskell-session-interactive-buffer propertize face haskell-interactive-face-result rear-nonsticky t read-only prompt result] 12 (#$ . 10905)])
#@101 Insert the result of an eval as a pretty printed Showable, if
  parseable, or otherwise just as-is.
(defalias 'haskell-interactive-mode-eval-as-mode #[(session text) "r\306!q\210\212\307\310 !\210\311y\210`)\312\211`|\210db\210r\313\314\315\f!\316Q!q\210
\f=\2041\f \210\317 \210c\210\320ed\"\210ed{*c\210\321c+\207" [session inhibit-read-only start-point haskell-interactive-mode-eval-mode mode major-mode haskell-session-interactive-buffer search-backward-regexp haskell-interactive-prompt-regex 1 t get-buffer-create "*print-" symbol-name "*" erase-buffer font-lock-fontify-region "\n" text] 5 (#$ . 11252)])
#@101 Insert the result of an eval as a pretty printed Showable, if
  parseable, or otherwise just as-is.
(defalias 'haskell-interactive-mode-eval-pretty-result #[(session text) "r\304!q\210\212\305\306 !\210\307y\210`)\310\211`|\210db\210\311!\210\312c+\207" [session inhibit-read-only start-point text haskell-session-interactive-buffer search-backward-regexp haskell-interactive-prompt-regex 1 t haskell-show-parse-and-insert "\n"] 3 (#$ . 11879)])
#@51 Echo a read only piece of text before the prompt.
(defalias 'haskell-interactive-mode-echo #[(session message) "r\302!q\210\212\303 \210\304	\305P\306\307\310\307%c*\207" [session message haskell-session-interactive-buffer haskell-interactive-mode-goto-end-point propertize "\n" read-only t rear-nonsticky] 6 (#$ . 12335)])
#@16 Echo an error.
(defalias 'haskell-interactive-mode-compile-error #[(session message) "\302	\303#\207" [session message haskell-interactive-mode-compile-message haskell-interactive-face-compile-error] 4 (#$ . 12666)])
#@18 Warning message.
(defalias 'haskell-interactive-mode-compile-warning #[(session message) "\302	\303#\207" [session message haskell-interactive-mode-compile-message haskell-interactive-face-compile-warning] 4 (#$ . 12890)])
#@26 Echo a compiler warning.
(defalias 'haskell-interactive-mode-compile-message #[(session message type) "r\306!q\210p\212\307 \210\310\311\n\"\211\203C\312\313\314\n\"\315P\316\f\317\320\321\320\322\320&	c\210\312\313\323\n\"\324P\316\f\317\320\321\320\325\320\326
\327\313\323\n\"G&
c\210?\205U\312\n\324P\316\f\317\320\321\320&c+\207" [session next-error-last-buffer message lines type haskell-interactive-mode-hide-multi-line-errors haskell-session-interactive-buffer haskell-interactive-mode-goto-end-point string-match "^\\(.*\\)\n\\([[:unibyte:][:nonascii:]]+\\)" propertize match-string 1 " â€¦\n" face read-only t rear-nonsticky expandable 2 "\n" collapsible invisible message-length] 17 (#$ . 13120)])
#@51 Echo a read only piece of text before the prompt.
(defalias 'haskell-interactive-mode-insert #[(session message) "r\302!q\210\212\303 \210\304	\305\306\307\306%c*\207" [session message haskell-session-interactive-buffer haskell-interactive-mode-goto-end-point propertize read-only t rear-nonsticky] 6 (#$ . 13842)])
#@52 Go to the 'end' of the buffer (before the prompt.)
(defalias 'haskell-interactive-mode-goto-end-point #[nil "db\210\300\301 e\302\303$\210\304\207" [search-backward-regexp haskell-interactive-prompt-regex t 1 nil] 5 (#$ . 14165)])
#@26 Add item to the history.
(defalias 'haskell-interactive-mode-history-add #[(input) "\303\304\305	\"BB\306\211\207" [input haskell-interactive-mode-history haskell-interactive-mode-history-index #1="" remove-if #[(i) "	\230\206	\302\230\207" [i input #1#] 2] 0] 5 (#$ . 14402)])
#@40 Toggle the history n items up or down.
(defalias 'haskell-interactive-mode-history-toggle #[(n) "\205\303	\n\\G\"\304	!\204\305\306	\"\210\307	8!\207" [haskell-interactive-mode-history haskell-interactive-mode-history-index n mod zerop message "History item: %d" haskell-interactive-mode-set-prompt] 3 (#$ . 14692)])
#@40 Cycle backwards through input history.
(defalias 'haskell-interactive-mode-history-previous #[(arg) "\302 \205\303!\204\304!\207\305\304\306!\207" [arg haskell-interactive-mode-history-index haskell-interactive-at-prompt zerop haskell-interactive-mode-history-toggle 0 1] 2 (#$ . 15023) "*p"])
#@38 Cycle forward through input history.
(defalias 'haskell-interactive-mode-history-next #[(arg) "\302 \205\303!\204\304[!\207\305\304\306!\207" [arg haskell-interactive-mode-history-index haskell-interactive-at-prompt zerop haskell-interactive-mode-history-toggle 0 -1] 2 (#$ . 15330) "*p"])
#@41 Set (and overwrite) the current prompt.
(defalias 'haskell-interactive-mode-set-prompt #[(p) "r\301\302 !q\210db\210\303 b\210\304\305 !\210`\306 |\210c)\207" [p haskell-session-interactive-buffer haskell-session line-beginning-position search-forward-regexp haskell-interactive-prompt-regex line-end-position] 2 (#$ . 15633)])
#@44 Get the interactive buffer of the session.
(defalias 'haskell-interactive-buffer #[nil "\300\301 !\207" [haskell-session-interactive-buffer haskell-session] 2 (#$ . 15968)])
#@43 Show the '(Compiling|Loading) X' message.
(defalias 'haskell-interactive-show-load-message #[(session type module-name file-name echo) "\306\307\"\203\310\311	\n#\202&\306\312\"\203\310\313	\"\202&\314\315\316#\205&\317\320!\210\f\2034\321
\n\"\210\205=\322
\")\207" [type module-name file-name msg haskell-interactive-mode-delete-superseded-errors session memql 'compiling format "Compiling: %s (%s)" 'loading "Loading: %s" error "ecase failed: %s, %s" (compiling quote loading quote) nil haskell-mode-message-line haskell-interactive-mode-delete-compile-messages haskell-interactive-mode-echo echo] 4 (#$ . 16148)])
#@18 The tab command.
(defalias 'haskell-interactive-mode-tab #[nil "\301`\302\"\203i\303\304!\210\305 \210\306 \\b)\207\305 \207" [column get-text-property collapsible search-backward-regexp "^[^ ]" haskell-interactive-mode-tab-expand line-beginning-position] 3 (#$ . 16789) nil])
#@33 Expand the rest of the message.
(defalias 'haskell-interactive-mode-tab-expand #[nil "\304`\305\"\205\"\306 T\304\307\"\304\310\"T\311\312\211\n\\\307	?$,\207" [pos visibility length inhibit-read-only get-text-property expandable line-end-position invisible message-length t put-text-property] 5 (#$ . 17076)])
(defconst haskell-interactive-mode-error-regexp "^\\([^
\n:]+\\):\\([0-9]+\\):\\([0-9]+\\)\\(-[0-9]+\\)?:")
#@28 Am I on a compile message?
(defalias 'haskell-interactive-at-compile-message #[nil "\212\301 b\210\302!)\207" [haskell-interactive-mode-error-regexp line-beginning-position looking-at] 2 (#$ . 17509)])
#@36 Go backward to the previous error.
(defalias 'haskell-interactive-mode-error-backward #[(&optional count) "\302\303\304	$\207" [haskell-interactive-mode-error-regexp count search-backward-regexp nil t] 5 (#$ . 17718) nil])
#@54 Go forward to the next error, or return to the REPL.
(defalias 'haskell-interactive-mode-error-forward #[(&optional count) "\302 b\210\303\304\305	$\203\306 b\210\305\207db\210\304\207" [haskell-interactive-mode-error-regexp count line-end-position search-forward-regexp nil t line-beginning-position] 5 (#$ . 17948) nil])
#@49 See `next-error-function' for more information.
(defalias 'haskell-interactive-next-error-function #[(&optional n reset) "\306 \307\301\"\307\302\"\310	\203<\f\204!
\311U\204<\n\204<	@b\210\312'!\204/\313 \210\314\312'!\204<\315\316!\210\204d
\311V\203S\313
!\204d\315\317!\210\202d
\311W\203d\320
[!\204d\315\317!\210\321\322 \323 \"(\324'(\"\205 \325 \322 \310\223)\326\327(\"*\326\330(\"+\326\331(\",\326\332(\"-\333*\334!\".\333*\335!\"/\336.!\203\267.\202\300\336/!\205\300/0\337\302)#\2100\203\325 \325 12r\3400!q\210\212eb\210\341+!Sy\2102\342\341,!`\343#\310\223\210-\2031`\341-!Z\310\223\210*\344)2\3451!\2051#*\202\315\346*\".-\207" [session next-error-region next-error-locus reset-locus reset n haskell-session haskell-session-get nil 0 looking-at haskell-interactive-mode-error-forward t error "no errors found" "no more errors" haskell-interactive-mode-error-backward buffer-substring-no-properties line-beginning-position line-end-position string-match make-marker match-string 1 2 3 4 expand-file-name haskell-session-cabal-dir haskell-session-current-dir file-exists-p haskell-session-set find-file-noselect string-to-number + -1 compilation-goto-locus marker-position "don't know where to find %S" haskell-interactive-mode-error-regexp orig-line msgmrk file line col1 col2 cabal-relative-file src-relative-file real-file m2 m1] 5 (#$ . 18280)])
#@123 Delete compile messages in REPL buffer.
If FILE-NAME is non-nil, restrict to removing messages concerning
FILE-NAME only.
(defalias 'haskell-interactive-mode-delete-compile-messages #[(session &optional file-name) "r\306!q\210\212eb\210\307	\310\311#\205=\312\313!\314 \310y\210\315\316!\204\f\203,\f\230\2039\311\317\n`\310#\210)\n`|\210*\202\n*\207" [session haskell-interactive-mode-error-regexp msg-startpos msg-file-name file-name inhibit-read-only haskell-session-interactive-buffer re-search-forward nil t match-string-no-properties 1 line-beginning-position looking-at "^    " set-text-properties] 4 (#$ . 19725)])
#@58 Visit the buffer of the current (or last) error message.
(defalias 'haskell-interactive-mode-visit-error #[nil "r\301\302 !q\210\303 b\210\304!\203\305y\210\306 \202!db\210\307 \210\306 )\207" [haskell-interactive-mode-error-regexp haskell-session-interactive-buffer haskell-session line-beginning-position looking-at -1 haskell-interactive-jump-to-error-line haskell-interactive-mode-error-backward] 2 (#$ . 20365) nil])
#@34 Reset the error cursor position.
(defalias 'haskell-interactive-mode-reset-error #[(session) "r\302!q\210\303 \210\304 \305\306\307#\210\305\310	\311	\312\"B#\210)db)\207" [session mrk haskell-session-interactive-buffer haskell-interactive-mode-goto-end-point point-marker haskell-session-set next-error-locus nil next-error-region copy-marker t] 7 (#$ . 20797) nil])
#@42 Kill the buffer and (maybe) the session.
(defalias 'haskell-interactive-kill #[nil "\302=\205\303\301!\205	\205\304\305!\205\306\307!\207" [major-mode haskell-session haskell-interactive-mode boundp y-or-n-p "Kill the whole session?" haskell-session-kill t] 2 (#$ . 21175) nil])
(byte-code "\300\301\302\"\210\303\304!\207" [add-hook kill-buffer-hook haskell-interactive-kill provide haskell-interactive-mode] 3)
